2020互聯網寒冬之下,做爲一個Android老碼農,是如何進入騰訊的?

因爲衆所周知的緣由,原生Android開發現在已經日漸凋敝,做爲一個Android程序員,不只要會Java,Kotlin,JavaScript,Css,Html,還要會Flutter,C++,FFmpeg,Linux等相關知識。android

筆者從7月份開始面試,到8月中旬截止(由於騰訊已經面試經過,本身面試面的也累了,就決定去騰訊了) 接下來就說說各家的面試題,一共面試了快二十家公司,既有外包,也有中小型企業,也有準備D輪甚至上市的C輪企業,更有BAT等知名企業。程序員

接下來就一一說一下各家公司的面試題。 也建議各位面試的時候不要上來就直奔BAT等,大廠面試官的技術廣度與深度也不是剛出來面試的你,能搞定的。最好先去一些小公司看看他們問的哪些東西,本身回去在查漏補缺一下,刷書大廠的面試題,最後去大廠。 最後祝各位能進入本身心儀的公司。面試

按照面試的時間順序來一一羅列各家公司的面試題。(記憶可能出現紕漏,哈哈,各位看看就好,有些公司的面試可能比較常規,就沒有什麼特別的印象)算法

武漢佰鈞成(外包OPPO,自家面試官)

由於是週六的專場面試,也不用請假,因此立刻就參加了這家公司的面試。 兩輪面試sql

  • Activity的啓動流程
  • Activity的啓動模式,應用場景
  • 如何減小對第三方框架的耦合
  • hashmap的基本原理

博彥科技(外包OPPO,OPPO面試官)

兩輪面試編程

  • Handler機制
  • Binder機制
  • 寫一個單例模式,DCL爲何要加V關鍵字
  • 直接在Activity Sleep 5000ms,再post一個runable會不會ANR。
  • 如何監聽ANR
  • View的繪製流程,每一個都是幹什麼的
  • 事件傳遞機制

Insta360 (C輪公司)

三輪面試設計模式

  • 組件化如何實現組件通訊
  • HashMap基本原理 如何減小hash衝突 如何增大hash衝突
  • 安裝包怎麼優化的
  • 若是有A,B,C,D,E五個步驟,每一個步驟都須要操做對應請求,用哪一種設計模式。

華爲外包

兩輪技術面試數組

  • 安裝包優化作了哪些工做
  • 對加班怎麼看的

原本一面完了就讓我等着二面的,等了十分鐘後跟我說二面面試官暫時不在,等下次再約時間,出門等了10分鐘的公交,離家還有20分鐘的時候,又給我打電話讓我回去參加第二面,而後就沒去了,太折騰人。緩存

綠網科技

三輪技術面安全

  • hashmap原理

  • MVP,MVVM,MVC的區別是什麼

  • Java Memory Model的內存模型

  • 若是讓你設計一個app,打算怎麼設計

  • JVM垃圾回收有哪幾種算法,有哪幾種垃圾回收處理器

  • Serial使用的哪種回收算法

  • JVM的內存模型

  • Android主線程是怎麼啓動的

  • dex是如何轉爲機器碼的

  • llvm編譯是如何優化代碼的

  • 說一個你本身的缺點。

最終結果是這樣的 哈哈,仍是不能要過高

同洲電子

四輪技術面

  • Activity的啓動流程
  • 靜態類的靜態方法能不能被子類重寫(不能,走的invoke-static指令,只有走invoke-virtual指令的纔可能實現多態)
  • Linux的啓動流程
  • 對Native層有沒有興趣
  • 對作智能家居有沒有興趣
  • 招一個應屆生進來作app也是作,招你也是作,爲何要招你

順豐科技

一輪技術面 總共三輪面試

  • handler機制
  • looper的喚醒是在Java仍是Native層,怎麼作到的
  • HashMap,ConcurrentHashMap,HashTable有什麼異同
  • Binder通訊機制
  • 跨平臺開發熟不熟悉
  • 如何提升海外用戶的訪問速度,假設服務器在深圳。
  • 如何學習一個新東西,有哪些執行步驟

百度

  • 紅包隨機算法 是怎麼作到的
  • 寫一個二叉樹的深度度優先遍歷,遞歸 非遞歸
  • Android中LocalServerSocket是幹什麼用的
  • binder的Native層代碼看過嗎
  • Linux有哪些RPC機制
  • 爲何android使用了Binder機制沒采用共享內存
  • 若是讓你設計一套進程間通訊的機制,你會怎麼設計
  • Linux的模塊動態加載機制是怎麼實現的
  • 一個物理屏劃分爲三個邏輯屏,是靠誰來分發事件的。
  • ConcurrentHashMap是否是絕對的線程安全。(final,絕對線程安全,相對線程安全,線程不安全)
  • 線程池是如何管理線程狀態的

大宇無限(C輪公司 前身是豌豆莢)

