2019Android阿里&騰訊&百度&字節(jié)&美團&網易&愛奇藝校招面試匯總

系列文章

  1. 2019年Android實習面試匯總
  2. 2019年Android校招面試總結
  3. 2019Android阿里&騰訊&百度&字節(jié)&美團&網易&愛奇藝校招面試匯總

基本情況

  • 2020屆碩士生,Android開發(fā)崗
  • 此文主要是2019年年初春招實習的面試和正式校招面試經驗匯總,最終校招拿到了騰訊,百度,美團,網易等offer
  • 主要包括阿里4面,騰訊8面,字節(jié)3面,百度3面,美團3面,網易3面,愛奇藝3面

阿里

阿里面試很喜歡問源碼,優(yōu)化,原理,涉及到的范圍很廣,還是具有一定挑戰(zhàn)性的,以下包括阿里實習二面和校招二面,筆者都止步于二面,阿里可以去找找內推(筆者實習投遞時筆試做的差,本來以為掛了,但可能因為找的內推所以還是給我面試了,后續(xù)又加了一輪筆試,校招時也是找的內推直接面試了沒有筆試)。

阿里實習一面

  • 源碼:Handler消息機制(具體涉及到的類 & 細節(jié));HashMap(數(shù)據(jù)結構 & put操作具體過程,擴容時間復雜度);ArrayMap原理
  • JVM:Java內存區(qū)域劃分,堆棧的區(qū)別,哪些區(qū)域線程私有,哪些共享;棧幀,Java方法調用時的入棧出棧操作
  • 并發(fā)訪問:volatile原理及作用,是否具有原子性;synchronized:修飾代碼塊/方法/對象的區(qū)別? (單例模式DCL會不會失效?);Lock的原理
  • Android:Activity生命周期(具體執(zhí)行過程,涉及到哪些類?);ANR(什么是ANR?怎么監(jiān)測:運行前,運行后,線上監(jiān)測?)

阿里實習二面

  • 項目:項目使用人數(shù),有無上架商店;有無IM通訊模塊;登錄模塊是怎么解決的;如何讓千萬級別用戶的APP用戶實時知道自己狀態(tài)(APP端 & 服務器端)
  • Java:synchronized修飾方法和類有什么區(qū)別;volatile關鍵字作用
  • JVM:內存分配;垃圾回收算法
  • Android:事件分發(fā)機制;消息機制(為什么Looper死循環(huán)沒事?怎么實現(xiàn)線程間通訊?);操作系統(tǒng)層面死循環(huán)是怎么回事;死循環(huán)一定會導致ANR麼?;View繪制流程(具體原理,包括不限于繪制三大流程)
  • 網絡:HTTP緩存

阿里校招一面

  • Android:有沒有遇到OOM問題,有沒有遇到內存泄漏問題,怎么解決;Handler機制原理;ThreadLocal作用及原理;Activity啟動到加載View過程;View繪制過程;OKHttp框架(1. 為什么選擇它 2. 性能 3. 內部有哪些設計模式);EventBus框架
  • 設計模式:用過哪些設計模式
  • 實習:實習項目中遇到的難點
  • 網絡:HTTP & HTTPS區(qū)別
  • 其他:為什么選擇xx部門;參加的競賽情況

阿里校招二面

  • 項目:為什么選擇OKHTTP框架;圖片框架?(Glide);JSON解析框架?(Gson);怎么確定技術選型;項目APP頁面?zhèn)€數(shù);阿里云對象存儲OSS上傳憑證怎么設計緩存,怎么加密(加密算法有哪些?)
  • Android:Activity生命周期,啟動透明Activity生命周期,按Home鍵后生命周期流程;后臺殺死APP后怎么恢復數(shù)據(jù);一個APP可以多進程嗎;ListView和RecyclerView區(qū)別;RecyclerView卡頓怎么排查,RecyclerView怎么實現(xiàn)多Type,RecyclerView的ItemView層級過深怎么優(yōu)化;Android多進程;怎么設計Android線程間通信;Handler機制,子線程可以用Handler嗎?
    ANR原理?
  • Java:private protected public 關鍵字的用法區(qū)別;
    接口,抽象類區(qū)別,抽象類要不要實現(xiàn)接口的方法;
    Map的線程安全,讀多寫少選哪個集合;
  • 網絡:HTTP/HTTPS區(qū)別;TCP是什么,握手與揮手過程;長連接;服務器推送怎么實現(xiàn)

