面試時間:2019.12.29 1~3面、2020.1.03 4~6面、2020.1.06 HR面java
面試部門 + 崗位:商業化 - 高級 Android 開發工程師git
面試感想:總體面得比較累,基礎面、交叉面、Boss面,前先後後對接了 6 個面試官 (離當初給我說的 3面+HR面 貌似差得有點遠¬_¬) 。算法到 Boss 面都還在寫,不過慶幸的是面試官沒有爲難我 (老實交代了算法沒怎麼準備,哎…),算法都不太難。總體項目比基礎問得多。github
面試建議:算法、基礎是敲門磚,項目是試金石,良好的面試形象是加分項。web
簡歷上列舉的項目多想一想,爲何作這個項目?作這個項目的目標是什麼?個人方案是什麼?相對其餘方案個人方案優點是什麼?項目的收益是什麼?項目的架構圖是否能畫出來?項目中使用的主要框架原理是否前先後後都清楚?(我大概就是項目拯救了本身,基礎準備有點倉促T^T)。面試
若是是現場或視頻面試,良好的面試形象仍是比較有必要的。在部門 TL 面的時候,就提到我相對不少其餘面試者比較好的一點就是,整我的的形象狀態比較好,沒有讓人以爲很疲憊。算法
Android 目前穩定高效的UI適配方案、今日頭條屏幕適配方案 AndroidAutoSize、今日頭條-經過反射修正系統的 density 值設計模式
- 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鍵回退,兩個過程各自的生命週期安全
子線程是否能夠 context.startActivity() (如ApplicationContext), 會不會有什麼問題?多線程
寫 demo 試了下是能夠的。但會有什麼問題還沒弄清楚…
問題很細,能準備多詳細就準備多詳細。人家本身封裝了一套 Handler 來避免內存泄漏問題
本身作的一個項目,原理講清楚就行,講不清就畫圖
怎麼計算一個View在屏幕可見部分的百分比?
ClassLoader 的雙親委派機制 -
簡單介紹下 Https 的原理
什麼狀況會致使內存泄漏,如何修復?
下載一張很大的圖,如何保證不 oom? -
有沒有作過UI方面的優化,作過哪些?
- 調試GPU過分繪製,將Overdraw下降到合理範圍內;
- 減小嵌套層次及控件個數,保持view的樹形結構儘可能扁平(使用Hierarchy Viewer能夠方便的查看),同時移除全部不須要渲染的view;
- 使用GPU配置渲染工具,定位出問題發生在具體哪一個步驟,使用TraceView精準定位代碼;
- 使用標籤,merge減小嵌套層次、viewStub延遲初始化、include佈局重用 (與merge配合使用)
WebView 與 JS 交互方式,shouldOverrideUrlLoading、onJsPrompt使用有啥區別 -
Flutter、Kotlin接觸使用過沒有
其餘項目相關問題
算法 - 二叉樹輸出第 k 層節點元素
Native、H五、RN頁面混合跳轉時,頁面清棧的橋實現
頁面混編框架的設計與難點
RN 通用容器的設計
用戶行爲監控方案設計
JS 錯誤治理方案
RN 頁面對用戶行爲的監控與JS錯誤治理,在問題發現有什麼收穫、優化點
美團 RN 相對於原生 RN 的有什麼優點
大家公司 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 的區別
算法 - 兩個有序的鏈表的合併
算法 - 輸入一個字符串(不含*和.)、正則(字母、*和.任意組合),判斷字符串是否合法
簡單介紹下,項目中遇到的一些技術難點
- 考點:Java 值傳遞 (第 2 題相同)。編寫代碼測試,在 changeValue() 方法中修改入參,並不會改變以前的值;
- 原理 :Java 程序設計語言老是採用按值調用,方法獲得的是全部參數值的一個拷貝,即方法不能修改傳遞給它的任何參數變量的內容。基本類型參數傳遞的是參數副本,對象類型參數傳遞的是對象地址的副本;
- 題解:在 changeValue() 中,對於對象類型參數,直接修改的是對象地址副本的值,因此以前變量的地址並未被修改!若修改的是對象實例裏面的某個值,以前變量則會被修改
public void test() { String str = "123"; changeValue(str); System.out.println("str值爲: " + str); // str未被改變,str = "123" } public changeValue(String str) { str = "abc"; }
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 爲何要簽名?是否瞭解過具體的簽名機制?
爲何要分 dex ?SDK 21 不分 dex,直接所有加載會不會有什麼問題?
求路過大神們的正解…
常見的設計模式有哪些?你提供的 JS 錯誤治理方案,用了哪些設計模式?
算法 - 二叉樹層序遍歷,奇數層逆序遍歷節點,偶數層正序遍歷
將來 3~5 年的規劃是什麼?
你以爲你的優勢是什麼?缺點是什麼?
如今的職級,近期的績效如何
商業化部門相關的業務介紹 (核心大概是商業化部門壁壘高,培養一我的成本高,比作其餘業務更有含金量,能夠積累不少業務策略知識),而後讓問他問題
將來幾年的規劃?生活上有什麼規劃?
你以爲你的優勢是什麼?缺點是什麼?
如今的職級,近期的績效如何
爲何給你這麼好的績效?
有沒有看其餘機會?阿里面試的狀況
算法 - 數組插入,考慮擴容
在項目的遇到的比較有挑戰的事是什麼?
你在美團負責的業務有哪些?
將來幾年的規劃是什麼?
你以爲你的優勢是什麼?缺點是什麼?
如今的職級,近期的績效如何
本科和研究生專業都是偏硬件的,是否有相關的軟件經歷?
研究生是保研的仍是本身考的?
去美團以前有沒有 Android 開發經歷?
當時爲何要選擇去美團?爲何要選擇來北京?
爲何要換工做?指望之後的工做是怎樣的?
金句:如今本身的技術成長有點碰到瓶頸,加上一直對您公司欽慕有加
如今的職級,近期的績效如何?
這麼好的績效,爲何不選擇美團內換部門看看機會?
幾回晉升中,業績亮點是什麼?
家是哪裏的,有回家那邊發展的打算沒有?
有打算再去看看快手之類的工做機會沒有?
問一些阿里如今的面試進展和狀況
指望的薪資
面試是一個不斷學習、不斷自我提高的過程,有機會仍是出去面面,至少能想到查漏補缺效果,並且有些知識點,可能你自覺得知道,但讓你說,並不必定能說得很好。
有些東西有壓力纔有動力,而學到的知識點,都是錢(由於技術人員大部分狀況是根據你的能力來定級、來發薪水的),技多不壓身。
附上個人面試各大專題整理: 面試指南,滿滿的都是乾貨,但願對你們有幫助!
你們若是有啥好建議,面試的好處,也能夠評論回覆哈,我補充,謝謝〜〜〜