主頁 > 移動端開發 > 3年Android開發在上海的面經之旅

3年Android開發在上海的面經之旅

2021-11-06 08:56:16 移動端開發

作者:海寶

面試經歷

面了一些上海互聯網公司,例如愛奇藝,阿里巴巴,京東,某安,百度,喜馬拉雅,得物等等,記錄了部分面試真題,大部分可以自行搜到答案,有疑問的可以留言交流~

【愛奇藝】一面

  1. 自定義view
  2. Handler機制
  3. 組件化和插件化
  4. HashMap的原始碼
  5. retrofit和okhttp的原始碼用到了哪些設計模式
  6. NDK靜態庫和動態庫編譯流程
  7. openGL渲染模式
  8. Android中的影片有哪些它們之間的區別
  9. 談談mvvm

【愛奇藝】二面
講之前做的專案負責哪塊,根據業務采用什么架構、使用過哪些設計模式,專案中遇到哪些棘手的問題,如何解決的,

【愛妻藝】三面
這個是hr說,整體問下以前公司的情況等問題

阿里音視頻開發崗

【阿里一面】
1.MediaCodec連環炮:MediaCodec報錯,只有錯誤碼,沒有任何其它資訊,如何解決?使用MediaCodec遇到了哪些問題?同步使用和異步使用有什么區別?
2.如何計算音頻幀,一幀音頻幀有多大
3.YUV基礎知識,相比于RGB減少了多少空間,YUV 各個分量都是0實際渲染出來是什么顏色的,NV21和NV12有什么區別
4.MP4是如何存盤音視頻檔案的,它是什么結構
5.OpenSL 相關的問題,如何使用,可以干什么不可以干什么
6.結合專案問題

【阿里二面】
1.SurfaceView和TextureView區別
2.OpenGL ES相關問題,MVP矩陣左乘和右乘有什么區別,什么是外部紋理,為什么叫外部
3.OpenGL如何渲染一個View
4.VBO是用來干嘛的解決什么問題
5.結合專案問問題

【阿里三面】
1.專案是什么架構,如何設計的,為什么這么設計
2.演算法題:字串反轉
3.平時如何學習的

【京東一面】

1.簡述LinkedHashMap原始碼實作
2.說下Handler流程
3.handler用于執行緒間通信,怎么保證執行緒安全
4.界面有個Button,手指放上去慢慢移到Button外的區域,描述事件分發的流程
5.說下View的繪制流程,包括渲染和繪制
6.演算法 兩個單鏈表合并成有序鏈表,說下思路
7.組件化的實作,WMRouter呼叫其他模塊的對應方法怎么實作的

【京東二面】
完全忘了

【京東三面】
1.問專案細節,你主要負責的模塊,怎么設計
2.演算法 N宮格,從左上角A出發只能向右或者向下走,求所有不同路徑的條數總和,手寫偽代碼(用遞回就可以)

【京東四面】
1.平時的上下班時間點
2.有沒有使用過咱們的app,有什么建議
3.前面的3次技術面有什么感受
4.職業規劃

【京東HR面】
1.平時的上下班時間點 balabala

【某安一面】
1.多執行緒同步有哪些方式
2.sycnized和lock區別,分別用于什么場景
3.執行緒池原理
4.執行緒池拒絕策略怎么自定義
5.怎么實作執行緒加入執行緒池的優先級
6.volatile底層原理?是否執行緒安全
7.死鎖怎么發生?怎么防止死鎖
8.介紹下apm,怎么捕獲crash和native crash?騰訊matrix怎么統計app啟動時間,頁面加載時間
9.gc回收演算法有哪些?分別用于什么場景
10.jvm有哪些區域?堆疊的作用
11.演算法 三數之和

【某安二面】
1.問專案 httpdns相關:為什么要httpdns?怎么處理握手問題,ip直連能否避免dns挾持?
2.問專案 首頁彈窗優先級
3.做過哪些記憶體優化
4.怎么全域捕獲app所有例外,并且保證app不崩潰,不卡死
5.如何獲取app的所有執行緒資訊
6.怎么查找anr
7.安卓有哪些行程間通信?為什么使用binder?mmap發生在哪個階段?怎么找到目標行程
8.leakcanary怎么檢測記憶體泄露的
9.演算法 兩個堆疊實作一個佇列

