天天看點

來了來了;帶着全網最新Android面試真題來了

作者:初壹十五a

前言

人總是不知足的,總希望往高處走,說實話跳槽是漲薪的最快方式,但是跳槽才頻繁了影響也不好。眼看這9月份就不知不覺地要完了,有一些朋友發來一些面試經曆以及經驗,小結一下。

騰訊Android開發筆記+2022Android十一位大廠面試真題+音視訊60道面試題+Jetpack+Matrix+JVM

擷取以下面試文檔+答案私信:面試

一丶北京小米移動軟體

1.一面

兩個面試官(一個我們小組Android的leader,一個是同僚),上來先當着他們的面寫了一個筆試題(都是很基礎的題沒啥難度,算法題也就是一個list的反轉,但是小米比較注重手寫代碼的一些細節,是以要考慮好該判空的判空,還有防止越界啥的問題),然後就開始問,90%都在問Java基礎(GC的機制,GC算法,記憶體相關的問的比較多,多線程線程安全問題是如何發生的,HashMap的原理)

2.二面

主管(全程聊項目,沒有問技術相關的了,然後介紹了一下這個部門的工作内容啊之類的)

三面,本來應該有三面…三面是我們部門的上司,但是因為一些其他的原因吧,三面就沒有面直接過了。

3.面試經驗分析與建議

其實自已算是運氣好,遇到的問題算是偏容易的,要多看看算法方面的視訊

二丶騰訊音樂

五面

5次都是技術面

  • activity和service的生命周期與使用場景
  • thread和服務的差别,單例的類型,多少種?優缺點。
  • 說一下死鎖的原因,與場景,
  • 單例的使用場景,
  • 使用過啥來源架構,有啥特點,為什麼,從中學到了什麼。
  • kotlin的特點與java的差别,
  • 三種架構的差別
  • handler和view的原理。
  • 線程池原理與種類,
  • javastackoverflow的原因
  • 性能優化和卡頓優化的實際案例,
  • 虛拟機的構成與原理,
  • 熱修複和插件化的差別與原理
  • rxjava源碼,
  • 多線程應該注意的問題,
  • databinding原理
  • binder原理,
  • 網絡方面知識,平時解決問題的流程

面試經驗分析與建議

基礎知識肯定得背,然後也得知道為啥是這樣,算法會問到,還有就是開放式問題,他想知道你怎麼解決問題的,過程重要,怎麼發現和定位的;平時學習的方法。

三丶美團

面了三輪,内容如下:

3.1.java

  • static變量各種通路可見性,
  • final關鍵字的作用,
  • 封裝繼承多态展開問,
  • 多線程通訊,
  • 線程池原理,
  • 線程同步方式,
  • jvm記憶體模型,
  • 常見的gc算法
  • 類加載過程

網絡的話主要是問的https,http1/2/3的差別特性

3.2.Android

  • 問了一些常見的handler原理
  • recycleview緩存機制,
  • view事件的分發
  • glide緩存機制
  • 然後引申如何實作我LRU。
  • 記憶體洩露和如何預防處理,

3.3.算法的話

  • 有top-k排序(堆排序,位圖法),
  • 旋轉輸出矩陣,連結清單逆序,
  • hashmap
  • 線程安不安全,它的鎖機制等等

四丶位元組跳動

一面:

  • 插件化。啟動activity的hook方式。
  • okhttp支援HTTP2?http2的功能有哪些?
  • tcp方面擁塞控制?
  • tsl的握手和具體的非對稱加密算法。
  • handler的post(Runnable)如何實作的。
  • callback,runnable,msg得執行優先級。
  • 阻塞是怎麼實作的?為什麼不會阻塞主線程?
  • 求二叉樹中兩個節點之間的最大距離。
  • 多程序通信問題。binder優勢。aidl生成的java類細節。多程序遇到哪些問題?
  • 動态代理傳入的參數都有哪些?
  • 非接口的類能實作動态代理嗎?
  • ASM的原理
  • Application和Activity在Context的繼承樹上有何差別?二者使用上有何不同?
  • 任意一顆二叉樹,求最大節點距離

二面

  • 設計一個日志系統。
  • 記憶體洩露的分類。怎麼檢視記憶體洩露的問題
  • touch事件源碼問題。
  • 元件化的問題。module和app之間的差別。moduler通信是如何實作的。
  • native崩潰的日志采集,怎麼處理?
  • 注解實作一個提示功能:如果int的值大于了3需要提示。

三面

  • 介紹下flutter的啟動流程
  • 介紹下flutter與weex的差別
  • 元件化介紹一下
  • webview中與js通信的手段有哪些?
  • 介紹下flutter_boost的原理

四面

  • 擴充卡和裝飾模式各自特點和使用場景
  • 視訊編解碼是怎麼做的
  • 三色球排序

騰訊Android開發筆記+2022Android十一位大廠面試真題+音視訊60道面試題+Jetpack+Matrix+JVM

擷取以上面試文檔+答案私信:面試

五丶彙豐銀行

1.線程池的工作原理

2.synchronized鎖方法和鎖靜态方法有什麼差別

3.鎖的了解,什麼是樂觀鎖,悲觀鎖,可重入鎖。

4.View的事件分發流程

5.View的三種測量模式了解

6.HashMap的工作原理。

7.怎麼實作多線程下載下傳,斷點續傳怎麼實作。

8.rxjava了解嗎

9.kotlin的協程

六丶阿裡

一面

1.apk啟動流程

2.zgot fork出一個程序到 從ActivityThread的main方法,再到AMS 再到Intrumention啟動

2.你剛講到了handler,那你說一下你對handler的了解,怎麼用java實作一個handler message messageQueen Looop Handler ThreadLocal 都講一下對應的作用,

二面

