從猿輔導(dǎo)一面掛,怒刷1000道Android面試題晓殊,成功入職字節(jié)跳動(dòng)断凶!

緣起

從16年畢業(yè)至今,就職過(guò)兩家公司挺物,大大小小項(xiàng)目做了幾個(gè)懒浮,非常感謝我的兩位老大飘弧,在我的android成長(zhǎng)路上給予我很多指導(dǎo)识藤,亦師亦友的關(guān)系砚著。

從年前至今參加面試了很多公司,從猿輔導(dǎo)一面掛痴昧,我深刻意識(shí)到Android開(kāi)發(fā)內(nèi)卷太嚴(yán)重了稽穆,面試都是需要背八股文,狂刷leecode赶撰。最后順利拿到了字節(jié)跳動(dòng)offer舌镶。總結(jié)下經(jīng)驗(yàn)豪娜,也是對(duì)過(guò)去的一個(gè)回顧和總結(jié)吧餐胀。

猿輔導(dǎo)(一面掛)

  • 自我介紹

  • 怎么學(xué)Android的

  • 聊了聊項(xiàng)目

    • 項(xiàng)目中涉及到了跨進(jìn)程通信,為什么選廣播而不是別的跨進(jìn)程通信方式

    • 不局限于Android瘤载,有沒(méi)有直接跨進(jìn)程傳對(duì)象的方式

    • 共享內(nèi)存了解嗎否灾,共享內(nèi)存分配的內(nèi)存在哪個(gè)區(qū)域

  • 講了講Android的繪制流程

    • 第一次繪制的消息是怎么發(fā)出來(lái)的

    • 后邊的繪制消息是怎么循環(huán)的

  • 序列化

    • 序列化的方式都有哪些

    • Serializable和Parcelable有什么區(qū)別,分別用在什么場(chǎng)景

    • 為什么要區(qū)分場(chǎng)景鸣奔,都用Serializable不行嗎

    • 除了上邊兩個(gè)還有別的序列化方式嗎

  • 講講單例

    • 你見(jiàn)過(guò)的幾種單例墨技,他們分別都有什么優(yōu)勢(shì)

    • volatile有什么用

    • 為什么DCL要那么寫(xiě),直接在方法前加synchronized不行嗎

  • 講講多線程

    • 怎么創(chuàng)建一個(gè)線程
    • 為什么要用線程池
    • JavaAPI線程池有哪些參數(shù)
    • 什么是核心線程
    • 怎么銷(xiāo)毀核心線程
  • Android消息機(jī)制

    • 講了講消息機(jī)制

    • 主線程死循環(huán)不會(huì)卡死嗎

    • epoll的時(shí)候算是卡頓嗎

    • 怎么樣算是卡頓了

    • 怎么利用消息機(jī)制檢測(cè)卡頓

    • 除了這種方式還有別的監(jiān)測(cè)卡頓的方式嗎

  • WebView

    • 講講你知道的WebView的一切

    • JSBridge具體是什么了解嗎

    • Webview和Android原生通信是怎么通信的

  • HashMap

  • 算法 移動(dòng)零 劍指offer原題

字節(jié)跳動(dòng)面試

一面
1:插件化挎狸。啟動(dòng)activity的hook方式扣汪。taskAffity。
2:okhttp支持HTTP2锨匆?http2的功能有哪些崭别?tcp方面擁塞控制?tsl的握手和具體的非對(duì)稱加密算法恐锣。非對(duì)稱名稱
3:handler的post(Runnable)如何實(shí)現(xiàn)的紊遵。callback,runnable侥蒙,msg的執(zhí)行優(yōu)先級(jí)暗膜。阻塞是怎么實(shí)現(xiàn)的?為什么不會(huì)阻塞主線程鞭衩?
5:求二叉樹(shù)中兩個(gè)節(jié)點(diǎn)之間的最大距離学搜。
6:206含義,未修改資源是哪個(gè)论衍,302含義瑞佩,301含義
7:多進(jìn)程通信問(wèn)題。binder優(yōu)勢(shì)坯台。aidl生成的java類細(xì)節(jié)炬丸。多進(jìn)程遇到哪些問(wèn)題?
8:動(dòng)態(tài)代理傳入的參數(shù)都有哪些?非接口的類能實(shí)現(xiàn)動(dòng)態(tài)代理嗎稠炬?ASM的原理
9:Application和Activity在Context的繼承樹(shù)上有何區(qū)別焕阿?二者使用上有何不同?
10:任意一顆二叉樹(shù)首启,求最大節(jié)點(diǎn)距離

