Android2018知名互聯網企業面試題

廢話不多說,直接上乾貨

01.百度
02.高德
03.小米
04.知乎
05.玩吧
06.陌陌
07.愛奇藝
08.美菜網
09.完美世界
10.最後總結


百度

一面:

1:算法匹配IP地址
2:用過哪些集合,區別是什麼
3:類鎖和對象鎖的區別
4:volitile的作用,synchronized保證原子性
5: 序列化資源的大小
6:內存優化做過哪些,怎麼優化的
7:事件分發(父控件攔截讓子控件處理)
8:繪製流程
9:RelativeLayout和LinearLayout性能比較
10:一個activity啓動另一個activity的生命週期,特殊情況呢?
11:比較難忘的開發經歷
12:listview和RecyclerView的比較
13:RecyclerView的局部刷新,多種類型是怎麼緩衝的
14:兩種序列化方式區別
15:hashmap和hashtable的比較
16:多態的內存模型怎麼調用的,相關棧信息
17:A,B兩個頁面不斷切換,要求,很早的頁面銷燬

二面:

1:開源框架看過那些相關的源碼
2:設計一個類似迅雷的功能,需要設計那些模塊兒,
3:handler的機制,享原設計模式
4:手寫算法兩個有序列表合成一個
5:線程池有哪幾種,區別是什麼,核心線程和非核心線程的區別
6:遞歸遍歷的優化
7:單例觀察者模式的廣播
8:進程間通信aidl,爲什麼用binder
9:車機APP,電視APP的瞭解
10:微信圖片是怎麼存儲的,多個聊天組做適配
11:多線程下載,怎麼存數據,怎麼分段下載
12:廣播的底層原理
13:AMS的原理怎麼管理四大組件的
14:一個APP中有大量的線程會出現什麼情況
15:自己做Launcher獲取所有的apk信息
16:Android 當App內存不足或在後臺運行時回收部分activity的流程分析。

三面:

1:幾份職業離職的原因
2:職業規劃
3:職業穩定性
4:職業晉升和別人競爭怎麼辦
5:做過哪些底層的東西,開源過哪些東西
6:EXO,ijplayer原理了解麼
7:有什麼要問的問題
8:問有沒有offer
9:關於重複業務開發的思考
10:以往是怎麼學習的


高德

電話面試:

1:activity的生命週期是如何執行的,注意不是生命週期的執行順序
2:主線程中既然是loop死循環爲什麼不會阻塞UI
3:handler的內存泄漏爲什麼,什麼會持有handler對象,內存泄漏的本質是什麼
4:多線程的問題
5:OKHTTP的優點線程池原理,怎麼提高OKHTTP中一個請求的優先執行
6:handlerThread是什麼
7:intentService的原理,
8:ActivityThread是什麼,是一個線程麼
9:service是在主線程麼?會影響activity麼
10:activity的啓動過程
11:匿名內部類爲什麼外部類變量爲final

1面:

1:listview中item中的button的點擊和move的事件分發
2:startService和bindService的區別
3:如何實現一個圓角的圖片
4:如實實現一個扇形
5:a,b,c,d,e,f……等任務,c,在ab後執行,d,在f後執行,最多開啓6個線程,怎麼設計


小米

1面:

a:手寫快排
b:git在某次提交上修改代碼,git rebase 的使用
c:常用佈局組件的注意事項
d:一些Linux的腳本
e:fragment的生命週期
f:多線程,線程等待另一個任務的完成才能執行,線程的打斷

2面:

1:設計模式,觀察者模式
2:fragment和activity的數據傳值,fragment與fragment
3:全局crash的攔截
4:webview加載js代碼
5:mk,framework是否做過
6:進程間通信,線程間通信
7:okhttp的源碼
8: okhttp鏈接池的大小
9:內存溢出和內存泄漏,內存抖動
10:啓動模式以及任務棧
11:事件分發
12:listview,兩個item一致的問題
13:fragment中的replace和add的區別
14:bundle可以傳遞的數據類型:基本數據類型+實現可序列化的數據類型(String 實現了Serializable)
15:爲什麼aidl的寫法是拷貝(按文件編寫的方式查找)
16:Java四種引用—強、軟、弱、虛的知識點總結
17:熱修復,熱更新的區別原理


知乎

