歡迎光臨
每天分享高質量文章

兩年 Android 經驗面經

作者:New_X

鏈接:https://www.jianshu.com/p/73bdb80914ba

去年跳槽不成功,在同花順又獃了一年。一年來收穫蠻大,就公司專案來說,已經是非常熟悉了,很多入職不久的,都是不斷抱怨,框架太老,技術太舊。這個是實話,但是細看裡面的思想和設計還是能學到不少東西的,一年來也順手優化了許多東西,根據業務也思考了很多更合理的方案。

不過還是打算跳槽了,薪資和無法推動專案是個大問題,總不能魚漁都不得吧。我是抱著找不到好的,就北上的心態找的。

做股票期貨的,經驗類似,面試太過順利…

1、Activity的啟動樣式

2、Activity和Fragment資料交互
執行緒間交互的方法都行,行程間交互的就更可以了,FragmentManager/getActivity()

3、單例的實現方法

4、事件分發機制

5、開源庫用過哪些
自己平時寫專案學習,基本都用過,原理也瞭解;重構專案的資訊模塊用了Retrofit & RxJava,自己思考優化了代碼框架,比如執行緒切換、頁面查找等,其實弄清楚原理,要改哪裡一目瞭然

6、專案中Socket是怎麼分包、編碼的?

  • 包型別分為Text型別、Table型別、資源型別、曲線型別、交互樣式資料(曲線型別屬性主要是點,關鍵方法append,可以增量更新資料)

  • 公司自己定義了個Base64編碼,演算法當然不要去糾結了

  • 延伸了下壓縮(主要用於Table和曲線型別)和加密(參考HTTPS)

7、股票的圖怎麼畫?像左右滑動、點擊出現十字光標這些
原理知道即可:自定義View & 觸摸反饋

要了16K,和當初進同花順一樣,當天給了答覆

有贊

重點在kotlin、RN 和 weex,其實也正常,電商類都偏向混合開發,畢竟活動更新很頻繁,和自己的技術棧不是很符合,估計是掛了,也正常,以公司角度肯定最好是找搞過的,以個人角度技術棧對不上肯定也會被壓薪資…

1、Handler、Looper、MessageQueue的關係

2、類似微博分享功能適合的launchMode,為什麼不是singleInstance?

3、Binder具體的實現原理,資料拷貝次數:代理樣式 & 協議,太細的忘了,開發藝術探索、內核剖析、原始碼情景分析里都看過…https://zhuanlan.zhihu.com/p/35519585

  • 個人覺得學以致用,比如App啟動,沒必要每步都記清楚,知道需要創建ApplicationThread、ActivityThread,然後和冷熱啟動結合想一下,activity的啟動流程和生命周期結合想一下,雖然還沒深入到那一步,但是啟動樣式實現肯定也是在AMS的,知識其實是相通的,多想想設計者這樣設計的道理 -> 不過可能也是自己經驗不夠,理解不到位,不過死記真的沒意思…

3、RxJava:一個請求用完接著再用一個請求(concat)/兩個請求並行使用哪個運算子(zip)

  • 其實場景是很常見的,比如我們也有委托雙重認證,併發請求就更多了,但是RxJava用的少,沒那個意識,資訊那塊的請求很簡單,不過提醒我了,雙重認證可以封裝簡化 -> 可能不行,公司的網絡框架沒那麼解耦的

  • 這種類似問題我是最煩的,確實不會,不過知道就是輸入關鍵字搜索就可以知道的問題

4、StringBuilder和StringBuffer的區別,StringBuffer的實現原理

5、HashMap的rehash擴容是怎麼操作的:沒什麼印象了
1). 創建一個新的Entry空陣列,長度是原來的2倍
2). 遍歷原Entry陣列,把所有的Entry重新Hash到新陣列里。為什麼要重新Hash呢?因為長度擴大以後,Hash的規則也隨之改變了
-> 想問的應該是rehash的公式,之前看到過,不過沒去記…
-> 也有可能想知道的是:LoadFactor:HashMap負載因子,預設是0.75f;Capacity:HashMap的當前長度,HashMap的長度必是2的冪

6、棧虛擬機和暫存器虛擬機差異:聽都沒聽過,不過知道暫存器處理速度是最快的

7、Retrofit的註解是怎麼解析的:動態代理、AOP

8、Handler的記憶體泄漏原因;為什麼記憶體釋放不了,MessageQueue持有? -> 被帶溝里了,肯定知道內部類持有外部取用導致activity無法釋放;想的是執行緒是GC Root,Handler正在運行,會導致activity無法釋放,所以被引導,順勢說了MessageQueue持有了activity

9、JSBridge安全漏洞解決方法:知道有安全問題,但是沒仔細研究https://blog.csdn.net/carson_ho/article/details/64904635

10、ClassLoader雙親委派實現原理

11、IntentService的實現原理

12、平時用過哪些框架:RxJava和Retrofit重構了資訊模塊

淘客吧

View的繪製流程、承載的資料結構、樹的好處
演算法題:把0排到最前面
事件分發機制
MVC MVP MVVM的區別
ClassLoader的過程,ClassLoader的好處
Handler記憶體泄露
多執行緒機制
HTTPS工作原理
資料怎麼壓縮,資料的安全
插件化原理
ARoutet原理
組件化通信
記憶體優化做過哪些
討論了下負載均衡
系統啟動流程和activity啟動流程
成長最大的階段

阿拉丁,一面

領導不在,同學內推的,面試官說進阿拉丁有點屈才,該試試大廠。我也想,但是不認識內推的人…

HTTP和HTTPS區別
HTTPS流程,專案中安全和壓縮處理
Binder機制
ClassLoader機制
對架構的理解
OkHttp原理,怎麼把引數組裝的
事件分發機制
HashMap的哈希散列實現,執行緒安全嗎,為什麼?
ArrayList和Vector擴容的區別
HashTable,ConcurrentHashMap怎麼實現執行緒安全
jvm記憶體模型,新生代和老年代的比例?
新生代里怎麼劃分?好處?
熟悉哪些資料結構?
設計樣式在原始碼和專案中的使用
單例樣式的寫法,思路
java8對hashmap的優化
hashmap和hashset區別,hash怎麼散列的
tcp三次握手
https://zhuanlan.zhihu.com/p/39048792

頭條,一面

專案中成就最大的部分
對Thread的理解?執行緒狀態?阻塞和運行狀態區別?
鎖的種類,什麼是自旋鎖,ReentrantLock?
HashMap原理?
HandlerThread原理和使用場景?
-> IntentService
執行緒池怎麼實現,阻塞佇列原理?
-> 阻塞佇列實現沒去瞭解,下意識提了下Looper.loop迴圈,後面一看還真是,程式員的直覺
Fragment初始化引數呼叫哪個方法?
Fragment懶加載怎麼實現?
事件分發機制,分析3層View包裹,點擊click
自定義View怎麼繪製,註意點?
網絡框架怎麼重構封裝的?
TCP三次握手
對資訊進行了MVP封裝,講講MVC和MVP的理解
為什麼使用Bundle不用HashMap傳輸資料?
Serialable 和 Parcelable區別
glide的圖片三級快取
交互樣式

愛庫存

面完有個面產品的漂亮小姐姐搭話,心裡美滋滋
大都問的專案,每個點延伸講了很多,所以問的個數不多
Service熟悉嗎?
Service行程保活?
MVC和MVP

發現大都問的相似,我都想停更了…

祝好,持續更新…

赞(0)

分享創造快樂