2021字節跳動,金三銀四內幕Android中高級面試題合集-令人細思極恐

前言

一眨眼又到年底了,每到這個時候,我們都會慢慢反思,這一年都做了什麼?有什麼進步?年初的計劃都實現了嗎?明年年初有跳槽的底氣了嗎?

況且2020年我們經歷了新冠疫情的洗禮,很多程序員都經歷了失業,找工作的恐慌。導致今年的互聯網環境太差,需要自己有足夠的知識儲備,才能夠應對這凌冽的寒風。

本文主要是整理了中高級Android需要會的(或者說面試被頻繁問到的內容), 主要作爲參考大綱,之後會陸續更新每個詳細部分,供大家參考,互相學習。

面試參考大綱知識圖譜

2020面試題精選分享

騰訊面試題分享

一面 42min 電話面試
  • 項目經歷,開發中遇到什麼問題,最後怎麼解決的
  • TCP三次握手,擁塞控制
  • 一面更多的是聊項目,面試官沒有問太多基礎的知識,面試官主要是在我介紹自己項目的時候切入問問題,整個過程氛圍很開心。
二面 45min 視頻面試 3.21
  • 安卓的設計模式有沒有了解,工廠模式之類的
  • IPC,多線程
  • hashmap相關
  • 擴容因子
  • hashmap與hashtable區別
  • hashmap重寫了equals方法但是不重寫hashcode方***怎麼樣
  • haspmap查找的時間複雜度,可不可以優化
  • 我說把鏈表改成雙向鏈表,還可以改成avl樹,b樹,b+樹,減少查找的時間複雜度。
  • 計網三次握手,四次揮手
  • 兩道算法
  • 一個簡單博弈問題,兩個人分別選擇最大的數直到選完,求最後兩個手上數的和之差,實際上是排序就行了,重點在排序算法的選擇,可以直接用C++的sort函數,我自己手寫了歸併排序來用。
  • 提供一種大小爲N的CD,還告訴你有兩種大小A,B的歌,每種歌的數量也告訴你爲x,y,往CD裏放歌,儘量利用CD的空間能放多少放多少,每首歌不可拆分放,可用的CD總數不限,求有多少種排列方式。最後理了思路,就是用遞歸就行了。
  • 項目相關,開發中遇到的問題及解決辦法
  • 問面試官問題,問的是面試官您認爲哪些能力是更重要的,面試官說是基礎更重要——數據結構,計網,算法。
三面 2h10min 視頻面試 3.25
  • 操作系統相關知識
    • 棧內存,堆內存
    • 進程,線程
    • 競爭
  • 計網
    • TCP三次握手
    • TCP擁塞控制
    • 瀏覽器訪問網址,具體發生了什麼
    • DNS協議怎麼工作的
  • 安卓相關知識
    • activity生命週期
    • 爲什麼要有任務棧,任務棧有什麼作用
    • viewholder的作用
    • view繪製過程
    • view,window和activity之間的區別
    • OOM什麼情況會發生,怎麼解決
  • 兩道算法題
    • a[100]中逐個填1~100的隨機數,且不能重複
    • 大數相乘
  • 項目經歷,開發中遇到的問題及解決辦法
  • 談談你的優點
  • 你之前騰訊面試失敗,是爲什麼,那兩道題爲什麼沒做出來
    • 那道題是輸入一個字符串,從中刪除n個字符,剩下的字符構成迴文串,求n的最小值,確實難;另一題是無權圖中兩點最短路徑,思路很簡單就是BFS
  • 最後問問題環節
    • 第一個問題問的依舊是,面試官您認爲哪方面的能力或者是能力更重要,面試官說基礎,操作系統,計網,數據結構算法這些。其實我的操作系統真的不夠好,這次面試最大的問題就是這個了。
    • 最後問了面試官才知道,是QQ部門的。。。

阿里巴巴

電話一面
  • 起手式:自我介紹
  • 介紹下簡歷上的項目
  • 線程池的使用,線程池如何實現的,線程池的原理
  • Thread 的join 函數的作用
  • java 線程間通信的方法有哪些
  • Android handler 機制,源代碼
  • juc atomicInteger 類爲什麼能保持線程安全,普通的變量爲什麼不能保證線程安全
  • java 內存模型(問了我有沒有閱讀過JSR 133的官方文檔?並沒有,很慚愧,感覺學的路子有點野)
  • java 內存分區
  • concurrentHashMap 的原理
  • 100以內,10萬以內,10萬到無窮個數,三種情況排序,選擇排序算法
  • 你有什麼要問我的?(問了一些技術相關的問題)

