面經分享:快手涼經,字節跳動已拿offer

前言

2019年年初的時候我就開始偷偷投簡歷了。因爲在現在的從事的即時通訊企業做的不開心了,客戶產品善變,公司開會賊多。當然最關鍵的還是工資沒給到位,事情都做了,卻TMD不給升職加薪,因此心裏窩火,也爲了再次向社會證明我的價值和能力。

移動互聯網的普及和智能終端設備的廣泛應用,短視頻、直播、在線教學1V1等各類形式的實時音視頻通信模式風靡大衆,成爲人們日常溝通的新模式。

已經形成南抖音北快手格局。音視頻火熱興起,因此我把目光也瞄準了這兩個企業。

面試快手 初嘗失敗滋味

  1. 自我介紹 + 項目

  2. 解釋一下 JNI 中全局引用和局部引用的區別和使用

  3. Linux幾個常用的跟進程和線程有關的命令(具體的也記不清了)

  4. 怎麼定位 NDK 中的問題和錯誤

  5. http請求過程,http和https的區別

  6. 七層和四層分別是啥,TCP和UDP特點和使用場景

  7. DNS存在的意義(當時感覺有點懵,直接說了忘了,後來看了一下賊簡單,悔恨+++++++)

  8. 線程和進程的區別,特點

  9. 死鎖

  10. 進程間通信方式

  11. 指針和引用的區別

  12. 指針常量和常量指針的區別

  13. 多態(balabala一大堆),繼承和封裝的特點和區別

  14. 創建一個進程操作系統內部都幹了啥

  15. 進程pid怎麼做到唯一標識的(不會)

  16. 根進程有哪些(開始這三個問題答得都不好,心都涼了,感覺他想刷掉我了,然後開始寫代碼)

  17. 第一個:孿生素數(三種解決思路吧,當時第一種可能效率不是最優的,說了第二種,面試官:還有什麼提高效率的,我:???有點沒看出來 ,最後他給我說了一個小點,捨去重複計算的一行代碼)

  18. 第二個:場景題。(面試官:我看你參加了幾次說學建模,說一個場景,你覺得他像什麼模型。我:像多級緩存器吧。面試官:方向是對的,不過你說的是***,但是這道題是一個buffer。大概講了一下buffer的使用)大概就是地鐵早高峯一般會加一個屏障類的東西,問最大人流量之類的,考慮的因素比較多,但是難度還可以,大概模擬了一下,寫了一個簡單的代碼,主要是爲了標明思路。

  19. 第三個:棋盤從左上到右下的走法(比較常見),說的是遞歸的方式,不過我最後寫還是用dp寫的,主要也是比較慫,害怕遞歸的邊界條件出錯。

  20. 線程死鎖,發生的情況(記不清了,就大概說了兩種場景)

  21. 從鍵盤輸入一個字符到顯示在屏幕上發生了啥(說了一下大概,沒細說)

  22. 直接說前面的代碼寫的還不錯,算法應該還可以,那就再寫幾個吧。我:。。。我盡力寫吧

  23. 第一個:二叉樹前序遍歷的同時輸出深度(不能用遞歸),我分開寫的前序遍歷和深度,他就說效率有點低吧,我:深度的話平時用遞歸比較多,不用遞歸的話暫時就能考慮折磨多了。面試官人很nice,說了一個小點

  24. 第二個:手動實現strlen,代碼挺簡單地,四行就行。但是問到一個很難形容的點。面試官:64位下,假設字符長度爲8,實際操作過程中是把這8位從64位中剪出來處理之後又放回64位中,怎麼才能手動提高效率,就是去掉剪裁的過程。這個感覺面的時候很懵逼,題目甚至理解錯了,最後說了一個思路,但可能效率不太高,第二種思路是錯的。

  25. 第三個:問了說指針訪問內存越界,系統或者說編譯器是怎麼判斷它出現越界的,訪問情況啥的

  26. 這個大概說了一下,感覺一般很少去編譯器的角度看一些細節,說的淺一點是對的,深一點的話,我給他測試了一下,說了想法,感覺沒什麼問題,但是可能一些細節還是不太對,這個可能還要在研究一下(本人比較菜,沒辦法)

  27. 第四個:邏輯題:地球(正球體)上某一個點,向北100m,向東100m,向南100m。走完這三步,回到了原點,這個原點的位置在哪。 說了一個,問還有那個點,當時想不到了,現在發現這個點還挺多的(就感覺面試的時候腦子被吃了)

  28. 第五個:一個整型數組,每一個元素形成的值類比到柱狀圖上,最大蓄水量

  29. 大概說了思路,考慮的幾種情況,跟自己做過的某一類數學題的思路有相似之處,兩個題考慮的情況有什麼不同(面試官:思路是正確的,但是應該不是最優的。我:的確不是最優的,但是可能是我現在想的太複雜了,我只是覺得考慮的情況可能會很多,暫時的話沒有想到更好的)

  30. 最後,還有什麼問題問我

