前言
下面的題目都是樓主在Android交流羣你們在面試字節跳動時遇到的,若是你們有好的題目或者好的看法歡迎分享,樓主將長期維護此帖。
參考解析:郭霖、鴻洋、玉剛、極客時間、騰訊課堂...linux
內容特色:條理清晰,含圖像化表示更加易懂。git
內容概要:包括 Handler、Activity相關、Fragment、service、佈局優化、AsyncTask相關
、Android 事件分發機制、 Binder、Android 高級必備 :AMS,WMS,PMS、Glide、 Android 組件化與插件化等面試題和技術棧!github
阿里技術一面-35min
自我介紹面試
Android算法
- 有沒有遇到OOM問題(有遇到內存泄漏問題)
- Handler機制
- ThreadLocal
- Activity啓動到加載View過程
- View繪製過程
- LinearLayout (wrap_content) & TextView (match_parent) 最終結果???
- OKHttp(1. 爲何選擇它? 2. 性能瞭解不?3. 內部有哪些設計模式)
- 瞭解EventBus嘛?
設計模式數據庫
網絡編程
其餘設計模式
阿里技術二面-1h掛
自我介紹數組
項目緩存
- 爲何選擇OKHTTP框架
- 加載圖片框架?(學一下Glide)
- JSON解析框架?(學一下Gson,FastJson)
- 技術選型?
- 頁面個數?
- OSS上傳憑證怎麼設計緩存?怎麼加密?(加密算法??)
- 還有哪些項目能夠說的?
Android
- Activity生命週期?啓動透明Activity生命週期?按Home鍵生命週期?
- 後臺殺死APP後怎麼恢復數據?
- 一個APP能夠多進程嘛?
- ListView和RecyclerView區別?
- RecyclerView卡頓怎麼排查?
- RecyclerView怎麼實現多Type?
- RecyclerView的ItemView層級過深怎麼優化?
- Android多進程?
- 怎麼設計Android線程間通訊?
- Handler機制?子線程能夠用Handler嗎?
- ANR?
Java
- private protected public 關鍵字的用法區別!!!
- 接口,抽象類區別?抽象類要不要實現接口的方法???
- Map的線程安全?讀多寫少選哪一個集合?(CopyOnWrite,不懂原理沒敢說)
網絡
- HTTP/HTTPS區別
- TCP瞭解麼?握手與揮手過程?
- 長鏈接?
- push怎麼實現?
騰訊
提早批一面-35min
項目介紹
HTTP(s)
- 介紹下HTTP協議
- HTTPS公鑰暴露怎麼辦
- HTTP分段上傳文件怎麼保證正確
- HTTP緩存
Java
- 進程 線程區別
- 子線程間通信
- 解決死鎖的辦法,怎麼判斷髮生死鎖
算法題
- 奇數偶數數組,從新排序保證順序不變,奇數在前偶數在後
- 2數/3數之和
提早批二面-30min-掛
自我介紹
項目介紹
- 項目梳理
- 圖片壓縮算法? 聊聊關於Android圖片壓縮那點事兒
- Bitmap JPG區別 圖像處理:JPG、PNG及BMP的區別?
- 斷點重傳?怎麼動態肯定範圍?Android 實現斷點上傳文件
- 斷點下載?CRC原理 文件校驗MD五、SHA一、CRC3二、sha25六、cksum
設計模式
- MVC優勢缺點
- MVP中的MVC的C實如今哪
- 單例模式的餓漢與懶漢的選擇,使用場景Java單例模式的不一樣寫法(懶漢式、餓漢式、雙檢鎖、靜態內部類、枚舉)
HTTPS加密方式
騰訊正式批測開一面-25min
- Crash
- ANR怎麼解決
- 設計世界盃32強對戰數據結構
- 2個球 100樓找那一層摔下來會壞
- 測開具體工做
騰訊正式批測開二面-1h
項目
Android
- 圖片,語音大內存數據的性能排查,定位?
- Handler內存泄漏問題
- ART Dalvik區別?
- GC機制?
- CountDownLatch原理?
算法題
閒聊
百度
百度一面-1h
自我介紹
項目介紹
Android
- Android四大組件安全性
- Activity啓動模式
- IntentFilter匹配規則,action和category區別?
- Handler 阻塞爲何不卡死?
- 點擊事件分發機制,onTouchEvent返回false? dispatchTouchEvent返回false?
- Looper
- 對象池,手寫對象池實現
- ContentProvider原理
- sp支持跨進程麼?怎麼解決跨進程,怎麼實現進程同步
- 幀動畫實現: 100張圖,200ms顯示一張,讀取一張圖要400ms,怎麼解決避免卡頓(多線程讀)
- Bitmap內存複用限制條件
- 線程時間片分配原理
百度二面-45min
項目
算法題
優缺點
百度三面-45min
技術
- 最長公共子串
- 類加載機制
- okhttp原理
- 熱修復原理
其他閒聊
- 優勢缺點
- 大學遺憾
- 組織哪些活動
- 長期堅持的事情
- 專業去向
網易
網易技術一面-1h
自我介紹
項目介紹
Android
- TouchEvent傳遞過程? onTouchEvent返回flase怎麼辦?
- 怎麼設計緩存
- Android數據持久化
- 數據庫怎麼批處理(原理)
- SP支不支持多線程?SP怎麼實現多線程
- View繪製過程
- Handler消息機制
Java
- B線程怎麼實現等待A線程完成工做
- 線程怎麼結束工做 Java結束線程的三種方法
- Java哪些方法支持中斷
- 設計一個有限資源的請求
- 怎麼設計對象池(對象的存與放回)
- 線程池的線程何時建立
- Java中的鎖
- 可重入鎖性能
筆試題
網易技術二面-1h
自我介紹
華爲實習
- 參與的項目
- 解的bug
- 參與的編程規範說一下
- Lint工具?
設計模式
Android
- 進程間通訊方式(與linux進程間通訊區別)
- Socket怎麼驗證安全性
- 廣播(全局 本地區別)
- 怎麼實現文件的多進程通信(A進程改了文件怎麼通知B進程讀取)
- 二級緩存怎麼設計(網絡 數據庫 view間關係)
View
- Activivty生命週期
- onSaveInstanceState onRestoreInstanceState區別,調用時機
- 廣播註冊應該在Activity哪一個生命週期裏
- 怎麼統計onCreate的次數
- Fragment與Activity區別
- Fragment生命週期管理
- Fragment與ViewPager怎麼作到重複加載
- View繪製過程 MeasureSpec的三種模式
- Framelayout LinearLayout ReativeLayout怎麼作到View在右下
- margin padding區別
- gone invisible的區別
- requestLayout、invalidate與postInvalidate區別
- Android動畫 怎麼取消循環動畫 repeat模式
- drawable與view區別 有哪些drawable
網易技術三面-50min
自我介紹
項目介紹不用說太細
Android
- 圖片傳輸過程當中URL加上默認大小若是是wrap_content怎麼辦
- 圖片相關緩寸,編碼,內存複用
- svg (其餘圖片格式)
- drawable mutate瞭解不
- okhttp 橋接攔截器和緩存攔截器
- 設計自定義DNS解析器
- 打點系統設計:寫文件過程當中會有buffer,此時進程被殺怎麼辦,怎樣設計日誌系統 打點日誌被用戶篡改怎麼辦,保證日誌安全性
- 磁盤內存映射原理
- 有沒有看過開源打點框架
- 平時開發有沒有遇到過資源複用
- 最近了解啥Android新動向不
- 本身學習計劃
美團現場一天面完
自我介紹
項目
- 實習項目
- 項目最難點
- 技術選擇
- OSS STS憑證設計
- Lint工具是編譯期的嘛?原理?
場景題
- 美團首頁設計?
- RecyclerView多Item的難點?
設計模式
HR
-
有什麼offer如今?
-
選擇offer依據?
-
上海花費高?
-
怎麼解決溝通問題?
若是你進階的路上缺少方向,能夠點擊個人【Github】加入咱們的圈子和安卓開發者們一塊兒學習交流!
如下所有內容均可以在GitHub中獲取!
-
Android進階學習全套手冊
-
Android對標阿里P7學習視頻
-
BATJ大廠Android高頻面試題
最後,借用我最喜歡的喬布斯語錄,做爲本文的結尾:
人這一生無法作太多的事情,因此每一件都要作得精彩絕倫。 你的時間有限,因此不要爲別人而活。不要被教條所限,不要活在別人的觀念裏。不要讓別人的意見左右本身心裏的聲音。 最重要的是,勇敢的去追隨本身的心靈和直覺,只有本身的心靈和直覺才知道你本身的真實想法,其餘一切都是次要。