騰訊

騰訊面試涉及到的范圍也很廣,甚至問到了C++,也具有一定挑戰(zhàn)性的,以下包括騰訊實習四面和校招四面,最終拿到了測開崗位offer,騰訊面試過程中的感覺就是很多我不太熟悉的知識點都被問到了,甚至是不知道的知識點,但整體面試官給人的體驗還不錯,一般會提前打電話溝通面試時間。

騰訊實習提前批一面

  • Android:四大組件是什么,輪番介紹;Fragment是什么,與Activity區(qū)別;SurfaceView與View區(qū)別,SurfaceView原理;前臺服務與后臺服務區(qū)別;AIDL了解么;IPC方式有哪些,哪種方式最快;Protocol Buffer了解么;APP中多進程有什么用;方法數(shù)65536怎么解決;View顯示過程
  • Java:線程同步方式;死鎖是什么
  • JVM:內存分配方式;堆和棧的區(qū)別;GC算法,垃圾回收;class文件生成過程
  • 計算機網絡:什么是HTTP,HTTP/HTTPS區(qū)別;TCP三次握手 四次揮手過程;TCP/UDP區(qū)別;HTTP是長連接還是短連接;HTTP狀態(tài)碼;抓包工具,怎么抓包HTTPS
  • 設計模式:生產者,消費者是什么;命令模式
  • 數(shù)據(jù)結構:快排及時間復雜度多少;七大排序;二叉樹原理;紅黑樹

騰訊實習提前批二面

  • C++:class與struct區(qū)別
  • 項目:介紹項目,有什么難點;競賽用了單片機,指令級是什么
  • Java:HashMap;ArrayList,LinkedList用法有什么要注意的;注解介紹下;泛型中類型擦除是什么
  • 數(shù)據(jù)結構:線段樹;B+樹
  • Android:OkHttp,OkHttp使用需要注意什么;RxJava介紹下;Activity四種啟動模式;一個APP怎么退出所有Activity,如果有第三方SDK Activity,又怎么退出

騰訊實習正式批一面

  • 算法題:字符串中出現(xiàn)頻率中位數(shù);最長公共子串問題LCS
  • 項目:OKHTTP框架
  • 計算機網絡:TCP UDP HTTP區(qū)別;TCP滑動窗口;用UDP實現(xiàn)TCP
  • 數(shù)據(jù)庫:三大范式;索引,怎么知道命中索引
  • 操作系統(tǒng):進程間通訊方式;共享內存原理

騰訊實習正式批二面

  • 項目:項目介紹;內存泄漏
  • Android:OKHTTP 對HTTP與HTTPs之間的區(qū)別;HTTPs加密原理;BlueboothAdapter;Activity在AndroidManifest.xml文件中有哪些標志位,CLEAR_TOP模式,singleTop和singleTask分別的使用場景;Android存儲(文件,SP,數(shù)據(jù)庫[具體介紹下SQLite]);Android虛擬機與Java虛擬機之間區(qū)別
  • Java:深拷貝 淺拷貝(內存溢出or垃圾回收時有什么區(qū)別?);多線程模型
  • 數(shù)據(jù)結構:二叉樹;B樹(插入/刪除過程)

騰訊校招提前批一面

  • 項目:項目介紹;項目實現(xiàn)的功能
  • 網絡:介紹下HTTP協(xié)議;HTTPS公鑰暴露怎么辦;HTTP分段上傳文件怎么保證正確;HTTP緩存
  • Java:進程 線程區(qū)別;子線程間通訊;解決死鎖的辦法,怎么判斷發(fā)生死鎖
  • 算法題:數(shù)組重新排序保證奇數(shù)偶數(shù)順序不變,最終使所有奇數(shù)在前,偶數(shù)在后;2數(shù)/3數(shù)之和

騰訊校招提前批二面

  • 項目:項目梳理;圖片壓縮算法;Bitmap JPG區(qū)別;斷點重傳,怎么動態(tài)確定范圍;
    斷點下載;CRC原理
  • 設計模式:MVC優(yōu)點缺點;MVP中的MVC的C實現(xiàn)在哪;單例模式的餓漢與懶漢的選擇,使用場景
  • 網絡:HTTPS加密方式

