30歲轉行程序員,一線互聯網移動架構師360°全方面性能調優,成功跳槽阿里!


前言

下面的題目都是樓主在Android交流群大家在面試字節跳動時遇到的,如果大家有好的題目或者好的見解歡迎分享,樓主將長期維護此帖。
參考解析:郭霖、鴻洋、玉剛、極客時間、騰訊課堂...

內容特點:條理清晰,含圖像化表示更加易懂。

內容概要:包括 Handler、Activity相關、Fragment、service、布局優化、AsyncTask相關
、Android 事件分發機制、 Binder、Android 高級必備 :AMS,WMS,PMS、Glide、 Android 組件化與插件化等面試題和技術棧!

閉關刷題

以前在網上找技術博客,不成體系的學習效果真的太低了,經常因為信息過多,還有信息不准確而耽誤時間,很容易就分心了。

后面除了跟視頻學習,就是一直在刷這套1307頁Android 面試全套真題解析。

這份資料是真的幫到了很多,內容全面,覆蓋率比較高,省去了很多時間和精力。

面試

前面面了貝殼找房和網易,都通過了,雖然最后沒有談好,但是有了一些信心。后面讓朋友幫忙內推了騰訊,三面順利拿下offer,薪資是28K,相比於上一份工作上漲了15K。

這里主要放騰訊面經

一面

0、說說做過的項目(差不多包括了自我介紹)
說一下我表達的重點:我做了AndroidQ的適配;我在項目中使用了新的技術:LiveData、BiometricPrompt;我使用到了設計模式:工廠、簡單工廠、單例;我在不斷優化我的代碼;我關注Google開發者大會

1、問上一份工作
抓着工作中的技術點問了很多,然后后面問題的差不多都是來自這里面。

2、EventBus和回調的對比。有沒有其他辦法可以解決類之間的耦合性。
說了LivaData,但其實差不多。老老實實說不知道了……
現在想了想,這個題目那份資料里面好像也有提到過,但是……我沒記住!!!

3、ListView和RecyclerView的比較,ListView沒用了嗎?
說了實現效果,代碼、緩存方面、ViewHolder的差異,講了一下RecyclerView在多個Fragment中有相同Item時的優越性。
ListView這個問題問到我時我差點沒笑出來……我看了微信團隊對於卡包界面是否要更新為RecyclerView的一篇文章,建議背誦全文……

4、Service和AsyncTask對比。
因為AsyncTask由於不使用匿名內部類方式很可能出現內存泄露問題,所以自己不使用,基本都是開線程池。然后面試官問AsyncTask底層,也就說了一下handler+線程池。
現在回想,有這么幾個點:生命周期方面;消息傳遞方面;底層實現方面。

5、線程通信機制。
handler、信號量、互斥量、臨界區管理synchronized之類的、共享變量volatile。

6、Android進程通信機制。
AIDL、Binder、共享文件。
前兩個沒啥說的了,老特長了。
說一下共享文件,這個我本來覺得很low,但是最近研究SharedPreference的時候,發現如果APP簽名一樣的話,可以使用同一個SharedPreference,所以也就說了共享文件。我不是想表達我用共享文件作為進程通信方式,我只是想說我了解SharedPreference。

7、ArrayList和Vector對比……不會Vector,那么ArrayList和LinkedList對比。
底層,數組,鏈表。擴容問題,我概括了一下所有的集合類的擴容方式都是裝載因子+當前容量+需要擴容容量。
我說線程安全的List有CopyOnWriteArrayList,但是面試官沒有往下問。

8、為什么擴容很多情況下都是擴容為兩倍?
這個不會,但是說底層代碼很多情況下擴容都是移位操作進行的。可能和查詢相關?

9、HashMap和HashTable對比,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,而且鎖的時候是鎖數組,並發的粒度很大。
ConcurrentHashMap用的是分段鎖而且有一個:判空+判相等+CAS+synchronized的一個鎖的過程,所以很強大。

10、CAS相關。

