1. 程式人生 > >2018 淺談前端面試那些事

2018 淺談前端面試那些事

雖然今年沒有換工作的打算 
但為了跟上時代的腳步 
還是忍不住整理了一份最新前端知識點

知識點彙總

1.HTML

HTML5新特性,語義化
瀏覽器的標準模式和怪異模式
xhtml和html的區別
使用data-的好處
meta標籤
canvas
HTML廢棄的標籤
IE6 bug,和一些定位寫法
css js放置位置和原因
什麼是漸進式渲染
html模板語言
meta viewport原理

2.CSS

盒模型,box-sizing
CSS3新特性,偽類,偽元素,錨偽類
CSS實現隱藏頁面的方式
如何實現水平居中和垂直居中。
說說position,display
請解釋*{box-sizing:border-box;}的作用,並說明使用它的好處
浮動元素引起的問題和解決辦法?絕對定位和相對定位,元素浮動後的display值
link和@import引入css的區別
解釋一下css3的flexbox,以及適用場景
inline和inline-block的區別
哪些是塊級元素那些是行級元素,各有什麼特點
grid佈局
table佈局的作用
實現兩欄佈局有哪些方法?
css dpi
你知道attribute和property的區別麼
css佈局問題?css實現三列布局怎麼做?如果中間是自適應又怎麼做?
流式佈局如何實現,響應式佈局如何實現
移動端佈局方案
實現三欄佈局(聖盃佈局,雙飛翼佈局,flex佈局)
清除浮動的原理
overflow:hidden有什麼缺點?
padding百分比是相對於父級寬度還是自身的寬度
css3動畫,transition和animation的區別,animation的屬性,加速度,重力的模擬實現
CSS 3 如何實現旋轉圖片(transform: rotate)
sass less
對移動端開發瞭解多少?(響應式設計、Zepto;@media、viewport、JavaScript 正則表示式判斷平臺。)
什麼是bfc,如何建立bfc?解決什麼問題?
CSS中的長度單位(px,pt,rem,em,ex,vw,vh,vh,vmin,vmax)
CSS 選擇器的優先順序是怎樣的?
雪碧圖
svg
媒體查詢的原理是什麼?
CSS 的載入是非同步的嗎?表現在什麼地方?
常遇到的瀏覽器相容性問題有哪些?常用的hack的技巧
外邊距合併
解釋一下“::before”和“:after”中的雙冒號和單冒號的區別

3.JS

js的基本型別有哪些?引用型別有哪些?null和undefined的區別。
如何判斷一個變數是Array型別?如何判斷一個變數是Number型別?(都不止一種)
Object是引用型別嘛?引用型別和基本型別有什麼區別?哪個是存在堆哪一個是存在棧上面的?
JS常見的dom操作api
解釋一下事件冒泡和事件捕獲
事件委託(手寫例子),事件冒泡和捕獲,如何阻止冒泡?如何組織預設事件?
對閉包的理解?什麼時候構成閉包?閉包的實現方法?閉包的優缺點?
this有哪些使用場景?跟C,Java中的this有什麼區別?如何改變this的值?
call,apply,bind
顯示原型和隱式原型,手繪原型鏈,原型鏈是什麼?為什麼要有原型鏈
建立物件的多種方式
實現繼承的多種方式和優缺點
new 一個物件具體做了什麼
手寫Ajax,XMLHttpRequest
變數提升
舉例說明一個匿名函式的典型用例
指出JS的宿主物件和原生物件的區別,為什麼擴充套件JS內建物件不是好的做法?有哪些內建物件和內建函式?
attribute和property的區別
document load和document DOMContentLoaded兩個事件的區別
=== 和 == , [] === [], undefined === undefined,[] == [], undefined == undefined
typeof能夠得到哪些值
什麼是“use strict”,好處和壞處
函式的作用域是什麼?js 的作用域有幾種?
JS如何實現過載和多型
常用的陣列api,字串api
原生事件繫結(跨瀏覽器),dom0和dom2的區別?
給定一個元素獲取它相對於檢視視窗的座標
如何實現圖片滾動懶載入
js 的字串型別有哪些方法? 正則表示式的函式怎麼使用?
深拷貝
編寫一個通用的事件監聽函式
web端cookie的設定和獲取
setTimeout和promise的執行順序
JavaScript 的事件流模型都有什麼?
navigator物件,location和history
js的垃圾回收機制
記憶體洩漏的原因和場景
DOM事件的繫結的幾種方式
DOM事件中target和currentTarget的區別
typeof 和 instanceof 區別,instanceof原理
js動畫和css3動畫比較
JavaScript 倒計時(setTimeout)
js處理異常
js的設計模式知道那些
輪播圖的實現,以及輪播圖元件開發,輪播10000張圖片過程
websocket的工作原理和機制。
手指點選可以觸控的螢幕時,是什麼事件?
什麼是函式柯里化?以及說一下JS的API有哪些應用到了函式柯里化的實現?(函式柯里化一些瞭解,以及在函數語言程式設計的應用,最後說了一下JS中bind函式和陣列的reduce方法用到了函式柯里化。)
JS程式碼除錯

