鏈接:https://juejin.im/post/5d834e62e51d453b8b5fa69e
![2019大齡前端如何準備面試?](http://p2.ttnews.xyz/loading.gif)
前言
今年毋庸置疑是找工作的寒冬,今年出來找工作的每一個同學 都是值得尊敬的。在寒冬季找工作,雖然略難,但是反過來看也會逼迫我們成為更加優秀的自己。
但是不管是旺季還是寒冬,有一些優秀的同學找工作還是挺順利的。所以說還是得提高我們自己的硬實力。
今年前端很明顯一個變化就是前端面試裡除了基礎知識 也添加了很多手寫算法以及前端遞歸小程序。下面從若干個方向談一談需要準備些什麼東西。
面試的節奏
面試之前要複習自己所有的基礎知識。算法比較難準備,要提前幾個月來看。基礎知識相對容易準備,可以相對延後。算法可以陸續把leetcode上簡單的題目都做一做。基礎知識按照自己的腦圖來準備。
在準備好了之後,可以看一下網上的面經,如果對於面經的大部分問題都可以答出來。那麼就是一個準備了差不多的信號。
此時可以找一個朋友給你來一個mock interview。朋友的mock可以給你很多反饋。自身發現不了的,包含自我介紹的問題,語氣語調,自信心等問題。
接下來可以找一些小公司練練手。練習練習自己講講項目,和基礎知識的查漏補全。
如果拿到了一些小公司的offer,那麼就可以找朋友推薦去一些心儀的大廠,大廠面試相對較難,所以最好找朋友內推。內推有朋友可以給你介紹很多你不知道的東西。
![2019大齡前端如何準備面試?](http://p2.ttnews.xyz/loading.gif)
簡歷
作為一個高級碼農,項目肯定做的非常多,但是簡歷也要注意什麼可以寫什麼不能寫。自己複習準備不深的東西最好不要在簡歷上寫,面試官往往都問自己有經驗和自己有深刻研究的東西,如果你涉及的技術只是簡單使用,簡歷上寫了,被問到一些底層原理,結果沒答上來就尷尬了。
比如你在公司淺嘗輒止的做過RN,簡歷上寫了,被面試官問到RN的原理,打包,和Native通信等,如果沒有準備就會非常尷尬。簡歷上寫的技術 最好都複習到任何細節。
比如用vue寫了好幾年項目了。以為自己掌握的滾瓜爛熟。結果別人問了一個基礎的Vue生命週期,Watch和Computer的區別,如果沒答好,那麼在面試官那裡印象就非常差。
手寫題
今年各大公司都添加了手寫算法或者前端遞歸的題目。所以要求這部分題目都得提前準備,最好在職期間刷leetcode幾個月。至少大部分簡單算法都可以秒殺。至於前端一些遞歸和語言特性。相對來說都比較好準備。應該2~3周就夠用。這裡列舉一些高頻題。拋磚引玉一下。
- 實現debounce
- 實現throttle
- 實現bind,call,apply
- 打印出來html裡所有標籤
- 實現一個lazyman
- 實現一個deepclone
- 實現快速排序
- 實現一個數組亂序
- 實現一個Promise
- 實現一個LRU
- 求第K大樹
- 二叉樹的深度
- 兩數之和
- 四數之和
- 找出一個集合所有的子集
我在github 上整理一個項目 turtle-rock 如果大家覺得有用,請給一個star。謝謝!
CSS
flex 已經是移動端的標配了。今年面試中基本很多都考察flex。所以對於flex-grow和flex-shrink,flex-direction 這些屬性必須靈活掌握。而且對於彈性盒裡面的元素的是否會被縮減,以及縮減的規則都會被考察到。對於高級前端一些深度的特性也會被考察到。
- vertical-align 為什麼沒有絕對垂直居中?
- line-height 的具體含義是什麼?
瀏覽器
http2 是今年一個必考題了。所以HTTP2 分幀的,多路複用,server push 這些都得深度掌握,只膚淺理解到基本概念 還是很容易被問住的。推薦大家看兩篇文章 MDN HTTP 緩存(協商緩存和強緩存),跨域 這些都不贅述了。
- http2有什麼改進?
- websocket協議和 HTTP2 有關係麼?
- http2 和 1.1 的 pipeline 有啥區別?
- HTTP2 和 1.1 的 keep alive 啥區別?
框架
現在是Vue和React的時代。小廠追求糙快猛基本都是Vue。規模大一點的公司基本都是React。不管是哪個。今年面試絕對不緊緊停留在表面,Dom Diff,Virtual Dom 成了必考題。
- Virtual Dom 是否可以提高性能?
- 怎麼看待Dom Diff?Dom Diff算法是啥?
- 如何設計一個組件?
- Vue發展問題在哪裡?
性能
Web性能啥時候都是一個必考題。針對Web性能。推薦大家看Google的文檔。
Webpack
webpack 基本會考察到各種loader,plugin的名字和使用方法
- 用過哪些插件?
- 如何做性能優化?
- code split 怎麼做?
- 什麼是treeshaking?注意些什麼?
移動端
JSBridge 原理 和 離線包成了必考題。
- 移動端如何做適配?
- 一像素問題怎麼解決?
- JSBridge原理是什麼?如何設計一個JSBridge?
- 離線包怎麼設計?
- Hybrid H5開發需要注意些什麼?
- Webview的緩存機制是什麼?
直播方向
- 直播協議都有什麼?
- WebRTC是什麼?基本原理是什麼?
Nodejs
高級碼農都或多或少寫過一些nodejs。但是nodejs 的面試問題很難準備。平時可能寫的很6,但是面試不一定能答得出來。通常大家都會問你的Nodejs在處理什麼模塊。
- 項目中的中間層Node 在處理什麼問題?
- Node 的Cluster模式是什麼?
- Node 中的進程和線程啥區別?
- Node 中如何創建一個進程?
- Node的多個進程如何通信?
- Koa2 中的 context如何實現?
- 如何監控Node?
- Node中的日誌如何保整串行?
- Node 掛掉怎麼辦?怎麼發現其中的問題?
- Node中的事件循環是什麼?
安全
- HTTPS原理是什麼?
- 如何劫持HTTPS?
- XSS 是什麼?如何防範?
- CSRF是什麼?如何防範?
- 如何應對重放攻擊?
管理類
對於一些同學,走到高級階段或多或少有一些管理人的經驗。綜合看來這部分不是那麼重要。各大公司還是以技術為主。考察這方面相對較少。
- 你怎麼管理你的團隊?
- 怎麼做code review?
- 你對管理的理解是什麼?
- 你怎麼打績效?
- 對於績效比較差的同學你怎麼溝通?
- 你如何來激勵你的團隊?
- 有沒有遇到一些管理的問題?
前景
- 你對前端發展趨勢怎麼看?
- 最近接觸了什麼新的技術?
職場發展
對於大部分普通人,最好能有一個大廠的經驗,一方面大廠做東西會相對較深,另外一方會有很大加分。當時我也承認小公司有很多能力很強的人,但是非常多的面試官都是學歷控和大廠控。有了這樣的經驗,找工作起來就會相對容易。
談一談工作的延續性。工作了一些年之後,我們不管做前端還是後端最好和一些業務或者技術 結合起來,兩份工作,或者三份工作有一定的延續性。比如你做直播,那麼往後就繼續做直播。你做招聘系統,下來的工作繼續做招聘系統。你做廣告系統下一份工作就繼續做廣告系統。這樣你的積累就不僅僅在通用技術這個點上,也有一部分業務在,下一份工作就更容易做出成績。
在說說細節的方向。前端的技術日新月異,可以大膽的預測5年後,可能也不是vue和react的天下了。可能我們在用xx框架,那麼工作10年的碼農 用xx框架 和一個工作2年的使用xx框架區別在哪裡?這是我們大齡碼農需要思考的。所以我們能積累下什麼?這些是我們需要思考的。我認為在前端的一些方向上必須有所積累。比如 WebGL,Canvas渲染,直播等。就是以後把自己不要標榜是一個前端。而是一個WebGL前端,直播前端。這樣才會利於我們大齡之後的發展。
閱讀更多 Android進階技術分享 的文章