11、知道優先級反轉嗎?
不知道……回去研究去……

12、TCP三次握手四次揮手。
主要思路是通過SACK和全雙工來整體講解。

13、代碼,如何判斷兩個鏈表是否相交 。
我最開始想成了找到第一個相交結點,然后說了思路,面試官說有沒有更好的。然后直接判斷最后一個結點是否相等。面試官說如果有環呢,那只能用HashSet存一下了。

14、反問。
問了下面試官是什么事業群。
說是PCG平台,感覺自己應該是被PCG撈起來了。
后面就問了一下公司的一些不疼不癢的問題。

總結
整體答得還可以,就是以為是2點面試,結果3點30才面上,可能是我記錯時間了。狀態沒有調整到最好。

二面

0、自我介紹。
1、hashCode和equals方法。
2、HashMap,hash沖突解決,紅黑樹相關。
3、String、StringBuilder。
面試官問String的加法

String a = "a"+"b"+"c";

StringBuilder sb = new StringBuilder();
a = sb.append("a").append("b").append("c").toString();

這兩者效率差別,我說沒差別啊,第一種String的加法被編譯器優化成第二種,他不信我……不過還好,最后達成共識面試官面試完自己去查。
現在復盤覺得面試官應該想問的是這種情況:

String a ="";
a+="a";
a+="b";
a+="c";

我還是對的。

4、wait、notify。
問是不是只能在有鎖的情況下wait和notify。
[圖片上傳失敗...(image-1692c4-1602502611210)]
5、線程間通信方式。
handler那一套。

6、快排原理,最好情況和最壞情況時間復雜度。
最壞情況逆序n**2,順序情況我的算法還是nlogn,問了優化思路。

7、算法題,
image

用了貪心沒ac,面試官提示快排,沒想明白……

8、思考題,如果我想將一顆二叉樹存入文件,怎么樣的格式存儲可以使得讀取效率最高。
這題是個開放討論題,和面試官一直在討論怎么做。

【當時以為自己涼了,沒想到順利收到了三面的通知】

三面

0、自我介紹

1、實習工作深挖

2、RePlugin原理深挖,其他插件化框架對比

3、為什么要選擇RePlugin框架

4、你覺得自己對於Android掌握到了什么地步

5、看過什么源碼

6、你為什么要看源碼

7、你為什么要寫博客

8、知道哪些著名開源框架

9、什么是進程,進程調度算法

10、什么是線程

11、你覺得什么是JVM

12、有哪些線程同步算法

13、死鎖是什么,舉個例子

14、Object有哪些方法

15、Java異常有哪些,Error和Exception區別

16、OSI七層模型,TCP、UDP是哪一層,應用層有哪些協議

17、如果要設計一個大量圖片下載的方法,如何確定並發量,有哪些指標。

18、APP間傳遞消息安全嗎?要怎么做才能安全呢?

19、廣播怎么分類

20、自定義View重寫的關鍵有哪些,onLayout和onMeasure區別

21、Android有哪些動畫,MotionLayout講一下。MotionLayout使用場景。

22、Activity四種啟動模式,SingleTask和SingleTop的使用場景

23、一些Framework層的問題,不太會所以記不得了。
當時收藏一位B站UP主的視頻,有需要可以去看一下

24、你為什么想了解Framework層知識。

25、算法題。

26、你對於我們的Offer的態度

27、閑聊

學習路線+知識梳理

花了很長時間,就為了整理這張詳細的知識路線腦圖。當然由於時間有限、能力也都有限,畢竟嵌入式全體系實在太龐大了,包括我那做嵌入式的同學,也不可能什么都懂,有些東西可能沒覆蓋到,不足之處,還希望小伙伴們一起交流補充,一起完善進步。

img

本文在開源項目:Android開發不會這些?如何面試拿高薪 中已收錄,里面包含不同方向的自學編程路線、面試題集合/面經、及系列技術文章等,資源持續更新中...

這次就分享到這里吧,下篇見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM