EPI前端面試心得
前言
時光飛逝啄刹,轉眼間已過了一年了凄贩,我已經是大二的小(lao)姐(si)姐(ji)了疲扎!哈哈!
以前老聽學長學姐說椒丧,大二是最迷茫的一年,不知自己何去何從句柠。開學兩個月了久橙,迷茫了很久很久,我終于確定了方向,決定走軟件這條路祝拯,選擇了web前端。 現(xiàn)在學習web前端的人在不斷的增加佳头,不論是報班參加web培訓還是自學web基礎的人都不在少數(shù)康嘉,關于選擇web前端的理由也許每個人都不一樣,我說一下我自己為什么最終選擇學習web前端吧敷钾。在我學程序設計的最初肄梨,我學習的是C語言,然而整整一本書除了教我如何在黑洞洞的控制臺上輸出一些數(shù)字侨赡、字符外粱侣,就沒有什么其他的內容了。學習了一年之后油猫,我的覺得這種黑洞洞框一點都不好玩尔店,都把我變壓抑了,因為在我看來鲫售,那些豐富多彩的操作系統(tǒng)和各種應用軟件和黑洞洞的控制臺之間明顯還有著非常巨大的鴻溝该肴。雖然這個想法是幼稚可笑的匀哄,但是,我還是希望在c語言的基礎上再去學習多彩多樣的新東西涎嚼。所以相對來說法梯,Web開發(fā)更吸引我犀概,因為他可以設計出豐富的多姿多彩的頁面夜惭,而且前端好上手,學一些就可以設計簡單的頁面产喉,你就可以在瀏覽器里看到了敢会,這就是前端的優(yōu)勢走触。
我所了解的前端
1.什么是WEB前端
前端工程是互聯(lián)網時代軟件產品研發(fā)中不可缺少的一種專業(yè)研發(fā)角色。從狹義上講互广,前端工程師使用HTML惫皱、CSS、JavaScript等專業(yè)技能和工具將產品UI設計稿實現(xiàn)成網站產品生棍,涵蓋用戶PC端媳谁、移動端網頁,處理視覺和交互問題柔纵。從廣義上來講锤躁,所有用戶終端產品與視覺和交互有關的部分,都是前段工程師的專業(yè)領域郭计。
2.WEB前端的前景
前端是一個相對比較新的行業(yè)昭伸,互聯(lián)網發(fā)展早期(1995年—2005年)是沒有專業(yè)的前端工程師的澎迎。隨著互聯(lián)網的發(fā)展宋下,大約從2005年開始辑莫,正式的前端工程師被行業(yè)認可各吨,到了2010年袁铐,互聯(lián)網開始全面進入移動時代,前端工程師的地位越來越重要屉更,前端領域的技術發(fā)展也越來越快洒缀,各種新的思想、設計模式工具和平臺快速發(fā)展萨脑,對前端工程師的技能要求也越來越高饺饭。
近幾年互聯(lián)網公司前端團隊每年擴張一倍瘫俊,JavaScript工程師平均薪水排名在語言工程是收入的前10:
3.WEB前端的魅力
首先,W3C制定的國際統(tǒng)一標準骂蓖,使前端成為天生跨平臺的技術載體胸哥,成為其他語言做不到的技術壟斷。不管移動平臺還是桌面平臺庐船,還是什么操作系統(tǒng)嘲更,在這里都是完全支持的赋朦。因此前端也成為了開放的李破,跨平臺的技術壹将。其次诽俯,前端的配合靈活多變。前端是基于瀏覽器的一門技術暴区,只要瀏覽器有可運行的平臺仙粱,前端開發(fā)就有其用武之地。所有已知的開發(fā)需要都需要依賴前端技術的開發(fā)候味。不難預想未來退出的后臺語言口猜,不論依照什么樣的準則,它必然依賴于前端開發(fā)技術川抡。最后须尚,前端開發(fā)之所以備受關注耐床,一個主要的原因也是其良好的就業(yè)前景。與其他的技術不同胯甩,前端技術就業(yè)范圍廣泛堪嫂。而且伴隨著前端開發(fā)在國內發(fā)展速度的日益加快,國內越來越多的企業(yè)重視到了前端開發(fā)的重要作用淹办,也因此對前端技術越發(fā)的重視恶复,人才需求量越來越大。
只需要在文本編輯器里面輸入一些字符姥宝,保存后打開瀏覽器想许,馬上就能看到豐富的視覺效果,這就是前端的優(yōu)勢,你所做的努力立即就能看得見漱凝。相對于非瀏覽器語言死板的輸入輸出诸迟,Web開發(fā)在界面可見的一層要豐富多彩得多,各種顏色和特效非常吸引人壁公,這一點吸引很多人前來學習绅项。
EPI前端面試題
1.知道JavaScript中的原型是什么嗎快耿?什么是原型鏈?能手寫一個原型鏈繼承的例子嗎撞反?
函數(shù)的原型對象默認指向函數(shù)本身搪花,原型對象除了有原型屬性外,為了實現(xiàn)繼承吮便,還有一個原型鏈指針proto倚聚,該指針指向上一層的原型對象惑折,而上一層的原型對象的結構依然類似枯跑,這樣利用proto一直指向Object的原型對象上敛助,而Object的原型對象用Object.prototype.proto = Function.prototype表示原型鏈的最頂端屋确,如此變形成了javascript的原型鏈繼承,同時也解釋了為什么所有的javascript對象都具有Object的基本方法焕数。
2.知道什么是Webpack嗎刨啸?說說你理解的Webpack设联?
Webpack 是一個前端資源加載/打包工具。它將根據(jù)模塊的依賴關系進行靜態(tài)分析换团,然后將這些模塊按照指定的規(guī)則生成對應的靜態(tài)資源宫蛆。
從圖中我們可以看出洒扎,Webpack 可以將多種靜態(tài)資源 js、css磷醋、less 轉換成一個靜態(tài)文件胡诗,減少了頁面的請求煌恢。
3.說下你知道的能影響頁面布局的CSS屬性?
一你雌、CSS文字屬性:
color : /文字顏色/
font-family :/文字字體/
font-size : /文字大小/
font-style:/文字斜體/
letter-spacing : /字間距離/
line-height : /設置行高/
font-weight: /文字粗體/
二、CSS邊框空白
padding-top:10px; /上邊框留空白/
padding-right:10px; /右邊框留空白/
padding-bottom:10px; /下邊框留空白/
padding-left:10px; /*左邊框留空白
4.說說你對CSS盒模型的理解拨拓?知道box-sizing是什么嗎渣磷?
在瀏覽器下授瘦,每一個html元素都會被解析為一個裝有東西的盒子。盒子本身有自己的邊框(border)形纺,盒子里的內容到盒子邊框的距離稱為填充(padding)殊轴,盒子邊框與其它盒子之間的距離為邊界(margin)。在css 模型設計中,元素真實的寬度和高度不僅僅由width和height來決定诈乒,還包括內邊距、外邊距楼吃、邊框來組成妄讯。
5.說下CSS屬性display中的block亥贸,inline和inline-block概念和區(qū)別炕置?
display:block的特點:
1、block元素會獨占一行默垄,多個block元素會各自新起一行甚纲。默認情況下介杆,block元素寬度自動填滿其父元素寬度韭寸。
2组民、block元素可以設置width,height屬性臭胜。塊級元素即使設置了寬度,仍然是獨占一行。
3乱陡、block元素可以設置margin和padding屬性仪壮。
display:inline的特點:
1、inline元素不會獨占一行爽彤,多個相鄰的行內元素會排列在同一行里缚陷,直到一行排列不下箫爷,才會新?lián)Q一行,其寬度隨元素的內容而變化硫痰。
2效斑、inline元素設置width,height屬性無效柄慰。
3、inline元素的margin和padding屬性藏研,水平方向的padding-left, padding-right, margin-left, margin-right都產生邊距效果蠢挡;但豎直方向的padding-top, padding-bottom, margin-top, margin-bottom不會產生邊距效果。
display:inline-block的特點
既具有block的寬度高度特性禽炬,又具有inline的同行特性勤家。
6.如果要你寫一個百度搜索的首頁伐脖,你覺得你會用到哪些HTML標簽?
7.說下你對前端的看法,為什么選擇前端场勤?
此題請參考前邊我所了解的前端:)
8.之前通過什么渠道了解到前端的歼跟?你平時怎么學習編程的哈街?
我大一報班寫了c語言和程序員課程,接下來的學習方向中有前端和后臺,通過查資料骤竹、咨詢學長學姐了解了前端往毡。
我一般都是聽老師講課學習知識體系开瞭,晚上回去之后上機練習上課記的筆記以及老師所留下來的代碼題。
9.了解Node.js嗎个扰?Node.js相比PHP有哪些優(yōu)勢和劣勢葱色?
Node.js
優(yōu)點:①性能高②開發(fā)效率高③應用范圍廣
缺點:①新,人少②中間件少③IDE不完善
PHP
優(yōu)點:①跨平臺办龄,性能優(yōu)越②語法簡單③有很多成熟的框架(phpMVC.Prado.Cake)④適合開發(fā)大型項目
缺點:①對多線程支持不太好②語法不太嚴謹(比如不用定義就可以用)③無法讓對象常駐內存
alert(a);
a();
var a = 3;
function a(){
alert(10)
}
alert(a);
a = 6;
a();
10.上方代碼的輸出結果是什么俐填?說下為什么會有這樣的輸出結果英融?
結果:
function a(){
alert(10);
}310
原因:
在ES5中所有由var聲明的變量都會提升到作用域的頂部進行聲明,然后再在聲明的地方進行賦值糯笙。var聲明函數(shù)變量時撩银,和直接使用function定義函數(shù)時效果是不一樣的额获。var只能把變量名的聲明提前,而使用function定義函數(shù)時耘眨,函數(shù)的初始化也會被提前境肾,所以不論你何時使用function聲明函數(shù)奥喻,只要有聲明調用時都不會產生錯誤,而使用var形式的函數(shù)表達式纯趋,在賦值之前調用都會找不到函數(shù)冷离。如果重復使用同一函數(shù)名的兩個函數(shù)西剥,后聲明的生效。
11.利用JavaScript寫一個求平均值的函數(shù)结耀,來求以下數(shù)列的平均值:123图甜,454, 7676,4243嚼摩,5435, 8997矿瘦,695072
<script>
var numList = [34,23,45,36,78,69];
var all = 0;
function average(list){
all = 0;
for(var i=0;i<list.length;i++){
all+=list[i];
}
return all/list.length;
}
</script>