1. 程式人生 > 其它 >Android開發崗還不會這些問題,31道Android面試題

Android開發崗還不會這些問題,31道Android面試題

阿里

自我介紹

  • Android學習方式
  • 對原始碼是否瞭解(Android Java)

原始碼

  • Handler訊息機制(具體涉及到的類 & 細節)
  • HashMap(資料結構 & put操作
  • HashMap擴容時間複雜度
  • ArrayMap

JVM

  • Java記憶體區域
  • 堆疊區別
  • 哪些區域執行緒私有,哪些共享
  • 棧幀
  • 方法呼叫時的入棧出棧操作

Java

  • 併發訪問:
  1. volatile(只保證了可見性和有序性,不能保證原子性)
  2. synchronized:修飾程式碼塊/方法/物件的區別? (單例模式DCL會不會失效?)
  3. 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框架體系架構...

只有系統,有方向的學習,才能在段時間內迅速提高自己的技術。

這份體系學習筆記,適應人群:
第一,學習知識比較碎片化,沒有合理的學習路線與進階方向。
第二,開發幾年,不知道如何進階更進一步,比較迷茫。
第三,到了合適的年紀,後續不知道該如何發展,轉型管理,還是加強技術研究。如果你有需要,我這裡恰好有為什麼,不來領取!說不定能改變你現在的狀態呢!
由於文章內容比較多,篇幅不允許,部分未展示內容以截圖方式展示 。

本文已被CODING開源專案:《Android學習筆記總結+移動架構視訊+大廠面試真題+專案實戰原始碼》收錄