道阻且長啊TAT(前端面試總結)
前端 面試 筆試
面試
騰訊一面
- 1.瀏覽器工作原理
瀏覽器的主要元件包括: 使用者介面- 包括位址列、後退/前進按鈕、書籤目錄 瀏覽器引擎- 用來查詢及操作渲染引擎的介面 渲染引擎-
渲染介面:Firefox、Chrome和Safari是基於兩種渲染引擎構建的,Firefox使用Geoko——Mozilla自主研發的渲染引擎,Safari和Chrome都使用webkit.
網路- 用來完成網路呼叫,例如http請求 UI 後端-
用來繪製類似組合選擇框及對話方塊等基本元件,具有不特定於某個平臺的通用介面,底層使用作業系統的使用者介面 JS直譯器- 解釋執行JS程式碼
資料儲存- 屬於持久層,瀏覽器需要在硬碟中儲存類似cookie的各種資料
- 2.Web安全,舉例說明
- 3.狀態碼
- 4.同源:同埠,同域名,同協議
- 5.物件繼承
- 6.ES6歷史以及新特性有哪些?
- 7.promise原理
- 8.事件模型
- 9.常見相容性問題,列舉(移動端/PC端)
- 10.效能優化
騰訊二面(機試)
類似百度搜尋的提示框,相容各大瀏覽器,可用鍵盤控制.
勉強憋了出來,但是掛掉了,犯了一些低階錯誤,顯示經驗不足.
面試官建議多看書,多寫元件.
阿里一面
- 1.Ajax原理
- 2.瀏覽器解析過程
流程: 解析html以構建dom樹->構建render樹->佈局render樹->繪製render樹
參考文章
- 3.垂直居中
- 4.資料型別判斷
- 5.路由實現
- 6.資料本地儲存
- 7.跨域 參考
- 8.資料雙向繫結單向繫結優缺點
阿里二面
- 1.無線效能優化
- 2.Tap事件,Touch
- 3.資料儲存
搜狐一面
- 1.Dom操作
- 2.移動佈局方案
- 3.前後端協作
- 4.原生Ajax實現過程
搜狐二面
- 1.單連結串列反轉
- 2.快排
- 3.即時通訊(除了Ajax和websocket)
懵逼了
總結一下其他方式
1.Comet技術:基於HTTP長連線的Web端實時通訊技術
2.SSE:伺服器傳送事件,使用長連結進行通訊
- 4.伺服器代理轉發如何處理cookie(nginx)
proxy_cookie_domain localhost example.org;
proxy_cookie_domain ~.([a-z]+.[a-z]+)$ $1;
proxy_cookie_path /one/ /;
proxy_cookie_path / /two/;
- 5.物件繼承
- 6.this
- 7.rem佈局的優缺點
騰訊Alloy Team
一面(記錄兩個,其他都還好)
-
實現動畫有哪些途徑
- CSS3
- JS幀動畫,定時器,requestAnimateFrame
- Canvas動畫
- SVG
- 圖片
- 物件繼承的實現
二面(跪了)
-
web安全
- https加密過程,證書用途
- xss幾種形式,防範手段,過濾哪些字元?
- xsrf原理,例項,防範手段(Laravel的token)
- Sql注入
-
效能優化
- 程式碼優化(html,css,js)
-
網路效能優化:
- Cache快取之強制快取和協商快取.看具體詳情
- CDN原理及應用
- HTTP壓縮之gzip
- 上下文環境物件
-
設計模式(要求說出如何實現,應用,優缺點):
- 單例模式
- 工廠模式
- 釋出訂閱模式
-
跨域(產生原因)
- JSONP原理
- CORS如何設定
- Nginx代理
- 讀過哪些框架原始碼?
- 如何寫一個CSS庫,要注意哪些東西?
京東二面
- JS物件導向之封裝,繼承,多型的體現和應用?
- BST
- promiseAll如何實現,以及如何實現多層非同步回撥?
- 加油站問題(貪心演算法)
阿里二面
- XHR具體底層原理和API
- 單例模式實現/設計模式
- JSONP原理,回撥過程
- Latex怎麼解析
- hash演算法實現,如何避免衝突,如何在衝突裡檢測
- Generater
- ES6怎麼編譯成ES5,css-loader原理,過程
- ES6轉成ES5的常見例子
- 常見資料結構,常見演算法
- node多執行緒實現
- 程式和執行緒
阿里三面
- 對前端的理解
- 說說rn,weex原理
- 說說XHR
- Jq的選擇器引擎,$(`.a .b`)以及$(`.a`).find(`.b`)
- MD5摘要演算法其他用途
百度一面
- 前端架構的理解
- 前端框架的看法
- 如何做前後端分離
- 在不使用後端模板渲染的情況下,如何做前端資料直出(不使用非同步請求資料)?
- SSR適用什麼場景?SPA首屏空白原因?
- vue構建過程原理,具體流程
模板到DOM大致流程:
template模板經過parse處理後返回AST 獲得一棵AST後再經過generate()生成渲染函式
執行渲染函式後會獲得一個VNode,即虛擬DOM patch函式,負責把虛擬DOM變為真正DOM。
- vue2新增內容?獨立構建(standalone)和執行時構建(runtime-only)的差別和應用?詳情
- 爬蟲的實現原理?如何實現一個爬蟲,如何解析檔案?
- 如何解決爬蟲慢的問題?
- 多執行緒如何保障各個執行緒的安全?
- webpack工具和node瞭解哪些?node各個模組的底層原理?
- CSS3實現卡片翻轉?
百度二面
- 說說職業規劃?
- 說說HTML難點,語義化的體現?
- 說說CSS重要難點?如何實現垂直水平居中?
- JS中this是什麼?如何改變this?
- 講講時間複雜度計算?
- 演算法題:假定26個字母對應1-26,將一串數字轉成字母有多少種可能?
暴力解法複雜度是多少?
(百度外賣業務:包含移動客戶端(RN,hybrid),PC web端,H5,後臺介面vue,桌面應用包含編輯器外掛,前端構建工具,node中間層)
餓了麼
- 盒模型之box-sizing
- XHR原理及API
- session和sessionStorage
- map forEach(陣列各個API細節)
- dom事件代理,有什麼優點?
- 三種隱藏方式差別:visibility:hidden,display:none,opacity:0
渲染上的差異:
1.將元素設定為display:none後,元素在頁面上將徹底消失,元素本來佔有的空間就會被其他元素佔有,也就是說它會導致瀏覽器的迴流和重繪。2.設定元素的visibility為hidden,和display:none的區別在於,元素在頁面消失後,其佔據的空間依舊會保留著,所以它只會導致瀏覽器重繪而不會迴流。
3.opacity:0,只是看不到元素,元素依然存在並且佔有原有位置. 注: 事件繫結的差異: 1、display:none:元素徹底消失,不會觸發繫結的事件.
2、visibility:hidden:無法觸發其點選事件,有一種說法是display:none是元素看不見摸不著,而visibility:hidden是看不見摸得著,這種說法是不準確的,設定元素的visibility後無法觸發點選事件,說明這種方法元素也是消失了,只是依然佔據著頁面空間。
3、opacity:0:可以觸發點選事件,設定元素透明度為0後,元素只是相對於人眼不存在而已,對瀏覽器來說,它還是存在的,所以可以觸發繫結事件
動畫屬性的差異: 1、display:none:完全不受transition屬性的影響,元素立即消失
2、visibility:hidden:元素消失的時間跟transition屬性設定的時間一樣,但是沒有動畫效果.
3、opacity:0,動畫屬性生效,能夠進行正常的動畫效果.
頭條一面
- inline和block元素列舉,block和inline-block區別?
- span包含12px大小英文`abc`,問span高度?baseline怎麼理解?
- css實現自適應正方形?
- string查詢第一個不重複字元.如果換成字串呢?
- Angular資料繫結機制?
- 重繪和迴流的理解
- querySelectAll和ByClassName所獲取元素的區別?如何繫結事件?
- getComputedStyle用法?
- addEventListener繫結事件?引數不同的執行順序.
- 正則匹配電話號碼.exec,match,search用法?推薦一篇高質量正則文章
- 資料型別判斷的方法,toString判斷的來源?
- ES6 class原理?
- function rest引數長度?function.length如何判斷與arguments物件長度區別?
頭條二面
- var a;typeof a;let a;考察點
- mvp,mvc,mvvm
- vuex原理,watch物件
- js defer async順序,模組依賴(AMD,CMD差別)
- 設計模式和應用
- session和cookie
- 清浮動,BFC
- cookie儲存在哪裡?(memory)
搜狐提前批
- BFC
- Flexbox用法,詳見總結
- 排序,找出最大三個數
- 快排原理,複雜度計算
- 繼承的實現方式
- vdom原理,實現
- webpack打包是如何處理css圖片的
- 模組
CVTE面試
- 四欄佈局
- 陣列,陣列物件去重
- 陣列查某個字元出現次數
- 選擇器權值
- 右鍵選單定製
Ruff
- 函式不定參
- 定時器原理
- url=>渲染:script阻塞
- 資料結構應用
- 資料雙向繫結(vue,ng原理)
其他小公司:
- 物件導向三要素
- 閉包
- 三欄佈局
- 內聯元素包含塊元素的表現
- 三種隱藏方式的區別
- 求最大子陣列和.
- 塊元素和內聯元素渲染區別?
- ul li實現計數.
- flex-box用法
- svg與canvas
- JPG,png圖片特點,場景
- CSS寫輪播
- 拖拽組建
- PV統計
- URL監聽變化
筆試
人人網
- 1.陣列操作
- 2.排序演算法
- 3.動態規劃(書包問題)
- 4.程式設計題(正則)
CVTE
- 執行緒
- 各類通訊協議
- 二叉樹
- 演算法複雜度
- 棧封裝,利用棧對陣列reverse(程式設計)
美團
- 各類排序演算法以及複雜度計算
- Node的一些用法
- 二叉樹遍歷
- JS內部屬性
- 頁面之間傳參
- 程式題:陣列找公共元素
網易
- 出入棧可能性計算
- 陣列去重