二面
1:設(shè)計(jì)一個(gè)日志系統(tǒng)暮屡。
2:內(nèi)存泄露的分類。怎么查看內(nèi)存泄露的問(wèn)題
3:touch事件源碼問(wèn)題毅桃。
4:組件化的問(wèn)題褒纲。module和app之間的區(qū)別。moduler通信是如何實(shí)現(xiàn)的钥飞。
5:native奔潰的日志采集莺掠,怎么處理?
6:注解實(shí)現(xiàn)一個(gè)提示功能:如果int的值大于了3需要提示读宙。

三面
1:介紹下flutter的啟動(dòng)流程
2:介紹下flutter與weex的區(qū)別
3:組件化介紹一下
4:webview中與js通信的手段有哪些汁蝶?
5:介紹下flutter_boost的原理

四面
1:適配器和裝飾模式各自特點(diǎn)和使用場(chǎng)景
2:視頻編解碼是怎么做的
3:三色球排序

那我是如何準(zhǔn)備Android面試?

一论悴、簡(jiǎn)歷

網(wǎng)上有很多對(duì)程序員簡(jiǎn)歷的一些指導(dǎo)掖棉,這里就不重述,大家可以搜下網(wǎng)上其他大神的總結(jié)膀估,結(jié)合自身情況修改下幔亥。我有幾點(diǎn)建議:

1.盡量不要花哨,程序員和設(shè)計(jì)師或者產(chǎn)品運(yùn)營(yíng)還不一樣察纯,我們的簡(jiǎn)歷成功與否決定權(quán)還是在技術(shù)面試官那帕棉,而他們看重的是你的項(xiàng)目經(jīng)驗(yàn)內(nèi)容和技術(shù)等描述。

2.技能描述這塊盡量只寫(xiě)你懂得而且理解深刻的饼记,可以適當(dāng)加入一些新技術(shù)或流行框架香伴,不過(guò)這塊需要理解,沒(méi)來(lái)得及看源碼的可以看看大神們對(duì)它的總結(jié)具则,網(wǎng)上一大堆即纲。

3.項(xiàng)目經(jīng)驗(yàn)這塊盡量加入關(guān)鍵詞,比如使用了什么技術(shù)博肋、用到哪些設(shè)計(jì)模式低斋、優(yōu)化數(shù)據(jù)對(duì)比、擴(kuò)展總結(jié)之類的匪凡。而非一味地介紹這個(gè)項(xiàng)目?jī)?nèi)容(那是產(chǎn)品經(jīng)理的描述)膊畴,比如性能優(yōu)化這塊,分為UI性能優(yōu)化病游、內(nèi)存優(yōu)化唇跨、數(shù)據(jù)庫(kù)優(yōu)化、網(wǎng)絡(luò)優(yōu)化、耗電優(yōu)化等等买猖「拈伲可以從1.如何發(fā)現(xiàn)問(wèn)題,2.怎么解決問(wèn)題政勃,3.解決效果對(duì)比唧龄,這幾個(gè)方面去描述兼砖。舉個(gè)簡(jiǎn)單例子——UI優(yōu)化奸远,可以從 UI出現(xiàn)什么問(wèn)題(卡頓不流暢),怎么查找問(wèn)題(手機(jī)開(kāi)發(fā)者權(quán)限>GPU過(guò)度繪制 發(fā)現(xiàn)層級(jí)問(wèn)題讽挟,TraceView CPU使用情況分析)懒叛,怎么解決問(wèn)題(降低層級(jí)、自定義View繪圖出現(xiàn)問(wèn)題等)耽梅,解決問(wèn)題后性能再次對(duì)比薛窥。

