面的是位元組跳動日常實習崗,面試體驗挺好的,挺有效率的。不過實力也是運氣的一部分,三面面試官對計算機基礎要求高,由於大二目前還沒有開課,也沒有對作業系統和計網進行自學,只有簡單瞭解,怪自己沒有花更多的時間去自學。最後止步於三面還是挺可惜的,大二如果能找到一個實習還是挺棒的體驗。
一面
- 聊專案,專案中做了什麼,難點是什麼
- 元件化實現,ARouter+EventBus
- 觀察者模式
- Retrofit動態代理細節實現,如何與Rxjava配合使用,動態代理能代理抽象類嗎?Retrofit為什麼會選擇介面來定義請求方法。
- Jetpack框架
- Kotlin
- HashMap、HashTable、ConcurrentHashMap
- 手寫中序遍歷二叉樹非遞迴
二面
- 聊專案,專案中做了什麼
- 同樣問了Jetpack框架,LifeCycle、LiveData好處,observer和observerForever的區別。
- sychronized、volatile,這裡扯到了JVM記憶體模型
- 執行緒如何同步,生產者消費者模型,如何終止執行緒
- Rxjava的Flowable和Observable區別,map和flatmap,執行緒切換如何實現
- MVVM和MVP的區別,以及實現細節
- 一點點計網相關,請求頭,POST、GET,抓包等。
- ViewModel相關內容,例如為什麼用ViewModelProviders而不是new,ViewModel與MVP裡Presenter的對比
- 為什麼要選取xxx框架
- 手寫判斷平衡二叉樹
三面
三面面試官挺注重基礎的,由於大二計網和作業系統沒怎麼學,被問傻了。
- 聊專案,為什麼要重構,對業務上來說不是沒幫助嗎
- Java寫了多久,為什麼轉Kotlin,這樣基礎不會不牢固嗎
- volatile關鍵字
- Kotlin範型與Java範型
- http和https,就答了ssl加密,其他就不太清楚了
- 為什麼計算機要設計棧和堆
- 由於基礎太菜了,面試官未出演算法題。