字節跳動,華爲,阿里巴巴,小米,騰訊2020大廠面試經歷系列之(面試題篇)

前言

最近看到很多人都在找工作, 而且很多人都感覺今年找工作比去年難很多, 競爭力也增加不少, 因此激發我整理這份資料, 希望能幫到正在找或者準備找工作的童鞋們.

首先我們能否獲得一個面試機會, 那肯定是從簡歷開始, 簡歷需要做好功夫, 一份好的簡歷才足夠吸引企業得到面試機會, 接着就是面試了, 面試前必須要先做好準備, 多看一下前輩們總結面試題, 有哪一方面不足的地方趕緊補充一下, 還有要了解一下你即將面試那家公司.

技巧篇

做題

看完面試題之後那就來做一下面試題目吧, 目前找到兩個網站

  • SillGun(國外網站, 自備梯子)
  • 牛客網

聊面試

(帥張)stormzhang 跟你談一下面試那些事兒

  • 面試時企業最看中你什麼能力?
  • 我面試到底問什麼?
  • Android 面試那些事兒

互聯網招聘平臺

  • 拉勾-專注互聯網職業機會
  • 簡尋-讓職位推薦更精準
  • 100 offer-幫最好的互聯網人發現更好的offer
  • BOSS 直聘-互聯網招聘神器
  • LinkedIn (領英)
  • 哪上班


一力頂十巧(刷題)


字節跳動

一面(1hour):

0、自我介紹

1、handler機制,sendMessage和post(Runnable)的區別。

2、ThreadLocal原理,底層實現

3、HashMap底層,擴容,LinkedHashMap

4、Service的onBind和onStart差別

5、Activity啓動生命週期,A跳轉B

6、Android持久化方案,SharedPreference是否可以跨進程通訊。ContentProvider

7、ClassLoader機制,雙親委派。如果我要寫一個Activity類,那怎麼保證加載的是我自己寫的Activity

8、算法題,約瑟夫環

9、反問

二面(1hour):

0、自我介紹

1、項目技術點詳解

2、寫過什麼自定義View

3、OkHttp代碼看過嗎,用了什麼設計模式

4、MVC、MVP區別,項目中的實現。

5、LiveData和EventBus的相關討論,真的是討論,暢所欲言

6、看過哪些源碼

7、SharedPreference相關

8、Android動畫了解嗎,用過什麼

9、TCP、UDP區別,面試時的語音用的是什麼,爲什麼要這麼用。

10、代碼題,5個線程對一個int進行累加到1000.

11、反問

三面(50mins):

0、自我介紹
1、算法,跳棋盤
2、瀏覽器輸入URL到渲染全過程
3、Http請求報文響應報文
4、http2.0有哪些優化
5、用過哪些網絡庫
6、OkHttp的Intercepter
7、Android持久化方式
8、Java線程同步的數據結構
9、反問

總結:字節跳動面試官都很和善,所有的問題都是在討論,我不會的他們也容許我猜一下,然後告訴我猜的對不對……


華爲

一面(1hour):
0、自我介紹
1、項目介紹,技術點相關。
2、C++和Java區別,GC
C++不熟,只能說內存管理相關的問題,所以就問到了GC。然後說分代收集算法。老年代擔保、元數據區從JVM移到了本地內存這些。
3、線程相關,Runnable和Thread的區別。
Thread類是實現了Runnable接口,平時使用起來可以使用start方法調用。線程池基本傳Runnable對象,平時也是線程池用的多,所以具體相關不太熟。
4、線程池
5、synchronized,volatile
6、繼承相關,多重繼承和接口
7、網絡編程
8、UPD,TCP區別
9、最大的優點
10、最大的缺點
11、算法二叉樹中序遍歷,真是早起毀一天,竟然沒撕出來,我真想給自己兩耳光。不過面試官給我總結的很好,說要利用棧的特性,先進後出,所以要保證左子樹先進根結點再進,這麼思考之後就順利了很多。

總結:早上狀態很差,簡單問題也會卡殼,希望大家還是能夠選擇自己狀態好的時間點面試……。

二面(40mins):
0、介紹一下項目

1、Android四大組件,詳細講一下。

2、Launcher啓動APP的全過程。