4.ES6

談一談 promise
所有的 ES6 特性你都知道嗎?如果遇到一個東西不知道是 ES6 還是 ES5, 你該怎麼區分它
es6的繼承和es5的繼承有什麼區別
promise封裝ajax
let const的優點
es6 generator 是什麼,async/await 實現原理
ES6和node的commonjs模組化規範區別
箭頭函式,以及它的this

5.計算機網路

HTTP協議頭含有哪些重要的部分,HTTP狀態碼
網路url輸入到輸出怎麼做?
效能優化為什麼要減少 HTTP 訪問次數?
Http請求的過程與原理
https(對是https)有幾次握手和揮手?https的原理。
http有幾次揮手和握手?TLS的中文名?TLS在哪一網路層?
TCP連線的特點,TCP連線如何保證安全可靠的?
為什麼TCP連線需要三次握手,兩次不可以嗎,為什麼
為什麼tcp要三次握手四次揮手?
tcp的三次握手和四次揮手畫圖(當場畫寫ack 和 seq的值)?
tcp與udp的區別
get和post的區別?什麼情況下用到?
http2 與http1 的區別?
websocket
什麼是tcp流,什麼是http流
babel是如何將es6程式碼編譯成es5的
http2的持久連線和管線化
域名解析時是tcp還是udp
域名發散和域名收斂
Post一個file的時候file放在哪的?
HTTP Response的Header裡面都有些啥?

6.瀏覽器相關

跨域,為什麼JS會對跨域做出限制
前端安全:xss,csrf…
瀏覽器怎麼載入頁面的?script指令碼阻塞有什麼解決方法?defer和async的區別?
瀏覽器強快取和協商快取
瀏覽器的全域性變數有哪些
瀏覽器同一時間能夠從一個域名下載多少資源
按需載入,不同頁面的元素判斷標準
web儲存、cookies、localstroge等的使用和區別
瀏覽器的核心
如何實現快取機制?(從200快取,到cache到etag再到)
說一下200和304的理解和區別
什麼是預載入、懶載入
一個 XMLHttpRequest 例項有多少種狀態?
dns解析原理,輸入網址後如何查詢伺服器
伺服器如何知道你?
瀏覽器渲染過程
ie的某些相容性問題
session
拖拽實現
拆解url的各部分

7.工程化

對webpack,gulp,grunt等有沒有了解?對比。
webpack的入口檔案怎麼配置,多個入口怎麼分割。
webpack的loader和plugins的區別
gulp的具體使用。
前端工程化的理解、如何自己實現一個檔案打包,比如一個JS檔案裡同時又ES5 和ES6寫的程式碼,如何編譯相容他們

8.模組化

對AMD,CMD,CommonJS有沒有了解?
為什麼要模組化?不用的時候和用RequireJs的時候程式碼大概怎麼寫?
說說有哪些模組化的庫,有了解過模組化的發展的歷史嗎?
分別說說同步和非同步模組化的應用場景,說下AMD非同步模組化實現的原理?
如何將專案裡面的所有的require的模組語法換成import的ES6的語法?
使用模組化載入時,模組載入的順序是怎樣的,如果不知道,根據已有的知識,你覺得順序應該是怎麼樣的?