是我第二心儀的一家公司,辦公環境,氛圍,福利都好的一逼,惋惜了 總共七輪面試 五輪技術面

  • Kotlin的訪問權限
  • Koltin爲何比Java更安全
  • Koltin比Java好在哪
  • JVM的內存模型
  • JMM的內存模型
  • 爲何操做數棧是Thread-Private
  • 計算二叉樹的深度
  • ArrayList跟LinkeList區別
  • ArrayList如何擴容的,如何提升ArrayList的效率
  • 動態代理靜態代理區別
  • 啓動優化怎麼作的。
  • 若是給你個IOS APP,你打算怎麼優化。
  • http有哪幾種版本,版本間有什麼區別。https跟http有什麼區別。
  • apk爲何要簽名,v1跟v2簽名的區別
  • apk從編譯打包都安裝的流程
  • dex到odex爲何不能在編譯期優化
  • 熱修復原理
  • 你的優點是什麼

平安

三輪面試

  • http2.0 1.1 1.0的區別
  • http如何保證安全性
  • 安裝包優化有哪幾種方式
  • 啓動優化有哪幾種方式
  • View的繪製流程,每一個方法幹什麼的,若是要獲取View的寬高,在哪一個方法裏獲取
  • 如何應對弱網環境
  • android數據存儲方式
  • 若是一個app沒法訪問網絡,你怎麼作數據存儲。
  • DVM跟JVM的區別
  • React Native跟原生開發的優劣

騰訊

三輪面試 一面

  • 算法題 通電小球
  • Android 沉浸式狀態欄 怎麼實現的
  • 事件處理函數有哪幾個,父View 子View 監聽同一個事件,重寫哪些方法。在哪一個View重寫?
  • ViewRootImpl接受事件嗎?
  • apk編譯打包流程 V1,V2 簽名區別
  • 利用logging監聽方法耗時,會不會讓app增大延遲。
  • eventbus爲何要用CopyOnWriteList?
  • 插件化怎麼加載資源的?
  • JVM怎麼保證gc效率跟線程運行效率的 ?
  • 若是android沒用對應的view,flutter能運行嗎? 手寫單例模式,volatile 跟 synchronized區別?
  • 接口暴露,可是不讓別人調用,有哪些辦法?

二面

  • 爲何採用flatbuffer? 比Json好在哪裏?
  • 如何處理Crash,NativeCrash呢?Google是怎麼作到的?若是上報過程當中再次產生Crash能不能捕捉到?
  • uncaughtException是被誰調用的,若是再次崩潰能不能捕獲到?
  • Linux是怎麼知道app崩潰的,若是想要在被kill前 作一些耗時操做,該怎麼作?
  • 考慮設計一個crash捕捉模塊。
  • 100萬個數字求100個最大值。
  • 手寫快速排序算法。

三面 (GM面)

  • kotlin比Java好在哪裏,是函數式編程嗎?
  • 如何防止DNS劫持?
  • 若是讓你實現一個調試器,你會怎麼設計?靜態調試?動態調試呢?

總結:

大廠基本上不太看重具體的技術,不管你是Java仍是C++,比較看重思路與抽象的解決方案。

若是你想去一家不錯的公司,可是目前的硬實力又不到,我以爲仍是有必要去努力一下的,技術能力的高低能決定你走多遠,平臺的高低,能決定你的高度。

在面試前我也準備了好久,刷了不少大廠面試題,知識點整理出來分享給你們,算是一個感恩回饋吧:

Java相關

1.容器(HashMap、HashSet、LinkedList、ArrayList、數組等)

2.內存模型

3.垃圾回收算法(JVM)

4.垃圾回收機制和調用 System.gc()的區別?

5.類加載過程(須要多看看,重在理解,對於熱修復和插件化比較重要)

6.反射

7.多線程和線程池

8.設計模式(六大基本原則、項目中經常使用的設計模式、手寫單例等)

9.Java 四大引用

10.Java 的泛型

11.final、finally、finalize 的區別

12.接口、抽象類的區別

若有須要全套面試題+解析,直接劃到文末免費領取哦~

Android 相關

1.自定義 View

2.事件攔截分發

3.解決過的一些性能問題,在項目中的實際運用

4.性能優化工具

5.性能優化 (講講你本身項目中作過的性能優化)

6.Http[s]請求慢的解決辦法(DNS、攜帶數據、直接訪問 IP)

7.緩存本身如何實現(LRUCache 原理)

8.圖形圖像相關:OpenGL ES 管線流程、EGL 的認識、Shader 相關

9.SurfaceView、TextureView、GLSurfaceView 區別及使用場景

10.動畫、差值器、估值器(Android中的View動畫和屬性動畫 - 簡書、Android 動畫 介紹與使用)

11.MVC、MVP、MVVM

12.Handler、ThreadLocal、AsyncTask、IntentService 原理及應用

13.Gradle(Groovy 語法、Gradle 插件開發基礎)

14.熱修復、插件化

15.組件化架構思路

16.系統打包流程

17.Android 有哪些存儲數據的方式。

18.SharedPrefrence 源碼和問題點;

20.sqlite 相關

21.如何判斷一個 APP 在前臺仍是後臺?

