前言
近日,字節跳動正式啟動了2021屆秋季校園招聘,為應屆畢業生開放超過6000個工作崗位。這一數字超過了該公司往年秋招規模,并與其今年春招規模持平。全年校招人數共計超過1萬2千人,遠高于同類型互聯網公司,體現了字節跳動保持業務快速增長,重視對優秀人才的持續投入。
字節跳動校園招聘負責人介紹,該項招聘主要面向2021屆畢業生,即2020 年9月至2021年8月期間畢業的大學生群體。這批崗位覆蓋字節跳動10多項產品和業務,既包括今日頭條、抖音、西瓜視頻等旗艦產品,也包括懂車帝、幸福里、番茄小說等垂類應用,以及清北網校、瓜瓜龍、飛書等新興業務。具體職位包含研發、產品、運營、設計、市場、銷售等多種類別,涉及北京、上海、深圳、杭州、成都、廣州、武漢、南京等多座城市。
閉關刷題
以前在網上找技術博客,不成體系的學習效果真的太低了,經常因為信息過多,還有信息不準確而耽誤時間,很容易就分心了。
后面除了跟視頻學習,就是一直在刷這套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、算法題,
用了貪心沒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、閑聊
最后
考慮到文章的篇幅問題,我把這些問題和答案以及我多年面試所遇到的問題和一些面試資料做成了PDF文檔,如果有需要的朋友可以免費領取
點擊這里領取Android面試資料匯總
遇到的問題和一些面試資料做成了PDF文檔,如果有需要的朋友可以免費領取
點擊這里領取Android面試資料匯總
[外鏈圖片轉存中…(img-Cw0MxmBu-1621435861680)]
[外鏈圖片轉存中…(img-n3IU45Hg-1621435861683)]
喜歡的朋友可以關注、轉發、點贊 感謝!