1:兩種序列化的區別,爲什麼Android提供的不能序列化到本地
2:可以將實現了Parcelable接口的類序列化後保存在本地嗎?
3:泛型,泛型擦除原理
4:類型擦除引起的問題及解決方法
5:Java ArrayList、LinkedList、Vector的區別
6:手寫列表反轉
7:hashmap的原理如何擴容和hashset的區別
8:hashmap的時間複雜度
9:hashmap和hashset的區別以及arrayList、linkedList、hashSet
10:什麼是HashSet
11:Java ArrayList的自動擴容機制
12:進程間通信(Android重要的binder)
13:application和activity上下文的區別
14:gc,gcroot是什麼
15:https和http的區別
16:RSA,MD5,DES,Base64算法原理大全,應用場景
17:列表環的判斷
18:堆棧溢出,oom的場景,內存中堆和棧的區別,
19:學習的途徑
17:一個類設置hashcode的值的原理
19:進程和線程的區別
20:一個app中線程crash會出現什麼情況,子進程crash會導致什麼
21:同步鎖相關
22:接口和抽象類的區別
23:屏幕切換生命週期的變化,EditTextView中的數據恢復是怎麼做到的?
24:接口可以被繼承麼?
25:git刪除某個節點
26:5&6和5|6分別是多少?
27:bitmap和drawable的區別
28:隊列和棧的區別
29:什麼是DNS
30:每次都需要三次握手嗎?


玩吧

1面:

1:handler機制
2:ok的連接池,怎麼複用
3:hashmap原理
4:message享元模式源碼
5:linkedhashmap原理
6:三次握手四次揮手原理
7:繪畫數據上傳的壓縮辦法
8:弱引用和需引用的區別
9:多線程的問題
10:im相關知識
11:類鎖對象鎖
12:sleep和wait的區別
13:view的繪製過程
14:launcher啓動一個app的過程
15:如何確定viewgroup的大小
16:泛型擦除,原理,,,自動類型轉換

2面:

1:以往的學習方法
2:新技術要考慮哪些方面
3:如何評價你的同事

3面

1:薪資
2:方向


陌陌

筆試:

1:內部類知識
2:啓動模式
3:適配方案
4:斷點續傳實現代碼
5:網絡框架異常捕獲
6:內存不夠殺死,數據保存
7:設計遍歷文件夾

1面:

1:sp結構,優缺點,同步異步,異步數據怎麼存儲的
2:數據庫插入10000條數據的優化
3:快排僞代碼
4:看過哪些源碼,(okhttp,還說了一個eventbus)
5:tcp相關知識
6:Android 內部的SparseArray和ArrayMap代替HashMap

2面:

1:hashMap原理
2:觀察者模式設計
3:binder機制
4:內存泄露
5:anr的檢測(track)
6:listView滑動過程中出現卡頓的定位
7:object有哪些方法
8:AsyncTask的注意事項
9:handleThread內部是否有Looper等
10:用過哪些鎖,鎖有哪些
11:volatile的特性
12:http請求頭有哪些字段
14:三次握手過程,爲什麼要三次握手
15:項目中的難點,你最擅長的是什麼
17:代理設計模式

3面:

1:網路的阻塞,解決方案
2:陌陌開源

4面:

1:HR聊價值觀
2:壓薪資


愛奇藝

一面

1:用過哪些設計模式,手寫觀察者
2:關於穩定性
3:handler原理,handlerThead的區別
4:兩種service的區別,生命週期的方法
5:exo和media player的比較
6:進程間

二面

1:手寫一個線程等待另一個線程執行完纔去執行任務哪個是被觀察者哪個是觀察者?
2:工作經歷的亮點
3:對象回收一個對象兩種引用,強引用一定不會被回收麼
4:用過哪些設計模式
5:進程間通信有哪些
6:Android中內存模型,加載的so是放在哪裏
7:handler的機制
8:開源框架blockcanary的原理
9:分析native異常
10:設計一個app要考慮哪些,實際例子,泛型可擴展
11:內存不足保存數據的原理
12:掉幀,爲什麼16毫秒,卡頓的原因
13:Android系統每隔16ms會發出VSYNC信號重繪我們的界面
14:雙緩衝機制

三面

1:大公司能帶給我們的是什麼(很牛的開發人員,氛圍,規範)
2:單利模式,最優的單利,枚舉單利
3:以往經歷中認爲重要的東西
4:內存泄露的解決,實際開發怎麼解決的
5:自己的優勢在哪兒
6:離開幾家公司的原因
7:手寫一個單利
8:幾家公司的位置
9:用什麼監測內存卡頓和泄露


美菜網

筆試