騰訊校招正式批測開一面

  • Android:Crash,ANR怎么解決
  • 數(shù)據(jù)結構:設計世界杯32強對戰(zhàn)數(shù)據(jù)結構
  • 益智題:2個球,一共100樓找到哪一層扔下來球剛好會壞
  • 其余:介紹測開具體工作

騰訊校招正式批測開二面

  • 項目:聊細節(jié)
  • Android:圖片,語音大內存數(shù)據(jù)的性能排查,定位;Handler內存泄漏問題;ART Dalvik區(qū)別;GC機制;CountDownLatch原理
  • 算法題:不使用循環(huán),大于號,小于號等查找數(shù)組中最大值
  • 閑聊:自我優(yōu)勢

字節(jié)

字節(jié)面試比較注重基礎,包括在線寫題,數(shù)據(jù)結構,Java基礎,JVM基礎,操作系統(tǒng)等;以下包括實習3面;字節(jié)實習面試是一天內走完所有技術面試流程,每一面結束后如果通過則15min左右就開始下一輪面試,全部為視頻面試。

字節(jié)實習一面

  • 項目:介紹項目
  • Java:深拷貝/淺拷貝,怎么實現(xiàn)深-淺拷貝,CopyonWrite;Java內存(分配->回收的詳細過程)
  • 網絡:TCP揮手,第三次不揮手會怎么樣;HTTPs加密的解釋,對稱/非對稱加密
  • 算法:數(shù)組A,數(shù)組B,計算A-B;0-n之間所有質數(shù)(可以先求所有合數(shù))

字節(jié)實習二面

  • Java:線程同步問題(為什么需要同步&怎么實現(xiàn)同步)
  • 設計模式:單例模式(靜態(tài)內部類);其他設計模式簡介
  • 數(shù)據(jù)結構:排序算法,歸并/快排(實現(xiàn)原理/平均復雜度/能否提前結束/誰性能更優(yōu)),
    堆排(怎么實現(xiàn)調整堆結構/k個最大的數(shù));
  • 算法題:給定兩個有序整數(shù)數(shù)組 nums1 和 nums2,將 nums2 合并到 nums1 中,使得 num1 成為一個有序數(shù)組

字節(jié)實習三面

  • 自我介紹:學過的專業(yè)課程;看過哪些計算機專業(yè)書
  • 操作系統(tǒng):內存分配區(qū)域(Java層面回答,對象引用在堆和棧都有么?函數(shù)內部new的對象存放在哪?);用戶態(tài)/內核態(tài);中斷是什么
  • 網絡:計算機網絡有哪幾層,分別對應什么協(xié)議;IP/TCP傳輸?shù)亩际鞘裁磾?shù)據(jù);DNS是什么,有什么作用

百度

百度是現(xiàn)場面試,一共三面沒有HR面,第三面是總監(jiān)面,兼顧技術面與非技術面試,百度的面試官都比較友好,一面技術問的比較細,二面重項目,三面是聊天居多。

百度校招一面

  • 項目:項目介紹;項目中的編碼規(guī)范
  • Android:Android四大組件安全性;Activity啟動模式;IntentFilter匹配規(guī)則,action和category區(qū)別;Handler阻塞為什么不卡死;事件分發(fā)機制,onTouchEvent返回false處理流程, dispatchTouchEvent返回false處理流程;Looper是什么;對象池,手寫對象池實現(xiàn);ContentProvider原理;sp支持跨進程么,怎么解決跨進程,怎么實現(xiàn)進程同步;
    幀動畫實現(xiàn): 100張圖,200ms顯示一張,讀取一張圖要400ms,怎么解決避免卡頓;Bitmap內存復用限制條件
  • 操作系統(tǒng):線程時間片分配原理

百度校招二面

  • 項目:梳理項目;項目難點;項目中技術框架
  • 算法題:手寫二分法;電梯狀態(tài)機設計
  • 其他:優(yōu)缺點;專業(yè)

百度校招三面

  • 算法題:最長公共子串
  • Android:ART虛擬機類加載機制;okhttp原理;熱修復原理
  • 其余閑聊:優(yōu)點缺點;大學遺憾;作為班長組織了哪些活動;長期堅持的事情;專業(yè)去向

美團

