GitHub上標星13k的《Android面試突擊版》,轉瘋了

mb6129b17ab439a 2021-09-19 20:39:35 阅读数:716

github 13k android

一面

  • 數據結構中堆的概念,堆排序
  • 死鎖的概念,怎麼避免死鎖
  • ReentrantLock 、synchronized和volatile(n面)
  • HashMap
  • singleTask啟動模式
  • 用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
  • 消息機制實現
  • ReentrantLock的內部實現
  • App啟動崩潰异常捕捉
  • 事件傳遞機制的介紹

二面

  • ListView的優化
  • 二叉樹,給出根節點和目標節點,找出從根節點到目標節點的路徑
  • 模式MVP,MVC介紹
  • 斷點續傳的實現
  • 集合的接口和具體實現類,介紹
  • TreeMap具體實現
  • synchronized與ReentrantLock
  • 手寫生產者/消費者模式
  • 邏輯地址與物理地址,為什麼使用邏輯地址
  • 一個無序,不重複數組,輸出N個元素,使得N個元素的和相加為M,給出時間複雜度、空間複雜度。手寫算法

三面

  • Android進程分類
  • 前臺切換到後臺,然後再回到前臺,Activity生命周期回調方法。彈出Dialog,生命值周期回調方法。
  • Activity的啟動模式
  • RxJava的功能與原理實現
  • RecycleView的使用,原理,RecycleView優化
  • ANR的原因
  • 四大組件
  • Service的開啟方式
  • Activity與Service通信的方式
  • Activity之間的通信方式

HR面

  • 家是哪的?
  • 父母做什麼的?
  • 我看你是通信專業的,為什麼想做客戶端開發?
  • 保研還嘗試過哪些學校?為什麼最後選擇北郵?
  • 還有別的Offer嗎,薪資是多少?等等。。。

尾聲

評論裏面有些同學有疑問關於如何學習material design控件,我的建議是去GitHub搜,有很多同行給的例子,這些栗子足够入門。

有朋友說要是動真格的話,需要NDK以及JVM等的知識,首現**NDK並不是神秘的東西,**你跟著官方的步驟走一遍就知道什麼回事了,無非就是一些代碼格式以及原生/JAVA內存交互,進階一點的有原生/JAVA線程交互,線程交互確實有點蛋疼,但平常避免用就好了,再說對於初學者來說關心NDK幹嘛,據鄙人以前的經曆,只在音視頻通信和一個嵌入式信號處理(離線)的兩個項目中用過,嵌入式信號處理是JAVA->NDK->.SO->MATLAB這樣調用的我原來MATLAB的代碼,其他的大多就用在遊戲上了吧,一般的互聯網公司會有人給你公司的SO包的。
至於JVM,該掌握的那部分,相信我,你會掌握的,不該你掌握的,有那些專門研究JVM的人來做,不如省省心有空看看計算機系統,編譯原理。

一句話,平常多寫多練,這是最基本的程序員的素質,盡量擠時間,讀理論基礎書籍,JVM不是未來30年唯一的虛擬機,JAVA也不一定再風靡未來30年工業界,其他的系統和語言也會雨後春笋冒出來,但你理論紮實會讓你很快理解學會一個語言或者框架,你平常寫的多會讓你很快熟練的將新學的東西應用到實際中。
初學者,一句話,多練。

 CodeChina開源項目:《Android學習筆記總結+移動架構視頻+大廠面試真題+項目實戰源碼》

版权声明:本文为[mb6129b17ab439a]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919203935277j.html