1. 程式人生 > 其它 >剛面完位元組跳動,估計涼了。

剛面完位元組跳動,估計涼了。

個人情況

簡單介紹一下自己,我是一名末流 985 畢業,自學計算機,如今試圖轉行Android。淺學過Java、Android,所以基礎還算過關。但剩下的 Framework、效能優化、kotlin都是剛入門的水平,僅有一些瞭解。

關於簡歷

我的簡歷沒有任何包裝,專案經歷都是自己做的很簡單的東西,技能描述除了java 和 Android 全部寫的是 “瞭解” 字樣,不會的都沒寫、沒了解過的也沒寫、更沒有包裝工作經驗。但這樣竟然也通過了簡歷評估,約了面試。

面試流程

概況

面試流程和網上別人描述的基本一致,問的問題超級多、覆蓋知識範圍也極廣,整個面試下來將近一個小時。

不過問的大部分問題我都不會,或者答得不好,還是準備不夠充分吧。

不幸的插曲

約的面試時間是下午 2 點,我提前十分鐘進入視訊面試系統,但是當自我介紹的時候,我的電腦突然就黑屏了,這次給我弄尷尬了,也很影響心情。我趕快重啟電腦,並和麵試官說明情況。

自我介紹

介紹了自己的基本情況,比較後悔的一點是沒有說自己的專案經驗,這直接導致後面面試官沒有問我關於專案的任何東西!大家切記,如果有自己專案的話,一定要介紹,要引導面試官去問自己會的東西。

面試題目
  • 自我介紹
  • 講講你對 MVVM 的認識?
  • MVVM 的優點有什麼呢?
  • MVP 中 Model、View 和 Presenter 的持有關係是怎麼樣的?
  • MVVM 中的持有關係呢?
  • MVVM 中各個層在 Android 開發中的對應關係?
  • 你的 MVVM 用到了 Jetpack 裡的 ViewModel,那麼它是如何保持資料的呢?
  • ViewModel 是怎麼做到在 Activity 銷燬重建新例項之後還能保持不變的呢?
  • 如果用 Kotlin 去呼叫一個具有返回值的 Java 函式,那麼這個返回值是可空的還是非空的呢?
  • Kotlin 中的可見性和 Java 是不一樣的,分別講講?
  • 你說你用到了協程,講講你對於協程的認識?
  • 呼叫了 cancel() 之後協程的狀態變化?
  • 如果子協程中沒有通過判斷協程狀態來決定是否終止工作,那麼取消父協程之後會是怎樣的?
  • 你提到了協程分為有棧和無棧兩種。它們的區別是?
  • 這個“棧”裡都儲存了什麼資訊?
  • Kotlin 的協程是無棧的,那這些資訊是怎麼儲存的?
  • 協程該怎麼取消呢?
  • 協程會不會和執行緒一樣有共享變數衝突的問題呢?
  • Kotlin 中有一個 inline 關鍵字,講講你的瞭解?
  • 除了通過行內函數減少函式呼叫的開銷,還有什麼用途嗎?
  • 如果現在有一個高階函式被 inline 修飾,我不想讓它的引數被內聯,該怎麼辦呢?
  • Kotlin 是可以跨平臺編譯的,講講你的瞭解?
  • 你剛才提到的編譯到“原生平臺”,指的是什麼?
  • 現在如果讓你用 Kotlin 寫一個跨平臺的專案,你該怎麼做?
  • 瀏覽器裡從輸入一個網址,到最終看見網頁,發生了什麼?
  • HTTP 是應用層協議,講講是如何建立的?
  • 你說底層是 TCP,那講講 TCP 的三次握手?
  • 如果現在要使用 HTTPS,連線的建立會發生什麼變化呢?
  • 客戶端是如何根據 IP 地址找到伺服器對應的主機的呢?
  • LeetCode 518. 零錢兌換 II
結尾

面試官問我有什麼問題想問的,我早就被他的問題問傻了。不過還是好奇為什麼沒問我專案經歷,我就問了,結果面試官說忘了。。。

覆盤建議

  • 1、大家投簡歷前(尤其是大廠),還是儘可能準備充分,面經什麼的搞起來,不然可能因為準備不到位損失一次面試機會(很多公司都有面試記錄)
  • 2、簡歷要盡力做好(不是做假),好的簡歷可能會給你帶來意想不到的面試機會
  • 3、在自我介紹和回答問題時,學會引導面試官,往自己熟悉的方向和題目帶
  • 4、面試前保證裝置和環境一切正常,千萬不要像我一樣因為裝置影響了面試

但具體面試的時候問得會有多深,就因人、專案和部門而異了。一般你能答出的題目越深、越詳細,面試官可能考察的難度就會更大,當然了,面試通過的概率以及拿到 offer 的薪資水平也會越高。

另外,Android大廠面試中,往往 framework、效能優化是考察的重點,除了光會寫程式碼外,在面試前還是要好好背下八股文的。這裡也給大家分享一些

通過失敗的面試,我認識到自身的不足,以後堅持學習、不斷在面試中發現和改進自己的不足,也祝大家都能在金三銀四中拿到心儀的offer,加油!