1.說下你做的應用商店感覺最難的點在哪

2.為什麼選用Fresco作為圖檔加載架構

3.安卓系統版本之間對Bitmap怎麼處理的

三面

1.你覺得你做的項目最有挑戰性的是什麼

2.你是怎麼做技術選型的,你在用元件化架構的時候有沒有遇到什麼問題

3.MVC和MVVM,MVP說一下你的了解

4.你對你負責的項目在性能優化上做了哪些努力

5.你平時是怎麼學習的

6.你對自己的未來職業規劃是怎麼樣的

七丶騰訊

3輪技術面+1輪hr

一面:

1.mvp mvvm差別 mvvm中的databinding如何重新整理view的

2.跨程序通信方式,binder機制

3.leakcanary原理

4.記憶體優化和工具,APK瘦身

5.get和post的差別,浏覽器中輸入一個位址然後展示出頁面這個過程中做了哪些操作

6.斷點續傳和下載下傳的原理

7.glide緩存原理,lru算法

8.動态代理原理

二面

1.java虛拟機

2.記憶體優化

3.arraylist hashmap linkedhashmap

4.binder

5.surfaceView和view

6.AMS WMS

7.APK瘦身

8.鎖(死鎖的場景和解決方案)

9.算法 兩個字元串 比較最大的公共字元串 ,主要是思路 (面對問題,以大化小)

三面

1.http優化 okhttp多路複用

2.硬币兌換問題 [算法]

3.車的通過問題,一條路上,30分鐘内看到有車通過的機率是90%,那麼5分鐘之内機率是多少

4.圖的展現形式

5.全球貨币轉換功能的代碼

6.給你一個整數數組 nums ,請你求出乘積為正數的最長子數組的長度.

八丶WPS

3輪技術

1.線程切換(handler機制)

2.多線程,幾種鎖,有什麼差別

3.如何實作線程排隊

4.Https加密機制

5.項目經驗

6.Okhttp原理

7.設計一個線上日志收集系統

8.項目經驗

9.Activity啟動流程

10.性能優化

11.Viewstub實作原理,自己設計一個類似的

12.Https如何保證安全的,如何防止中間人攻擊,可以僞造證書嗎

13.Looper死循環為什麼不會導緻主線程卡死

14.epoll機制是怎麼樣子的

15.熱修複資源id沖突怎麼解決

16.AIDL如何實作的

17.Binder原理

面試都是開發性問題,大部分是項目經驗

騰訊Android開發筆記+2022Android十一位大廠面試真題+音視訊60道面試題+Jetpack+Matrix+JVM

擷取以上面試文檔+答案私信:面試

九丶Shopee

2輪技術

shopee一面

1.java的四種引用分析

2.synchronize和volatile各自的機制是怎樣的

3.handler源碼原理相關的問題

4.自定義view的繪制,事件分發機制,怎麼解決滑動沖突,activity啟動的過程

5.https單向認證,對稱加密和非對稱加密,在浏覽器輸入url發生了什麼

6.jvm相關,如new一個對象的過程發生了什麼,垃圾回收機制

8.問了關于線程池的一些問題

9.跨程序通信有什麼方案

10.binder機制

11.hashmap源碼

12.用什麼方案縮小apk體積

13.recyclerview和listview對比

14.做過什麼記憶體優化,性能優化

15.okhttp源碼設計原理

16.手寫一道算法題,關于DFS+回溯算法的

shopee二面

1.問了之前的一些項目經曆,在團隊做了什麼,主要負責哪一塊,選擇一兩塊自己認為做得最好的展開講講,過程中會打斷問問題

2.有沒有做過插件化,做到什麼程度,講講原理

3.由于我之前項目有用到mvvm和jetpack,問了一些jetpack元件相關的源碼,和mvvm跟mvp的對比

4.又問了okhttp,緩存攔截器原理是怎樣的

5.項目中做過什麼性能優化,具體說說

6.平時項目中用到什麼設計模式,挑幾個常用的講講

7.聊人生聊職業規劃

十丶京東

1.如何設計子產品,元件,sdk,如何考慮

2.說說你項目的架構,為何這麼設計或這麼考慮

3.說說記憶體洩漏,越多越好

4.說說你的技術難點,如何解決,如何思考

5.apk安全,你如何考慮

6.act+fragment的完全生命周期(不是單個說哦)

7.recyclerView源碼,必會,包括緩存如何實作,哪幾個緩存,運作流程等;各種notifyXX的原理,觸發哪些重繪;如何實作下半部分item不移動,上半部分的item高度變化的實作?

十一丶探探

探探比較好的面試題:

1.手拖動View,手松開後完成一個泡泡破裂的動畫效果(本質是view事件分發機制+動畫選型,分發機制哪個方法處理什麼參數,之後怎麼觸發動畫效果等,問的灰常具體,吐了)

  1. 自定義view相關

3.深入地說說framework層的流程原理

4.kotlin 協程深層原理如何實作的

4.dcl是否線程安全?哪一塊出問題,為什麼volatile能實作防止指令重排,指令級别如何實作的,對象的建立過程等(多家都問了,很深入)

十二丶小紅書

1.concurrentHashMap 如何加鎖的

2.measure參數詳解,view設定wrap不起作用

3.Bind service,如何實作保活

4.兩個程序act,如何加快啟動速度

5.性能優化(面試官老插嘴,都說不上話)

6.Eventbus如何實作線程的切換

7.jetpack的Navigation的xml引用,在什麼時候調用的?

8.Inflater.inflate如何實作xml轉java的(framework),方法中的各個參數含義。

騰訊Android開發筆記+2022Android十一位大廠面試真題+音視訊60道面試題+Jetpack+Matrix+JVM

擷取以上面試文檔+答案私信:面試

繼續閱讀