金三銀四,銅五鐵六,個人面試通關祕籍(含HR)

前言:

前一段時間和大牛們交流了一下,據反饋如今Android崗位也沒有之前那麼多了,沒這麼好找了,面臨着互聯網的寒冬,不只僅是Android,大量公司模仿O2O模式致使死掉企業的不少,在加之培訓機構大量的培訓人,致使供大於求,固然這不意味着飽和,只是市場更趨於合理一些(只要技術好不用怕的)。最近結合一些面試的同窗和大牛們反饋,前幾天有大牛去阿里面試順便整理了下一些面試題目。但願對你們有所幫助,後期會不斷更新添加新的面試題。能夠幫你們查漏不缺。如下是(阿里、騰訊、百度、華爲、和字節跳動的試題聚集java

就算寫出答案也不必(我寫了部分面試答案,有須要的朋友能夠瀏覽文末資料領取所有),由於開發與實際答案會有所不一樣,再者怕誤導你們,因此這些面試題答案仍是本身去理解吧!切記:不要背答案,多理解。面試

Android高級總結

1.說下你所知道的設計模式與使用場景
2.Java語言的特色與OOP思想
3.說下java中的線程建立方式,線程池的工做原理。
4.說下handler原理
5.內存泄漏的場景和解決辦法
**6.如何避免OOM? **設計模式

答:1.使用更加輕量的數據結構:如使用ArrayMap/SparseArray替代HashMap,HashMap更耗內存,由於它須要額外的實例對象來記錄Mapping操做,SparseArray更加高效,由於它避免了Key Value的自動裝箱,和裝箱後的解箱操做
2.便面枚舉的使用,能夠用靜態常量或者註解@IntDef替代
3.Bitmap優化:
a.尺寸壓縮:經過InSampleSize設置合適的縮放
b.顏色質量:設置合適的format,ARGB_6666/RBG_545/ARGB_4444/ALPHA_6,存在很大差別
c.inBitmap:使用inBitmap屬性能夠告知Bitmap解碼器去嘗試使用已經存在的內存區域,新解碼的Bitmap會嘗試去使用以前那張Bitmap在Heap中所佔據的pixel data內存區域,而不是去問內存從新申請一塊區域來存放Bitmap。利用這種特性,即便是上千張的圖片,也只會僅僅只須要佔用屏幕所可以顯示的圖片數量的內存大小,但複用存在一些限制,具體體如今:在Android 4.4以前只能重用相同大小的Bitmap的內存,而Android 4.4及之後版本則只要後來的Bitmap比以前的小便可。使用inBitmap參數前,每建立一個Bitmap對象都會分配一塊內存供其使用,而使用了inBitmap參數後,多個Bitmap能夠複用一塊內存,這樣能夠提升性能
4.StringBuilder替代String: 在有些時候,代碼中會須要使用到大量的字符串拼接的操做,這種時候有必要考慮使用StringBuilder來替代頻繁的「+」
5.避免在相似onDraw這樣的方法中建立對象,由於它會迅速佔用大量內存,引發頻繁的GC甚至內存抖動
6.減小內存泄漏也是一種避免OOM的方法數組

7.說下Activity的啓動模式,生命週期,兩個Activity跳轉的生命週期,若是一個Activity跳轉另外一個Activity再按下Home鍵在回到Activity的生命週期是什麼樣的
8.onRestart的調用場景
9.是否了SurfaceView,它是什麼?他的繼承方式是什麼?他與View的區別(從源碼角度,如加載,繪製等)。
10.如何實現進程保活緩存

答:a: Service設置成START_STICKY kill 後會被重啓(等待5秒左右),重傳Intent,保持與重啓前同樣
b: 經過 startForeground將進程設置爲前臺進程, 作前臺服務,優先級和前臺應用一個級別,除非在系統內存很是缺,不然此進程不會被 kill
c: 雙進程Service: 讓2個進程互相保護對方,其中一個Service被清理後,另外沒被清理的進程能夠當即重啓進程
d: 用C編寫守護進程(即子進程) : Android系統中當前進程(Process)fork出來的子進程,被系統認爲是兩個不一樣的進程。當父進程被殺死的時候,子進程仍然能夠存活,並不受影響(Android5.0以上的版本不可行)聯繫廠商,加入白名單
e.鎖屏狀態下,開啓一個一像素Activity安全

11.說下冷啓動與熱啓動是什麼,區別,如何優化,使用場景等。
12.爲何冷啓動會有白屏黑屏問題?
13.Android中的線程有那些,原理與各自特色
14.ANR的緣由
15.三級緩存原理
16.LruCache底層實現原理:
17.說下你對Collection這個類的理解。
18.JVM老年代和新生代的比例
19.jvm,jre以及jdk三者之間的關係?JDK(Java Development Kit)是針對Java開發員的產品,是整個Java的核心,包括了Java運行環境JRE、Java工具和Java基礎類庫。
20.談談你對 JNIEnv 和 JavaVM 理解?
21.Serializable與Parcable的區別?數據結構

Android多線程總結

1.什麼是線程
2.線程的狀態
3.線程的建立
4.線程中斷
5.Thread爲何不能用stop方法中止線程多線程

答:1.即刻拋出ThreadDeath異常,在線程的run()方法內,任何一點都有可能拋出ThreadDeath Error,包括在catch或finally語句中。
2.釋放該線程所持有的全部的鎖。調用thread.stop()後致使了該線程所持有的全部鎖的忽然釋放,那麼被保護數據就有可能呈現不一致性,其餘線程在使用這些被破壞的數據時,有可能致使一些很奇怪的應用程序錯誤。app

6.重入鎖與條件對象,同步方法和同步代碼塊
7.volatile關鍵字
8.java內存模型
9.原子性 可見性 有序性
10.線程池ThreadPoolExecutor
11.線程池的種類
12.線程同步機制與原理,舉例說明
13.arrayList與linkedList的讀寫時間複雜度
14.爲何HashMap線程不安全(hash碰撞與擴容致使)jvm

答:HashMap的底層存儲結構是一個Entry數組,每一個Entry又是一個單鏈表,一旦發生Hash衝突的的時候,HashMap採用拉鍊法解決碰撞衝突,由於hashMap的put方法不是同步的,因此他的擴容方法也不是同步的,在擴容過程當中,會新生成一個新的容量的數組,而後對原數組的全部鍵值對從新進行計算和寫入新的數組,以後指向新生成的數組。當多個線程同時檢測到hashmap須要擴容的時候就會同時調用resize操做,各自生成新的數組並rehash後賦給該map底層的數組table,結果最終只有最後一個線程生成的新數組被賦給table變量,其餘線程的均會丟失。並且當某些線程已經完成賦值而其餘線程剛開始的時候,就會用已經被賦值的table做爲原始數組,這樣也會有問題。擴容的時候 可能會引起鏈表造成環狀結構

15.進程線程的區別
16.Binder的內存拷貝過程
17.傳統IPC機制的通訊原理(2次內存拷貝)
18.Java內存模型(記住堆棧是內存分區,不是模型)
19.類的加載過程
20.什麼狀況下會觸發類的初始化
21.雙親委託模式
22.雙親委託模式的好處
23.死鎖的產生條件,如何避免死鎖
24.App啓動流程
25.Android單線程模型
26.RecyclerView在不少方面能取代ListView,Google爲何沒把ListView劃上一條過期的橫線?
27.HashMap如何保證元素均勻分佈

Android View總結

1.View的滑動方式
2.View的事件分發機制
3.View的加載流程
4.View的measure layout 和 draw流程
5.自定義view須要注意的幾點

HR問題彙總

1您在前一家公司的離職緣由是什麼?
2講一件你印象最深的一件事情;
3介紹一個你影響最深的項目;
4介紹你最熱愛最擅長的專業領域;
5公司實習最大的收穫是什麼;
6與上級意見不一致時,你將怎麼辦;
7本身的優勢和缺點是什麼?並舉例說明?
8你的學習方法是什麼樣的?實習過程當中如何學習?實習項目中遇到的最大困難是什麼以及如何解決的;
9說一件最能證實你能力的事情;
10針對你你申請的這個職位,你認爲你還欠缺什麼;
11若是經過此次面試咱們單位錄用了你,但工做一段時間卻發現你根本不適合這個職位,你怎麼辦;
12項目中遇到最大的困難是什麼?如何解決的;
13你的職業規劃以及我的目標;將來發展路線及求職定位;
14若是你在此次面試中沒有被錄用,你怎麼打算;
15評價下本身,評價下本身的技術水平,我的代碼量如何;
16經過哪些渠道瞭解的招聘信息,其餘同窗都投了哪些公司;
17業餘都有哪些愛好;
18你作過的哪件事最令本身感到驕傲;
19假如你晚上要去送一個出國的同窗去機場,可單位臨時有事非你辦不可,你怎麼辦;
20就你申請的這個職位,你認爲你還欠缺什麼;
21當前的offer情況;若是BATH都給了offer該如何選;
22你對一份工做更看重哪些方面?平臺,技術,氛圍,城市,money;
23理想薪資範圍;杭州崗和北京崗選哪一個;
24理想中的工做環境是什麼;
25談談你對跳槽的見解;
26說說你對行業、技術發展趨勢的見解;
27實習過程當中周圍同事/同窗有哪些值得學習的地方;
28家人對你的工做指望及本身的工做指望;
29若是你的工做出現失誤,給本公司形成經濟損失,你認爲該怎麼辦;
30若上司在公開會議上誤會你了,該如何解決;
31是否能夠實習,能夠實習多久;
32在五年的時間內,你的職業規劃;
33你看中公司的什麼?或者公司的那些方面最吸引你。

我是以專題的形式來分析關於Android面試經過祕籍,整理資料不易,在Android學習或者在面試方面有須要提高,準備的朋友能夠加入個人技術交流羣818520403裏面不只僅有Android各種專題面試資料,BAT高級源碼面試題,還有提供學習的系統進階視頻資料,如今面對找工做的困境,須要提高本身的朋友們推薦加入。

相關文章
相關標籤/搜索