在字節跳動,咱們用結構化面試法來考查應聘者的技能。python
所謂結構化,指的是將各類知識技能作好劃分,例如編程語言,操做系統,數據庫,網絡,算法,工程/架構設計,並經過幾個面試官之間的多輪交叉面試來考查掌握程度。程序員
這樣的面試方法,能夠避免某個面試官考察太偏,並充分挖掘候選人的亮點。面試
在具體的面試中,每個方向都會由淺入深去考查。算法
以編程語言爲例,好比某個應聘者經常使用語言是Python,我會先考查一些語言的基礎特性,例如什麼是 magic function,__repr__
和 __str__
的區別等。數據庫
確認候選人對語言的使用掌握符合預期後,再考查候選人對python底層實現的理解,例如展開聊聊python的gc相關知識。 編程
更進一步,能夠結合一些具體的應用場景來考查候選人對語言的綜合應用能力,例如使用Python的多線程,須要考慮什麼,如何提升某些任務中的效率等。segmentfault
經過這樣的綜合考察,咱們成功地避開了全部學過下面這本書的程序員。後端
值得一提的是算法/數據結構,這是字節跳動面試的一大特色,也是網上各面經都會提(tu)到(cao)的。微信
一般來講每一輪面試都會要求候選人完成一道算法題,現場面試就直接在紙上寫,遠程面試則是在在線共享編輯的IDE環境裏完成。網絡
可能早期常有面試官讓候選人手寫紅黑樹,以致於"手寫紅黑樹"已經成爲一個內部梗。
實際上難度沒有太誇張,一般來講15分鐘內完成 Leetcode Medium 級別的題目,就能知足面試要求了(劃重點)。
我更傾向於考查操做基礎數據結構的題目,關注點放在對代碼的掌控力,而不是某個具體的算法。
不過,對於有ACM經歷的同窗,面試官可能會嘗試用 Hard 級別題目來challenge。好比我內推的某同窗被問了manacher'salgorithm,多是和麪試官八字不合。
但也不用太擔憂,畢竟不是誰都像他同樣拿了ACM金牌。
候選人的溝通能力也是考查的重點。
例如,在面試中的工程設計題一般是開放式問題,題面每每不是精確的,問題的規模,可能存在的問題,或者能夠忽略的一些細節,均可以在前期的溝通中確認,而後再開始設計。
還有,在面試過程當中的知識盲點,要注意避免不懂裝懂的強行做答,但利用已有知識作出的合理推測則是加分項。兩種行爲的邊界可能有點模糊,這就考驗候選人的溝通技巧了。
我想要招什麼樣的候選人?歸納而言就是:聰明,勤奮,有潛力。
更具體的,大佬早就講過了,推薦閱讀字節跳動創始人張一鳴的演講《我面了兩千個年輕人,發現混得好的都有這5種特質》,推薦拜讀。
最後,我目前在字節跳動的網盟廣告業務線(穿山甲),因爲業務持續高速發展,長期缺人,歡迎踊躍投遞:
後端開發(上海)
https://job.toutiao.com/s/sBAvKe
後端開發(北京)
https://job.toutiao.com/s/sBMyxk
廣告策略研發(上海)
https://job.toutiao.com/s/sBDMAK
測試開發(上海)
https://job.toutiao.com/s/sBUKuh
其餘地區、職能線
https://job.toutiao.com/s/sB9Jqk
微信掃碼