icon存入口Activity信息

AMS通知Launcher去pause。

Launcher通知AMS已經pause

AMS檢查進程是否已經啓動,如果不啓動則啓動進程。並且調用ActivityThread的main方法。

啓動之後通知AMS已經啓動

然後AMS將入口Activity信息傳遞給APP。

APP啓動對應入口Activity,並且創建對應上下文並且調用Activity的onCreate方法。

3、進程間通信,AIDL,Binder。扯了一會說進程間通信平時怎麼做的,就說了一下AIDL相關的Demo實現什麼的。說到了自己程序裏面有拉起微信的這個功能(也就是廣播)。

4、設計模式瞭解嗎,平時用過哪些設計模式。

5、算法題:輸入一個數n,代表有n個點,一個二維數組,二維數組代表相連的點,要求輸出連通起來的點。
如果n=6,數組假設是{{1,2},{2,3},{4,5}},則輸出{{1,2,3},{4,5},{6}}

吐槽一下,本來24號早上約的9.30和10.30兩輪面試,一次約兩輪我也是醉了。然後就二面拖了快一個小時才面上。早起代碼狀態真的差,這兩題都寫了分別用了快20分鐘,真的捉急。
一個午覺起來,收到了面試通過的短信,效率還是非常高的。還以爲掛了呢,看來只是面試官想喫飯了……

三面(<30分鐘):

0、自我介紹

1、公司實習期項目

說了RePlugin框架原理,說了ffmpeg動態鏈接庫開發方面的失敗經歷,說了Android的適配,和最近影響到的AndroidQ相關新特性的適配。

2、自己大學生活中攻克的最難的技術難點。

3、什麼情況下會壓力特別大,怎麼處理的。

4、職業規劃

...

綜合起來就是了解個人情況,技術問題都是自己說的。還是非常愉快輕鬆的。

總結:華爲面試安排非常緊張,但是反饋效率特別高,一二面結束馬上會短信通知是否通過。然後隔天直接三面,流程走的非常快。


阿里巴巴

一面 50分鐘

1.項目相關

2.安卓AIDL

3.四大組件

4.Activity四種啓動模式

5.Fragment生命週期

6.Activity之間的通信方法

7.SSL/TLS,以及位於哪一層

8.GET和POST區別,登錄用哪個

  1. 算法:層序輸入二叉樹,計算深度

二面 25分鐘

1.項目相關

*三面 1小時

1.項目相關及拓展

2.場景實現結合安卓特性分析

3.算法:4道數組題及其變形題,主要考邏輯
HR面

1.常規問題

項目是兩個local / offline安卓app,總體上項目扯得比較多,包括底層原理、開發需求、實現方法、優化拓展等


小米

第一面:

  1. 問了一些Android基礎;

  2. 2個算法

第二面:

  1. 問了一些JVM相關;

  2. 類加載器;

  3. FrameWork層。

第三面技術經理:

  1. 問了一下項目經歷;

  2. 離職原因;

  3. 期望薪水;

  4. 解決問題能力等。

  5. 順便寫了1個算法。

第四面,第四輪貌似是個技術專家之類的角色:

  1. 一直在追問各種原理和基礎細節,還有一些比較古怪的問題,考察基礎和反應能力;

  2. 1個算法

  3. 總結:有4個算法小米的技術團隊還是比較強的,一線工程師的基礎都很紮實。不是很熟悉的技術不要往簡歷裏面寫,被揪住了是會扣分的。很注重基礎細節,基礎一定要紮實。


騰訊

一面(30mins):

0、自我介紹

1、View過度繪製有什麼工具進行查看

2、SharedPreference兩個進程同時進行讀寫會有什麼問題

3、Android進程間通信方式

4、熱修復原理,講的Tinker

5、DNS協議,CDN

6、算法題,一個數組有兩個數字不同,其他都成對出現,怎麼找出來

7、智力題,一塊錢買一瓶水,兩個空瓶換一瓶水,n元能喝幾瓶水。

總結:面試完又被說表現得不錯了……

二面(1hour30mins):

0、大模擬代碼題……一個小時

三面(2hours30mins):

0、自我介紹

1、實習工作深挖

