一位死磕大廠的Android開發面試總結

本人19年畢業于一家普通二本,考研涼了且沒有實習經驗,每天就是不斷地投簡歷、刷面經,感覺自己都要抑郁了

最后勉強進入了一家學校合作的外包公司干了3年,剛開始每個月拿著4-6000地薪水還要被迫接受996,雖然后面漲到了10k+,但仍感覺未來沒有希望。我決定做出改變,離開這里!

剛開始準備地時候其實并不輕松,感覺自己的技術層面還停留在3年前剛畢業的時候,對于當前互聯網企業的技術棧一概不通,每天上班在學習,下班也在學習,不斷地去提升自己的技術能力,也受到了很多同學的幫助,同時也在不斷的投簡歷,參加面試,一方面是可以檢測自己還有哪方面的缺漏,另一方面也是為了看自己學習有沒有效果,能不能收到offer。

大廠小廠加起來攏共面了二十幾家,拿到了阿里offer,以下面試題不分是哪家公司,主打的就是一個記錄,以及給大家參考

一、Java相關方面

  • 抽象類與接口的區別?
  • 分別講講 final,static,synchronized關鍵字可以修飾什么,以及修飾后的作用?
  • Java 中深拷貝與淺拷貝的區別?
  • 什么是反射機制?反射機制的應用場景有哪些?
  • 談談如何重寫equals()方法?為什么還要重寫hashCode()?
  • 請說一下HashMap與HashTable的區別
  • 談一談ArrayList的擴容機制?
  • 請簡述 LinkedHashMap 的工作原理和使用方式?
  • Java 中使用多線程的方式有哪些?說一下線程的幾種狀態?
  • 談談線程死鎖,如何有效的避免線程死鎖?
  • 什么是線程池?如何創建一個線程池?
  • 談一談JAVA垃圾回收機制?
  • JVM、Dalvik、ART三者的原理和區別?
  • JMM是什么?它存在哪些問題?該如何解決?

二、Android方面

  • Activity 與 Fragment 之間常見的幾種通信方式?
  • 對于 Context,你了解多少?
  • 談一談startService和bindService的區別,生命周期以及使用場景?
  • 簡單介紹下ContentProvider是如何實現數據共享的?
  • 說下切換橫豎屏時Activity的生命周期?
  • 說說Activity加載的流程?
  • HandlerThread 的使用場景和用法?
  • 談談 Handler 機制和原理?
  • 試從源碼角度分析Handler的post和sendMessage方法的區別和應用場景?
  • 談談Android的事件分發機制?
  • 談談自定義View的流程?
  • 談談你對Android性能優化方面的了解?
  • 自定義 Handler 時如何有效地避免內存泄漏問題?
  • 談談Android中內存優化的方式?
  • 談談你是如何優化App啟動過程的?
  • 請回答一下Android進程間的通信方式?
  • 請簡要談談Android系統的架構組成?
  • 請簡述一下 Android 7.0 的新特性?
  • 什么是冒泡排序?如何優化?

三、Kotlin方面

  • 請簡述一下什么是 Kotlin?它有哪些特性?
  • Kotlin中實現單例的幾種常見方式?
  • 在Kotlin中,什么是內聯函數?有什么作用?
  • 請談談Kotlin中的Coroutines,它與線程有什么區別?有哪些優點?
  • 說說Kotlin中的Any與Java中的Object 有何異同?
  • Kotlin中的數據類型有隱式轉換嗎?為什么?
  • Kotlin中集合遍歷有哪幾種方式

四、音視頻方面

  • 怎么做到直播秒開優化?
  • 數字圖像濾波有哪些方法?
  • 圖像可以提取的特征有哪些?
  • FFMPEG:圖片如何合成視頻
  • 常見的音視頻格式有哪些?
  • 請敘述MPEG視頻基本碼流結構?
  • 說一說ffffmpeg的數據結構?
  • 如何降低延遲?如何保證流暢性?如何解決卡頓?解決網絡抖動?
  • 平時說的軟解和硬解,具體是什么?

五、Flutter方面

  • Dart 語言的特性?
  • Dart 多任務如何并行的?
  • dart是值傳遞還是引用傳遞?
  • Flutter 特性有哪些?
  • Widget 和 element 和 RenderObject 之間的關系?
  • 使用mixins的條件是什么?
  • Stream 兩種訂閱模式?
  • Flutter中的Widget、State、Context 的核心概念?是為了解決什么問題?
  • 說一下Hot Reload,Hot Restart,熱更新三者的區別和原理
  • Flutter 如何與 Android iOS 通信?
  • 說一下什么是狀態管理,為什么需要它?

六、算法方面

  • 如何運??分查找算法
  • 如何去除有序數組的重復元素
  • 如何在無線序列中隨機抽取元素
  • 如何判定括號合法性
  • 如何尋找缺失和重復的元素

七、Android Framework方面

  • 你了解Android系統啟動流程嗎?
  • 1.2system_server 為什么要在 Zygote 中啟動,而不是由 init 直接啟動呢?
  • 1.5 Zygote 為什么不采用 Binder 機制進行 IPC 通信?
  • Binder有什么優勢
  • Binder是如何做到一次拷貝的
  • MMAP的內存映射原理了解嗎?
  • 說說四大組件的通信機制
  • 簡述下 Handler 機制的總體原理?
  • Handler 或者說 Looper 如何切換線程?
  • Handler、Mesage 和 Runnable 的關系如何理解?
  • Handler 為什么可能導致內存泄露?如何避免?
  • Handler在系統當中的應用
  • ActivityManagerService是什么?什么時候初始化的?有什么作用?
  • Instrumentation是什么?和ActivityThread是什么關系?
  • ActivityManagerService和zygote進程通信是如何實現的。

文末

整理不易,白嫖太易!有需要的讀者朋友們可以查看一下個人主頁。以上都可分享~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容