前言
不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你才會發現懂的越少。
如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多Android新手問Android學習路線,學習方法啊,如何入門啊,是以我從網上找了一些資料,然後以我的工作經驗給大家總結一下,讓你們少走彎路,提取一些工作中經常用到的技術。
位元組跳動Android面經
一面問的 Java 和 Android 基礎
1、Jvm虛拟機
2、messageQueue會不會阻塞ui線程
3、對象鎖和類鎖
4、之字形列印樹
5、還有其他的記不清了,主要是我對二面印象太深刻了。
二面問的 Flutter 和 Dart
1、dart是值傳遞還是引用傳遞
2、Widget和element和RenderObject之間的關系
3、widget的root節點
4、mixin extends implement之間的關系(除了extends其他的沒怎麼用過。。)
5、jvm記憶體模型(感覺這個是面試官可憐我,看我什麼都不會才問的=。=)
6、Future和microtask執行順序
7、dart中…的用法(基本沒用過。。)
8、await for(沒用過。。)
說實話,第一個、第三個、第六個我準備的話應該能答出來的,但是一個多月沒碰Flutter了,忘了都差不多。。。
此外GitHub和部落格維護好很重要,像我這種demo随手寫,随手删的人直接GG。。
面試位元組跳動需要做哪些準備?
接下來将分:面試前、面試中、面試後 三個部分,解答一些常見的問題。
面試前
如何尋找一個面試機會?
- 内推:首先推薦大家走内推途徑,内推的履歷通過率遠高于其他方式;内推的途徑有:聯系工作的師兄師姐、在論壇上找對應的内推貼、參加校招宣講會 等
- 對應公司招聘官網直接投遞:需要大家明确自己想投哪些公司,直接搜尋公司的官方招聘官網(大公司普遍都有),找到自己想投的崗位投遞
- 相關招聘網站投遞:在各類招聘網站上HR也會釋出對應招聘資訊,可以對應的投遞
需要為面試做哪些準備?
- 一份優秀的履歷:要能說明 學校、學曆、實習經曆、在校期間技術項目經曆 等,具體的在姊妹篇《校招啦——來自位元組跳動面試官的技術履歷指南》,敬請期待。
- 了解投遞的崗位要求:就是我們常說的JD(Job Description),公司的招聘官網或釋出的招聘資訊裡面會較長的描述,如果找不到或公司沒寫,可以聯系HR發郵件說明。
- 複習面試崗位相關知識:校招同學需要複習 計算機基礎(網絡、作業系統、計算機組成原理、數學等)、編碼能力(資料結構、算法) 、技術方向基礎知識(如前端同學主要看html/css/js)
- 整理自己做過的項目:包括實習項目、個人項目、科研學術項目、參與社群開源項目等,在面試時需要做自我介紹,面試官也可能會根據你的履歷詢問項目内容。
- 适當的做一些算法題:前端、測試等一些崗位可能不是特别重視算法,但做一些算法題能訓練你的思維、代碼能力;常用的刷題網站:LeetCoode、牛客網、各大高校OJ等
面試中
如何自我介紹?
技術面試自我介紹時請focus在技術方向上,有些同學會準備一段華麗的開場白,介紹自己大學期間的學生會、組織活動等經驗,這些内容對于技術面試沒有太多吸引力,不利于面試官找到對應你的合适問題,有時候反而會在面試官心目中減分(感覺不夠專注技術)。 建議是:
- 有技術實習經曆的同學,重點介紹實習中做過的項目,說明自己在項目中的角色、負責研發了那些部分、使用了什麼技術棧、學習到了什麼。
- 沒有實習經曆的同學,可以介紹自己在目标崗位的技術方向上學習了哪些内容、有做過什麼個人項目 或者一些Demo項目。
- 有ACM等計算機競賽獲獎經曆的要說明,加分項。
- 有參與開源項目或社群建設的,建議說明,加分項。
- 學術大牛同學也可以說明自己發表論文、參與會議情況,也是加分項。如果學術方向和工作内容沒有太多關系,建議不要滔滔不絕的詳細介紹,如果學術方向剛好和崗位match 或 面試官有興趣,面試官一般會主動繼續聊下去。
沒有實習經曆可以嗎?
答案是——可以的。 有技術實習經曆當然好事,但是對于校招/實習同學來說,不一定人人都有實習經驗,或者實習經驗可能與目前崗位不match。是以不用過分擔心,一般能過履歷參與面試的同學,都是得到了初步的認可的。沒有相關實習經驗的同學,面試時可以突出自己在其他方面的優勢(如:個人項目、開源項目、競賽、學術,參考上個問題),面試官如果認可你的知識儲備、能力、潛力就會通過。
沒有 相關實習經曆 和 沒有相關知識能力 是兩回事,有實習經曆缺沒有積累知識能力的同學,可能最終評價會不如 通過自己學習探索具備相關知識的同學。是以請一定要做好面試前的準備,讓自己符合面試崗位的要求,比如投遞前端崗位的同學,至少要學習html/css/js相關基礎知識,對目前常用前端技術棧有一定的了解,并且有動手實踐的經曆。
需要對業務了解嗎?
校招/實習 來說,并不強求對業務的了解,一般來說在校同學也很難對業務有深入的了解,有相關經驗了解當然是加分項。
面試整體流程
通常來說,一次完整的面試包括:筆試、技術面試、崗位match、HR面試。
筆試:可能是線上筆試 或 當場筆試,校招筆試題目範圍較寬,會涉及計算機基礎知識、面試方向的知識技能、代碼coding、資料結構 & 算法 等。
技術面試:以位元組跳動為例,校招一般是2-3輪交叉技術面試,實習一般是1-2輪,考察 計算機基礎、編碼能力 、技術方向基礎知識以及技術深度、系統設計能力、抽象能力和工程化能力、軟素質 等。一面更偏向基礎知識、技術廣度,二三面偏向技術深度、進階能力。
崗位match:一般是通過技術面試後,由業務部門負責人面試,偏向軟素質、專業能力、個人發展與規劃等。
HR面試:通常是最後一輪面試,主要聊一下職業規劃、個人訴求、面試過程中的一些問題、入職相關資訊(如可入職時間、實習時間、工作地點等)
遇到不會的問題如何處理?
首先要明确——誰都會有不會的問題。即便是工作多年的社招同學也會有知識盲區,有部分不會的問題并不會影響你的整個面試評價。是以,千萬不要不懂裝懂,這樣反而會留下負面印象。 确實不會的問題請直接和面試官說明,可以讓面試官給一些提示,或者征詢面試官意見看能否現場查閱相關資料(一定要在面試官許可下查詢,否則容易被算作作弊)。如果在提示或查詢資料後,解決了原本不會的問題,也是加分項——說明學習能力、應變能力、抗壓能力不錯。
面試時可以問面試官什麼問題?
在一輪面試結束後,面試官可能會說:“你有什麼問題想問的嗎?” —— 注意,這個可能也是一道面試題,面試官想通過你的問題,了解到你的職業訴求、個人規劃、學習能力等,是以要慎重的選擇自己的問題。 技術面試環節不建議問一些與目前面試無關、涉及公司機密、個人隐私的問題,如:加班多少/工資待遇(這個在HR面試環節可問)、公司目前收益情況、業務線具體使用的核心技術、面試官聯系方式等 可以問一些與自己相關的技術方向問題,如:如果通過面試需要學習哪些内容做準備、面試官對你本輪的評價和建議(如果面試官不友善說,也不要追問)、面試過程中某個困惑問題的解決方法(時間限制面試官可能隻能給出思路)等。
面試後
長時間沒有得到回應如何處理?
面試後請注意查收自己的郵箱、保持電話暢通,如果長時間(3-5天)沒有得到回應,建議和HR聯系。校招的同學通常比較畏懼與HR交流,擔心本身“薛定谔的貓”狀态的結果在自己聯系HR後就變得負向了,這個心理一定要克服,及時的确認面試結果才有利于安排之後的面試/offer選擇。 如果真的得到了不好的結果,也可嘗試問一下HR面試評價中自己的問題,不一定能得到答複,但如果HR能告訴你也利于你及時發現、解決自己的不足,為下一次面試打基礎。
面試沒有通過可以再次投遞嗎?
有的公司有面試不通過鎖履歷機制(一段時間内投遞無效),這個也可以和HR問清楚。 我司(位元組跳動)是不鎖履歷的,某一崗位面試不通過任然可以繼續投遞。但是建議大家每次投遞都認真準備,你的每一次投遞、面試都可能被記錄,如果多次面試、投遞沒有展現出成長,也還是會影響後續的履歷篩選與面試。
面試後可以在分享面試題嗎?
可以自己記錄面試相關題目、經驗,為自己未來的面試做準備資料,但不建議立即分享(包括分享再網絡上和分享給其他同學),有些公司筆試、面試時時會簽署協定的,如果發現分享最新面試、筆試題目,可能會直接取消錄用資格。
學習分享,共勉
Android進階架構師進階之路
題外話,我在阿裡工作多年,深知技術改革和創新的方向,Android開發以其美觀、快速、高效、開放等優勢迅速俘獲人心,但很多Android興趣愛好者所需的進階學習資料确實不太系統,完整。今天我把我搜集和整理的這份學習資料分享給有需要的人,若有關Android學習進階可以與我在Android終極開發交流群一起讨論交流。 點選這裡前往我的Git領取資料 的同時,還可以加入一個好的學習交流圈,何樂而不為呢?加入我們和我們一起吧!!
- Android進階知識體系學習腦圖
- Android進階進階工程師學習全套手冊
- 對标Android阿裡P7,年薪50w+學習視訊
- 大廠内部Android高頻面試題,以及面試經曆
-1616725189375)]
- 對标Android阿裡P7,年薪50w+學習視訊
[外鍊圖檔轉存中…(img-oq3OqOev-1616725189377)]
- 大廠内部Android高頻面試題,以及面試經曆