一面是在過完年後回實驗室第一天就面了,過了年,很多知識都忘記了,回答得比較一般,所以碼代碼這事兒,真是和醫生的手術刀一樣,要天天摸着纔是好。

電話二面

一面和二面隔得確實比較久,期間讓老同學幫我查了進度,所以喊我再等等。三週後,迎來了阿里二面。二面的面試官是手淘的負責人,面試中給人一種感覺是比較開放,自由的,感覺到了一種高水準技術流派的畫風。

  • 願意不願意來杭州
  • 自我介紹
  • java的gc(gc工作原理,gc回收機制,gc內存分配)
  • http和https區別
  • http報文結構
  • http 報文頭部含有什麼
  • 你最拿手的項目是什麼(回答了和同學做的開源項目,並且介紹瞭如何做的)
  • 手寫代碼:跳臺階問題
  • 你有什麼問題要問我嗎?
電話三面(有點忘記了)

三面是淘寶技術部的老大,整個人感覺思維縝密,對細節很注重。

  • 自我介紹
  • 問項目,問有沒有看過項目裏面的底層源代碼
  • Nodejs 到了什麼水平,大致說下對Nodejs的理解
  • 你有什麼問題要問我嗎?
電話交叉面

交叉面是阿里北京部門的,當時接到面試電話的時候,還是有點驚訝,沒有做好交叉面的準備,感覺交叉面就面得不那麼理想

  • 自我介紹
  • SS助手是什麼項目,大致說下
  • 有實習經歷嗎
  • 白盒是個什麼概念?白盒的安全性依靠什麼保證?白盒可以用於網絡流傳輸嗎?
  • ImageLoader的框架,淘寶app圖片的緩存設計方案(沒有回答上來)
  • 你有什麼問題要問我嗎?
hr面

風景如畫的小姐姐,說話很溫柔,問了些和生活,個人規劃相關的問題。

  • 你對阿里面試官的印象如何?你從面試官上學到了哪些東西
  • 你每天的生活安排是什麼樣子的?
  • 你爲什麼選擇來阿里?
  • 阿里的開源框架用了哪些呢?說說weex?
  • 你以後的技術規劃是什麼樣的?
  • 你最有成就的項目是哪個?
  • 爲什麼選擇android開發?
  • 爲什麼選擇nodejs開發作爲第二條技術路線?
  • 你有什麼要問我的嗎?(問了面試官入職培訓)

今日頭條

一面:
  • 協變

  • 線程間通信?有幾種同步/加鎖方式?

  • 進程間通信?答了三個只知道概念的和安卓的AIDL。

  • 又問這“三個”中任選一個闡述原理

  • hashCode()方法實現

  • hashCode()方法 equals()方法相互聯繫?

  • ActivityA啓動ActivityB,兩者的生命週期分別是怎樣的,是順序執行的嗎?

  • 用過哪些框架,答曰RxJava,Retrofit,Realm,問哪一個熟悉一點?都不太熟……就隨便挑了一個OKHttp來問:http請求中keep-alive保存長連接的實現原理是怎樣的?

  • LRUCache原理,如何實現?

  • 手撕代碼,股票買入買進最佳時機,LeetCode上原題(有6道變形)

  • 二分查找,寫的遞歸,要求轉成循環方式