面試準備

經歷過,失敗了,當然會彷徨失落,生活終歸要繼續前進,說好的證明自己呢?現在豈不是讓別人看笑話,能力不行,想拿高薪?呵呵…

工作了幾年 ,多少也養成了良好的工作習慣,先查找問題是什麼、再分析問題的可能影響因素,接着尋求對應的解決方案,最後按照影響關聯因子最大的解決方案按計劃去執行好了。

失敗原因一:面試刷題準備不充分

刷題我從常見Android基礎知識面試題,刷到了Java面試題,繼而攻堅Android高級面試題,以及突破學習Flutter相關熱點技術面試題(不是很難),最後總攻近期大廠面試真題總結。這份面試題精編含答案解析我已經整理到了一份PDF文檔裏,共370頁。
下載地址

失敗原因二:Android框架體系架構源碼原理

越來越多的大企業現在面試都開始關注底層框架源碼、原理分析。多年的CV經驗,對於理解和分析源碼始終停留在膚淺的層面。沒有真正意義上去注重源碼分析。

現在網上博客資源水平參差不齊,源碼原理分析不夠全面,因此我特意購買了和蒐集了一些源碼和原理的視頻教程。
下載地址

這套源碼分析教程主要包括:

  1. Okhttp網絡庫深入解析和相關面試題分析

  2. Retrofit網絡庫深入解析和相關面試題分析

  3. LeakCanary內存泄漏框架解析和相關面試題分析

  4. butterknife依賴注入框架源碼解析

  5. blockcanary UI卡頓優化框架源碼解析

下載地址

字節跳動面經,收穫成功

  1. 自我介紹,大概就是說些簡歷上沒有的亮點還有跳槽原因等,從各個方面彰顯自己優勢和技術

  2. 手寫代碼 (1)計算View樹上所有view的數量 (2)參數ViewGroup (3)補全空方法返回view數量(就是數據結構多叉樹遞歸層序遍歷+Android View基本api調用)

  3. 主線程Looper一直循環查消息爲何沒卡主線程?

  4. RecyclerView相對ListView區別?

  5. 好像還有Bitmap resize相關,就是設置option,然後decode等等等等吧

  6. 用MultiDex解決何事?

  7. 其根本原因在於?

  8. Dex如何優化?

  9. 主Dex放哪些東西?

  10. 主Dex和其他Dex調用、關聯

  11. Odex優化點在於啥?

  12. Dalvik和Art虛擬機區別?

  13. 多渠道打包如何實現(Flavor、Dimension應用)?

  14. 從母包生出渠道包實現方法?渠道標識替換原理?

  15. Android打包哪些類型文件不能混淆?

  16. Retrofit主要實現機制?

  17. 動態***靜態***區別?

  18. 思維、架構:模塊化怎麼做的?怎麼設計的? 19.接口發現暴露怎麼做? 基於什麼思想?

  19. MVC、MVP、MVVM應用和彼此本質區別?

  20. Glide緩存特點?

  21. 你擅長Android中哪個方向呢?這問題我其實是按Android UI動畫方面和移動端後臺交互方案制定來預想過的,然鵝說完他挑了Android UI,幸好我有準備。

  22. 你看我這手機上這個launcher裏應用抽屜(就是很多ROM都有的把很多APP管理歸類的二級菜單功能)他在這ROM前一版是有個毛玻璃效果背景的,從系統ROM角度說下怎麼做吧? UI相關的兩個大問題:實時的水面倒影效果怎麼做?這裏面實時更新的UI性能如何保證?(我也沒做過,估計面試官也知道,所有就說了一下思路啥的,最後也認可了我的思路策略以及知識遷移解決問題能力吧)

  23. 偏UI基礎的考察:Measure、Layout、draw大流程、繪製順序,基於這些說下TagLayout(FlowLayout)怎麼寫?

  24. 算法題:倆線程分別持續打印奇數和偶數,實現倆線程的交替打印(從小到大)

  25. 設計個IM客戶端以及數據庫架構,架構每一層都是啥,互相怎麼交互工作?

最後

感謝大家能耐着性子,看完我囉哩囉嗦的面經過程,以上僅是個人的觀點。但要記住的是,學習是不能落下的,因爲時代在進步,技術在更新,只有更新了自己的知識庫,纔不會被行業所淘汰。

以上所整理的學習文檔均可以分享給大家,共勉!
直接點擊我免費獲取哦!

分享不易 喜歡本文的別忘了關注+點贊喔

發佈了420 篇原創文章 · 獲贊 718 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章