9.框架

使用過哪些框架?
zepto 和 jquery 是什麼關係,有什麼聯絡麼?
jquery原始碼如何實現選擇器的,為什麼$取得的物件要設計成陣列的形式,這樣設計的目的是什麼
jquery如何繫結事件,有幾種型別和區別
什麼是MVVM,MVC,MVP
Vue和Angular的雙向資料繫結原理
Vue,Angular元件間通訊以及路由原理
react和vue的生命週期
react和vue的虛擬dom以及diff演算法
vue的observer,watcher,compile
react和angular分別用在什麼樣的業務嗎?效能方面和MVC層面上的區別
jQuery物件和JS的Element有什麼區別
jQuery物件是怎麼實現的
jQuery除了它封裝了一些方法外,還有什麼值得我們去學習和使用的?
jQuery的$(‘xxx’)做了什麼事情
介紹一下bootstrap的柵格系統是如何實現的

10.Nodejs

對nodejs有沒有了解
Express 和 koa 有什麼關係,有什麼區別?
nodejs適合做什麼樣的業務?
nodejs與php,java有什麼區別
Nodejs中的Stream和Buffer有什麼區別?
node的非同步問題是如何解決的?
node是如何實現高併發的?
說一下 Nodejs 的 event loop 的原理

11.資料結構

基本資料結構:(陣列、佇列、連結串列、堆、二叉樹、雜湊表等等)
8種排序演算法,原理,以及適用場景和複雜度
說出越多越好的費波拉切數列的實現方法?

12.效能優化

cdn的用法是什麼?什麼時候用到?
瀏覽器的頁面優化?
如何優化 DOM 操作的效能
單頁面應用有什麼SEO方案?
單頁面應用首屏顯示比較慢,原因是什麼?有什麼解決方案?

13.其他

正則表示式
前端渲染和後端渲染的優缺點
資料庫的四大特性,什麼是原子性,表的關係
你覺得前端體系應該是怎樣的?
一個靜態資源要上線,裡面有各種資源依賴,你如何平穩上線
如果要你去實現一個前端模板引擎,你會怎麼做
知道流媒體查詢嗎?
SEO
mysql 和 mongoDB 有什麼區別?
restful的method解釋
資料庫知識、作業系統知識
click在ios上有300ms延遲,原因及如何解決
移動端的適配,rem+媒體查詢/meta頭設定
移動端的手勢和事件;
unicode,utf8,gbk編碼的瞭解,亂碼的解決

14.開放性問題

你都看過什麼書?最近在看什麼書?
用過什麼框架?有沒有看過什麼框架的程式碼?
有沒有學過設計模式?
說一說觀察者模式吧!能不能寫出來?
你最大的優點是什麼?那你最大的缺點呢?
你除了寫部落格還有什麼輸出?
現在你的領導給你了一份工作,要求你一個星期完成,但你看了需求以後估計需要3周才能完成,你該怎麼辦?
平時關注的前端技術
如何規劃自己的職業生涯
專案過程中,有遇到什麼問題嗎?怎麼解決的?
最近在研究哪方面的東西?
請介紹一項你最熱愛、最擅長的專業領域,並且介紹的學習規劃。
請介紹你參與的印象最深刻的一個專案,為什麼?並且介紹你在專案中的角色和發揮的作用。

15.HR面

你為什麼要學習前端?
你平時的是怎麼學習前端的?有什麼輸出?
你覺得自己最好的專案是什麼?
身邊比較佩服的人有什麼值得你學習的?你為什麼沒有跟他們一樣?
同事的什麼問題會讓你接受不了
壓力最大的事情是什麼?
身邊的朋友通常對你的評價是什麼
喜歡什麼樣的工作氛圍
如何看待加班
有沒有物件
意向城市
其他的offer
為什麼要錄取你?
週末都會幹什麼?
未來職業規劃