騰訊工做7年被裁,3個月逆襲字節跳動出現起色,對此我想對你們說.......

1、被裁之路

7年了我失去了在騰訊7年的工做。雖然有事先通風,可是我沒有想到這一天會來的那麼快。今天中午收到消息說咱們這個組要被砍掉,由於公司要準備解散了,首先拿咱們開刀,也就是裁員,下午接着就進行談話,談了賠償等相關事宜,而後就準備交接工做,忙了一下午。我人生第一次經歷公司解散的,這個經歷有點奇妙,還覺得我會炒老闆魷魚,沒想到居然是老闆先炒了我魷魚。java

2、東方不亮西方亮

經過內推得到了面試字節跳動的機會,字節跳動應該你們比較熟了,不過多介紹。抖音創做工具部門,主要是負責抖音內的拍攝、視頻編輯、發佈整個流程,是 app 內的核心業務之一。前不久,嗯被優化了部門在杭州開設了 Office,因而我抱着試試看的內心竟然經過了!
職位描述
1 、負責負責字節跳動互娛的 Android 手機軟件的開發及設計,包括但不限於抖音等產品的研發;
2 、根據產品的需求進行 Android 產品的開發,對相關模塊作重構和優化;
3 、對 Android 平臺開發技術進行研究,定位和解決一些技術上的疑難問題;
4 、根據項目需求進行學習並快速掌握技巧,有良好的溝通力和協做能力增強團隊的建設。android

職位要求
1 、本科及以上計算機相關專業畢業,至少兩年以上 Android 開發經驗;
2 、熟練掌握 git,熟練掌握 android studio 開發工具及各類性能調優;
3 、熟悉 Android 平臺的開發技術,如 UI,網絡,性能和內存優化等;
4 、熟悉面向對象設計,代碼風格良好;
5 、有必定的承壓能力,良好的團隊合做意識;
6 、有大型互聯網 app 開發經驗優先。git

3、逆襲過程(答案已經整理,【GItHub】裏領取!)

一面(~45min)

1. 介紹項目,講述一下實習的工做內容和感想(~10min)github

2. 什麼是內存泄漏,Android裏有哪些內存泄漏的場景,緣由是什麼面試

3. JVM的GC過程,GC的算法都有哪些算法

4. 進程和線程的概念,Android裏怎樣實現多線程?(Thread Handler AsyncTask IntentService等等)緩存

5. Handler的原理和使用微信

6. Handler是怎麼和線程綁定的(Looper),爲何Looper.loop()要設計成死循環網絡

7. Java的幾種內部類,區別是什麼多線程

8. Activity的生命週期和啓動模式

9. 寫題:二叉樹的右視圖(層序遍歷便可)

一面比較短,問的問題也比較基礎,大概30分鐘後開始二面

二面(~1h30min)

1. 自我介紹

2. 介紹項目,爲何要自學安卓(~5min)

3. Android如何實現多進程,應用場景是什麼(答的很差)

4. Android的IPC機制(Binder)是否瞭解(答的也很差)

5. 如何用兩個隊列(FIFO)實現棧(FILO)

6. HashMap和HashTable區別,HashMap原理和實現,hash()的算法

7. 若是本身設計hash算*怎麼設計,爲何(答的素數取餘)

8. String的hashCode()和Object的hashCode()

7. 虛擬內存和物理內存的概念和關係,內存分頁的調度算法

8. 怎麼實現LRU緩存(參考leetcode T146)

9. 能夠本身寫一個java.lang.Object類嗎,系統會加載哪個

10. Java裏泛型的實現

11. 瞭解常見排序算法嗎,手寫一下快排

12. Java里加鎖的方式,synchornized關鍵字的原理,悲觀鎖和樂觀鎖都有哪些實現

13. 死鎖的條件和解決方法,講講銀行家算法

14. TCP的三次握手四次揮手,爲何要四次揮手

15. TCP的流量控制算法(滑動窗口),擁塞控制算法

16. 怎麼解決用戶高頻點擊打開新Activity致使的多實例問題(Activity啓動模式)

17. 怎麼判斷兩個無環單鏈表是否相交

18. 寫題:leetcode 445

19. 反問

二面問題量很是的大,集中在Java/OS/算法,但並無特別難以回答的問題,認真準備的話大部分都能答出來。面試官也很是友好,給了不少引導和提示。

由於三面面試官的時間問題,約了兩天後的三面

三面(~45min)

1. 自我介紹

2. 介紹一下實習作的工做,是本身完成的嗎,遇到什麼困難,成果怎麼樣

3. RecyclerView怎麼實現的item緩存,跟ListView有什麼區別(由於項目用到了因此被問了)

4. 寫題:leetcode 1233

5. 設計題:微信的聯繫人列表功能

(1)設計添加聯繫人的API(從可能的方式,數據形式,接口參數方面回答)

(2)怎麼實現聯繫人列表的UI(答的RecyclerView)

(3)怎麼實現A-Z首字母的快速定位功能

6. 是自學的Android嗎,爲何選擇這個方向,有沒有什麼經驗給一樣想自學的學弟學妹

7. 是哪裏人,爲何想到上海來就業

8. 反問

三面的問題很少,不過由於多數問題沒有標準答案,難度其實高於一二面

4、學習筆記不可少

【Android高級架構師系統學習資料】高級架構師進階必備——設計思想解讀開源框架

【Android高級架構師系統學習資料抖音快手大火必學技能】——NDK 模塊開發

【Android高級架構師系統學習資料】進BATJ大廠必需——架構師築基必備技能

【Android高級架構師系統學習資料】高級架構師Flutter 技能

5、經驗總結

  1. 有的面試官不讓你作自我介紹,上來直接問。無論有沒有,都要和麪試官溝通好,作一個好的自我介紹,讓他了解本身的真實水平。否則他覺得你精通客戶端,上到問設計架構,下到問源碼或者很細的基礎知識。
  2. 問到感受超越本身知識水平的題仍是不要亂說,而且要及時阻止面試官繼續往那個方向問,好比京東二面後面那些很細的我幾乎都不會但仍是任其擺佈了。最好要學會引導面試。
  3. 有些問題雖然真的不會,但仍是可能有發揮空間的。能夠先主動認可本身不是很瞭解這個東西,再說「根據我對另外一方面的瞭解,若是是要我去設計這個東西/解決這個問題可能會怎麼作」,「這個我不是很熟悉,我能夠跟你講講另外一個相似的東西」。我以爲這樣回答對錯也關係不大了,並且他會以爲你善於思考。
  4. 最好不要全部的問題回答得太像背面經,一個問題不要回答得太淺,對知識也要理解地透徹一點。否則他察覺到後,會想辦法來拆你臺的,或者問你大量的問題。
  5. 基礎的仍是要掌握好的,我面掛其實主要仍是開發基礎很差。好比手寫快排、非遞歸遍歷二叉樹。我當時是真沒寫出來,怨不得誰。
相關文章
相關標籤/搜索