二、面試刷題

第一章 網(wǎng)絡(luò)面試題

1眼姐、HTTP協(xié)議
2诅迷、TCP/IP協(xié)議
3、TCP的三次握手與四次揮手理解及面試題
4.網(wǎng)頁(yè)中輸入url众旗,到渲染整個(gè)界面的整個(gè)過(guò)程罢杉,以及中間用了什么協(xié)議?
5.TCP和UDP的區(qū)別贡歧?
6.HTTP的幾種請(qǐng)求方法具體介紹
7.HTTP請(qǐng)求和響應(yīng)報(bào)文的格式滩租,以及常用狀態(tài)碼
8.一個(gè) TCP 連接上面能發(fā)多少個(gè) HTTP 請(qǐng)求

第二章 數(shù)據(jù)結(jié)構(gòu)與算法面試題

1.1.1 常用的數(shù)據(jù)結(jié)構(gòu)有哪些?
1.1.2 數(shù)組
1.1.3 鏈表
1.1.4 隊(duì)列&堆棧
1.1.5 二叉樹(shù)
1.1.6 HashMap
1.1.7圖
1.1.8排序算法有哪些?
1.1.9 查找算法
1.1.10 串
1.1.12 其他算法

第三章 Java面試題

  1. HashMap

2.ArrayList

3.LinkedList

4.Hashset源碼分析

  1. 內(nèi)存模型

  2. 垃圾回收算法(JVM)

7.垃圾回收機(jī)制和調(diào)用 System.gc()的區(qū)別利朵?

  1. 類加載過(guò)程

9.反射

10.多線程和線程池

11.創(chuàng)建多線程方式律想、線程池工作原理

12.設(shè)計(jì)模式(六大基本原則、項(xiàng)目中常用的設(shè)計(jì)模式绍弟、手寫(xiě)單例等)

13.斷點(diǎn)續(xù)傳

14.Java 四大引用

15.Java 的泛型

  1. final技即、finally、finalize 的區(qū)別

17.接口樟遣、抽象類的區(qū)別

18.從 java 容器類的設(shè)計(jì)討論抽象類和接口的應(yīng)用

19.synchronized和lock的區(qū)別

第四章 Android 面試題

1.Activity啟動(dòng)模式

2.Activity的啟動(dòng)過(guò)程

3.進(jìn)程通訊

4.Android Binder之應(yīng)用層總結(jié)與分析

5.進(jìn)程崩逊荩活方法

6.從源碼了解handler looper ,messageQueue思路

7.handler如何實(shí)現(xiàn)延時(shí)發(fā)消息postdelay()

8.Android中為什么主線程不會(huì)因?yàn)長(zhǎng)ooper.loop()里的死循環(huán)卡死?

9.RxJava原理及如何封裝使用

10.okhttp源碼分析

11.retrofit源碼分析

12.LeakCanary核心原理源碼淺析

13.LruCache 使用及原理

14.ARouter原理

15.注解框架實(shí)現(xiàn)原理

16.Android 如何編寫(xiě)基于編譯時(shí)注解的項(xiàng)目

17.RxJava2+Retrofit2+OkHttp3的基礎(chǔ)年碘、封裝和項(xiàng)目中的使用

18.Rxjava2.0+Retrofit+Okhttp(封裝使用)+MVP框架搭建

19.Android 插件化和熱修復(fù)知識(shí)梳理

20.Android開(kāi)發(fā)中比較常見(jiàn)的內(nèi)存泄漏問(wèn)題及解決辦法

21.如何檢測(cè)和定位Android內(nèi)存泄漏

22.圖片占據(jù)的內(nèi)存算法

23.為什么圖片需要用軟引用澈歉,MVP模式中的view接口用弱引用

24.基于DataBinding與LiveData的MVVM實(shí)踐

25.App穩(wěn)定性優(yōu)化

26.App啟動(dòng)速度優(yōu)化

