問題集錦
年後回來到現在,大大小小的也去面了十幾家公司。騰訊、京東、阿里、頭條、shopee、百度、大豐收、深信服、平安科技等等,目前收到了其中5家的offer。在此分享一下經歷。
自我介紹
要有套路。如何引導面試官問你擅長的領域就看自我介紹了。學歷專業簡述、專案細說、興趣特長一句帶過。
react和vue你都使用過,說說它們的區別?
推薦這篇文章
vue的原始碼看過沒?說說基本的實現?實現雙向繫結的原理?
即使沒有實際地閱讀過原始碼,也要找別人分享的部落格去了解其中的原理。
推薦博文
說說你理解的虛擬dom?diff演算法是怎麼做的?
- 用JS物件模擬DOM樹
- 比較兩棵虛擬DOM樹的差異
- 把差異應用到真正的DOM樹上
redux和vuex的區別?
摘取尤大的知乎回答:
Vuex 其實是一個針對 Vue 特化的 Flux,主要是為了配合 Vue 本身的響應式機制。當然吸取了一些 Redux 的特點,比如單狀態樹和便於測試和熱過載的 API,但是也選擇性的放棄了一些在 Vue 的場景下並不契合的特性,比如強制的 immutability(在保證了每一次狀態變化都能追蹤的情況下強制的 immutability 帶來的收益就很有限了)、為了同構而設計得較為繁瑣的 API、必須依賴第三方庫才能相對高效率地獲得狀態樹的區域性狀態等等(相比之下 Vuex 直接用 Vue 本身的計算屬性就可以)
所以 Vue + Vuex 會更簡潔,也不需要考慮效能問題,代價就是 Vuex 只能和 Vue 配合。Vue + Redux 也不是不可以,但是 Redux 作為一個泛用的實現和 Vue 的契合度肯定不如 Vuex。
說出你知道的所有選擇器權重?
important > 內聯 > ID > 類 > 標籤 | 偽類 | 屬性選擇 > 偽物件 > 繼承 > 萬用字元
說說你知道的所有偽類元素?(知道多少說多少)
LVHA(LV哈,簡單明瞭)、focus、before、after、checked、disabled、last-child、first-child......很多,就不一一列舉了。
你知道的父子選擇器和兄弟選擇器。
父子 > , 兄弟 +
行內元素和塊級元素有哪些?區別是什麼?
不知道的童鞋前往前方
你理解的盒子模型?
必問,無非就是圍繞css3新屬性 box-sizing 的兩個值 content-box 和 border-box。
html5所有的新特性?以及對應屬性的相容性(知道多少說多少)
相容瀏覽器這個問題,知道一些常用API的就好,也不可能全部記住。像canvas這個相容性還是要知道的。
實現三列布局,左右固定寬度,中間響應式。相容性儘量好。
常見的兩列布局、三列布局實現要知道,知道2-3種實現方式為上策。而且相容性方面也要知道,比如用了flex的話就相容IE10+。
BFC的理解。什麼情況會產生BFC。
必問。什麼情況下會產生BFC,怎麼處理等等。
你知道的ES6新特性?
這裡有個注意的點是,常用的一些API要知道基本的實現。比如你常用promise,相關的庫如bluebird是怎麼實現的。
你知道的所有前端安全知識?怎麼預防?怎麼測試?
前端安全XSS、CSRF、SQL隱碼攻擊。什麼場景會產生這些問題。預防和測試手段,測試手段比較少問。
你知道的http狀態碼?
必問。常見的狀態碼和說明必須知道。200、204、206、301、302、304、307、400、401、403、404、500、503
304是怎麼產生的還是要知道的。
你理解的cookie?跟session有什麼區別?http中設定cookie的頭部欄位有哪些?
前兩個問題自行查閱哈,比較簡單。頭部欄位的話有Cookie和Set-Cookie
你知道的http頭部?
通用首部欄位、請求首部欄位、響應首部欄位。這個太多了,平時用到的一些熟悉就好。
Date、Upgrade、Connection、Authorization、Accept、Accept-Charset、Host、From、Referer、Location......
建議閱讀圖解HTTP。
快取相關的頭部?
分為強快取、協商快取去記會簡單點。
推薦博文
你知道的所有排序演算法?手寫快排演算法。
前端對基礎的資料結構和演算法還是要非常熟悉的。這個也經常會問到。
寫出所有你知道的git命令。
團隊協作方面,版本管理工具。
用ES3實現bind函式。
類似這種API的原理,比如new的過程、Object.create的實現、curry函式的實現也會經常碰到。推薦冴羽的深入系列
js實現繼承的方式。
原型鏈、js實現繼承等類似基礎的問題都是必考的。這個還是建議閱讀冴羽的深入系列,整個系列閱讀下來有一個比較深刻的概念。
使用promise模擬一個解決多級回撥巢狀問題。
場景解決方案問題。這種方式出現的頻率還是很高的。類似比如vue在不使用分頁的前提下如何處理海量資料。
平時開發用的工具。
前端常用的一些工具,例如抓包wireshark、fiddler,編碼工具vscode、sublime,除錯工具瀏覽器控制檯等,webpack、gulp等等。webpack的原理要了解下。
專案開發流程。專案中有什麼比較複雜的難點。怎麼解決的。還有沒優化點。
自由發揮,針對性地突出自己擅長的領域。
平時開發中,有注意設計模式嗎?說說你知道的設計模式。
跪!!!但是被問的概率還是蠻大的,需要了解一些基本的設計模式例如單例、工廠、迭代、裝飾者、代理等等。
寫在最後
還有其他一些的問題在這裡就不一一列舉了。針對崗位所需的一些技能去發散,這類問題根據崗位要求而定。比如說京東手Q微信業務,對效能方面要求就很高,對CDN相關的技術也要去了解下。同一份簡歷不要海投,針對每一個崗位要求,適當的改下關鍵字眼,能夠提高面試機會哦,有面試機會就有了一切可能。
主要是想給正在找工作的小夥伴一個全域性觀。文章並沒有詳細地給出每道題的答案,但基本都給出了其他大神的參考文章啦。
找工作是一個煎熬的過程,有挫折,有打擊,當然少不了收穫。希望每個求職者都能斬獲合心意的offer!