前端面試題乾貨集合
前端工程師
前端工程師屬於IT技術職業的一種,是近5年發展起來的職業,舊的體系將其定義為Web前端工程師,主要的技術包含:HTML
、JavaScrip
t、CSS
。但IT技術屬於變化比較快的領域,最近發生了很大的變革,新的體系下,前端工程師技術又增加了:nodejs
、Hybrid App
。前端技術的興起和網頁越來越豐富化,造就了前端的繁榮現象。雖然說入門相比IT
其他行業簡單,繼而造成更多人轉行和培訓機構大量成批送出,但是這個職位依舊稀缺中高階人才。
面試是一個重要的環節,他是公司評判你是否適合和測試你技術的程度的方式,所以如果你想進入到你心儀的公司,那麼面試這個環節就不能掉鏈子,下面是我見到過總結的一些面試題,希望各位前端工程師們能有些許幫助,會定期更新面試題。
HTML/CSS部分
1.什麼是盒子模型?
在網頁中,一個元素佔有空間的大小由幾個部分構成,其中包括元素的內容(content)
,元素的內邊距(padding)
,元素的邊框(border)
,元素的外邊距(margin)
四個部分。這四個部分佔有的空間中,有的部分可以顯示相應的內容,而有的部分只用來分隔相鄰的區域或區域。4個部分一起構成了css中元素的盒模型。
2、行內元素有哪些?塊級元素有哪些? 空(void)元素有那些?
- 行內元素:a、b、span、img、input、strong、select、label、em、button、textarea
- 塊級元素:div、ul、li、dl、dt、dd、p、h1-h6、blockquote
- 空元素:即系沒有內容的HTML元素,例如:br、meta、hr、link、input、img
3、CSS實現垂直水平居中
很經典的問題有很多種方法,下面是其中一種解決辦法:
html:
<div class="wrapper">
<div class="content"></div>
</div>
css:
.wrapper {
position: relative;
width: 500px;
height: 500px;
background-color: #ddd;
}
.content{
background-color:#6699FF;
width:200px;
height:200px;
position: absolute; //父元素需要相對定位
top: 50%;
left: 50%;
margin-top:-100px ; //二分之一的height,width
margin-left: -100px;
}
4.簡書一下src和href的區別
- href 是指向網路資源所在位置,建立和當前元素(錨點)或當前文件(連結)之間的連結,用於超連結。
- src是指向外部資源的位置,指向的內容將會嵌入到文件中當前標籤所在位置;在請求src資源時會將其指向的資源下載並應用到文件內,例如js指令碼,img圖片和frame等元素。當瀏覽器解析到該元素時,會暫停其他資源的下載和處理,直到將該資源載入、編譯、執行完畢,圖片和框架等元素也如此,類似於將所指向資源嵌入當前標籤內。這也是為什麼將js指令碼放在底部而不是頭部。
5.什麼是css hack
一般來說是針對不同的瀏覽器寫不同的CSS,就是 CSS Hack。
IE瀏覽器Hack一般又分為三種,條件Hack、屬性級Hack、選擇符Hack(詳細參考CSS文件:css文件)。例如:
// 1、條件Hack
<!--[if IE]>
<style>
.test{color:red;}
</style>
<![endif]-->
// 2、屬性Hack
.test{
color:#090\9; /* For IE8+ */
*color:#f00; /* For IE7 and earlier */
_color:#ff0; /* For IE6 and earlier */
}
// 3、選擇符Hack
* html .test{color:#090;} /* For IE6 and earlier */
* + html .test{color:#ff0;} /* For IE7 */
6.簡述同步和非同步的區別
同步是阻塞模式,非同步是非阻塞模式。
同步就是指一個程式在執行某個請求的時候,若該請求需要一段時間才能返回資訊,那麼這個程式將會一直等待下去,直到收到返回資訊才繼續執行下去;
非同步是指程式不需要一直等下去,而是繼續執行下面的操作,不管其他程式的狀態。當有訊息返回時系統會通知程式進行處理,這樣可以提高執行的效率。
7、px和em的區別
px和em都是長度單位,區別是,px的值是固定的,指定是多少就是多少,計算比較容易。em得值不是固定的,並且em會繼承父級元素的字型大小。
瀏覽器的預設字型高都是16px。所以未經調整的瀏覽器都符合: 1em=16px。那麼12px=0.75em, 10px=0.625em
8.什麼叫優雅降級和漸進增強?
漸進增強 progressive enhancement:
針對低版本瀏覽器進行構建頁面,保證最基本的功能,然後再針對高階瀏覽器進行效果、互動等改進和追加功能達到更好的使用者體驗。
優雅降級 graceful degradation:
一開始就構建完整的功能,然後再針對低版本瀏覽器進行相容。
區別:
- a. 優雅降級是從複雜的現狀開始,並試圖減少使用者體驗的供給
- b. 漸進增強則是從一個非常基礎的,能夠起作用的版本開始,並不斷擴充,以適應未來環境的需要
- c. 降級(功能衰減)意味著往回看;而漸進增強則意味著朝前看,同時保證其根基處於安全地帶
瀏覽器的核心分別是什麼?
- IE: trident核心
- Firefox:gecko核心
- Safari:webkit核心
- Opera:以前是presto核心,Opera現已改用Google Chrome的Blink核心
- Chrome:Blink(基於webkit,Google與Opera Software共同開發)
JavaScript部分
1.怎樣新增、移除、移動、複製、建立和查詢節點?
1.建立新節點
createDocumentFragment() //建立一個DOM片段
createElement() //建立一個具體的元素
createTextNode() //建立一個文字節點
2.新增、移除、替換、插入
appendChild() //新增
removeChild() //移除
replaceChild() //替換
insertBefore() //插入
3.查詢
getElementsByTagName() //通過標籤名稱
getElementsByName() //通過元素的Name屬性的值
getElementById() //通過元素Id,唯一性
2.如何消除一個陣列裡面重復的元素?
// 方法一:
var arr1 =[1,2,2,2,3,3,3,4,5,6],
arr2 = [];
for(var i = 0,len = arr1.length; i< len; i++){
if(arr2.indexOf(arr1[i]) < 0){
arr2.push(arr1[i]);
}
}
document.write(arr2); // 1,2,3,4,5,6
3.在Javascript中什麼是偽陣列?如何將偽陣列轉化為標準陣列?
偽陣列(類陣列):無法直接呼叫陣列方法或期望length屬性有什麼特殊的行為,但仍可以對真正陣列遍歷方法來遍歷它們。典型的是函式的argument引數,還有像呼叫getElementsByTagName,document.childNodes之類的,它們都返回NodeList物件都屬於偽陣列。可以使用Array.prototype.slice.call(fakeArray)將陣列轉化為真正的Array物件。
function log(){
var args = Array.prototype.slice.call(arguments);
//為了使用unshift陣列方法,將argument轉化為真正的陣列
args.unshift('(app)');
console.log.apply(console, args);
};
4.addEventListener最後一個引數是做什麼用的
規定事件是冒泡還是捕獲。false是冒泡,true是捕獲
5.什麼是冒泡,什麼是捕獲
當一個元素觸發了一個事件之後就會像上層傳遞直至body,document。捕獲是從最不具體的傳至最具體的
6.所有的事件都可以冒泡麼
不是,blur focus change不可冒泡
7.怎麼取消事件冒泡
eve.preventDefault(阻止事件預設行為)
HTTP
1.一次完整的HTTP事務是怎樣的一個過程?
基本流程:
- a. 域名解析
- b. 發起TCP的3次握手
- c. 建立TCP連線後發起http請求
- d. 伺服器端響應http請求,瀏覽器得到html程式碼
- e. 瀏覽器解析html程式碼,並請求html程式碼中的資源
- f. 瀏覽器對頁面進行渲染呈現給使用者
更新日誌
2017/06/13 第一次更新文章
相關文章
- 前端乾貨 -02前端
- 技術乾貨:RabbitMQ面試題及答案MQ面試題
- 技術乾貨:ActiveMQ面試題及答案MQ面試題
- 乾貨分享:18道Spring面試題Spring面試題
- Java面試題-基礎篇三(乾貨)Java面試題
- 前端面試集合前端面試
- 前端乾貨合集(6.27)前端
- (乾貨)記前端工程師面試題,一起帶大家理一理前端工程師面試題
- 技術乾貨:Hadoop面試題及答案Hadoop面試題
- 「乾貨」22道機器學習常見面試題目機器學習面試題
- [乾貨] 位運算面試題大總結面試題
- Java集合乾貨——CopyOnWriteArrayList原始碼分析Java原始碼
- Java集合乾貨——ArrayList原始碼分析Java原始碼
- 你不能錯過的前端面試題集合前端面試題
- 技術乾貨:spring boot面試題及答案Spring Boot面試題
- 技術乾貨| MongoDB時間序列集合MongoDB
- Java集合乾貨1——ArrayList原始碼分析Java原始碼
- 技術乾貨:Tomcat面試題彙總及答案Tomcat面試題
- 技術乾貨:Kotlin面試題彙總及答案Kotlin面試題
- 乾貨來臨:C語言面試54題附答案C語言面試
- 【機器學習】機器學習面試乾貨精講機器學習面試
- 【乾貨】BAT面試經驗分享BAT面試
- Java集合---面試題Java面試題
- 技術乾貨:spring cloud面試題彙總及答案SpringCloud面試題
- 技術乾貨:Kubernetes面試題彙總及答案面試題
- 技術乾貨:關於效能測試面試題及答案面試題
- 技術乾貨:ASP.net mvc面試32題附答案ASP.NETMVC面試
- 實用乾貨!P6級Java面試題歸總Java面試題
- 乾貨 | BAT等一線大廠 Elasticsearch面試題解讀BATElasticsearch面試題
- 前端乾貨之JS最佳實踐前端JS
- 乾貨收藏 | 如何優化前端效能?優化前端
- 乾貨!前端開發指南20+前端
- 純乾貨!面試官如何面試程式設計師面試程式設計師
- Java Collection集合面試題Java面試題
- 集合相關面試題面試題
- 乾貨滿滿!!!面試必備OJ題:連結串列篇(一)面試
- 【乾貨集】超全的滲透測試面試題總結!面試題
- 【乾貨滿滿】1.5w字初中級前端面試複習總結前端面試