二面:
  • 內部類和外部類有什麼區別?

  • 靜態內部類和非靜態的有什麼區別?

  • 內部類爲什麼可以訪問外部類的變量?

  • 垃圾回收:如果兩個變量互相引用是否還會回收它們?爲什麼?

  • 標記整理算法是怎樣的?爲什麼要前挪整理?

  • HashMap不是線程安全的,那麼用什麼替代?(本來是知道的,結果我多問了一句傻話面試官就跳過這個問題了……

  • (因爲項目提到)Realm版本管理?更新表?

  • CoordinatorLayout與通常的FrameLayout和RelativeLayout相比有什麼特點

  • View的繪製過程

  • (這次面試電腦麥克風出了問題 在手機面的)草草問了一下跳臺階問題

三面:
  • (因爲項目提到)SurfaceView的特點?瞭解相關的TextureView嗎?

  • HashMap的結構是怎樣的,怎麼存value,遇到相同的hash值的key,其value又怎麼存。

  • 手撕代碼,想第二種解法,想第三種解法;

  • 用快排來解決這個問題,優化,再優化。

  • 有什麼想問的?問建議學習路線,面試官建議就死磕官方源碼就好,開源庫的源碼也多看。看不懂看別人解析也可以。


總結:面試和必備的技能

這裏只簡單列舉一些東西,可能不是特別全,但是卻特別適用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根據公司的規模以及面試官的心情而定(哈哈哈 ,你們就自求多福吧)。建議大家還是要將下面的東西全部掌握,沒事寫寫代碼,練練手,在項目中能用到的地方一定要用,有可能會遇到很多坑,一定要自己想辦法填坑,之後回憶起這段經歷,肯定可以敢理直氣壯的跟別人討論。如果你說的頭頭是道,那麼對方會先輸一層,然後在心裏對你佩服。

1.一般情況下第一輪都是基礎面試,需要紮實的基礎

  • 最常用的Android 基礎知識
  • Java 基礎知識
  • 瞭解一些 常用東西的原理,例如:handler, thread 等
  • 項目中的技術點

2.第二輪的時候需要了解更深層次的東西

  • Android 事件分發機制原理
  • Android 繪圖機制原理
  • WindowManager 的相關知識
  • 進程間傳輸方式
  • Java 內存管理機制
  • 一些常用的 list,map 原理,以及子類之間的差別

3.能進入第三輪基本沒什麼問題,但是要注意以下問題

  • 該輪一般是 老大或者部門負責人,問的問題一般都看 深度與廣度
  • 當問及薪水的時候,要說一個合適的,小公司隨意,大公司一定要慎重,當心裏沒底的時候,可以告訴對方,讓對方給一個合理的薪資。一般都是在原工資基礎之上增長,聽獵頭說一般漲幅都在15%-30%,超 NB 的可以要30%及以上,如果感覺自己還不錯的,挺厲害的,建議最高20%,一般人就定在15% 左右最靠譜。公司內部一般有一套機制,根據公司情況而定。
  • 我們的面試原則就是拿到合理薪資,得到 offer
  • 個人發展情況,這個問題很難回答,如果和公司方向不符合,極有可能和公司無緣。建議多試探性的問問公司缺少什麼,你能否給予公司對應的東西。當然對於有自我追求的人,那可以放心大膽的提。我的方向就是架構師,哈哈哈,挺極端的,別學我哦。我感覺選擇都是雙向的,因此我知道自己需要的是什麼。
  • 你最擅長什麼UI 還是其他什麼?這個問題更不好回答。你要說你擅長 UI,是不是意味着你其他能力就不行?雖然我不知道面試官的用意,但是我能感覺到,這個問題不是那麼好回答,我會回答說自己都行,來什麼業務接什麼需求。可能回答不太好,總之和公司的職位吻合就行,這樣總不至於出錯吧。

尾聲

每個程序員朋友都有自己的架構師夢,可往往夢想是美好的,現實又是殘酷至極的。不努力不奮鬥,可能就會在基層一輩子止步不前。也許有很多朋友還會說,程序員也是乾的年輕飯,年紀大了也就爬不上了,腦子跟身體都跟不上了。那既如此,又爲何不趁着自己還年輕,好好把握機會,努力一把,美好的未來纔有機會和你招手!當然咯,這也僅僅代表我個人的觀點,畢竟一百個人有一百個不同的腦子,就會有成千上萬種不同的想法。

不過,只一句,如果你還在做這一行,還是一名程序猿(媛),想走上坡路的你,也許我這到手的學習進階筆記 可能會對你有所幫助。

《Android高級架構師面試指導+2020大廠面試真題》


四份大廠面試題(基礎+中高級+HR面)+面試指導2537頁 合集

更多學習視頻

以上進階BATJ大廠學習資料可以全部,全部,全部免費分享給大家,需要完整版的朋友,【點這裏可以看到全部內容】。

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