2、RePlugin原理深挖,其他插件化框架對比

3、爲什麼要選擇RePlugin框架

4、你覺得自己對於Android掌握到了什麼地步

5、看過什麼源碼

6、你爲什麼要看源碼

7、你爲什麼要寫博客

8、知道哪些著名開源框架

9、什麼是進程,進程調度算法

10、什麼是線程

11、你覺得什麼是JVM

12、有哪些線程同步算法

13、死鎖是什麼,舉個例子

14、Object有哪些方法

15、Java異常有哪些,Error和Exception區別

16、OSI七層模型,TCP、UDP是哪一層,應用層有哪些協議

17、如果要設計一個大量圖片下載的方法,如何確定併發量,有哪些指標。

18、APP間傳遞消息安全嗎?要怎麼做才能安全呢?

19、廣播怎麼分類

20、自定義View重寫的關鍵有哪些,onLayout和onMeasure區別

21、Android有哪些動畫,MotionLayout講一下。MotionLayout使用場景。

22、Activity四種啓動模式,SingleTask和SingleTop的使用場景

23、一些Framework層的問題,不太會所以記不得了。但是告訴面試官我已經下了Framework層相關電子書,是下一步需要看的。

24、你爲什麼想了解Framework層知識。

25、算法題,我想dp寫逆序對的,沒寫出來心態崩了

26、你對於我們的Offer是什麼態度

27、反問

從學生轉變身份到程序員,最需要自己提升的能力是什麼?學好專業基礎課、對新知識有熱情、願意鑽研、關心技術動向。

騰訊現在用什麼語言,Java、Kotlin?有沒有用Flutter相關。現在還在用Java,但是準備轉Kotlin,Flutter方面已經做了很多動作了。

總結:LZ知道自己Android新技術不是特別過關,很多問題一問深了就有點喫癟,尤其是面試官一開局懟了一堆RePlugin相關問題,確實能力不夠回答不出來。
後面又開始綜合能力以及基礎能力的考察,這一部分我自認爲還可以。
面試官特別不喜歡背書,所以問的問題都是帶有思考在裏面的,很多問題都是你覺得是什麼,而不是什麼是。
面試官人真的很好了,面了我兩個半小時,真的有點累。


尾聲與建議

經過了這麼多年的磨礪,除了硬實力之外,有一些需要自己注意的技巧分享出來:

1、簡歷不要投太早,容易因爲太久沒被處理導致心態崩潰。因爲我之前2月底投了一波,但是那時候很多廠簡歷篩選工作還沒開始,搞得自己無名焦慮,頭髮又少了。

2、不要給面試官一種你在背知識點的感覺,要結合實現進行分析。我這裏有一句話:數據結構決定算法算法決定數據結構。就拿TCP舉例,你要是遇到TCP的頭部結構有什麼的問題,是不是就懵了,覺得這是靠背誦的。但是你套上這句話,聯想一下知識點:SACK確認機制、滑動窗口、全雙工通道、套接字結構……是不是就能夠理解爲什麼需要那些頭部結構了,都是有對應的功能需要實現纔會出現這些結構的。遇事不決拿結構分析。

3、多看源碼源碼裏面有很多註釋,很多時候看看註釋就知道這個類是幹什麼的了,然後再往下跟,會有助於自己理解邏輯。更重要的是讓面試官知道你這種跟源碼的學習方式。

4、調整好心態,不要因爲某些廠把自己掛了就覺得自己不行。這是我被掛多了之後的心得,此處不留爺自有留爺處。

5、面心儀的公司之前先面幾家其他公司,小公司或者同等體量的公司。

6、面試一次覆盤一次,整理自己發揮不好的點。不能說一次問你不會兩次問你還不會吧,那不是能力問題,那是態度問題。而且很多廠是有面試記錄的,二三面轉挑你面試不好的問題問你。

如果你也需要臨時抱佛腳,過來領取吧,我免費分享給你!

只展示部分《 BATZ及其30家大中級公司Android開發崗 面試精選合集》需要這份771頁PDF面試題精選可以點贊+評論【面試】即可獲取!!!

自行加羣直達鏈接:【點擊獲取

點擊【GitHub】免費分享大牛個人面試進階學習筆記!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章