【某安三面】
1.gradle生命周期,怎么自定義插件
2.統計編譯耗時插件,運行在哪個階段?
3.描述從編譯到apk的程序,以及gradle有哪些task參與其中
4.如何實作位元組碼插樁
5.子執行緒更新ui會報什么例外?從哪里拋出來的
6.子執行緒怎么更新textview不會crash
7.activity window view顯示出來,全流程原始碼決議,精確到類和核心方法
8.資料庫用的什么庫,熟悉sql陳述句嗎
9.mmkv為什么比sp高效,存盤的資料結構是什么樣
10.mmap為什么比io高效,說下實作原理
11.sp存在哪些問題?
12.hashmap put流程原始碼決議,鏈表和樹轉換時機?擾動函式的作用?為什么hashcode & n-1?擴容時機?
13.gcroots有哪些
14.activity有個內部類handler,描述下參考關系鏈路,并說明為何gcroots能訪問到activity
15.加載xml和動態創建view哪個高效?為什么加載xml效率低
16.如何減少布局嵌套?jetpack compose的原理
17.recycleview快取實作?開發中怎么優化
18.演算法 給定一個字串,輸出所有不同字符組合

【百度一面】

  1. java參考,以及參考佇列,以及使用場景
  2. 拆裝箱
  3. LeakCanary
  4. map
  5. 線上性能監控
  6. SharedPrefrence 遇到的問題
  7. 手寫演算法

【百度二面】

  1. Handler
  2. 行程間通信
  3. 序列化
  4. 影片
  5. native崩潰捕獲原理
  6. 結合專案提問
  7. Recyclerview的點擊事件原理
  8. 啟動一個空的apk,回啟動幾個執行緒
  9. 手寫演算法

【百度三面】

  1. 跳槽原因
  2. 原來公司規模
  3. 預期薪資
  4. 個人優勢

【喜馬拉雅一面】

1.有了解過直播嗎?有哪些常見協議
2.說下自定義View的一般流程
3.多個執行緒異步執行任務,主執行緒需要等待它們都完成再繼續,有哪些實作方式
4.說下handler的流程,異步訊息是什么?Android中哪些場景會發送異步訊息?我們在代碼中可以手動發異步訊息嗎
5.彈幕怎么實作?比如直播中的流星雨特效,跑車這種怎么實作出來
6.說下你開發中做過的一個影片
7.了解過SurfaceView的原理嗎
8.有沒有接觸過Socket編程,簡單說下代碼實作
9.加載一張超大圖怎么實作
10.補間影片和屬性影片各自的原理
11.記憶體優化有哪些手段
12.開放性題目 開發中怎么提升整個app的穩定性

【喜馬拉雅二面】
1.動態代理是怎么實作的
2.你熟悉哪些設計模式
3.畫一下動態代理的類圖
4.說下插件化原理
5.說下熱修復的基本原理?比如QQ空間的方案和Tinker
6.演算法 判斷兩個單鏈表是否相交及找到第一個交點

【喜馬拉雅HR面】
1.對公司感覺怎么樣,之前有了解過嗎
2.是否愿意承擔一些管理角色

【得物一面】
1.狂問Kotlin相關,比如委托的實作原理,協程原理,kotlin的好處,kotlin編譯流程,常用的kotlin技巧
2.app的打包流程
3.View的渲染繪制流程

【得物二面】
1.inflate加載view程序
2.簡述okhttp原始碼,請求怎么管理,它的執行緒池怎么實作
3.apt原理
4.viewmodel為什么可以恢復資料
5.livedata可以保存多個資料嗎
6.aac架構有什么優勢
7.mmkv了解嗎
8.演算法 單鏈表找到倒數第K個元素
9.演算法 單鏈表找到中間的元素(2個題都用快慢指標就可以了)
10.組件化怎么做的?WMRouter編譯期間做了什么

【得物HR面】
1.沒問什么特別的

經驗tips

