開頭
在一般的互聯網公司的技術人員的面試中,大概會經歷3到4輪的面試,差不多2-3輪的技術面,還有1輪的HR面試,有人面試題是有關“目標”,有的關于“方法”,有的關于“算法”,有的關于“基礎”。在小編看來,面試是找工作的第一道難關,原本以為面試都會問很難的問題,如果是更好的公司,可能問的問題越難。
阿里技術一面-35min
自我介紹
Android
- 有沒有遇到OOM問題(有遇到內存泄漏問題)
- Handler機制
- ThreadLocal
- Activity啟動到加載View過程
- View繪制過程
- LinearLayout (wrap_content) & TextView (match_parent) 最終結果???
- OKHttp(1. 為什么選擇它? 2. 性能了解不?3. 內部有哪些設計模式)
- 了解EventBus嘛?
設計模式
- 用過哪些設計模式
- 觀察者舉例
網絡
- HTTP & HTTPS區別
其他
- 為什么選擇飛豬
- 專業問題
- 參加的比賽
阿里技術二面-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
項目介紹
- 實現的功能,基于OKHTTP實現網絡請求
HTTP(s)
- 介紹下HTTP協議
- HTTPS公鑰暴露怎么辦
- HTTP分段上傳文件怎么保證正確
- HTTP緩存
Java
- 進程 線程區別
- 子線程間通訊
- 解決死鎖的辦法,怎么判斷發生死鎖
算法題
- 奇數偶數數組,重新排序保證順序不變,奇數在前偶數在后
- 2數/3數之和
提前批二面-30min-掛
自我介紹
項目介紹
- 項目梳理
- 圖片壓縮算法? 聊聊關于Android圖片壓縮那點事兒
- Bitmap JPG區別 圖像處理:JPG、PNG及BMP的區別?
- 斷點重傳?怎么動態確定范圍?Android 實現斷點上傳文件
- 斷點下載?CRC原理 文件校驗MD5、SHA1、CRC32、sha256、cksum
設計模式
- MVC優點缺點
- MVP中的MVC的C實現在哪
- 單例模式的餓漢與懶漢的選擇,使用場景Java單例模式的不同寫法(懶漢式、餓漢式、雙檢鎖、靜態內部類、枚舉)
HTTPS加密方式
騰訊正式批測開一面-25min
- Crash
- ANR怎么解決
- 設計世界杯32強對戰數據結構
- 2個球 100樓找那一層摔下來會壞
- 測開具體工作
騰訊正式批測開二面-1h
項目
- 聊細節
Android
- 圖片,語音大內存數據的性能排查,定位?
- Handler內存泄漏問題
- ART Dalvik區別?
- GC機制?
- CountDownLatch原理?
算法題
- 不使用for查找數組最大值?
閑聊
- 自我優勢
百度
百度一面-1h
自我介紹
項目介紹
- 編碼規范有用嗎?
Android
- Android四大組件安全性
- Activity啟動模式
- IntentFilter匹配規則,action和category區別?
- Handler 阻塞為什么不卡死?
- 點擊事件分發機制,onTouchEvent返回false? dispatchTouchEvent返回false?
- Looper
- 對象池,手寫對象池實現
- ContentProvider原理
- sp支持跨進程么?怎么解決跨進程,怎么實現進程同步
- 幀動畫實現: 100張圖,200ms顯示一張,讀取一張圖要400ms,怎么解決避免卡頓(多線程讀)
- Bitmap內存復用限制條件
- 線程時間片分配原理
百度二面-45min
項目
- 梳理項目
- 難點
- 技術框架
算法題
- 手寫二分法
- 電梯狀態機設計
優缺點
- 優點
- 缺點
- 專業
百度三面-45min
技術
- 最長公共子串
- 類加載機制
- okhttp原理
- 熱修復原理
其余閑聊
- 優點缺點
- 大學遺憾
- 組織哪些活動
- 長期堅持的事情
- 專業去向
網易
網易技術一面-1h
自我介紹
項目介紹
- 華為解bug印象最深的
Android
- TouchEvent傳遞過程? onTouchEvent返回flase怎么辦?
- 怎么設計緩存
- Android數據持久化
- 數據庫怎么批處理(原理)
- SP支不支持多線程?SP怎么實現多線程
- View繪制過程
- Handler消息機制
Java
- B線程怎么實現等待A線程完成工作
- 線程怎么結束工作 Java結束線程的三種方法
- Java哪些方法支持中斷
- 設計一個有限資源的請求
- 怎么設計對象池(對象的存與放回)
- 線程池的線程什么時候創建
- Java中的鎖
- 可重入鎖性能
筆試題
- 兩個數組交換一個值,讓和相等,找到這兩個值
網易技術二面-1h
自我介紹
華為實習
- 參與的項目
- 解的bug
- 參與的編程規范說一下
- Lint工具?
設計模式
- 單例模式
- volatile關鍵字原子性
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的難點?
設計模式
- MVP MVVM使用場景
HR
-
有什么offer現在?
-
選擇offer依據?
-
上海花費高?
-
怎么解決溝通問題?
最后
都說三年是程序員的一個坎,能否晉升或者提高自己的核心競爭力,這幾年就十分關鍵。
技術發展的這么快,從哪些方面開始學習,才能達到高級工程師水平,最后進階到Android架構師/技術專家?我總結了這 5大塊;
我搜集整理過這幾年阿里,以及騰訊,字節跳動,華為,小米等公司的面試題,把面試的要求和技術點梳理成一份大而全的“ Android架構師”面試 PDF(實際上比預期多花了不少精力),包含知識脈絡 + 分支細節。
Java語言與原理;
大廠,小廠。Android面試先看你熟不熟悉Java語言
高級UI與自定義view;
自定義view,Android開發的基本功。
性能調優;
數據結構算法,設計模式。都是這里面的關鍵基礎和重點需要熟練的。
NDK開發;
未來的方向,高薪必會。
前沿技術;
組件化,熱升級,熱修復,框架設計
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
我在搭建這些技術框架的時候,還整理了系統的高級進階教程,會比自己碎片化學習效果強太多,騰訊文檔可見;《Android架構視頻+學習筆記》
當然,想要深入學習并掌握這些能力,并不簡單。關于如何學習,做程序員這一行什么工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。
不出半年,你就能看出變化!
技術;**
組件化,熱升級,熱修復,框架設計
[外鏈圖片轉存中…(img-0mtUASOA-1621506386789)]
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那么很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。
我在搭建這些技術框架的時候,還整理了系統的高級進階教程,會比自己碎片化學習效果強太多,騰訊文檔可見;《Android架構視頻+學習筆記》
當然,想要深入學習并掌握這些能力,并不簡單。關于如何學習,做程序員這一行什么工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。
不出半年,你就能看出變化!