22.AMS 、PMS

23.Activity 啓動流程,App 啓動流程

24.Binder 機制(IPC、AIDL 的使用)

25.爲何使用 Parcelable,好處是什麼?

26.Android 圖像顯示相關流程,Vsync 信號等

若有須要全套面試題+解析,直接劃到文末免費領取哦~

源碼理解

Glide :加載、緩存、LRU 算法 (如何本身設計一個大圖加載框架) (LRUCache 原理)

EventBus

LeakCanary

ARouter

插件化(不一樣插件化機制原理與流派,優缺點。侷限性)

熱修復

RXJava (RxJava 的線程切換原理)

Retrofit (Retrofit 在 OkHttp 上作了哪些封裝?動態代理和靜態代理的區別,是怎麼實現的)

OkHttp

算法與數據結構

1.時間複雜度 / 空間複雜度

2.經常使用的排序算法有哪些?

3.字符串反轉

4.鏈表反轉(頭插法)

5.如何查找第一個只出現一次的字符(Hash查找)

6.如何查找兩個子視圖的共同父視圖?

7.無序數組中的中位數(快排思想)

8.如何給定一個整數數組和一個目標值,找出數組中和爲目標值的兩個數。

9.二叉樹前序、中序、後序遍歷

10.最大 K 問題

11.廣度、深度優先搜索算法

12.String 轉 int。核心算法就三行代碼,不過臨界條件不少,除了判空,還須要注意負數、Integer 的最大最小值邊界等;

13.如何判斷一個單鏈表有環?

14.100 億個單詞,找出出現頻率最高的單詞。要求幾種方案;

15.鏈表每 k 位逆序;

16.鏡像二叉樹;

17.找出一個無序數組中出現超過一半次數的數字;

18.計算二叉樹的最大深度,要求非遞歸算法。

19.String 方式計算加法。

網絡

1.網絡框架對比和源碼分析

2.網絡七層協議有哪些?

3.Http 和 Https 的區別?Https爲何更加安全?

4.HTTPS的鏈接創建流程

5.解釋一下 三次握手 和 四次揮手

6.TCP 和 UDP的區別

7.Cookie和Session

8.DNS是什麼?

9.DNS解析過程

10.HTTP報文結構

11.HTTP與HTTPS的區別以及如何實現安全性

12.如何驗證證書的合法性?

13.https中哪裏用了對稱加密,哪裏用了非對稱加密,對加密算法(如RSA)等是否有了解?

14.client如何肯定本身發送的消息被server收到?

15.談談你對WebSocket的理解

16.WebSocket與socket的區別

17.談談你對安卓簽名的理解。

18.請解釋安卓爲啥要加簽名機制?

19.視頻加密傳輸

20.App 是如何沙箱化,爲何要這麼作?

21.權限管理系統(底層的權限是如何進行 grant 的)?

若有須要全套面試題+解析,直接劃到文末免費領取哦~

Kotlin 相關

1.從原理分析Kotlin的延遲初始化: lateinit var和by lazy

2.使用Kotlin Reified 讓泛型更簡單安全

3.Kotlin裏的Extension Functions實現原理分析

4.Kotlin系列之頂層函數和屬性

5.Kotlin 兼容 Java 遇到的最大的 「坑」

6.Kotlin 的協程用力瞥一眼

7.Kotlin 協程「掛起」的本質

8.到底什麼是「非阻塞式」掛起?協程真的更輕量級嗎?

9.資源混淆是如何影響到Kotlin協程的

10.Kotlin Coroutines(協程) 徹底解析

11.破解 Kotlin 協程

Flutter相關

1.Dart 當中的 「..」表示什麼意思?

2.Dart 的做用域

3.Dart 是否是單線程模型?是如何運行的?

4.Dart 是如何實現多任務並行的?

5.說一下Dart異步編程中的 Future關鍵字?

6.說一下Dart異步編程中的 Stream數據流?

7.Stream 有哪兩種訂閱模式?分別是怎麼調用的?

8.await for 如何使用?

9.說一下 mixin機制?

10.請簡單介紹下Flutter框架,以及它的優缺點?

11.介紹下Flutter的理念架構

12.介紹下FFlutter的FrameWork層和Engine層,以及它們的做用

13.介紹下Widget、State、Context 概念 - Widget

14.簡述Widget的StatelessWidget和StatefulWidget兩種狀態組件類

15.StatefulWidget 的生命週期

16.簡述Widgets、RenderObjects 和 Elements的關係

17.什麼是狀態管理,你瞭解哪些狀態管理框架?

18.簡述Flutter的繪製流程

19.簡述Flutter的線程管理模型

20.Flutter 是如何與原生Android、iOS進行通訊的?

21.簡述Flutter 的熱重載

「Android大廠面試真題解析大全」PDF完整高清版+②「Android面試知識體系」學習思惟導圖壓縮包——————能夠【點擊我】閱讀下載,最後以爲有幫助、有須要的朋友能夠點個贊。

相關文章
相關標籤/搜索