作者:甘先森
https://juejin.im/post/5e6a14b1f265da572978a1d3
筆者讀大三,前端小白一枚,正在準備春招,人生第一次面試,投了頭條前端,總共經曆了四輪技術面試和一輪hr面,不多說,直接上題:
一面
- 自我介紹,然後問了為什麼學習前端
- 算法:實作36進制轉換
- 簡述https原理,以及與http的差別
- 作業系統中程序和線程怎麼通信
- node中cluster是怎樣開啟多程序的,并且一個端口可以被多個程序監聽嗎
- 實作原生ajax
- vue-router源碼
- vue原理(手寫代碼,實作資料劫持)
- 算法:樹的周遊有幾種方式,實作下層次周遊
- 算法:判斷對稱二叉樹
第一次面試,當時比較緊張,面試官很和藹,面試中問到作業系統的程序,當時不記得作業系統,就提到了node多程序,然後面試官就問了cluster是怎樣開啟多程序的,并且一個端口可以被多個程序監聽嗎?答完後面試官就問了後面寫完vue資料劫持的時候,面試官又問了Object.defineProperty除了set get外還有什麼屬性,我回答了configurable enumerable。vue-router主要提到了hashchange事件等,順便跟面試官聊了一下h5的historyAPI。時間總共是50分鐘左右,一面完了後面試官讓我等五分鐘,接下來二面就開始了
二面
- 介紹一下項目中的難點
- let var const 有什麼差別
- 你知道哪些http頭部
- 怎麼與服務端保持連接配接
- http請求跨域問題,你都知道哪些解決跨域的方法
- webpack怎麼優化
- 你了解哪些請求方法,分别有哪些作用和不同
- 你覺得typescript和javascript有什麼差別
- typescript你都用過哪些類型
- typescript中type和interface的差別
- react怎麼優化
- 算法題:合并亂序區間
筆者在回答http頭部的時候,順帶跟面試官聊到了浏覽器緩存,回答跨域的時候,面試官又讓我用jsonp實作一下跨域,回答webpack的時候提到了happypack和treeshaking,面試官就順帶問了一下他們的作用,算法題我當時沒有寫出來(主要是因為菜),二面大概40多分鐘結束,面試完後面試官說稍後hr會聯系我,讓我注意保持通信,還沒過一小時,hr打電話約我第三次面試時間,不得不說,位元組的效率真的高
三面
- 你了解node多程序嗎
- node程序中怎麼通信
- node可以開啟多線程嗎
- 算法題:老師分餅幹,每個孩子隻能得到一塊餅幹,但每個孩子想要的餅幹大小不盡相同。目标是盡量讓更多的孩子滿意。如孩子的要求是 1, 3, 5, 4, 2,餅幹是1, 1,最多能讓1個孩子滿足。如孩子的要求是 10, 9, 8, 7, 6,餅幹是7, 6, 5,最多能讓2個孩子滿足。
- 算法題:給定一個正整數數列a, 對于其每個區間, 我們都可以計算一個X值;X值的定義如下: 對于任意區間, 其X值等于區間内最小的那個數乘上區間内所有數和;現在需要你找出數列a的所有區間中, X值最大的那個區間;如數列a為: 3 1 6 4 5 2; 則X值最大的區間為6, 4, 5, X = 4 * (6+4+5) = 60;
三面大概是1小時,面試官比較冷漠,就問你知道不知道,算法思路,然後實作這個算法,面試完感覺涼涼,但是第二天就收到hr到來的電話,約下一輪的面試時間。
四面
- 算法題:兩個有序連結清單和并成一個有序連結清單
- https與http有什麼差別(一面剛好也被問到)
- cookie有哪些屬性
- cookie,session,localstorage,sessionstorage有什麼差別
- 怎麼禁止js通路cookie
- position有哪些屬性
- 你知道哪些狀态碼
- options請求方法有什麼用
- less,sass它們的作用是什麼
- 平時怎麼學習
- 你什麼時候可以來實作
- 能實習多久
四面算是比較簡單的一次面試,面完後第二天晚上hr打來了電話,約與hr面的時間
hr面
- 你什麼時候接觸前端的
- 對未來的規劃是什麼
- 你對哪個項目印象深刻,說一下項目的難點
- 你對我們公司有什麼了解
- 能實習多久等等
hr面主要聊一聊人生理想,未來規劃啥的,大概半小時的時間
四輪技術面+一輪hr面結束,學習到了不少,面試也是一個學習檢測自己的過程,面試前大概複習了一周的時間,把以前的代碼看了一下,位元組跳動比較注重算法,面試前刷了下leetcode和劍指offer,也刷了些在牛客網上的面經。。大概就說這些了,寫代碼去了~