前言
面試合集 之 滴滴、美團、騰訊、阿里、頭條、小米、網易... 提供答案(逐步更新中)
寫這篇面試回憶錄的目的:
- 梳理一下面試過程的知識點,為了以后可以更直觀地回憶
- 希望給正在或者準備面試的朋友提供一些幫助
其它:
- 時間周期:【2017/4 -- 2017/6】
- 來源: 【感謝「奔騰的兔子」和「劍膽詩魂」的友情贊助】
- 主要面向人群: 面試【高級工程師】或者【資深工程師】等相關職位
- 沒有嚴格按照一面、二面、三面來區(qū)分
目錄
騰訊OMG
- ? synchronize用法
- ? volatile用法
- ? 動態(tài)權限適配方案,權限組的概念
- ? 網絡請求緩存處理,okhttp如何處理網絡緩存的
- ? 圖片加載庫相關,bitmap如何處理大圖,如一張30M的大圖,如何預防OOM
- ? 進程?;?/li>
- ? listview圖片加載錯亂的原理和解決方案
- ? https相關,如何驗證證書的合法性,https中哪里用了對稱加密,哪里用了非對稱加密,對加密算法(如RSA)等是否有了解
阿里巴巴
- ? LRUCache原理
- ? 圖片加載原理
- ? 模塊化實現(xiàn)(好處,原因)
- ? JVM
- ? 視頻加密傳輸
- ? 統(tǒng)計啟動時長,標準
- ? 如何保持應用的穩(wěn)定性
- ? ThreadLocal 原理
- ? 談談classloader
- ? 動態(tài)布局
- ? 熱修復,插件化
- ? HashMap源碼,SpareArray原理
- ? 性能優(yōu)化,怎么保證應用啟動不卡頓
- ? 怎么去除重復代碼
- ? SP是進程同步的嗎?有什么方法做到同步
- ? 介紹下SurfView
- ? HashMap實現(xiàn)原理,ConcurrentHashMap 的實現(xiàn)原理
- ? BroadcastReceiver,LocalBroadcastReceiver 區(qū)別
- ? Bundle 機制
- ? Handler 機制
- ? android 事件傳遞機制
- ? 線程間 操作 List
- ? App啟動流程,從點擊桌面開始
- ? 動態(tài)加載
- ? 類加載器
- ? OSGI
- ? Https請求慢的解決辦法,DNS,攜帶數(shù)據(jù),直接訪問IP
- ? GC回收策略
- ? 畫出 Android 的大體架構圖
- ? 描述清點擊 Android Studio 的 build 按鈕后發(fā)生了什么
- ? 大體說清一個應用程序安裝到手機上時發(fā)生了什么;
- ? 對 Dalvik、ART 虛擬機有基本的了解;
- ? Android 上的 Inter-Process-Communication 跨進程通信時如何工作的;
- ? App 是如何沙箱化,為什么要這么做;
- ? 權限管理系統(tǒng)(底層的權限是如何進行 grant 的);
- ? 進程和 Application 的生命周期;
- ? 系統(tǒng)啟動流程 Zygote進程 –> SystemServer進程 –> 各種系統(tǒng)服務 –> 應用進程
- ? recycleview listview 的區(qū)別,性能
滴滴
- ? MVP
- ? 廣播(動態(tài)注冊和靜態(tài)注冊區(qū)別,有序廣播和標準廣播)
- ? service生命周期
- ? handler實現(xiàn)機制(很多細節(jié)需要關注:如線程如何建立和退出消息循環(huán)等等)
- ? 多線程(關于AsyncTask缺陷引發(fā)的思考)
- ? 數(shù)據(jù)庫數(shù)據(jù)遷移問題
- ? 設計模式相關(例如Android中哪里使用了觀察者模式,單例模式相關)
- ? 微信的聊天數(shù)據(jù)在本地都是加密處理的(防止root了被破解),設計一個類似的本地數(shù)據(jù)存儲系統(tǒng)
- ? x個蘋果,一天只能吃一個、兩個、或者三個,問多少天可以吃完
- ? Android相關你最擅長哪一塊
- ? TCP與UDP區(qū)別與應用(三次握手和四次揮手)涉及到部分細節(jié)(如client如何確定自己發(fā)送的消息被server收到) HTTP相關 提到過Websocket 問了WebSocket相關以及與socket的區(qū)別
- ? 是否熟悉Android jni開發(fā),jni如何調用java層代碼
- ? 進程間通信的方式
- ? java注解
- ? 計算一個view的嵌套層級
- ? 項目組件化的理解
- ? 基于自身工作經驗和計算機相關知識,給出 移動端地圖局部加載 瓦片大小的像素大小估值
- ? 多線程斷點續(xù)傳原理
- ? Android系統(tǒng)為什么會設計ContentProvider,進程共享和線程安全問題
- ? jvm相關
- ? Android相關優(yōu)化(如內存優(yōu)化、網絡優(yōu)化、布局優(yōu)化、電量優(yōu)化、業(yè)務優(yōu)化)
- ? EventBus實現(xiàn)原理
美團
- ? 線程掛起,休眠,釋放資源相關,喚醒,線程同步,數(shù)據(jù)傳遞,問了很多線程的問題,問了20分鐘大概
- ? static synchronized 方法的多線程訪問和作用,同一個類里面兩個synchronized方法,兩個線程同時訪問的問題
- ? 內部類和靜態(tài)內部類和匿名內部類,以及項目中的應用
- ? 泛型是什么以及在項目中的應用
- ? handler發(fā)消息給子線程,looper怎么啟動
- ? down、move、up事件的傳遞
- ? activity棧
- ? 封裝view的時候怎么知道view的大小
- ? intent-filter
- ? arraylist和linkedlist的區(qū)別,以及應用場景
- ? 怎么啟動service,service和activity怎么進行數(shù)據(jù)交互
- ? 下拉狀態(tài)欄是不是影響activity的生命周期,如果在onStop的時候做了網絡請求,onResume的時候怎么恢復
- ? view渲染
總結
共同點:
- 對基礎性、原理性的東西比較重視
- 具體問題的解決能力、項目的架構能力
不同點:
- 公司不同、產品業(yè)務線不同,所以涉及的技術重點和方向不同
思考:
- 有些東西你不僅要懂,而且要能夠很好地表達出來,能夠讓面試官認可你的理解,例如Handler機制,這個是面試必問之題
- 有些晦澀的點,或許它只活在面試當中,實際工作當中你壓根不會用到它,但是你要知道它是什么東西
下篇請傳送到:
2017Android面試回憶錄「下」(今日頭條/小米/網易/知乎...)
內推:
【社招】【滴滴-北京】Android開發(fā)工程師

- 我的CSDN博客地址:http://blog.csdn.net/s003603u
- 我的GitHub地址:https://github.com/soulrelay