27.App內(nèi)存優(yōu)化

28.App繪制優(yōu)化

29.App瘦身

30.網(wǎng)絡(luò)優(yōu)化

31.App電量?jī)?yōu)化

32.安卓的安全優(yōu)化

33.為什么WebView加載會(huì)慢呢?

34.如何優(yōu)化自定義View

三屿衅、數(shù)據(jù)結(jié)構(gòu)和算法

學(xué)什么埃难?

有些同學(xué)可能要問(wèn)了:我學(xué) Android的有必要學(xué)習(xí)算法嗎?答案是:別無(wú)選擇

國(guó)內(nèi)互聯(lián)網(wǎng)面試的流程逐漸在向國(guó)外靠攏涡尘,像字節(jié)跳動(dòng)忍弛、BAT 等大廠,手撕算法題已經(jīng)成為了必選動(dòng)作考抄。

確實(shí)细疚, Java 相對(duì)于 C、C++有著豐富的類庫(kù)和三方框架川梅,進(jìn)入工作后大部分人都是在寫(xiě)業(yè)務(wù)代碼疯兼,俗稱 API boy 或者 Crud boy,算法看起來(lái)并不是那么重要贫途,但是考算法真的是公司面試篩選人的低成本辦法吧彪,如果你寫(xiě)出了算法并且通過(guò)了,要么你聰明要么你勤奮(刷題了)丢早。

所以不管你是學(xué)什么語(yǔ)言:C姨裸、C++、python怨酝、Java傀缩、GO,算法這一關(guān)你必須得過(guò)农猬。數(shù)據(jù)結(jié)構(gòu)和算法的面試核心知識(shí)點(diǎn)我已經(jīng)列出來(lái)了赡艰,大家可以參考學(xué)習(xí),逐個(gè)擊破盛险。

  • 棧與隊(duì)列:先進(jìn)先出瞄摊、后進(jìn)先出

  • 線性鏈表

  • 查找:順序查找、二分查找

  • 排序:交換類苦掘、插入類换帜、選擇類

  • 樹(shù)、二叉樹(shù)鹤啡、圖:深度優(yōu)先(DFS)惯驼、廣度優(yōu)先(BFS)

  • 遞歸

  • 分治

  • 滑窗

  • 三大牛逼算法:回溯、貪心递瑰、動(dòng)態(tài)規(guī)劃(DP)

怎么學(xué)祟牲?

最好或者最笨的方法就是刷題,強(qiáng)烈推薦力扣:https://leetcode-cn.com 建議刷300題以上抖部,要覆蓋簡(jiǎn)單说贝、中等、困難的題目慎颗。面試前要訓(xùn)練手感乡恕,不要生疏了言询,可以選保持每日或幾日一題。

在刷題之前我建議你看一些書(shū): 《漫畫(huà)算法-小灰的算法之旅》

如果你之前沒(méi)有任何算法基礎(chǔ)傲宜,這邊書(shū)很適合你运杭,可以補(bǔ)充數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ)知識(shí),像什么是時(shí)間復(fù)雜度空間復(fù)雜度函卒、查找辆憔、排序等。 如果你有了一定基礎(chǔ)了报嵌,建議你直接跳到最后面的算法實(shí)戰(zhàn)部分虱咧。

《劍指 offer》

非常經(jīng)典的一本書(shū),學(xué)算法的人必刷沪蓬。但是要注意了彤钟,這邊書(shū)里面的題目是用 C++寫(xiě)的来候,如果你是 Java 開(kāi)發(fā)人員可能會(huì)有點(diǎn)影響跷叉。但是要記住學(xué)習(xí)算法最關(guān)鍵的還是解題思路和方法,用什么語(yǔ)言實(shí)現(xiàn)是其次的营搅,如果你時(shí)間比較多我是建議你用 Java 語(yǔ)言再實(shí)現(xiàn)一遍云挟。

《labuladong的算法小抄》

