基礎問題相關
1、接口的意義-百度
2、抽象類的意義-百度
3、内部類的作用-樂視
4、Java 虛拟機的特性-百度-樂視
5、哪些情況下的對象會被垃圾回收機制處理掉-美團-小米
6、程序和線程的差別-獵豹-美團
7、java中==和equals和hashCode的差別-樂視
8、HashMap的實作原理-美團
9、string-stringbuffer-stringbuilder差別-小米-樂視-百度
10、什麼導緻線程阻塞-58-美團
11、多線程同步機制-獵豹
12、ArrayMap對比HashMap
13、hashmap和hashtable的差別-樂視-小米-360
14、容器類之間的差別-樂視-美團
15、抽象類接口差別-360
Android 方面
16、如何導入外部資料庫?
17、本地廣播和全局廣播有什麼差别?
18、intentService作用是什麼,AIDL解決了什麼問題-小米
19、Ubuntu編譯安卓系統-百度
20、LaunchMode應用場景-百度-小米-樂視
21、Touch事件傳遞流程-小米
22、View繪制流程-百度
23、多線程-360
24、Handler,Thread和HandlerThread的差别-小米
25、線程同步-百度
26、什麼情況導緻記憶體洩漏-美團
27、ANR定位和修正
28、什麼情況導緻oom-樂視-美團
29、Service與Activity之間通信的幾種方式
30、如何保證service在背景不被Kill
31、Requestlayout,onlayout,onDraw,DrawChild差別與聯系-獵豹
32、Android動畫架構實作原理
33、Android為每個應用程式配置設定的記憶體大小是多少-美團
34、優化自定義view百度-樂視-小米
36、volley-美團-樂視
37、Glide源碼解析
38、Android設計模式
39、Android屬性動畫特性-樂視-小米
40、Activity Window View三者的差别,fragment的特點-360
41、invalidate和postInvalidate的差別及使用-百度
42、LinearLayout和RelativeLayout性能對比-百度
43、View重新整理機制-百度-美團
44、架構設計-搜狐
騰訊公司面試題精選
45、2000萬個整數,找出第五十大的數字?
46、從網絡加載一個10M的圖檔,說下注意事項
47、自定義View注意事項
48、項目中常用的設計模式
49、JVM的了解
阿裡面試題精選
50、程序間通信方式
51、什麼是協程
52、記憶體洩露是怎麼回事
53、程式計數器,引到了邏輯位址(虛位址)和實體位址及其映射關系
54、數組和連結清單的差別
55、二叉樹的深度優先周遊和廣度優先周遊的具體實作
56、堆的結構
57、bitmap對象的了解
58、什麼是深拷貝和淺拷
59、對象鎖和類鎖是否會互相影響
60、looper架構
61、自定義控件原理
62、自定義控件原理
63、ActivityThread,Ams,Wms的工作原理
64、Java中final,finally,finalize的差別
65、一個檔案中有100萬個整數,由空格分開,在程式中判斷使用者輸入的整數是否在此檔案中。說出最優的方法
66、兩個程序同時要求寫或者讀,能不能實作?如何防止程序的同步?
67、volatile 的意義?
68、燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若幹條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鐘呢?
69、手寫代碼:大整數加法
70、履歷上提到使用Butterknife,Butterknife是什麼階段注解?注解的生命周期了解嗎?
71、履歷中提到使用Okhttp做網絡通訊,說一下Okhttp攔截器
72、Http和Https差別,沒有CA憑證可以使用Https通路嗎
73、TCP在是哪一層的協定,三次握手過程
74、了解什麼加密算法,說一說對稱加密和非對稱加密
75、了解JVM嗎,說說垃圾回收機制
76、了解apk的編譯過程嗎,簡單說了一下dex
77、Java中Collection的常用實作類,map的實作類
78、聊聊Hashmap和Hashtable差別
79、Hashmap的底層實作方式,如何解決哈希沖突,除了這種解決方式還有沒有其他解決方式
80、很多網站像新浪微網誌網址都有短位址,如果讓你實作怎麼做
81、如何判斷兩個單連結清單相交
82、如何使用兩個或多個棧模拟隊列
83、智力題:現在有一個抽獎活動,從8點到10點這段時間會有若幹個使用者參與抽獎,現在有10個獲獎名額,但沒有足夠大的空間儲存所有的資料,要求每個使用者等機率中獎,且10點活動截止瞬間開獎。
二面(50分鐘)
84、手寫代碼:删除單連結清單倒數第x個結點
85、手寫代碼:z已知,在無序數組中找到兩個數x和y,使x+y=z(使用哈希表以空間換時間)
86、有沒有看過Handler的源碼,當MessageQueue中沒有Message會怎麼處理
87、說一下線程與程序,android跨程序通訊的方式,自己有沒有用過
88、講一講AIDL原理
89、Service有幾種啟動方式,有什麼差別
90、activity的聲明周期和啟動模式,舉了一個實際場景問點選back之後的跳轉
91、activityA跳轉到B過程中A,B的生命周期函數調用順序
92、自定義View的相關知識
經驗分享
在樂視的時候我作為面試官接觸過幾十個面試者,能左右我是不是通過這個人的,主要因素還是這個人對技術的熱愛程度。因為有這種極客精神,做任何技術上的事情都是時間上的問題,是以面試過程中要盡可能表現出對技術的熱愛。
那除了這種因素外,我們怎麼做才能更大機率的進入一線公司呢?
還有一個比較重要的因素就是知識的深度。我認為深度優于廣度,廣度通過看各種文章都能了解,但一旦碰到實際問題,這時候往往靠的是自己的知識深度。比如,Java程式猿都知道Java是跨平台的,因為會編譯成和平台無關的位元組碼,但是有多少人會知道是怎麼編譯的?如果不知道虛拟機運作原理,就不可能做出手淘的Atlas容器架構。再比如,很多人知道四大元件職責都是什麼,還會些性能優化,但是如果不知道Framework層系統服務原理,就做不出插件化架構。
因為一線公司業務的複雜度也決定了業務的深度,如果沒有較好的深度探究能力,是很難勝任的,是以知識的深度也很重要。
極客精神加上某一領域知識的深度能力,就可以達到一線公司标準了。面試中非理性因素也有較大比重,但是這種東西是我們沒辦法掌控的,如果因為這種因素失敗了,也沒必要氣餒。我認為能力是和回報成正比的,就算此刻沒發生,下一刻也會出現,隻要掌握了我們該掌握的能力,總有一天會進入我們理想的公司。
答案關注公衆号