特殊時期,字節跳動 2020 春招所有崗位全流程在線筆試、視頻面試,支持受疫情影響地區的同學協商入職日期,甚至遠程入職在家辦公。
除了政策便利,公司超高的實習轉正比例也誠意滿滿——字節跳動 2019 年秋招數據顯示,實習生轉正比例高達 78%,其中研發實習生轉正比例更是達到 81%。
機會多多,但同學們面對筆面試也難免有焦慮:
聽說字節跳動研發崗的筆面試“宇宙最難”?
leetcode刷題至少300道,才能不在字節筆面試中“失去尊嚴”?
看過不少筆面經,但線上還是第一次啊!
......
為此,我面試後還找字節跳動研發筆試出題人 和研發面試官,替大家問了10個最關心的問題,希望能幫助同學們從容拿到offer!
先分享下面試題
本人21屆渣本,專業軟件工程。3.22參與筆試,三月底約了4.03面試。
一面
•做自我介紹,問學校開了哪些課程,現在是否還在上專業課?在上什麼課?
•寫一個sql找出每門課成績最高的學生的學號
•一個有重複數字的有序數組,找到指定數字第一次出現的位置,返回下標,怎麼優化?
•找到一個鏈表的倒數第二個元素、n/2位置的元素、n/k位置的元素
•兩個杯子容量為9和4,怎麼能量出7升水?共可以量出哪些數?
•以上問題不代表順序,並且還有幾個問題記不清了……
一面結束後面試官說馬上會有二面讓不要下線…
二面
•做自我介紹
•簡歷上的項目,選一個說說遇到的問題,怎麼遇到的,怎麼解決的。(先說了真正投入使用了的學校oa系統)
•你說優化了sql,怎麼優化的,你是怎麼發現這個問題的,又是如何確定優化方案的。
•你說重新設計了表格導出功能,怎麼做的,為什麼這麼做
•(感覺面試官不太滿意)趕緊說這個項目遇到的業務問題比較多,另一個項目裡遇到的技術問題比較多
•那簡單說一下你那個遊戲項目的業務邏輯,說說遇到了什麼技術問題(說了一下遇到的併發訪問帶來的線程安全問題,說了解決方案)
•你這個方案可以在單機上解決,假如說你做了擴展,現在是集群了,怎麼做?(說了一下可以用redis單進程單實例的特點去解決),然後問了幾個redis的api
•問幾個基礎問題,hashmap瞭解吧,put是什麼原理。為什麼說hashmap線程不安全,併發場景會出現什麼問題?
•reentrantlock原理,和synchronized有什麼區別
•zk實現分佈式鎖原理是怎樣的,redis做分佈式鎖瞭解嗎,setnx的方案有什麼問題怎麼解決。瞭解過開源實現嗎(紅鎖)
•寫個鏈表反轉吧
•平時怎麼學習的,讀過哪些書?讀這些書有什麼收穫?
•你還有什麼要問我的嗎
字節跳動的面試官非常尊重人,如果有問題答得不好會給提示和引導。並且說話十分隨和,非常nice!面試完就覺得能去工作的話簡直太好了。許願offer➕1。
好了好了給大家分享下我的面試心得啊
筆試出題人:我出的題真的不難啊!
Q1 據說字節跳動的筆試非常難,一共有幾道題,難度分佈是怎樣的,應該如何分配作答時間?
首先,真的不難。真的。
一般來說,每套筆試題是由1個簡單難度題目、2箇中等難度題目及1個較難的題目構成,部分崗位方向還有選擇題。單道題的代碼量也有控制,一般在100行以內。
因為每道題的分數相同,所以建議將自己有思路的題目完全做對後,再去攻克其他題目。
Q2 題目的來源是哪裡?
題目一般是內部出題人針對常見的數據結構和算法進行包裝和引申,核心考點是來自於大學課本以及ACM/ICPC競賽裡的簡單題,也可能從具體業務問題抽象出筆試題。
但萬變不離其宗,知識點是(相對)有限的,但是具體的題目可以有無數變化。
Q3 常見的考點有哪些?
每道筆試題都會有一個或幾個關鍵的考察點,這個考察點也許是某種數據結構,某種算法,或者是某種思維模式,但通常不會直白地給出這個考察點是什麼,而是會給一個規定情境,或者講一個小故事,需要候選人第一步做的就是脫掉題目的“馬甲”,識別出考點。
常見考點有:
- 某種數據結構以及相關的操作:二叉樹、鏈表、(多維)數組等
- 某種編程思想:二分、分治、貪心、搜索、動態規劃等
- 找規律:數學性質、遞推公式
- 純編碼:邊界條件、邏輯完備性
Q4 筆試是如何判卷的?如何作答通過筆試幾率更大?
筆試是自動化判卷,根據跑通case的比例打分。需要保證可編譯運行及結果準確性,部分題目有性能要求,要注意算法優化。
在算法能力相同的情況下,調試能力更好的同學會獲得更高的分數。有些題目可能不止一種做法,針對不同規模的test cases,可以採用不同的策略去拿到更多的分數。
Q5 筆試前應該如何準備,有沒有學習資源推薦?
短期靠刷題,長期靠積累。
刷題:無論多麼厲害的程序員,在面試前期也會瘋狂的刷面試題(文末分享小編的面試題)
積累:完善自己的數據結構和算法知識,將大學的《數據結構和算法》這門課學通之後,再征服《算法導論》這座大山,再輔以《數論》等數學知識,你將在筆試中無往不利。
面試官:我到底要問你什麼?
Q1 視頻面試和現場面試有什麼區別,視頻面試應當如何準備?
整體不會有太大差別。
視頻面試其實比現場面試有優勢。視頻面試往往會在線coding,用電腦寫代碼總比手撕代碼更方便。一場視頻面試的時間是有限的,建議大家提升編碼速度和調試能力,編碼需要又快又好,同時也需要注意編碼風格、完整性和異常處理,才能給面試官留下深刻印象。
劃重點了哦:在線回答問題或者coding時,面試官可以看到你的切屏操作,所以不要有僥倖心理,如果需要查閱API等文檔,可以和麵試官溝通。偶爾出現信號不好等問題,保持穩定心態就好。
Q2 簡歷上的項目經歷,面試官常問什麼?實習經歷是否重要?
面試官會比較關注候選人對項目經歷、自己核心的貢獻總結,基本原則是“呈現在簡歷上的項目經歷,一定要保證瞭解細節”。
針對項目經歷,一般會深挖的問題是:
- 你能跟我講講你是怎麼做這個項目的嗎?
- 你承擔的責任是什麼?
- 為什麼你要這麼做?
- 遇到困難怎麼解決?
問這些都是為了發現你的亮點,譬如:
- 是否有合理、成熟的架構設計
- 能否清晰、有條理的講解,對所解決問題完整的認識
- 對一些工具的熟練應用和理解
- 踩坑經歷,trouble-shooting的能力等
有實習經歷或者項目經歷,都是不錯的加分項,但實習經歷並不比項目經歷更重要。請向面試官多表達自己在實習經歷中學到的知識經驗、核心貢獻,而不是做的事。
Q3 面試的側重點是什麼?不同崗位有什麼不同?
字節跳動面試的指導思想是:“老司機更看重實戰與架構,新警察多關注基礎和潛力”。
所以校招同學的基礎是最為看重的:基礎知識與工程能力、算法與數據結構、網絡、操作系統、編程語言。
針對測試方向的崗位,會更加重視對測試用例設計和溝通能力的考核,主要目的是為了挖掘更適合候選人的方向。
針對大數據方向的崗位,也會對有大數據相關項目經歷和背景的同學,考察大數據的基礎知識和架構的設計能力。
Q4 哪些表現能讓面試官眼前一亮?
做題前,有好的交流,確保自己完全理解題意,有出色的理解能力,邏輯清晰,舉一反三,大家都喜歡和這樣的人交流,輕鬆高效。
做題時,能與面試官互動,最亮眼的絕對是超強的硬實力,編程又快又好,知識又廣又深,專治一切花裡胡哨。
做完題目後 ,有對自己的程序的測試。能在最後的提問環節,提出有深度的問題。展現出自己的自驅精神和積極性,通常表現為對曾經做過的事情持續學習和反思,對面試的崗位和公司有充分的準備等。
Q5 “你還有什麼想問我的嗎?”建議同學該如何回答?
面試官其實很期待能和候選人互動。
建議不要看“不靠譜”的面經,少一些套路,多一點真誠,問你真實感興趣的問題就好,在這個環節追求“出彩”,作用真的不大。
最後
想對同學們說,打好基礎,系統學習,才能從容面試。厚積薄發永遠是王道,祝大家順利!
8 年的快速奔跑,字節跳動已經成為了服務全球用戶的大平臺,今年全球員工人數也將達到 10 萬人,字節跳動等待你的加入呀!
以下字節跳動面試題的部分參考答案。
小弟為各位大哥準備了幾份面試寶典:
- 一份是技術乾貨《Java核心知識點整理》
- 一份是面試真題《1000道互聯網Java工程師面試題》
- 面試寶典《互聯網Java工程師面試題大全》
- 轉發+關注,私信回覆【面試】即可獲得免費領取方式。
Java核心知識點整理
1000道互聯網Java工程師面試題
互聯網大廠面試寶典
面試題答案,獲取方式
關注+回覆關鍵詞 【面試】即可獲取~
重要的話說三遍,先轉發,轉發,轉發,然後私信才可拿到參考答案哦!
閱讀更多 Java技術虎 的文章