前言
近期被兩則消息刷屏,【字節跳動持續大規模招聘,全年校招超過1萬人】【騰訊有史以來最大規模的校招啟動】當然Android崗位也包含在內,因此Android還是有很多機會的。結合往期面試的同學(主要是校招)經驗,我歸納整理了全套Android面試題解析。當然,這些面試題答案解析也整理到了PDF手冊里,文末領取。
我整理面試題如下,供大家參考,知道比沒知道的好。可以幫大家查漏不缺。以下是(騰訊,百度,華為,搜狗和滴滴 這些廠的面試題)
二、字節一面
一面是在上午9點多接到抖音的面試電話的,接到電話時相當非常興奮、非常緊張的,畢竟是第一次這樣的面試。
有些問題已經記不清了,下面列出了一面問到的問題:
一面主要問了計算機基礎:
1.自我介紹+閑聊
2.tcp/ip相關,tcp/ip模型幾層?
3.tcp和udp相關,端口號位于哪一層?如果tcp和udp訪問同一個端口號會怎么樣?
4.http相關,http哪些操作是冪等的
5.https相關,對稱非對稱加密?具體操作?為什么數據傳輸時用對稱加密?
然后是代碼題:
1.從有序數組中選出兩數之和等于target,返回索引,口述,一開始說用暴力遍歷,優化之后對兩個索引做二分,再優化對兩個索引代表的數之和做二分
2.手撕LRU 我用了hashmap和linkedlist 面試官看我撕完提了一點優化意見,冗余代碼合并,建議用環形
最后問了一下設計模式,然后又是閑聊(為什么選安卓)
反問面試官的問題:
1.評價一下我的這次面試表現!
2.一面都是基礎知識,沒怎么問安卓相關的(面試官說后面會問的)
3.有機會下次面試嗎?
一面總結:
一面大概面了50多分鐘,從面試官口中得知他是一個老員工,比我大不了多少,總體上還是聊得蠻投機的。最后的三個問題是我問面試官的,在回答我是否還有機會下次面試的時候說:競爭很激烈,不過機會還是有的。
可以看出一面的問題不是很難,但是要得到面試官比較高的評價,還是需要一定的表達能力和對技術比較本質的認識的,如果在回答問題的時候能夠做一些適當的擴展,自然會讓面試官對你有不一樣的評價。我回答問題的遵循一定的步驟:先回答問題本質,在回答具體細節,最后做一些平時編程中的擴展。這樣,會讓面試官覺得你確實是在這個技術上面下過功夫的。
三、字節二面
等了將近一周,終于再次接到字節面試電話,那叫一個激動啊,二面的面試官是一個部門主管,上來就直接問問題,開門見山沒有一點拖泥帶水。
二面面試過程中的問題:
1.自我介紹
2.項目介紹
3.設計一個可重入鎖
4.雙親委派機制
5.多態底層實現(字節碼
6.retrofit注解底層實現
7.quic協議底層實現
8.文件中間處理,怎么保證高可用
9.http2.0多路復用的底層實現
10.http2.0缺點
11.安卓內存不足考慮因素
12.加載圖片時優化
13.硬盤分區分塊,分大塊還是小塊
14.平時怎么學習
15.職業規劃
反問面試官的問題:
1.評價一下我的面試表現
2.有機會下次面試嗎?
3.您覺得我有哪些方面還需要提高?
二面總結:
二面面試官問的問題都比較直接,答案也是知道就知道,不知道就不知道。這些問題一部分是基礎,一部分是根據你的專業技能的來提問的。
面完后面試官對我的評價是:中規中矩,有機會下次面試。雖說是中規中矩,但聽到面試官說有機會下次面試就感覺這次面試應該過了。
四、阿里三面(總監面試)
又在焦灼中等待了一周,接到了三面通知。
下面是三面遇到的問題:
1.簡單自我介紹之后,圍繞曾經做過的項目問問題,譬如:
2.學過編譯原理嗎?emmmm,哭了,為什么問我這個
3.你這上面寫你可以熟練使用spring進行開發,講講怎么用spring吧。啊這,我好像沒寫我熟練使用spring進行開發啊,面試官無中生有啊!!!
4.一堆數據庫相關的問題
5.講講了解的設計模式,手寫雙校驗實現的單例
6.設計一個購物車,里面的商品有不同的打折策略,計算出總價格,寫出來代碼
7.算法題,字符串數組子集
三面總結:
本以為三面是交叉面,沒想到是字節的總監面試。由于具體的技術問題在前兩輪面試中已經問過了,所以三面后不會有具體的技術問題,總結來看,對自己做過的項目一定要深入,包括使用使用到的技術原理、為什么要使用這些技術。
針對項目,面試官關注的無非以下幾點:
- 項目中某個比較重要的點是如何實現的(需要深入技術的原理)
- 遇到的最大困難是什么(有哪些),你怎么解決的?
- 如果需要擴展某個功能,如何降低系統的耦合度
- 如果針對某個功能進行優化,你會怎么設計和優化
對于寫在簡歷上面的項目,自己對照上面四個問題進行思考,才會在面試中游刃有余。因為任何在簡歷中作假的行為,面試官只要詳細問你就露餡了。在聽到面試官說有機會下次面試的時候,心中自然是非常高興的。
五、字節四面(總監面)
四面安排在第二天下午四點多,這次面試感覺相對放松,沒有什么高深的技術問題,感覺就像和朋友聊天的感覺,真的很感謝這位面試官。
下面是面試中的問到的問題:
- 簡單自我介紹
- 介紹下你最有挑戰的項目
- 項目使用了什么架構,技術難度在哪里
- 你目前的研究方向是什么
四面總結:
雖然這面比較輕松,也沒有什么具體的技術問題,但對項目仍然是面試官關注的,后面了解到總監面除了看你的基礎,主要看你的潛力(就是有沒有培養的價值),這個東西看起來挺虛的,但是從你平時的學習中仍然是可以看得出來的。所以,作為一名開發人員,平時對技術的研究也是很重要的。在聽到面試官說讓我好好等HR通知的時候可開心了。
文末
初級工程師拿到需求會直接開始做,然后做著做著發現有問題了,要么技術實現不了,要么邏輯有問題。
而高級工程師拿到需求會考慮很多,技術的可行性?對現有業務有沒有幫助?對現有技術架構的影響?擴展性如何?等等…之后才會再進行設計編碼階段。
而現在隨著跨平臺開發,混合式開發,前端開發之類的熱門,Android開發者需要學習和掌握的技術也在不斷的增加。
通過和一些行業里的朋友交流討論,以及參考現在大廠面試的要求。我們花了差不多一個月時間整理出了這份Android高級工程師需要掌握的所有知識體系。你可以看下掌握了多少。
混合式開發,微信小程序。都是得學會并且熟練的
這些是Android相關技術的內核,還有Java進階
高級進階必備的一些技術。像移動開發架構項目實戰等
Android前沿技術;包括了組件化,熱升級和熱修復,以及各種架構跟框架的詳細技術體系
以上即是我們整理的Android高級工程師需要掌握的技術體系了。可能很多朋友覺得很多技術自己都會了,只是一些新的技術不清楚而已。應該沒什么太大的問題。
而這恰恰是問題所在!為什么別人高級工程師能年限突破30萬,而你只有十幾萬呢?
就因為你只需補充你自己認為需要的,但并不知道企業需要的。這個就特別容易造成差距。因為你的技術體系并不系統,是零碎的,散亂的。那么你憑什么突破30萬年薪呢?
我這些話比較直接,可能會戳到一些人的玻璃心,但是我知道肯定會對一些人起到點醒的效果的。而但凡只要有人因為我的這份高級系統大綱以及這些話找到了方向,并且付出行動去提升自我,為了成功變得更加努力。那么我做的這些就都有了意義。
喜歡的話請幫忙轉發點贊一下能讓更多有需要的人看到吧。謝謝!
以上系統大綱里包含的所有技術資料,我這里都有的。可以免費分享給有需要的朋友!
我這些話比較直接,可能會戳到一些人的玻璃心,但是我知道肯定會對一些人起到點醒的效果的。而但凡只要有人因為我的這份高級系統大綱以及這些話找到了方向,并且付出行動去提升自我,為了成功變得更加努力。那么我做的這些就都有了意義。
喜歡的話請幫忙轉發點贊一下能讓更多有需要的人看到吧。謝謝!
以上系統大綱里包含的所有技術資料,我這里都有的。可以免費分享給有需要的朋友!
資料領取方式:點擊我的騰訊文檔