非常推薦!這是一本很新的書(shū)转质,寫(xiě)書(shū)前作者在 Github 開(kāi)源了一個(gè)項(xiàng)目园欣,主要講解 LeetCode 解題套路,Start 總數(shù)排名前40休蟹。在書(shū)的開(kāi)頭講解了學(xué)習(xí)算法的基本思維和套路沸枯,建議看這邊書(shū)的同時(shí)再配合 leetcode 刷題,療效非常棒赂弓!

《算法導(dǎo)論》

要是不推薦這本書(shū)是不是顯得我有點(diǎn) low 了绑榴,這是一本科班出身的同學(xué)必看必學(xué)的經(jīng)典大部頭。國(guó)外大佬寫(xiě)的盈魁,國(guó)內(nèi)翻譯的經(jīng)典之作翔怎,雖然是經(jīng)典但是不建議剛?cè)腴T(mén)算法的同學(xué)看,因?yàn)榭戳诉@本書(shū)你可能要放棄算法了杨耙,比較難看懂赤套。建議有了一定基礎(chǔ)再入手這邊書(shū)。

如果你覺(jué)得看書(shū)比較枯燥珊膜,可以推薦你看一些極客時(shí)間的專欄容握,不過(guò)是收費(fèi),但是質(zhì)量非常高车柠。 《數(shù)據(jù)結(jié)構(gòu)與算法之美》

這個(gè)專欄是文字+語(yǔ)音剔氏,作者是王爭(zhēng)脖旱,前 Google 工程師。他采用最適合工程師的學(xué)習(xí)方式介蛉,不拘泥于某一特定編程語(yǔ)言萌庆,從實(shí)際開(kāi)發(fā)場(chǎng)景出發(fā),由淺入深教你學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的方法币旧,幫你搞懂基本概念和核心理論践险,深入理解算法精髓,幫你提升使用數(shù)據(jù)結(jié)構(gòu)和算法思維解決問(wèn)題的能力吹菱。

《算法面試通關(guān)40講》

這個(gè)專欄是視頻巍虫,作者是覃超,前Facebook工程師鳍刷。作者會(huì)用白板帶你一步一步解題占遥,層層深入一環(huán)扣一環(huán),每一題還會(huì)用多種解題方法输瓜。我基本看完了瓦胎,收獲頗多。

leetcode尤揣、書(shū)和極客專欄可以并行搔啊,學(xué)練結(jié)合,不要光看不練哦北戏。

本文在開(kāi)源項(xiàng)目:https://github.com/Android-Alvin/Android-LearningNotes 中已收錄负芋,里面包含不同方向的自學(xué)編程路線、面試題集合/面經(jīng)嗜愈、及系列技術(shù)文章等旧蛾,資源持續(xù)更新中...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蠕嫁,隨后出現(xiàn)的幾起案子锨天,更是在濱河造成了極大的恐慌,老刑警劉巖拌阴,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绍绘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡迟赃,警方通過(guò)查閱死者的電腦和手機(jī)陪拘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纤壁,“玉大人左刽,你說(shuō)我怎么就攤上這事∽妹剑” “怎么了欠痴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵迄靠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我喇辽,道長(zhǎng)掌挚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任菩咨,我火速辦了婚禮吠式,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抽米。我一直安慰自己特占,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布云茸。 她就那樣靜靜地躺著是目,像睡著了一般。 火紅的嫁衣襯著肌膚如雪标捺。 梳的紋絲不亂的頭發(fā)上懊纳,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音宜岛,去河邊找鬼长踊。 笑死功舀,一個(gè)胖子當(dāng)著我的面吹牛萍倡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辟汰,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼列敲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帖汞?” 一聲冷哼從身側(cè)響起戴而,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翩蘸,沒(méi)想到半個(gè)月后所意,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡催首,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年扶踊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郎任。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秧耗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舶治,到底是詐尸還是另有隱情分井,我是刑警寧澤车猬,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響段只,放射性物質(zhì)發(fā)生泄漏辙谜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一铸磅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杭朱,春花似錦阅仔、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至刃唐,卻和暖如春羞迷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背画饥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工衔瓮, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抖甘。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓热鞍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衔彻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子薇宠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容