Android開發崗還不會這些問題,31道Android面試題
阿新 • • 發佈:2021-10-09
阿里
自我介紹
- Android學習方式
- 對原始碼是否瞭解(Android Java)
原始碼
- Handler訊息機制(具體涉及到的類 & 細節)
- HashMap(資料結構 & put操作)
- HashMap擴容時間複雜度
- ArrayMap
JVM
- Java記憶體區域
- 堆疊區別
- 哪些區域執行緒私有,哪些共享
- 棧幀
- 方法呼叫時的入棧出棧操作
Java
- 併發訪問:
- volatile(只保證了可見性和有序性,不能保證原子性)
- synchronized:修飾程式碼塊/方法/物件的區別? (單例模式DCL會不會失效?)
- Lock
Android
- Activity生命週期(具體執行,涉及到哪些類?)
- ANR(什麼是ANR?怎麼監測,執行前,執行後,線上監測?)
專案
- 專案執行緒同步的優化(session/cooike/token/上傳憑證的區別)
阿里一面 1h (掛)
自我介紹
專案
- 使用人數/有無上架商店
- 有無IM通訊模組
- 登入模組是怎麼解決的
- 如何優化千萬級別使用者下讓使用者實時知道自己狀態(APP端 & 伺服器端)
Java
- synchronized修飾方法和類有什麼區別
- volatile關鍵字作用
JVM
- 記憶體分配
- 垃圾回收演算法
Android
- 事件分發機制
- 訊息機制
- View繪製流程(具體原理,包括不限於繪製三大流程)
- Handler(怎麼實現多執行緒?為什麼Looper死迴圈沒事?怎麼實現執行緒間通訊?)
- 作業系統層面死迴圈是怎麼回事?
- 死迴圈一定會導致ANR麼?
HTTP協議
- HTTP快取瞭解不?
騰訊
提前批一面 50min
Android
- 四大元件是什麼?輪番介紹之
- Fragment是什麼?與Activity區別?
- SurfaceView與View區別?SurfaceView原理?
- 前臺服務與後臺服務區別?
- AIDL瞭解麼?
- IPC方式?誰最快?
- Protocol Buffer瞭解麼?
- APP中多程序有什麼用?
- 方法數65536怎麼解決?
- View顯示過程?
Java
- 執行緒同步方式?
- 死鎖是什麼?
虛擬機器
- 記憶體分配方式?
- 堆和棧的區別?
- GC?垃圾回收?
- class檔案生成過程?
計算機網路
- 什麼是HTTP?
- HTTP/HTTPS區別?
- TCP/IP 三次握手 四次揮手?
- TCP/UDP區別?
- HTTP是長連線還是短連線?
- HTTP狀態碼?
- 抓包工具?怎麼抓包HTTPS?
設計模式
- 生產者,消費者是什麼?
- 命令模式是什麼?
資料結構
- 快排是什麼?時間複雜度多少?
- 七大排序分別是什麼?
- 二叉樹原理?
- 紅黑樹是什麼?
提前批二面 30min (掛)
C++
- class與struct區別(看到我相關課程上寫了C++,就開始問我C++,我說C++基本沒怎麼用過,才開始問我Java)
專案
- 介紹專案,有什麼難點?
- 競賽用了微控制器? 指令級是什麼?
Java
- HashMap介紹下?
- ArrayList,LinkedList用法有什麼要注意的?
- 註解介紹下?
- 泛型中型別擦除?
資料結構
- 線段樹 B+樹?
Android
- OkHttp瞭解不?
- OkHttp使用需要注意什麼?
- RxJava介紹下?
- Activity四種啟動模式?
- 一個APP 怎麼退出所有Activity?
- 接上問如果有第三方SDK,怎麼退出?
正式批一面 40min
手寫程式碼
- 字串出現頻率中位數
- 最長公共子串問題LCS
專案
- OKHTTP框架
- TCP UDP HTTP區別
- TCP滑動視窗
- 用UDP實現TCP
資料庫
- 三大正規化
- 索引
- 怎麼知道命中索引
作業系統
- 程序間通訊方式
- 共享記憶體原理
正式批二面 35min (掛)
專案
- 記憶體洩漏?
Android
- OKHTTP 對HTTP與HTTPs之間的區別
- HTTPs加密原理
- BlueboothAdapter
- Activity在AndroidManifest.xml檔案中有哪些標誌位?
- CLEAR_TOP?
- singleTop和singleTask分別的使用場景
- Android儲存(檔案,SP,資料庫[具體介紹下SQLite])
JVM
- Android虛擬機器與Java虛擬機器之間區別
Java
- 深拷貝 淺拷貝(記憶體溢位or垃圾回收時有什麼區別?)
- 多執行緒模型
資料結構
- 二叉樹
- B樹(插入/刪除過程)
位元組跳動
位元組一面 1h
專案
- 介紹專案
- HTTPs加密的解釋
- 對稱/非對稱加密
Java
- 深拷貝/淺拷貝,怎麼實現深-淺拷貝 CopyonWrite
- Java記憶體(分配->回收)
網路通訊
- TCP揮手 第三次不揮手會怎麼樣
演算法
- 陣列A 陣列B 計算A-B
- 0-n之間所有質數(先求所有合數)
位元組二面 1.5h
Java
- 執行緒同步問題(為什麼需要同步&怎麼實現同步)
設計模式
- 單例模式(靜態內部類)
- 其他設計模式簡介
資料結構
- 排序演算法
- 歸併/快排(實現原理/平均複雜度/能否提前結束/誰效能更優)
- 堆排(怎麼實現調整堆結構/k個最大的數)
演算法題
- 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列
位元組三面 40min (掛)
自我介紹
- 專業課程
- 看過哪些書
作業系統
- 記憶體分配區域(Java層面回答?物件引用在堆和棧都有麼?函式內部new的物件存放在哪?)
- 使用者態/核心態
- 中斷
計算機網路
- 計算機網路有哪幾層?分別對應什麼協議?
- IP TCP傳輸的都是什麼資料?
- DNS?
Java
- 泛型上界,下界定義/作用
- Java有哪幾種鎖
- 臨界區概念
- synchronized和可重入鎖的區別
愛奇藝
愛奇藝一面 50min
專案
- 主要介紹了實習專案,分析了記憶體洩漏,執行緒同步的問題
計算機網路
- HTTP/HTTPS區別
Android
- OkHttp框架(裡面有那些設計模式)
- 如何終止一個執行緒
愛奇藝二面 50min
介紹專案
- 記憶體洩漏的來源
- 有沒有做過優化
Android
- Service的兩種啟動方式?區別在哪?
- 效能優化有沒有做過?
Java
- 手寫單例模式
演算法
- 刪除連結串列中一個節點
愛奇藝三面 40min
自我介紹
- 專案
- 有沒有特別擅長的
Java
- public作用?
- .java檔名怎麼確定?
- 外部類最多有幾個?
- 內部類最多有幾個?
- 內部類支援巢狀麼?
- 執行緒池怎麼給新建的執行緒設定名字?
- 執行緒池種類?
- 註解的使用?
Android
- Activity的啟動模式下生命週期
- Activity A->B的生命週期
- Handler中怎麼實現Looper和執行緒繫結?
- 一個執行緒最多有幾個Looper?
- 多個Looper報的異常?
- 訊息阻塞再次喚醒是什麼機制?
- ThreadLocal是什麼?
網易
網易一面 15min
Android
- OkHttp
- Retrofit
- RxJava
網易二面 15min
Android
- OkHttp
- Retrofit
- RxJava
演算法
- 斐波那契數列
網易HR面 15min
聊天
- 怎麼學習Android
- 專業
- 為什麼不進醫療儀器行業
個人
- 城市選擇
- 家庭情況
業務
- CC直播部門
- 先做培訓和功能迭代
- 網易遊戲的生態鏈一環 & 技術實力尚可
華為
華為一面
專案
- 實習專案
- 可優化的地方
- 專業
演算法
- 覆盤筆試題
華為二面
- 聊人生
- 對華為文化看法
- 家庭情況
- 專業情況
學習分享
在當下這個資訊共享的時代,很多資源都可以在網路上找到,只取決於你願不願意找或是找的方法對不對了
很多朋友不是沒有資料,大多都是有幾十上百個G,但是雜亂無章,不知道怎麼看從哪看起,甚至是看後就忘
如果大家覺得自己在網上找的資料非常雜亂、不成體系的話,我也分享一套給大家,比較系統,我平常自己也會經常研讀。
2021最新上萬頁的大廠面試真題
七大模組學習資料:如NDK模組開發、Android框架體系架構...
只有系統,有方向的學習,才能在段時間內迅速提高自己的技術。
這份體系學習筆記,適應人群:
第一,學習知識比較碎片化,沒有合理的學習路線與進階方向。
第二,開發幾年,不知道如何進階更進一步,比較迷茫。
第三,到了合適的年紀,後續不知道該如何發展,轉型管理,還是加強技術研究。如果你有需要,我這裡恰好有為什麼,不來領取!說不定能改變你現在的狀態呢!
由於文章內容比較多,篇幅不允許,部分未展示內容以截圖方式展示 。