扣丁書屋

面經!B站Android面試小記

看著我同學最近也在到處投簡歷,我想著我也投一下看看行情,于是在2022-02-28號,我向B站投出了第一封簡歷,說實話當初只是想練練手,沒想到最后接了B站的offer,也是造化弄人了

一面

技術面,45min左右,基本圍繞你簡歷上寫的亮點和你的工作經歷展開

1、自我介紹
2、你在項目中負責什么
3、用過什么設計模式,或在Android中常常會碰見的設計模式

單例模式,策略模式,責任鏈模式(問了一下使用場景),工廠模式等

Android中的觀察者模式,適配器模式等

4、有沒有做過什么比較有難度的模塊

camera2,自定義照片裁剪View

5、你對自定義View有什么了解

回答了一些Path繪制以及觸摸事件的處理

6、Android動畫

屬性動畫,ObjectAnimator

7、多線程并發(鎖、信號量、syncnorized),syncnorized對象和class有什么區別

ConcurrentHashMap線程安全的原理 1.8之前用的分段式鎖,1.8之后用的synchronized,至于具體的細節沒有答上來,因為確實也沒看過這邊源碼

8、jni,如何定位jni崩潰

這個我當時回答的是打log,因為項目中用到jni的地方確實不多,當然jni也是可以斷點調試的

9、你所開發的應用有多進程嗎?進程間是怎么通信的

這個我當時只回答了mmap,稍微聊了一下mmap原理和binder性能對比,后來復盤想起來項目中用到的Broadcast和aidl binder通信都沒有回答

10、Webview和native怎么交互的

onUrlLoading攔截Schema

注冊js方法(addJavascriptInterface)

11、Android編譯打包過程

aapt -> class -> dex -> 簽名

12、插樁

ASM插樁,字節碼操作

13、性能監控

因為我之前做過一個性能監控庫,cpu和mem使用TOP命令解析,Anr通過給MainLooper設置Printer

14、LeakCanary原理

WeakReference + ReferenceQueue,加了一些改進點:new一個弱引用的Object,等這個Object確認被回收后再確認Activity是否正常被回收

15、Jetpack Compose

稍微談了一下看法,是否在項目中用過

16、算法題:最長公共前綴

LeetCode 14題,easy難度:leetcode-cn.com/problems/lo…

二面

一面結束后5min左右,B站HR就給我打電話過來約了二面 二面也是技術面,20min左右,因為是晚上8點面的,估計人家急著想下班(笑)

1、自我介紹
2、工作職責
  • 工作中有什么亮點
  • 拍照裁剪業務
  • 單元測試庫
  • 性能監控
  • 內存泄漏檢測
3、單元測試的庫是怎么做的

基于Mockito和Robolectric:

  • 封裝了一個反射庫用來方便測試
  • 做了一個AutoCloser類用來自動關閉釋放mock的資源,這里提到了使用MockedStatic,如果在使用完后沒有釋放,那在下一次使用到同一個類的MockedStatic的時候會報錯,這里我自定義了一個注解@MockedStatic用來自動mock和釋放資源
  • 針對kotlin做了一些mock工具,比如說頂層函數的mock(這個在我以前的文章Android-Kotlin單元測試之 如何配合Mockito模擬頂層函數中介紹過)
4、開發模式(流程規范):

開發規范參考了阿里的Java規范和Android規范,選取了一些比較重要的條例和一些自己長時間開發的經驗做成了一篇文檔

5、崩潰率的優化,做了哪些事情

感覺這里沒答好,有點答非所問的意思,我就說了說目前處理bug的一個流程,沒有談到怎么解決一個bug

6、數據打點是怎么做的

我們用的是神策第三方服務

7、內存泄漏工具是怎么做的

這部分同一面LeakCanary原理

8、看你之前做過一個MQTT協議的客戶端,是出于個人興趣嗎

是的,當時是想要做一個IM應用

9、在項目中有遇到需要3D渲染展示的內容嗎

目前沒有

10、兩個Activity跳轉時方法執行的順序

一個Activity創建是:onCreate -> onStart -> onResume(之后便在屏幕上顯示了) 假設從A Activity跳轉到B Activity:A.onPause -> B.onCreate -> B.onStart -> B.onResume -> A.onStop從B返回到A:B.onPause -> A.onRestart -> A.onResume -> B.onStop -> B.onDestory

11、兩個Activity傳遞數據可以通過什么方式
  • Intent
  • 如果是同一個進程的話,可以用全局變量或者單例等
  • SharedPreference
  • 文件
12、什么時候使用Service

后臺任務,比如說后臺播放音樂等,這里提了一下IntentService是開了一個子線程的

13、Service怎么啟動,怎么停止

startService <---> stopService

bindService <---> unbindService

14、包體積優化

清理資源(字體、圖片、代碼等)

HR面

二面結束后過了2-3天,HR發微信過來恭喜我進入下一輪面試,我問她接下來是還有三面和HR面嗎,她回答我說后面就直接是HR面了,說實話我還是挺驚訝的 HR面15min左右,大概就問了一下,為什么要從上家公司離職,我們是一個新部門,處于項目初期,有什么看法之類的,然后問了一下目前的薪資和期望薪資,over~

總結

說實話感覺這次面試太簡單了,有點白瞎了我準備了那么多,還做了查漏補缺 ㄟ( ▔, ▔ )ㄏ ,最后祝大家都能找到心儀的工作 (??????)??


https://mp.weixin.qq.com/s/NoKxX1ujjAnMeTWHuy7pqw

最多閱讀

簡化Android的UI開發 3年以前  |  515859次閱讀
Android 深色模式適配原理分析 2年以前  |  27474次閱讀
Android 樣式系統 | 主題背景覆蓋 2年以前  |  8727次閱讀
Android Studio 生成so文件 及調用 2年以前  |  6741次閱讀
30分鐘搭建一個android的私有Maven倉庫 4年以前  |  5508次閱讀
Android設計與開發工作流 3年以前  |  5225次閱讀
移動端常見崩潰指標 2年以前  |  5081次閱讀
Android陰影實現的幾種方案 5月以前  |  5058次閱讀
Google Enjarify:可代替dex2jar的dex反編譯 4年以前  |  5018次閱讀
Android內存異常機制(用戶空間)_NE 2年以前  |  4766次閱讀
Android-模塊化-面向接口編程 2年以前  |  4667次閱讀
Android多渠道打包工具:apptools 4年以前  |  4570次閱讀
Google Java編程風格規范(中文版) 4年以前  |  4423次閱讀
Android死鎖初探 2年以前  |  4391次閱讀

手機掃碼閱讀
18禁止午夜福利体验区,人与动人物xxxx毛片人与狍,色男人窝网站聚色窝
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>