美團面試是現(xiàn)場一天面完,技術面試一共兩輪,最后有一輪HR面試,回憶起來似乎問的問題不是特別多,但都比較開放,聊的比較深入,技術一面直接打開美團APP聊相關頁面設計實現(xiàn),這種方式還是比較新穎的,二面則是聊項目比較多,問很多項目中具體實現(xiàn)細節(jié)。

  • 項目:實習項目;項目最難點;項目中技術選擇;阿里云對象存儲OSS的STS憑證設計
  • Android:Lint工具是編譯期的嗎,原理;美團首頁設計具體實現(xiàn);
    RecyclerView多Item的難點;
  • 設計模式:MVP MVVM使用場景
  • HR:現(xiàn)在有什么offer;選擇offer依據(jù);聊一聊怎么解決公司內溝通問題

網易

網易技術面試一共四輪,三輪技術,一輪HR,前兩輪視頻面試,后兩輪現(xiàn)場面試。網易技術一面二面以基礎居多,聊的都是寫代碼會遇到的問題,比較細,三面是比較深入的,聊了很多情景題,比如日志系統(tǒng)的設計的全方面,包括效率,安全等等。

網易校招一面

  • 項目:介紹實習期間解bug映像最深的
  • Android:事件分發(fā)傳遞過程,onTouchEvent返回flase怎么辦;怎么設計緩存;Android數(shù)據(jù)持久化,數(shù)據(jù)庫怎么批處理(原理);SP支不支持多線程,SP怎么實現(xiàn)多線程;View繪制過程;Handler消息機制
  • Java:B線程怎么實現(xiàn)等待A線程完成工作;線程怎么結束工作,Java結束線程的三種方法;Java線程哪些方法支持中斷;設計一個有限資源的請求;怎么設計對象池(對象的存與放回);線程池的線程什么時候創(chuàng)建;Java中的鎖,可重入鎖性能
  • 算法題:兩個數(shù)組交換一個值,讓和相等,找到這兩個值

網易校招二面

  • 項目:實習期間工作內容;參與的項目;實習期間解的bug;參與的編程規(guī)范說一下;Lint工具了解嗎
  • 設計模式:單例模式
  • Android:進程間通信方式(與linux進程間通信區(qū)別);Socket怎么驗證安全性;廣播(全局 本地區(qū)別);怎么實現(xiàn)文件的多進程通訊(A進程改了文件怎么通知B進程讀取);二級緩存怎么設計(網絡 數(shù)據(jù)庫 view間關系);volatile關鍵字具有原子性嗎
  • View:Activity生命周期,onSaveInstanceState onRestoreInstanceState區(qū)別,調用時機,廣播注冊應該在Activity哪個生命周期里,怎么統(tǒng)計Activity onCreate的次數(shù);Fragment與Activity區(qū)別,F(xiàn)ragment生命周期管理,F(xiàn)ragment與ViewPager怎么解決重復加載;View繪制過程,MeasureSpec的三種模式;Framelayout LinearLayout ReativeLayout中分別設置Button在右下角;margin padding區(qū)別,gone invisible的區(qū)別;requestLayout、invalidate與postInvalidate區(qū)別;Android動畫怎么取消循環(huán)動畫,repeat模式;drawable與view區(qū)別,有哪些drawable

網易校招三面

  • 項目介紹
  • Android:圖片傳輸過程中URL加上大小以節(jié)省流量,如果忘記加怎么辦,如果ImageView是wrap_content怎么設定大小;圖片相關緩存,編碼,內存復用,格式(svg等);
    drawable mutate是什么;okhttp 橋接攔截器和緩存攔截器;設計自定義DNS解析器
  • 設計題:有沒有看過開源打點框架;打點系統(tǒng)設計,寫日志文件過程中會有buffer,此時進程被殺怎么辦,打點日志被用戶篡改怎么辦,怎么保證日志安全性,怎么保證日志沒有被重復傳
  • 其余:磁盤內存映射原理;平時開發(fā)有沒有遇到過復用問題;最近了解了什么Android新動向;自己學習計劃

愛奇藝

愛奇藝一面二面還是以基礎為多,三面是總監(jiān)面會深入聊一下原理問題,而且也比較細節(jié)。

愛奇藝實習一面

  • 項目:介紹實習項目;分析內存泄漏,線程同步的問題
  • 計算機網絡:HTTP/HTTPS區(qū)別
  • Android:OkHttp框架(里面有那些設計模式);如何終止一個線程

