天天看點

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

起因

事情是這樣的。

4年前畢業那會,呆在公司的短視訊項目,做 視訊。那會做得比抖音還早,但是由于短視訊太燒錢了,項目被公司關掉了。當時需要開發橫豎屏直播/異步視訊的場景,就研究下了市場上的 app,發現輸入彈幕的互動并不友好。最直接的體驗就是,微信比絕大部分IM軟體在聊天場景下輸入法與表情面闆頻繁切換時表現得更為平滑,不會給使用者很突兀的閃爍感。但我們除了适配豎屏,們還需要相容橫屏/滿屏/沉浸等場景。

摸索了一段時間之後,做出來的效果挺不錯,比市面上的直播/異步視訊播放場景下的輸入互動體驗都要好。于是寫了個記錄的 Blog Android -SystemUI的那點事 。主要是将如何設計橫豎屏直/點播場景下良好的輸入互動。但是文章并沒有寫完… 留了橫屏模式下使用 PopupWindow 來實作的懸念… 本打算繼續接着寫第二篇。結果一拖,就是三年。

而在這三年裡,前後參與開發了十多個項目(我們是流水線生産,老工具人),而涉及到輸入互動的子產品已經有IM聊天,直播間,異步視訊播放頁面,資訊流評論等等。這些頁面從最初使用 Activity 實作到演化成可用 Fragment,Dialog,PopupWindow 代替。是以原來那套技術實作已經不能滿足。在尋找外部開源項目/技術博文無果的前提下,慢慢積累了一個庫

Java相關

  • 容器(HashMap、HashSet、LinkedList、ArrayList、數組等)
  • 記憶體模型
  • 垃圾回收算法(JVM)
  • 垃圾回收機制和調用 System.gc()的差別?
  • 類加載過程(需要多看看,重在了解,對于熱修複和插件化比較重要)
  • 反射
  • 多線程和線程池
  • 設計模式(六大基本原則、項目中常用的設計模式、手寫單例等)
  • Java 四大引用
  • Java 的泛型
  • final、finally、finalize 的差別
  • 接口、抽象類的差別
愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

Android 相關

  • 自定義 View
  • 事件攔截分發
  • 解決過的一些性能問題,在項目中的實際運用
  • 性能優化工具
  • 性能優化 (講講你自己項目中做過的性能優化)
  • Http[s]請求慢的解決辦法(DNS、攜帶資料、直接通路 IP)
  • 緩存自己如何實作(LRUCache 原理)
  • 圖形圖像相關:OpenGL ES 管線流程、EGL 的認識、Shader 相關
  • SurfaceView、TextureView、GLSurfaceView 差別及使用場景
  • 動畫、內插補點器、估值器(Android中的View動畫和屬性動畫 - 簡書、Android 動畫 介紹與使用)
  • MVC、MVP、MVVM
  • Handler、ThreadLocal、AsyncTask、IntentService 原理及應用
  • Gradle(Groovy 文法、Gradle 插件開發基礎)
  • 熱修複、插件化
  • 元件化架構思路
  • 系統打包流程
  • Android 有哪些存儲資料的方式。
  • SharedPrefrence 源碼和問題點;
  • sqlite 相關
  • 如何判斷一個 APP 在前台還是背景?
  • AMS 、PMS
  • Activity 啟動流程,App 啟動流程
  • Binder 機制(IPC、AIDL 的使用)
  • 為什麼使用 Parcelable,好處是什麼?
  • Android 圖像顯示相關流程,Vsync 信号等
愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

算法與資料結構

  • 時間複雜度 / 空間複雜度
  • 常用的排序算法有哪些?
  • 字元串反轉
  • 連結清單反轉(頭插法)
  • 如何查找第一個隻出現一次的字元(Hash查找)
  • 如何查找兩個子視圖的共同父視圖?
  • 無序數組中的中位數(快排思想)
  • 如何給定一個整數數組和一個目标值,找出數組中和為目标值的兩個數。
  • 二叉樹前序、中序、後序周遊
  • 最大 K 問題
  • 廣度、深度優先搜尋算法
  • String 轉 int。核心算法就三行代碼,不過臨界條件很多,除了判空,還需要注意負數、Integer 的最大最小值邊界等;
  • 如何判斷一個單連結清單有環?
  • 100 億個單詞,找出出現頻率最高的單詞。要求幾種方案;
  • 連結清單每 k 位逆序;
  • 鏡像二叉樹;
  • 找出一個無序數組中出現超過一半次數的數字;
  • 計算二叉樹的最大深度,要求非遞歸算法。
  • String 方式計算加法。

總結

我最近從朋友那裡收集到了2020-2021BAT 面試真題解析,内容很多也很系統,包含了很多内容:

Android 基礎、Java 基礎、Android 源碼相關分析、常見的一些原理性問題

等等,可以很好地幫助大家深刻了解Android相關知識點的原理以及面試相關知識。

這份資料把大廠面試中常被問到的技術點整理成了PDF,包知識脈絡 + 諸多細節;還有 進階架構技術進階腦圖 幫助大家學習提升進階,也節省大家在網上搜尋資料的時間來學習,也可以分享給身邊好友一起學習。

這裡也分享給廣大面試同胞們,希望每位程式猿們都能面試成功~

領取方式:點選直達GitHub

Android 基礎知識點

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

Java 基礎知識點

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

Android 源碼相關分析

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

常見的一些原理性問題

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

騰訊、位元組跳動、阿裡、百度等BAT大廠 2019-2020面試真題解析

愛了愛了!移動開發程式員怎麼優雅邁過30K+這道坎?知乎上已獲萬贊

duWMjh6J-1613914417608)]

騰訊、位元組跳動、阿裡、百度等BAT大廠 2019-2020面試真題解析

[外鍊圖檔轉存中…(img-HdZ8MYEK-1613914417609)]