Android面試回憶錄

最近打算換工作了,面試了百度作業幫、今日頭條、阿里、網易和小米的工作。然後把面試的題目寫下來,給找工作的同學一些指導。

首先,我面試的是Android高級崗,不過一些基礎的知識應該是所有層次的同學都應掌握的。其次,問到的項目相關的問題不在這裏和大家分享,因爲這不是通用的。但是不代表你的項目就在面試中不重要,相反,你做過的項目和你的經歷都在很大程度上決定了你的通過率。下面我就把我能想到的題目分享給大家。

百度作業幫

一面

1.startactivityforresult的時候,比如A startB activity,A activity被回收,B回來的時候的A和B的生命週期各自是什麼?

2.如何實現一個環形佈局的ViewGroup,類似一個菊花的形狀。又問了在onMeasure中傳遞的參數是什麼?這道題主要就是想了解對View的measure、layout和draw流程是否熟悉。

3.android的事件傳遞機制

4.內存泄露問題,常見的導致內存泄露的原因

5.頁面很卡頓,分析一下原因是什麼,然後從哪些方面入手解決

6.java的線程同步問題。new了很多A對象,一個線程池的線程不斷去操作A對象被synchronized修飾的方法,會同步操作嗎?如果該方法是static的,又會怎麼樣?

7.遇見過的項目難點的地方

8.強化android優化方面

二面

1.工作相關,強化工作相關項目

2.android性能調優

 

今日頭條

今日頭條問的都是網上能找到的。好幾個問題都是網上面經的原題,所以刷面經很重要。

一面:

一面主要是問了Android基礎、Java基礎和數據結構算法

1、軟引用和弱引用的區別

2、1億個數中找出最大的100個數。回答了可以建一個小頂堆,然後問如何建小頂堆以及如何維護小頂堆

3、Bitmap加載過程中OOM了怎麼辦?回答了可以壓縮圖片,然後問具體怎麼壓縮?如果有一張很大size的圖片需要加載到手機裏怎麼辦?回答可以局部加載。

4、有了解什麼是IntentService麼?

5、Activity的幾種啓動模式有了解麼?各自的含義是什麼?

6、TCP和UDP的區別,以及簡單說了一下TCP三次握手協議

7、手寫單例模式

8、除了Lru緩存算法,你還知道哪些緩存算法?

二面

二面面試官是百度t6,主要問了項目相關的問題,也問了一些Android基礎和算法數據結構

1、1億個url存在文件中,裏面有重複的url,請問怎麼去重?題外:這道題給人的感覺就是這個面試官只會抄網上的題目來“考”面試者,而不是真的用心去了解面試者的Android能力水平,網上這樣的“海量數據”處理問題已經被問爛了,而且平時android開發中間幾乎很少用到,面試者能答上來無非兩者:1、刷過面經;2、真的會“海量數據”處理的大牛,但是Android中是後者的幾乎沒有,所以這道題沒有任何意義,完全就是面試官照抄面試題的應付而已。

2、2*8的最快運算是什麼?考察點是位運算,但平時工作中幾乎很少“2<<3”這樣寫,原因是沒有必要,因爲編譯器早就做過這方面的優化。

3、討論了一下熱修複相關的問題

3、一個listview很卡頓,讓分析一下其中可能的原因和你碰見這個問題如何動手解決。算是相對比較發散思維的問題,應該能從一定角度反應求職者水平。

高德:

一面

1、cpu的喚醒,cpu休眠會停止線程xxx

2、線程同步synchronized,volatile關鍵字的用法

3、怎麼停止一個線程,waitxxx有用嗎?

4、靜態內部類引用外部類怎麼解決引用問題

5、for循環…的線程同步問題

6、c裏面static關鍵字的用法

7、include頭文件兩種方式的區別

8、弱引用和軟應用的區別

9、Dalvik和ART虛擬機的區別

10、Java虛擬機什麼時候進行GC,Android虛擬機呢?

11、弱引用和軟引用的區別?各自的使用場景是什麼

二面

1、n個元素的集合一共多少個子集

2、view的事件傳遞機制

3、我們的應用的架構

4、靜態內部類訪問外部類的做法

5、RxJava和EventBus的區別?好奇怪

6、okhttp訪問線程池的問題

 

小米

小米hr要求每輪面試都必須有一到兩個算法題,所以算法和數據結構也是不能放。

一面

一面主要就圍繞着我的項目裏的展開的討論,也問了很多Android基礎問題。

1、handler的機制

2、RxJava的好處

3、EventBus的內部實現原理是什麼?

4、什麼是內存泄露,如何分析?MAT和LeakCanary。MAT和LeakCanary的各自優缺點是什麼?

5、有哪些常見的內存泄露的原因

6、算法:1)求最大連續子序列之和。2)遍歷輸出一個文件夾中的所有文件(遞歸)

7、手寫單例模式,單例的使用場景有哪些?

二面

1、算法:非遞減序列求個數,例如 1、1、2、2、3、3、3、3、4、7、8、9、9、9,input:3,output:4

網易

筆試:

1、一個類中聲明private static Bitmap會引起什麼問題,主要考察的是內存泄露

2、Activity的生命週期,主要考慮異常情況

3、ScrollView和Listview的區別?好奇怪的問題

4、兩個有序數組a[n]和b[m],合併成一個有序數組並放入a中,a數組開的存儲空間保證能放下a和b中所有元素,如何實現效率最高?

面試:

1、listview的卡頓分析和優化

2、listview加載圖片會有什麼問題,如果引起圖片錯位是什麼原因導致的?怎麼解決?

3、自己設計一個Picasso應該考慮哪些方面。圖片緩存(DiskLruCache,LruCache)、壓縮、listview導致的錯位、線程池的數量等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章