androidui庫,這些年Android面試的那些套路,實戰解析
開頭
中國網際網路發展的這些年,如今90後程序員是中國程式設計師的主力軍,網際網路的熱潮也讓一批批00後蠢蠢欲動,嘗試湧入網際網路圈。
當程式設計師容易,當一個優秀的程式設計師需要不斷學習,從初級程式設計師到高階程式設計師,從初級架構師到資深架構師,或者走向管理,從技術經理到技術總監,每個階段都需要掌握不同的能力。早早確定自己的職業方向,才能在工作和能力提升中甩開同齡人。
個人經歷
其實我有好長一段時間沒有正規的面試過了,大約3年的時間裡面,我沒有正規地接受過面試。
所以在準備投位元組跳動之前,我投了幾個公司做了一下熱身活動。記住,這個時候其實不需要有啥心理包袱。因為本身候選人面試成功的可能性比較低,一個合適的可以面試的人選他們也很樂意看看,而且萬一你確實想換工作,但是心儀的公司面不上,而熱身活動的公司拿到了offer,你也可以考慮考慮去看下。並且這個時候你沒有任何的心理包袱,因為反正你也就是來面試看看的,所以面試時候的發揮可能也會更好點,因此說不定最終拿的offer會比最後想去的那家更好呢?
面試準備
老實說,我自己平常沒事就會看一些面試題,所以我都是直接去面的。
建議大家如果準備面試的話,需要做以下準備:
背題:看一看最近的面經文,瞭解現在公司都在面什麼型別的題,準備一些常見題,開背吧!如果一些基礎的開發問題都不會那問題就有點小大了。
演算法:做一些演算法題,leetcode 上面的一二三星就夠了,前端演算法很簡單,基本都是初中數學的難度吧。
專案:專案回顧,把你做的專案從技術架構到原始碼都要做到足夠了解,至少面試的時候不要被面試官問住了。並且要體現出你在工作中的作用,體現出自驅性。(大公司都很看重自驅性)。
亮點:準備亮點,回答問題的時候不用全部回答上來,但是在面試的過程中一定要有亮點(不然你就會得到反饋,面試官說你還行,但是沒有過~) 我一般會準備幾個點,每個點都保證可以睡上半小時。另外一定要了解的很深入,並且能夠用自己的話流暢的表達出來!!
內推:最好找人內推,成功率會提高一些。
練手:先找幾家不太想去的公司(規模差不多)練練手,如果第一次面試就去心儀的公司面試,淘汰率會非常高。
心態:心態很重要,面試不過很正常,不證明你不優秀,只是不適合,總結面試經驗,為下一次做準備。
如何回答問題?
怎麼把自己會的問題說好,這個很關鍵。
邏輯清晰 一定要邏輯清晰,不然即使你知道這個問題的答案,面試官也不會滿意,如果你邏輯清晰,即使這個答案不會,面試官也會給你加分。
獨特理解 現在的面試題大同小異,那麼如何體現出你的優勢就很重要。結合業務以及你自身的知識儲備來講。
深入思考 對每個問題一定要有深入的思考,不然就很難進入大公司了,深度上要有一個拔高才能在面試中獲得好的成績。
流暢表達 面試就是一個表達的過程,一些問題心裡明白不行,還要流暢的表述出來,基本上如果面試官覺得你表達的很流暢,當你講到一半就不會再讓你說下去了,證明已經通過了。
刷題當然也是最重要的,畢竟我是有好幾年沒有過正規面試的經歷了,於是問我在阿里的同學要來了一份他們公司P8整理的一系列大廠面試題,刷到天昏地暗,如今我也已經入職了位元組跳動,這些面試題對於我來說也沒什麼太大的用處,所以在這裡無償的分享給大家。
位元組跳動面試經歷
位元組跳動一面
- 自我介紹
- 介紹下Android的mvc/mvp/mvvm
- view的事件分發機制
- viewGroup 怎麼知道view有沒有消費事件
- 寫一個單例模式(解釋單例模式中的sync,雙鎖,volidate)
- 演算法題目:
有A和B兩個有序陣列(陣列元素不重複),給出sum,請找到A和B中所有相加和為sum的序列對(面頭條遇到的)
A:[1,4,5]
B:[3,4,6]
sum=8
output 1,1,2,0 => because A[1]+B[1]=8 /A[2]+B[0]=8 - 記憶體洩漏有哪些?怎麼排查
閒聊
之後就問了我最近看了哪本書,學到了什麼,最近還在學的什麼技術呢?問了我職業規劃,興趣愛好,還說了說公司的語言選型,我後來問了下對於我的面試表現評價,人家不方便說,又問了新人培養等問題。
位元組跳動二面
- 自我介紹
- 你遇到最難的問題是什麼
- android的handler機制
- android的anr機制
- android冷啟動優化
- android弱網優化
- android 視訊相關有了解麼?
- android長圖片載入怎麼實現
- gradle用過哪些
- 最近看什麼書?
- 職業規劃是什麼?
- 能接受在北京工作?
- 演算法題目:排序二叉樹轉有序雙鏈表,要求在原來的樹節點基礎上增加。
位元組跳動三面
這個面試官應該是一個總監級別的,說話非常的硬氣,肯定是一個資深大佬,一共面了40多分鐘。常規的面試基礎都沒問,純懟專案和演算法了。
- volite的關鍵字,幹了什麼(什麼叫指令重排)
- 生產者消費者(非阻塞式)
- 怎樣獲取當前執行緒是否是主執行緒
- 怎樣檢測函式執行是否卡頓
- 常用的對稱加密演算法,有什麼同
- view分發反向制約的方法
- 兩個執行緒用不同的物件,怎麼養
- 樂觀鎖使用
- hashmap底層原理
- arraylist底層原理
- webview如何做資源快取
- hashmap擴容
- 一張圖片100*100的圖片在記憶體中的大小
- 專案裡面的難點(如何解決,解決方案是什麼)
- 一個app釋出一個版本後,發現變卡了,你如何復現?如何得知某個地方變卡,如何得知使用者在某行程式碼變卡
- android 動畫機制有哪些?
- lottie的原理
- 直播中的動畫要怎麼做?要做成動態的,比如禮物是可以配置的?
- 演算法題:找出陣列中的k數。k數的定義:比位置位於這個數前面的數字都大,且比位置位於這個數後面的數字都小的數字(陣列首尾的數字不用管)(面頭條遇到的)
[4,1,3,2,7,9,8,10,12]
此陣列中的k數為7和10
位元組跳動四面
HR面,大約35分鐘,主要是問個人職業規劃、薪資待遇,以及對位元組跳動的期許等等....
文末
我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。
需要的小夥伴私信【學習】我免費分享給你,以後的路也希望我們能一起走下去。(謝謝大家一直以來的支援,需要的自己領取)
[點選這裡也可以領取哦!](https://shimo.im/docs/3dQqpTdrrVvtcjjx/ 《BAT、位元組各大廠面試真題集》,可複製連結後用石墨文件 App 或小程式開啟)
- 330頁PDF Android學習核心筆記(內含8大板塊)
- Android學習的系統對應視訊
- Android進階的系統對應學習資料
- Android BAT大廠面試題(有解析)