愛奇藝實習二面

  • 項目:介紹項目;內存泄漏的來源,有沒有做過優(yōu)化
  • Android:Service的兩種啟動方式,區(qū)別在哪;性能優(yōu)化有沒有做過
  • Java:手寫單例模式
  • 算法:刪除鏈表中一個節(jié)點

愛奇藝實習三面

  • 項目
  • Java:public關鍵字作用;.java文件名怎么確定;外部類最多有幾個,內部類最多有幾個,內部類支持嵌套么;線程池怎么給新建的線程設置名字,線程池種類;
    注解的使用
  • Android:Activity的啟動模式,生命周期,Activity A->B的生命周期;Handler中怎么實現(xiàn)Looper和線程綁定,一個線程最多有幾個Looper,
    多個Looper報的異常,消息阻塞再次喚醒是什么機制;ThreadLocal是什么

最后

高頻面試題總結

  • Android四大組件,Activity生命周期,F(xiàn)ragment
  • Handler,Looper,ThreadLocal,事件分發(fā)機制,View繪制過程,Activity啟動過程
  • 內存泄漏,OOM,圖片加載,ANR,ART與Dalvik虛擬機
  • 多線程,多進程,死鎖
  • HTTP、HTTPS、TCP、UDP
  • HashMap及其余Java集合
  • 內存分配,回收算法,GC,堆棧區(qū)別,類加載機制
  • volatile,synchronized,Lock
  • MVC,MVP,MVVM,單例模式,觀察者模式

面試心得

  • 面試首先一般都會有個自我介紹,可以事先準備下1-2min的自我介紹
  • Android崗位面試內容較廣,需要做到各方面知識都要了解,在了解的基礎上不斷深耕
  • 現(xiàn)場面試的體驗一般優(yōu)于電話or視頻面試,因為面對面交流更有效清晰
  • 至少做一個拿的出手的項目,一是面試時可以聊起來,二是簡歷有干貨,三是通過做項目可以熟悉那些開源工具
  • Android崗位一般算法題要求不高,刷完《劍指offer》大部分就能應對了

建議

  • 主要針對非科班同學:最好系統(tǒng)的看下操作系統(tǒng)和計算機組成原理,推薦清華大學陳渝的操作系統(tǒng)公開課,因為看完操作系統(tǒng)后才能系統(tǒng)的認識計算機的原理,能更好的從底層去認識上層
  • 多看源碼,包括Java層的代碼在JVM中的實現(xiàn)源碼(如synchronized的實現(xiàn)源碼),Android Framework的源碼(更好認識Android層的實現(xiàn)),Android開源庫源碼(OKHttp,Retrofit,RxJava,EventBus,Glide,Gson等等,更好的學習優(yōu)秀開源庫源碼,做到用的熟,懂原理)
  • 多問自己為什么,比如兩個技術點優(yōu)缺點分別在哪,各自的使用場景(如單例模式下餓漢與懶漢的優(yōu)缺點,使用場景),這樣才能更契合實際應用開發(fā),針對不同場景使用不同技術點
  • 及時復盤總結面試中遇到的問題,分為兩方面,一是知道但不能深入的,這種需要繼續(xù)多看多總結,另一種是沒接觸過的,這種可以先了解下,萬一面試又遇到了,可以回答下了解到的,之后再去深入總結(畢竟時間有限,不可能面面俱到,只能不斷學習總結)

資源

Java書單

Android書單

  • 《Android開發(fā)藝術探索》:Android四大組件原理,部分Framework源碼,圖片高性能加載,多進程Binder原理等等
  • 《Android源碼設計模式》:設計模式,Android源碼中采用的設計模式;MVC,MVP,MVVM
  • 《Android進階之光》:各種Android開源框架源碼解析
  • 《Android進階解密》:Android系統(tǒng)啟動流程,Activity啟動流程,JNI,ART虛擬機,熱修復,插件化等原理
  • 《Android Gradle權威指南》:了解Gradle原理

算法書單

  • 《大話數(shù)據(jù)結構》:基本講了常見數(shù)據(jù)結構,且圖文豐富,清晰易懂
  • 《劍指offer》:刷題

操作系統(tǒng)書單

  • 《操作系統(tǒng)概念》:操作系統(tǒng)基礎概念

計算機網絡

  • 《圖解HTTP》:圖文豐富,簡單易懂介紹HTTP協(xié)議

優(yōu)秀博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容