
我的情況
本人很愚笨,堅持夢想才是最重要的,最后你會得到應有的回報, 之前面經中的大神說道“重要的事情說三遍,心態最重要,心態最重要,心態最重要”,
在這里我就不談心態了,說說硬體,同樣重要的事情說三遍
基礎最重要,
基礎最重要,
基礎最重要,
當你的基礎知識好到讓面試官怎么都問不倒的時候,那你離offer就很近了,
好了,鋪墊已經做好了,接下來就直接上面試干貨了,
一面
1.演算法題:123 -> 321 超出Integer最大值范圍,正負數怎么處理
2.hashmap put()底層原理,發生沖突時,如何去添加(順著鏈表去遍歷,挨個比較key值是否一致,如果一致,就覆寫替換,不一致遍歷結束后,插入該位置)
3.Handler記憶體泄漏與Looper
4.Message為什么沒有被回收
5.手寫單例模式,volatile作用 ,為什么要雙重判空,作用是什么,一句話概括
6.為什么要泛型擦除,寫一個泛型方法和一個泛型類
7.一張圖片加載到記憶體,如何計算圖片占用記憶體的大小,ARGB8888與ARGB565有什么區別
8.APK打包流程
9.四種參考方式,他們之間的區別,什么時候用到弱參考
總結:
1.演算法題最主要的目的是得出結果,不要總是糾結于過去刷過題的思路,特別是當時的思路無法理清時,就應該立馬變換一種思路去解決,哪怕是時間復雜度和空間復雜度都比較高,而不是遲遲卡在那里,
2.將技術點總結成簡單的話語,提煉技術要點
二面
1.執行緒池執行緒是如何保持執行緒不被回收的?在for回圈里一直回圈,回圈體內會有take方法阻塞?
2.執行緒可以多次呼叫start嗎? 會出現什么問題? 為什么不能多次呼叫start?
3.RecyclerView是怎么優化的
4.MVP是如何實作的,他們之間的關系和職責
5.MVVM是如何實作的? ViewModel的底層原理
6.熱修復框架底層的原理,Tinker,美團的
7.pid與uid的區別
答:pid是行程ID,PID是行程的身份標志,系統給每個應用分配獨一無二的PID(一個應用可能有多個行程,每個行程有唯一的PID)
行程終止后PID會被系統回收,再次打開應用會重新分配一個PID,
UID在linux中是用戶的ID,用于權限的管理,在android中,由于android是單用戶系統,所以uid被用于實作資料共享,
8.你們的專案架構是怎樣的?
9.執行緒IO密集型和CPU密集型區別及執行緒數的設定
答:CPU密集型任務:在一個任務中,主要做計算,CPU持續在運行,CPU利用率高,具有該特點的任務稱為CPU密集型任務,
IO密集型任務:在一個任務中,大部分時間在進行I/O操作,由于I/O速度遠遠小于CPU,所以任務的大部分時間都在等待IO,CPU利用率低,
CPU密集型任務:執行緒數為CPU核數,幾個執行緒可以并行執行,不存在執行緒切換開銷,提高CPU利用率,減少執行緒切換性能損耗,
IO密集型任務:執行緒數為CPU核數的2倍,在執行緒進行I/O操作時,其他執行緒可以繼續使用CPU,提高CPU的使用率,
三面
1.簡單自我介紹
2.專案結構,用到了哪些技術?
3.過往經歷
4.為什么想換作業?
5.最近看的專案,用的什么技術?
6.北京市2個月搖一次號,搖中的概率是3000分之一,請問需要搖多久,概率能達到百分之50?
7.拋一枚硬幣,正反面的概率各占50%,請問,連續兩次反面的概率是多少? 正正,正反,反正,反反 ,出現的概率各占四分之一,

