2019年Android阿里&騰訊&百度&字節&美團&網易&愛奇藝校招面試彙總 | 掘金技術徵文

系列文章java

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

基本狀況

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

阿里

阿里面試很喜歡問源碼,優化,原理,涉及到的範圍很廣,仍是具備必定挑戰性的,如下包括阿里實習二面和校招二面,筆者都止步於二面,阿里能夠去找找內推(筆者實習投遞時筆試作的差,原本覺得掛了,但可能由於找的內推因此仍是給我面試了,後續又加了一輪筆試,校招時也是找的內推直接面試了沒有筆試)。linux

阿里實習一面

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

阿里實習二面

  • 項目:項目使用人數,有無上架商店;有無IM通信模塊;登陸模塊是怎麼解決的;如何讓千萬級別用戶的APP用戶實時知道本身狀態(APP端 & 服務器端)
  • Java:synchronized修飾方法和類有什麼區別;volatile關鍵字做用
  • JVM:內存分配;垃圾回收算法
  • Android:事件分發機制;消息機制(爲何Looper死循環沒事?怎麼實現線程間通信?);操做系統層面死循環是怎麼回事;死循環必定會致使ANR麼?;View繪製流程(具體原理,包括不限於繪製三大流程)
  • 網絡:HTTP緩存

阿里校招一面

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

阿里校招二面

  • 項目:爲何選擇OKHTTP框架;圖片框架?(Glide);JSON解析框架?(Gson);怎麼肯定技術選型;項目APP頁面個數;阿里雲對象存儲OSS上傳憑證怎麼設計緩存,怎麼加密(加密算法有哪些?)
  • Android:Activity生命週期,啓動透明Activity生命週期,按Home鍵後生命週期流程;後臺殺死APP後怎麼恢復數據;一個APP能夠多進程嗎;ListView和RecyclerView區別;RecyclerView卡頓怎麼排查,RecyclerView怎麼實現多Type,RecyclerView的ItemView層級過深怎麼優化;Android多進程;怎麼設計Android線程間通訊;Handler機制,子線程能夠用Handler嗎? ANR原理?
  • Java:private protected public 關鍵字的用法區別; 接口,抽象類區別,抽象類要不要實現接口的方法; Map的線程安全,讀多寫少選哪一個集合;
  • 網絡:HTTP/HTTPS區別;TCP是什麼,握手與揮手過程;長鏈接;服務器推送怎麼實現

騰訊

騰訊面試涉及到的範圍也很廣,甚至問到了C++,也具備必定挑戰性的,如下包括騰訊實習四面和校招四面,最終拿到了測開崗位offer,騰訊面試過程當中的感受就是不少我不太熟悉的知識點都被問到了,甚至是不知道的知識點,但總體面試官給人的體驗還不錯,通常會提早打電話溝通面試時間。面試

騰訊實習提早批一面

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

騰訊實習提早批二面

  • C++:class與struct區別
  • 項目:介紹項目,有什麼難點;競賽用了單片機,指令級是什麼
  • Java:HashMap;ArrayList,LinkedList用法有什麼要注意的;註解介紹下;泛型中類型擦除是什麼
  • 數據結構:線段樹;B+樹
  • Android:OkHttp,OkHttp使用須要注意什麼;RxJava介紹下;Activity四種啓動模式;一個APP怎麼退出全部Activity,若是有第三方SDK Activity,又怎麼退出

騰訊實習正式批一面

  • 算法題:字符串中出現頻率中位數;最長公共子串問題LCS
  • 項目:OKHTTP框架
  • 計算機網絡:TCP UDP HTTP區別;TCP滑動窗口;用UDP實現TCP
  • 數據庫:三大範式;索引,怎麼知道命中索引
  • 操做系統:進程間通信方式;共享內存原理

騰訊實習正式批二面

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

騰訊校招提早批一面

  • 項目:項目介紹;項目實現的功能
  • 網絡:介紹下HTTP協議;HTTPS公鑰暴露怎麼辦;HTTP分段上傳文件怎麼保證正確;HTTP緩存
  • Java:進程 線程區別;子線程間通信;解決死鎖的辦法,怎麼判斷髮生死鎖
  • 算法題:數組從新排序保證奇數偶數順序不變,最終使全部奇數在前,偶數在後;2數/3數之和

騰訊校招提早批二面

  • 項目:項目梳理;圖片壓縮算法;Bitmap JPG區別;斷點重傳,怎麼動態肯定範圍; 斷點下載;CRC原理
  • 設計模式:MVC優勢缺點;MVP中的MVC的C實如今哪;單例模式的餓漢與懶漢的選擇,使用場景
  • 網絡:HTTPS加密方式

騰訊校招正式批測開一面

  • Android:Crash,ANR怎麼解決
  • 數據結構:設計世界盃32強對戰數據結構
  • 益智題:2個球,一共100樓找到哪一層扔下來球恰好會壞
  • 其他:介紹測開具體工做

