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

為什么要錄取你?

周末都會干什么?

未來職業規劃

END

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容