面試總結
還是那句話,基礎最重要,開發年限和技能固然重要,然而最重要的還是基礎牢固,并且思維要靈活,面試官喜歡觀察你的反應能力,記住面試官很忙,他們基本不會跟你嘮閑嗑,除非你很厲害沒啥可問的了,所以回答問題之前一定要分析問題背后他們想了解你什么,如果面試官就是問的很模糊,分析不透,大可直接問面試官你想知道什么,這是沒有問題的,
自己對于互聯網有一些小小的見解:隨著資本的冷卻,整個互聯網市場也逐漸的冷靜下來,Android應用開發從一開始能說幾個四大組件的名詞,能隨便寫個監聽事件,就能拿到高達上萬的月薪的時代了,歸根到底并不是作業難找了,而是Android應用開發工程師這個職位已經趨于正常,再也不是沒什么技術也能拿高工資的香餑餑,當然這個也不是絕對的,對于中高級的開發人員來說,市場還是比較缺少的,尤其是知名企業對于招聘員工來說,不僅要求有過硬的技術,還要求有高素質,好的教育背景等等,總的來說,高工資可以給你,但是前提條件是你要足夠優秀,或者說讓面試官覺得你很優秀,
其實面試程序就是一個把你自己推銷給別人的程序,對于我們來說就是要讓面試官感覺你技術好,有培養價值,感慨有點多了,還是來點干貨吧,大概列舉一下每一輪面試的大概范圍和深度,但是也不是絕對的,還是要看具體情況,
筆試
對于社招的程式員來說,基本上不需要筆試,但是也有公司是需要的,例如:今日頭條和網易都有筆試,筆試都是比較基礎的一些知識,Java、Android等方面的,一般不會有網路,計算機等方面的筆試,一般情況下大家都能答出來,
一、二面
近一段時間的面試經歷來說,一、二面的問題沒有什么很大的區別(公司基本上都有3面技術面,但是也有例外,我在網易就是2面技術面,),基本上都是一線開發人員,主要考察你是否有牢固的基礎知識和是否在平常開發中能熟練使用,
- 是否能講解清楚你所做的專案,以及使用到的相關知識,
- Android基礎知識
- Java基礎知識,大概是多執行緒,執行緒安全,集合類,JVM,類相關知識等,
- Android一些原始碼的閱讀
- 優秀的第三方框架原始碼閱讀
三、四面
一般公司都是三輪技術面,但是也有四輪技術面的,不過不多,很多公司基本上每一輪面試官都會記錄他所詢問的問題,以便給下一輪面試官作參考,還有就是避免對同一個知識點多次詢問,所以到了這輪面試,基本上不會再詢問比較基礎的知識,
- 會從兩個方面考察,
- 廣度:比較新的技術(Rxjava,插件化等),JVM,GC,網路,資料庫,Android(一般不會詢問之前面試官問過的問題),
- 深度:一般會通過1或2個問題來考察,例如:map介面下都有什么子類->hashmap和hashtable區別->hashmap實作原理->怎么解決hash沖突->是否了解concurrentHashmap->concurrentHashmap實作原理->volatile實作原理(concurrentHashmap讀是不加鎖的,使用到了volatile),
- 專案中的貢獻,所做的優化,
- 設計能力,基本上不多,這個要看面試的崗位,因為我這里面試的只是高級開發,并不是架構,
- 作業中的亮點和突出,
hr面
基本上到了這輪,你就算通過面試了,hr會詢問一些你的經歷,最主要的還是和你商定薪資待遇,在這輪,大家應該要對自己的薪資水平有一個大體的了解,一般都是在原來的工資基礎上增長20%~30%的樣子,當然,如果你在面試程序中表現非常優秀,也可以不受這個限制,當然如果公司誠心要你,就算你要的工資過高,hr也會委婉的告訴你,不會直接把你pass,
面試前的知識儲備 & 復習
接下來分享的系統學習資源以詳解各大互聯網公司的 Android 常見面試題為主線,從面試的角度帶你介紹必備知識點,以及該知識點在專案中的實際應用,
幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系,無論是你短期內想提升 Android 內功實力,突破自己作業中的能力瓶頸,還是準備參加 Android 面試,都會在這份資料中有所一些識訓,
從架構基礎開始,分了8個模塊來逐步從基礎進階到架構師的環節:
1、架構師筑基語言基礎
重點內容:深入Java泛型+注解深入淺出+并發編程+資料傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
2、設計思想解讀開源框架
重點內容:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網路訪問框架設計+RXJava回應式編程框架設計+IOC架構設計+Android架構組件Jetpack
3、360°全方位性能調優
重點內容:設計思想與代碼質量優化+程式性能優化+開發效率優化
4、Android框架體系架構
重點內容:高級UI晉升+Framework內核決議+Android組件內核+資料持久化
5、NDK模塊開發(音視頻開發系列)
重點內容:NDK基礎知識體系+底層圖片處理+音視頻開發
6、Flutter學習進階
重點內容:Html5專案實戰+Flutter進階
7、微信小程式開發
重點內容:小程式介紹+UI開發+API操作+微信對接
最后分享一份面試寶典,祝每個人面試順利,
Android BAT高級開發面試題及答案決議
面試的前一周時間內,就可以開始刷題沖刺了,請記住,刷題的時候,技術的優先,演算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎么會問,

最后以上內容均免費分享給大家,需要完整版的朋友,點這里可以看到全部內容,或者點擊 【這里】 查看獲取方式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/275510.html
標籤:其他
上一篇:一個34歲出來面試還被拒絕的Android程式員有多慘?
下一篇:爬蟲百戰穿山甲(1)有道翻譯爬蟲







