大廠offer是每個技術人的追求?
我覺得每一個程式員的夢想大概就是能夠找一份大廠的 Offer,我覺得這很正常,這并不是我們的飯后談資而是每個技術人的追求,像阿里、騰訊、美團、位元組跳動、京東等等的技術氛圍與技術規范度還是要明顯優于一些創業型公司/小公司,如果說能夠在這樣的公司鍛煉幾年,相信對自己能力的提升還是非常大的,但不是每個人都能夠進入大廠的,這往往取決于我們的能力、學歷、面試表現等因素,
現在面試大公司你說你沒有 Android Jetpack、協程、 Jetpack Compose 、Flutter 等理論等等已然大廠面試所必須的知識,但是,你真進入大廠了,可能幾年都用不上這些知識,還是老老實實去寫CRUD
面試部門 + 崗位:商業化 - 高級 Android 開發工程師
面試感想:整體面得比較累,基礎面、交叉面、Boss面,前前后后對接了 6 個面試官 (離當初給我說的 3面+HR面 貌似差得有點遠¬_¬) ,演算法到 Boss 面都還在寫,不過慶幸的是面試官沒有為難我 (老實交代了演算法沒怎么準備,哎…),演算法都不太難,整體專案比基礎問得多,
面試建議:演算法、基礎是敲門磚,專案是試金石,良好的面試形象是加分項,
簡歷上列舉的專案多想想,為什么做這個專案?做這個專案的目標是什么?我的方案是什么?相對其他方案我的方案優勢是什么?專案的收益是什么?專案的架構圖是否能畫出來?專案中使用的主要框架原理是否前前后后都清楚?(我大概就是專案拯救了自己,基礎準備有點倉促T^T),
如果是現場或視頻面試,良好的面試形象還是比較有必要的,在部門 TL 面的時候,就提到我相對很多其他面試者比較好的一點就是,整個人的形象狀態比較好,沒有讓人覺得很疲憊,
【1面 - 基礎面】
- 你們 Android 開發的時候,對于 UI 稿的 px 是如何適配的?
- dpi:螢屏像素密度,指的是在系統軟體上指定的單位尺寸的像素數量,它往往是寫在系統出廠組態檔的一個固定值;
- ppi:也是螢屏像素密度,但這個是物理上的概念,它是客觀存在的不會改變,dpi是軟體參考了物理像素密度后,人為指定的一個值,這樣保證了某一個區間內的物理像素密度在軟體上都使用同一個值;
- dp加上自適應布局和weight比例布局能解決90%的適配問題,因為并不是所有的1080P的手機dpi都是480,比如Google 的Pixel2(1920*1080)的dpi是420;
- 寬高限定符適配:窮舉市面上所有的Android手機的寬高像素值,設定一個基準的解析度,其他解析度都根據這個基準解析度來計算,在不同的尺寸檔案夾內部,根據該尺寸撰寫對應的dimens檔案,但其有一個致命的缺陷,那就是需要精準命中才能適配,App包體積也會變大
-
兩個值相等的 Integer 物件,== 比較,判斷是否相等?
-
Activity A 跳轉Activity B,Activity B再按back鍵回退,兩個程序各自的生命周期
- ActivityA跳轉ActivityB的程序中,各自生命周期的執行順序,例如:A.onCreate A.onStart A.onPause A.onStop B.onCreate B.onStart B.onPause B.onStop B.onDestroy?
ActivityA和ActivityB生命周期執行順序如下: A.onPause -> B.onCreate -> B.onStart-> B.onResume-> A.onStop- ActivityB 按back鍵呢?
按下back鍵后: B.onPause->A.onRestart->A.onStart->A.onResume->B.onStop->B.onDestory- ActivityB是個視窗Activity的情況下,1、2的結論呢?
若ActivityB是個視窗,ActivityA跳轉到ActivityB時,ActivityA失去焦點部分可見,故不會呼叫onStop,此時生命周期順序: A.onPause -> B.onCreate -> B.onStart-> B.onResume
按下Back鍵后:B.onPause->A.onResume->B.onStop->B.onDestory- 切換橫豎屏時,onCreate會呼叫嗎?幾次?
程式在運行時,一些設備的配置可能會改變,如:橫豎屏的切換、鍵盤的可用性或語言的切換等,此時Activity會重新啟動,其中的程序是:在銷毀之前會先呼叫onSaveInstancestate()去保存應用中的一些資料,然后呼叫 onDestory(),最后才會去呼叫onCreate()或者onRestoreInstanceState方法重新啟動Activiy,在切換螢屏時候會重新呼叫各個生命周期,切橫屏時會執行一次onCreate,切豎屏時會執行兩次onCreate,
- 子執行緒是否可以 context.startActivity() (如ApplicationContext), 會不會有什么問題?
寫 demo 試了下是可以的,但會有什么問題還沒弄清楚…
- Handler機制整體流程;Looper.loop()為什么不會阻塞主執行緒;IdHandler(閑時機制);postDelay()的具體實作;post()與sendMessage()區別;使用Handler需要注意什么問題,怎么解決的?
問題很細,能準備多詳細就準備多詳細,人家自己封裝了一套 Handler 來避免記憶體泄漏問題
- Native、H5、RN頁面混合跳轉時,頁面清堆疊的橋如何實作的?
自己做的一個專案,原理講清楚就行,講不清就畫圖
-
怎么計算一個View在螢屏可見部分的百分比?
-
ClassLoader 的雙親委派機制
-
簡單介紹下 Https 的原理
-
什么情況會導致記憶體泄漏,如何修復?
-
下載一張很大的圖,如何保證不 oom?
-
有沒有做過UI方面的優化,做過哪些?
- 除錯GPU過度繪制,將Overdraw降低到合理范圍內;
- 減少嵌套層次及控制元件個數,保持view的樹形結構盡量扁平(使用Hierarchy Viewer可以方便的查看),同時移除所有不需要渲染的view;
- 使用GPU配置渲染工具,定位出問題發生在具體哪個步驟,使用TraceView精準定位代碼;
- 使用標簽,merge減少嵌套層次、viewStub延遲初始化、include布局重用 (與merge配合使用)
-
WebView 與 JS 互動方式,shouldOverrideUrlLoading、onJsPrompt使用有啥區別
-
Flutter、Kotlin接觸使用過沒有
-
其他專案相關問題
-
演算法 - 二叉樹輸出第 k 層節點元素
【2面 - 專案專項】
-
Native、H5、RN頁面混合跳轉時,頁面清堆疊的橋實作
-
頁面混編框架的設計與難點
-
RN 通用容器的設計
-
用戶行為監控方案設計
-
JS 錯誤治理方案
-
RN 頁面對用戶行為的監控與JS錯誤治理,在問題發現有什么識訓、優化點
-
美團 RN 相對于原生 RN 的有什么優勢
【3面 - 基礎加深】
-
你們公司 Picasso 有使用過沒,介紹下
-
Picasso 單引擎,在多 Bundle 的情況下怎么保證資料隔離的?
-
美團 RN 與 Picasso 的區別
4.省略若干專案相關問題…
-
RN 的頁面追蹤埋點如何實作的
-
美團首頁是否是 RN 頁面,MTFlexBox 原理
-
synchronized 修飾 static 方法、普通方法、類、方法塊區別
-
synchronized 底層實作原理
-
volatile 的作用和原理
-
一個 int 變數用 volatile 修飾,多執行緒去操作 i++,是否執行緒安全?如何保證 i++ 執行緒安全?AtomicInteger 的底層實作原理?
使用 AtomicInteger 可以使 i++ 執行緒安全
-
說下對執行緒池的理解,以及創建執行緒池的幾個關鍵引數
-
Handler 機制又問了一遍…
-
介紹下 Binder 機制,與記憶體共享機制有什么區別?
-
Java 集合,介紹下ArrayList 和 HashMap 的使用場景,底層實作原理
-
ArrayList 與 LinkedList 的區別
-
演算法 - 兩個有序的鏈表的合并
-
演算法 - 輸入一個字串(不含*和.)、正則(字母、*和.任意組合),判斷字串是否合法
-
簡單介紹下,專案中遇到的一些技術難點
【4面 - 交叉面】
- 下面的代碼, str 值最終為多少?換成 Integer 值又為多少,是否會被改變?
- 考點:Java 值傳遞 (第 2 題相同),撰寫代碼測驗,在 changeValue() 方法中修改入參,并不會改變之前的值;
- 原理:方法得到的是所有引數值的一個拷貝,即方法不能修改傳遞給它的任何引數變數的內容,基本型別引數傳遞的是引數副本,物件型別引數傳遞的是物件地址的副本;
- 題解:在 changeValue() 中,對于物件型別引數,直接修改的是物件地址副本的值,所以之前變數的地址并未被修改!若修改的是物件實體里面的某個值,之前變數則會被修改
public void test() {
String str = "123";
changeValue(str);
System.out.println("str值為: " + str); // str未被改變,str = "123"
}
public changeValue(String str) {
str = "abc";
}
- 下面的代碼,再次使用物件 student 是否需要判空?
Java 中方法引數的使用情況總結:
- 一個方法不能修改一個基本資料型別的引數(即數值型或布爾型);
- 一個方法可以改變一個物件引數的狀態;
- 一個方法不能讓物件引數參考一個新的物件
public void test() {
Student student = new Student("Bobo", 15);
changeValue1(student); // student值未改變,不為null! 輸出結果 student值為 name:Bobo、age:15
// changeValue2(student); // student值被改變,輸出結果 student值為 name:Lily、age:20
System.out.println("student值為 name: " + student.name + "、age:" + student.age);
}
public changeValue1(Student student) {
student = null;
}
public static void changeValue2(Student student) {
student.name = "Lily";
student.age = 20;
}
-
Java 的幾種參考型別,弱參考的使用場景?
-
執行緒池分類,解釋下幾個核心引數?
-
APK 的打包程序是什么?
- aapt 工具打包資源檔案,生成 R.java 檔案
- aidl 工具處理 AIDL 檔案,生成對應的 .java 檔案
- javac 工具編譯 Java 檔案,生成對應的 .class 檔案
- 把 .class 檔案轉化成 Davik VM 支持的 .dex 檔案
- apkbuilder 工具打包生成未簽名的 .apk 檔案
- jarsigner 對未簽名 .apk 檔案進行簽名
- zipalign 工具對簽名后的 .apk 檔案進行對齊處理
- APK 為什么要簽名?是否了解過具體的簽名機制?
Android 為了確認 apk 開發者身份和防止內容的篡改,設計了一套 apk 簽名的方案保證 apk 的安全性,即在打包時由開發者進行 apk 的簽名,在安裝 apk 時Android 系統會有相應的開發者身份和內容正確性的驗證,只有驗證通過才可以安裝 apk,簽名程序和驗證的設計就是基于非對稱加密的思想,
Android 在 7.0 以前使用的一套簽名方案:在 apk 根目錄下的 META-INF/ 檔案夾下生成簽名檔案,然后在安裝時在系統的 PackageManagerService 里進行簽名檔案的驗證,
從 7.0 開始,Android 提供了新的 V2 簽名方案:利用 apk(zip) 壓縮檔案的格式,在幾個原始內容區之外增加了一塊用于存放簽名資訊的資料區,然后同樣在安裝時在系統的 PackageManagerService 里進行 V2 版本的簽名驗證,V2 方案會更安全、使校驗更快安裝更快,
當然 V2 簽名方案會向后兼容,如果沒有使用 V2 簽名就會默認走 V1 簽名方案的驗證程序,
- 為什么要分 dex ?SDK 21 不分 dex,直接全部加載會不會有什么問題?
求路過大神們的正解…
-
常見的設計模式有哪些?你提供的 JS 錯誤治理方案,用了哪些設計模式?
-
演算法 - 二叉樹層序遍歷,奇數層逆序遍歷節點,偶數層正序遍歷
-
未來 3~5 年的規劃是什么?
-
你覺得你的優點是什么?缺點是什么?
-
現在的職級,近期的績效如何
【5面 - 部門 TL】
-
商業化部門相關的業務介紹 (核心大概是商業化部門壁壘高,培養一個人成本高,比做其他業務更有含金量,可以積累很多業務策略知識),然后讓問他問題
-
未來幾年的規劃?生活上有什么規劃?
-
你覺得你的優點是什么?缺點是什么?
-
現在的職級,近期的績效如何
-
為什么給你這么好的績效?
-
有沒有看其他機會?阿里面試的情況
【6面 - 大 Boss】
-
演算法 - 陣列插入,考慮擴容
-
在專案的遇到的比較有挑戰的事是什么?
-
你在美團負責的業務有哪些?
-
未來幾年的規劃是什么?
-
你覺得你的優點是什么?缺點是什么?
-
現在的職級,近期的績效如何
【HR 面】
-
本科和研究生專業都是偏硬體的,是否有相關的軟體經歷?
-
研究生是保研的還是自己考的?
-
去美團之前有沒有 Android 開發經歷?
-
當時為什么要選擇去美團?為什么要選擇來北京?
-
為什么要換作業?期望以后的作業是怎樣的?
金句:現在自己的技術成長有點碰到瓶頸,加上一直對您公司欽慕有加
-
現在的職級,近期的績效如何?
-
這么好的績效,為什么不選擇美團內換部門看看機會?
-
幾次晉升中,業績亮點是什么?
-
家是哪里的,有回家那邊發展的打算沒有?
-
有打算再去看看快手之類的作業機會沒有?
-
問一些阿里現在的面試進展和情況
-
期望的薪資
結尾
- 騰訊T4級別Android架構技術腦圖;查漏補缺,體系化深入學習提升

- 一線互聯網Android面試題含詳解(初級到高級專題)
這些題目是今年群友去騰訊、百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線互聯網公司面試被問到的題目,并且大多數都整理了答案,熟悉這些知識點會大大增加通過前兩輪技術面試的幾率

Android架構師學習門檻,有沒有免費學習資料?
有Android開發3-5年基礎,希望突破瓶頸,成為架構師的小伙伴,可以關注我,在我的個人介紹欄目免費獲取
或者點擊:【點擊我的GitHub免費領取】
《Android學習PDF+架構視頻+面試檔案+原始碼筆記》來獲取學習資料提升自己去挑戰一下BAT面試難關吧
為什么免費分享?
GitHub免費領取】](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md )**
《Android學習PDF+架構視頻+面試檔案+原始碼筆記》來獲取學習資料提升自己去挑戰一下BAT面試難關吧
為什么免費分享?
如果設定門檻,很多開發者朋友會因此錯過這套高級架構資料,錯過提升成為架構師的可能,這就失去了我們的初衷;讓更多人都能通過高效高質量的學習,提升自己的技術和格局,升職加薪,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/233892.html
標籤:其他
下一篇:QuickHand_PlayerActivity_Player_design_.m3u8視頻播放格式(如快手短視頻
