1. 程式人生 > >記一次涼涼的小米前端面試

記一次涼涼的小米前端面試

數值 andro 不同 要求 wps 斷點調試 面試題 輸入 阻塞

推廣一下個人網站:Bougie‘s Blog

畢業一年的跨專業萌新,在拉勾上投了武漢小米的簡歷,不出兩天,簡歷被HR姐姐標為“不合適”,心想自己這點履歷和經驗小米是看不上了。又過兩天,大概晚上八九點鐘,HR姐姐突然打電話說邀請面試。也是有點奇怪。

從家到小米有兩個小時車程,做公交車二層晃得竟然有點想吐了。心想做程序員一年,沒學到啥高深的東西身體卻不知不覺間變得這麽差了;同時對此次面試也沒抱太大期望,因為自身實力和小米的招聘要求還是差了一個檔次。進入小米正門,左手邊是小米信息部,右手邊是wps。想起來前不久在一個招聘群裏面認識的wps的孝感老鄉就在隔壁上班,也是一種緣分哈哈。

筆試

面試前要先做一份筆試題,題目大概是:

  1. 爬蟲引擎是怎樣抓取頁面的

  2. 瀏覽器渲染頁面的過程
    1. 用戶輸入URL地址
    2. 瀏覽器解析URL解析出主機名
    3. 瀏覽器將主機名轉換成服務器ip地址(瀏覽器先查找本地DNS緩存列表 沒有的話 再向瀏覽器默認的DNS服務器發送查詢請求 同時緩存)
    4. 瀏覽器將端口號從URL中解析出來
    5. 瀏覽器建立一條與目標Web服務器的TCP連接(三次握手)
    6. 瀏覽器向服務器發送一條HTTP請求報文
    7. 服務器向瀏覽器返回一條HTTP響應報文
    8. 關閉連接 瀏覽器解析文檔

    網上找的標準答案,自己答得也是這麽個意思,但是沒這詳細。

  3. 異步編程的四種方法
    看到這題瞬間感覺阮老師簡直就是中國前端界的教父級人物啊,面試官的理想答案應該是阮老師這篇文章:Javascript異步編程的4種方法。自己特地看過,也總結在我的面試題總結裏面了:前端面試偏門題總結。但是記性太差還是答偏了,心裏恨啊。

  4. 解釋同步\異步、阻塞\非阻塞、並行\並發之間的區別
    這裏補充一下並行和並發:並行是指運算中的兩件或更多件事情在同一時刻發生。實事求是地說,這種情況只會在系統CPU擁有兩個獨立核心時發生,這樣在任何時刻才會有不同的電脈沖信號發出。並發意味著至少兩件事務在同一時間段發生。但註意,這裏的事務是(高級的)任務,而不是(低級的)操作。所以,請分清並發和並行。

  5. js實現數值千分位
    頭條筆試碰到過了:number.toLocaleString()

  6. 多語言網站建設應註意哪些事項
    一開始以為多語言是pythonjavaphp啥的,後面面試官說是各個國家語言。

  7. React非父子、兄弟組件傳值
    狀態管理:Redux、Mobx等等

  8. "123456789876543212345678987654321..."的第n位是什麽
    javascript function getNum(n) { let num = 1, flag = true for(let i = 0; i <= n; i++) { if(num === 1) flag = true if(num === 9) flag = false flag ? num++ : num-- } return num }
    時間有點緊不小心把i <= n寫成i < n了,尷尬,怪自己不細心吧。

時限是20分鐘,還有兩三題記不清了。

面試

面試官很親切,說話很流暢並且肯定,感覺是個知識體系非常齊全的大牛。以下題目順序並不是面試官問的順序:

  1. 瀏覽器打開一個頁面前端緩存了哪些東西?
    我:後端通過設置響應頭Cache Control設置資源過期時間,用於緩存一些靜態資源
    面試官:還有呢
    我:DNS緩存
    面試官:後端緩存了什麽
    我:緩存了session
    面試官:還有呢
    我:...答不上來了

  2. 說一下vue的生命周期
    一年的Vue不是白用的,順利從beforeCreatedestroyed過了一遍

  3. 你的博客用的是Koa,Express用過嗎?
    我:用過,我的個人博客本來用的是Express,後面改成Koa了
    面試官:為什麽要改?Express不好用嗎?
    我:Koa的路由用async和await處理,不會陷入回調地獄
    面試官:Express的路由也可以封裝成async\await,自己試過沒有?
    我:沒有。。。

  4. 你的博客用的什麽服務器?
    我:用的Node服務器,pm2做進程守護的
    面試官:代碼直接放上去運行的還是編譯後運行的
    我:(一臉懵比,腳本語言還能編譯???)直接運行的
    面試官:服務器是什麽系統的?
    我:windows sever...(感覺面試官笑了)

    後來查了一下,segmentFault的大佬們也說Node JS不用編譯:運行在服務端的Node.js代碼需要編譯嗎?,好想追問一下面試官到底怎麽編譯啊。

  5. 有沒有自己實現過Promise?
    看了不少文章,自己也寫過了,但問到細節還是答爛了。

  6. 有沒有寫過Webpack插件?
    我:沒有...

  7. new 一個對象後發生了什麽?

  8. 寫過響應式網站嗎?
    我的個人博客就是響應式的,主要說了媒體查詢和rem控制字體大小。

  9. 說一下原型和原型鏈

  10. 有沒有自己寫過比較復雜的正則?

  11. 有沒有封裝過axios?

  12. 前後分離的系統,一個請求出錯了,如何中斷其它請求?

  13. 如何在axios中添加登陸驗證?

  14. rollup了解過沒?

  15. 為什麽rollup打包贅余代碼比較少?

  16. 有沒有結合原生封裝過RN組件?

  17. 為什麽用高德地圖不用百度地圖?

  18. 怎樣在Android Studio中對React Native的js代碼進行斷點調試?

......

還有n多問題記不太清了...

然後面試官問了一些其他的東西,對小米有什麽看法?995上班、加班沒有加班費能不能接收等等。心想小米在雷總的帶領下還真是拼啊。

面試聊了一個小時,很多問題答爛了,今年應該是和小米無緣了。也明顯看到了自身實力的不足。很感謝面試官給我這次面試機會。

記一次涼涼的小米前端面試