面經
創個帖子,總結下最近面試的公司的一些面試題,希望能對現在正在找工作的朋友有幫助,會不斷更新。
常見問題:
java:
- java面對對象思想
- java類加載機制:加載過程,類加載器等
- java內存模型,堆,棧,方法區等的用途
- java垃圾回收機制,回收算法以及引用算法
- java多線程,多線程方式等
- 線程池,參數的意義,有幾種線程池
- 同步中volatile, synchronized, lock的作用以及區別
- 同步的方式有哪些?同步包的使用
- java中信號量的使用
- 線程的運行狀態,在代碼中如何進行把控?
- ArrayList,Vector,LinkedList,Hashmap, Hashtable,Treeset,Treemap,Blockingqueue等集合的實現原理以及它的衍生物。
- 平常使用的數據結構模型有哪些,各有什麼用處,不同點。
- java內存泄漏以及解決方式
- final,static的作用以及原理
- Java內部類與外包類的關係,非靜態的與靜態的區別
- java中的異常分類,處理方式
- 鏈表反轉,二叉樹求高度
- 排序的方式,解釋思路
- 接口與抽象的區別
- 死鎖的原因,怎麼避免
- java中的類,所有類加載器都沒加載,是被什麼所加載
Android:
- handler機制,handler, looper, messengequeue, messenge, threadloacl的關係,最好能從源碼的角度去分析。
- Android中多線程的使用方式,區別
- Android性能優化,內存、冷熱啓動、卡頓、過度繪製、Apk瘦身等問題工具的使用,舉些例子
- Android 四大組件的使用、生命週期,原理等
- Activity的啓動模式,區別
- Activity棧的結構
- Activity的啓動流程
- Android事件分發機制,三個方法,還有一些細節要注意
- ListView嵌套問題,滑動衝突,item顯示問題,如何處理
- viewpager 嵌套Listview的滑動衝突解決
- 自定義view的實現方式
- 動畫的實現有幾種,區別在哪,高級的動畫怎麼實現
- 動畫的性能優化
- Activity跳轉時的生命週期調用
- Service的啓動方式,區別
- IntentService與Service的區別,會繼續問些細節如HandlerThread
- Aidl的原理以及使用
- Android跨進程通信的方式
- Android Binder的用法,架構,實現原理等
- Android中使用到的設計模式
- Android類加載機制,描述模型,各個加載器的用途
- 熱修復與插件化的介紹,原理
- 項目中使用的架構,MVP,MVVM的使用,區別,原理
- AMS,PMS的作用
- AMS 與 應用之間如何進行通信,架構如何
- AMS中的消息機制
- AMS與Activity生命調度關係
- 應用運行權限的使用以及原理,可以舉個藍牙權限的申請,BluetoothService啓動功能時會檢查
- Android系統的啓動流程
- ContentProvider的使用及原理
- Android中的數據存儲
- Android架構介紹
- 開發和維護過哪些framework的業務邏輯
- Context的設計思想
- JNI的原理以及使用
- Android多語言適配
- Android多分辨率適配
- Android全面屏適配
- 根據生命週期的問題,來分析一個內存泄漏的問題, 如Context引用
- Android中網絡框架的使用以及原理
- 用過的開源框架的使用以及原理
- 圖片的優化,以及三級緩存機制
- Android中的動態代理
- Databinding的原理
- Android進程與Linux進程區別
- AndroidP中的用戶空間以及Window空間的區別
- Android中的加密機制
- 用過SeLinux嗎?如何寫用例
- CTS問題你們是如何處理的
- Android手機系統研發的流程
其他:
- http與https的區別,如何進行加密
- http的請求方式,特點,報文結構
- socket的原理以及使用
- 手寫算法,算法的效率等問題
- 職業規劃
- 爲什麼要離職
- 項目中遇到最大的困難是什麼
- 大家對你的看法是什麼
- 三次握手,四次揮手
- Shell基本的使用,比如,查找某個目錄下某個文件的一個方法
- git原理,本地操作後,一系列提交的過程
- git衝突的處理
- git中的merge, cherry pick, rebase區別
- repo的使用以及原理
- 開發,bug的流程,等級,週期是如何的
公司面試題
騰訊面試題:
熱修復
listview加載複雜佈局 錯位
大圖加載
view自定義
網絡框架
緩存
內存泄露
印象最深/遇到的難點
synchronized 與 鎖的區別
鎖有幾種
減小apk大小
混淆
Android跨進程通信的方式
筆試:
- 輸入兩個二進制字符串,想加,輸出二進制字符串
示例:
Input: a=“11”, b=“1”
Output: “100” - 給一個語料庫,按行存儲,文件大小100MB,根據語料庫,實現查找自動補全
示例:
語料庫:
abcdefg
abcdde
acbba
aedff
abcxxx
Input: abc
返回: abcdefg, abcdde, abcxxx
要求 - 運行內存不超過100MB
- 自定義數據結構,緩存語料庫,無需每次查找都加載
今日頭條面試題:
blockingqueue底層實現,leankcanry底層實現
除了嵌套屬性動畫,怎麼做更復雜的動畫
final的使用,內存關係
內存泄漏,過渡繪製,啓動優化
多線程,結合了blockingqueue
listview的嵌套使用:滑動衝突,item問題
mvvm底層原理
動態代理
view的繪製,事件消費的一些細節爲