騰訊校招正式批測開二面

  • 項目:聊細節
  • Android:圖片,語音大內存數據的性能排查,定位;Handler內存泄漏問題;ART Dalvik區別;GC機制;CountDownLatch原理
  • 算法題:不使用循環,大於號,小於號等查找數組中最大值
  • 閒聊:自我優點

字節

字節面試比較注重基礎,包括在線寫題,數據結構,Java基礎,JVM基礎,操做系統等;如下包括實習3面;字節實習面試是一天內走完全部技術面試流程,每一面結束後若是經過則15min左右就開始下一輪面試,所有爲視頻面試。算法

字節實習一面

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

字節實習二面

  • Java:線程同步問題(爲何須要同步&怎麼實現同步)
  • 設計模式:單例模式(靜態內部類);其餘設計模式簡介
  • 數據結構:排序算法,歸併/快排(實現原理/平均複雜度/可否提早結束/誰性能更優), 堆排(怎麼實現調整堆結構/k個最大的數);
  • 算法題:給定兩個有序整數數組 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成爲一個有序數組

字節實習三面

  • 自我介紹:學過的專業課程;看過哪些計算機專業書
  • 操做系統:內存分配區域(Java層面回答,對象引用在堆和棧都有麼?函數內部new的對象存放在哪?);用戶態/內核態;中斷是什麼
  • 網絡:計算機網絡有哪幾層,分別對應什麼協議;IP/TCP傳輸的都是什麼數據;DNS是什麼,有什麼做用

百度

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

百度校招一面

  • 項目:項目介紹;項目中的編碼規範
  • Android:Android四大組件安全性;Activity啓動模式;IntentFilter匹配規則,action和category區別;Handler阻塞爲何不卡死;事件分發機制,onTouchEvent返回false處理流程, dispatchTouchEvent返回false處理流程;Looper是什麼;對象池,手寫對象池實現;ContentProvider原理;sp支持跨進程麼,怎麼解決跨進程,怎麼實現進程同步; 幀動畫實現: 100張圖,200ms顯示一張,讀取一張圖要400ms,怎麼解決避免卡頓;Bitmap內存複用限制條件
  • 操做系統:線程時間片分配原理

百度校招二面

  • 項目:梳理項目;項目難點;項目中技術框架
  • 算法題:手寫二分法;電梯狀態機設計
  • 其餘:優缺點;專業

百度校招三面

  • 算法題:最長公共子串
  • Android:ART虛擬機類加載機制;okhttp原理;熱修復原理
  • 其他閒聊:優勢缺點;大學遺憾;做爲班長組織了哪些活動;長期堅持的事情;專業去向

美團

美團面試是現場一天面完,技術面試一共兩輪,最後有一輪HR面試,回憶起來彷佛問的問題不是特別多,但都比較開放,聊的比較深刻,技術一面直接打開美團APP聊相關頁面設計實現,這種方式仍是比較新穎的,二面則是聊項目比較多,問不少項目中具體實現細節。編程

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

網易

網易技術面試一共四輪,三輪技術,一輪HR,前兩輪視頻面試,後兩輪現場面試。網易技術一面二面以基礎居多,聊的都是寫代碼會遇到的問題,比較細,三面是比較深刻的,聊了不少情景題,好比日誌系統的設計的全方面,包括效率,安全等等。設計模式

網易校招一面

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

網易校招二面

  • 項目:實習期間工做內容;參與的項目;實習期間解的bug;參與的編程規範說一下;Lint工具瞭解嗎
  • 設計模式:單例模式
  • Android:進程間通訊方式(與linux進程間通訊區別);Socket怎麼驗證安全性;廣播(全局 本地區別);怎麼實現文件的多進程通信(A進程改了文件怎麼通知B進程讀取);二級緩存怎麼設計(網絡 數據庫 view間關係);volatile關鍵字具備原子性嗎
  • View:Activity生命週期,onSaveInstanceState onRestoreInstanceState區別,調用時機,廣播註冊應該在Activity哪一個生命週期裏,怎麼統計Activity onCreate的次數;Fragment與Activity區別,Fragment生命週期管理,Fragment與ViewPager怎麼解決重複加載;View繪製過程,MeasureSpec的三種模式;Framelayout LinearLayout ReativeLayout中分別設置Button在右下角;margin padding區別,gone invisible的區別;requestLayout、invalidate與postInvalidate區別;Android動畫怎麼取消循環動畫,repeat模式;drawable與view區別,有哪些drawable

網易校招三面

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

愛奇藝

愛奇藝一面二面仍是以基礎爲多,三面是總監面會深刻聊一下原理問題,並且也比較細節。數組

愛奇藝實習一面

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

愛奇藝實習二面

  • 項目:介紹項目;內存泄漏的來源,有沒有作過優化
  • Android:Service的兩種啓動方式,區別在哪;性能優化有沒有作過
  • Java:手寫單例模式
  • 算法:刪除鏈表中一個節點

愛奇藝實習三面

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

最後

高頻面試題總結

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

面試心得

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

建議

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

資源

Java書單

Android書單

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

算法書單

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

操做系統書單

  • 《操做系統概念》:操做系統基礎概念

計算機網絡

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

優秀博客

相關文章
相關標籤/搜索