1:圖片放錯文件夾引起顯示大小不同的原因與屏幕適配原理
2:androidVM虛擬機中運行文件的後綴名
3:asset目錄下的網頁,加載方式file:///android_asset/html/hello.html
4:webView處理超鏈接
5:

public static void test(){
    String a = "123";
    changStr(a);
    LogUtils.i(a);//123
}
private static void changStr(String string){
    string = "456";
    LogUtils.i(string);//123
}

6:

public class Example {
	String string = new String("good");
    	char[] ch = {'a', 'b', 'c'};
    	public static void test() {
        Example example = new Example();
        example.change(example.string, example.ch);
        LogUtils.i(example.string + " and " + example.ch);
    }
   	private void change(String string, char[] ch) {
       string = "test ok";
       ch[0] = 'g';
	   }
}

7:快樂樹的算法

class Solution {
   	public boolean isHappy(int n) {
    	if(n == 1) return true;
    	if(n == 4) return false;
    
    	int newNum = 0;
    	for(char c : Integer.toString(n).toCharArray()){
        	int numChar = Character.getNumericValue(c);
        	newNum += numChar * numChar;
    	}
    	return isHappy(newNum);
	     }
}

1面

1:佈局的優化
2:dp和sp的區別(sp會根據系統字體的變化而變化)
3:ok
4:retrofit
5:多線程
6:工作後自己的收穫
7:內存泄露,溢出,抖動解決方案
8:屏幕適配
9:線程池有哪幾種,核心線程和非核心線程的區別
核心線程 最大線程 非核心線程閒置60秒回收 任務隊列
10:eventbus的原理,有什麼問題
11:glide原理,三級緩衝,bitmap的壓縮等
12:算法
13:http和https的區別,socket用過麼?
14:messager和AIDL的區別
15:薪資範圍
16:mvc和mvp,MVVM的區別, 如何解決MVP中類臃腫的問題
17:電視app適配
18:事件分發,幾個重要的函數,作用
19:對象鎖和類鎖的區別:
20:一個頁面啓動另一個頁面的生命:onPause(A)–>onCreate(B)-onStart(B)–>onResume(B)–>onStop(A)
21:動態啓動模式的幾種標記

2面

1:reteofit
2:廣播有哪些
3:Java的集合類,有什麼區別
a:ArrayList的原理:數組實現
b:LinkedList的原理:雙向列表
c:HashMap的原理:
d:紅黑樹
4:AIDL
5:服務有哪些種類(前臺)
6:final修飾方法,類
7:list遍歷刪除的bug:遍歷刪除list(java.util.ConcurrentModificationException
8:fragment的生命週期,加上activity後呢?

3面

HR,薪資福利


完美世界

1面

1:Android特有的集合
2:synchronized修飾方法和靜態方法的區別,synchronized(.Class)是對象麼
3:長按事件的實現(handler.postdelay())
4::Android中移動多少是滑動,小於多少是點擊//frameworks/base/core/res/res/values/config.xml::8dp
5::線程間的通信方式
6:看過哪些書(effictive java):高效的單例
7:實現異步任務有哪些方式
8:handler中message中的緩衝
9:說說開發中遇到最複雜經歷
10:原子操作的類

2面

1:重寫可以改變的是什麼(override是設麼含義)
2:打包的流程
3:AIDL和messager的區別
4:git的開發流程
5:v4和v7的區別,有沒有聽說過v13
6:fragment的生命週期
8:什麼是設計模式?爲什麼要使用設計模式?有什麼好處?
9:Linux如何創建文件,文件夾,常用的一些命令
10:ANR的解決方案,爲什麼無響應是5,10,20秒呢
11:Java基礎不紮實,什麼都做過,業務能力強

3面:HR,

實習經歷
校招經歷
第一份工作經歷
第二份工作經歷


最後總結

今天是2018.12.25,聖誕節,即將進入2019年,入職現在公司之前,就想把自己的面試經歷分享給更多的Android童鞋,一直比較忙,這裏說一聲抱歉啊,不管怎麼樣,算是實現了自己給大家的承若,熬夜寫完了本文。
樓主2018年大大小小的面試差不讀30多家吧,本文是摘錄了一些比較重要的面試經歷,而且大部分是拿到了意向offer,從技術上講,一直認爲自己很菜,但是有一顆努力的心,我覺的從事Android開發的童鞋,若是能回答我上面記錄的百分之80,我想知名的互聯網企業的offer是很好拿的,關於答案,有篇幅的原因,就不附上了,希望本文能幫到各位,祝好~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章