1. 必考題一定要掌握!
【必問】Handler的作業流程,原始碼要記牢,細節要理解透,比如怎么喚醒主執行緒的,while為啥不會阻塞主執行緒
【必問】View的繪制流程,包括渲染和View本身的繪制3部曲
【必問】MVVM的含義,ViewModel+LivaData+LifeCycle的原始碼實作
【必問】自定義View的一般實作流程
【必問】記憶體泄漏怎么排查,OOM怎么排查
【必問】你做過哪些性能優化
【必問】Retrofit的實作,動態代理
【必問】組件化相關,WmRouter的原理
【高頻】ANR怎么排查,有哪些原因
【高頻】APP打包流程
【高頻】kotlin常見知識點的原理,如協程,委托,擴展函式,編譯流程
【高頻】Android有哪些跨行程通信,AIDL的代碼實作
【高頻】怎么加載一張超大圖
【高頻】OkHttp的執行緒池實作,Java執行緒池原理,拒絕策略怎么自定義

2.面試前準備

1.準備一份自己的自我介紹,面試的時候根據面試物件適當進行修改(突出重點,突出自己的優勢在哪里,切忌流水賬);
2.注意隨身帶上自己的成績單和簡歷復印件; (有的公司在面試前都會讓你交一份成績單和簡歷當做面試中的參考,)
3.如果需要筆試就提前刷一些筆試題,大部分在線筆試的型別是選擇題+編程題,有的還會有簡答題,(平時空閑時間多的可以刷一下筆試題目(牛客網上有很多),但是不要只刷面試題,不動手code,程式員不是為了考試而存在的,)另外,注意抓重點,因為題目太多了,但是有很多題目幾乎次次遇到,像這樣的題目一定要搞定,
4.提前準備技術面試, 搞清楚自己面試中可能涉及哪些知識點、那些知識點是重點,面試中哪些問題會被經常問到、自己改如何回答,(強烈不推薦背題)
第一: 通過背這種方式你能記住多少?能記住多久?
第二: 背題的方式的學習很難堅持下去!
5.面試之前做好定向復習, 也就是專門針對你要面試的公司來復習,比如你在面試之前可以在網上找找有沒有你要面試的公司的面經,
6.準備好自己的專案介紹, 如果有專案的話,技術面試第一步,面試官一般都是讓你自己介紹一下你的專案,你可以從下面幾個方向來考慮:

①對專案整體設計的一個感受(面試官可能會讓你畫系統的架構圖;
②在這個專案中你負責了什么、做了什么、擔任了什么角色;
③從這個專案中你學會了那些東西,使用到了那些技術,學會了那些新技術的使用;
④專案描述中,最好可以體現自己的綜合素質,比如你是如何協調專案組成員協同開發的或者在遇到某一個棘手的問題的時候你是如何解決的又或者說你在這個專案用了什么技術實作了什么功能比如:Android Bitmap壓縮策略;關于HandlerThread的使用場景以及怎樣使用 HandlerThread?

提前知道有哪些技術問題常問: HashMap原始碼分析、熱修復,handler等等問題我覺得面試中實在太常見了,好好準備!后面的文章會我會分類詳細介紹到那些問題最常問,

提前熟悉一些常問的非技術問題: 面試的時候有一些常見的非技術問題比如“面試官問你的優點是什么,應該如何回答?”、“面試官問你的缺點是什么,應該如何回答?”、“如果面試官問"你有什么問題問我嗎?"時,你該如何回答”等等,對于這些問題,如何回答自己心里要有個數,別面試的時候出了亂子,

最后

關于面試經驗的分享就到這里,還是那句話,有些東西你不僅要懂,而且要能夠很好地表達出來,能夠讓面試官認可你的理解,例如Handler機制,這個是面試必問之題,有些晦澀的點,或許它只活在面試當中,實際作業當中你壓根不會用到它,但是你要知道它是什么東西,

小編之前在網上收集整理了一些 Android 開發相關的學習檔案、面試題、Android 核心筆記等等檔案,希望能幫助到大家學習提升,在面試中能順利通過,如有需要參考的可以直接點擊下方小卡片進行訪問查閱



轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349665.html

標籤:其他

上一篇:SQLite資料庫及在Android開發中的基本使用

下一篇:原始碼詳解Android 9.0 系統啟動流程之init行程(第一階段)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more