今天分享一位應屆畢業生的校招面經,你們能夠看看查漏補缺。程序員
不少忘記了,能回憶起來的就儘可能寫多一些。面試
1.內存泄漏的場景,Handler機制
2.四大組件
3.進程間通訊
4.自定義view
5.Binder的使用
6.性能優化
7.fragment的生命週期
8.事件分發機制,以及涉及到的設計模式算法
1.接口和抽象類區別
2.繼承和重寫
3.ArrayList和LinkedList區別
4.死鎖產生條件和應用場景
5.Java的修飾符的使用,static final修飾原理
6.多線程空指針解決方法
7.異常處理流程,什麼時候必需要catch數據庫
1.進程和線程區別
2.多線程同步和異步問題
3.同步死鎖應用場景設計模式
1.代理模式
2.單例模式以及雙重鎖原理
3.觀察者模式應用場景數組
1.無序數組創建二叉搜索樹
2.前序和中序遍歷二叉樹(我寫了遞歸和非遞歸)緩存
1.四大引用區別和引用場景
2.內存泄漏的場景,Handler內存泄漏的緣由以及解決方法
3.Handler機制,主線程如何向子線程發送消息,Handler可否多進程通訊
4.多線程併發,sychronized,類鎖和對象鎖
5.線程安全類,StringBuffer和StringBuilder
6.jvm工做內存和主內存,volatile原理,jvm的靜態塊,內存屏障的實現原理
7.一個m * n的棋盤,一個蟲子從左上走到右下方,只能向右或者向下,有多少種走法,能夠用組合數學的知識解答
8.靜態廣播和動態廣播區別,service啓動的兩種方式區別
9.onMeasure的測量模式與特色
10.線程間通訊和進程間通訊
11.ArrayList刪除元素
12.寫出你認爲最優的懶漢式單例模式
13.activity意外退出時信息的儲存與恢復,onCreate正常進入時的判斷。
14.JS的交互理解嗎?平時工做用的多嗎,項目中是怎麼與Web交互的?
15.MVC -> MVP -> MVVM 這樣變化的緣由,MVP的不足,MVVM爲何代替了MVP
16.MVC的狀況下怎麼把Activity的C和V抽離
17.各個網絡框架之間的差別和優缺點,網絡框架代替進化的緣由
18.圖片緩存框架的差別和優缺點,有沒有比Glide更好的圖片加載框架?
19.項目框架裏有沒有Base類,BaseActivity和BaseFragment這種封裝致使的問題,以及解決方法
20.框架裏是怎樣實現MVC的
21.Reftofit用過沒有,註解實現的好處?
22.項目中的的界面既然是基於View的,有沒有動畫的處理?
爲何不推薦軟引用,軟引用在dvm上的垃圾回收機制和jvm上同樣嗎?
23.LRUCache的刪除條件,LRU是什麼意思
24.啓動頁緩存設計 白屏問題
25.網絡圖片怎麼加載?Glide如何肯定圖片加載完畢
26.項目框架中對多View的支持?
27.Http的request和response的協議組成
28.RecyclerView和ListView相比有哪些好處,爲何ListView被RecyclerView代替?安全
1.將知道的操做系統說一遍,引入操做系統的最終目的(計算的功能),進線程區別,虛擬地址的原理和做用,指針是物理地址仍是虛擬地址,指針的地址長度的影響因素,32位系統是4個字節,64位系統是8個字節。
2.Java的三大特性,寫一個多態的例子,注意命名的規範
3.一個很大的數組,其中有一個數出現的次數是奇數次,其餘都是偶數次。求這個數。除了異或寫另一種方法性能優化
1.Android的體系架構,深刻到framework,native層
2.單例模式的幾種實現具體的區別,工廠模式的種類以及區別
3.對C語言的理解
4.Android的觸摸事件分發流程
5.Android第三方框架的源碼實現原理網絡
京東的面試題感受都差很少,難度通常。
印象深入的以下:
1.對着個人項目問了一些具體實現的問題
2.一些基礎的問題就不想再重複了,好比ArrayList和LinkedList區別
3.最後一道簡單的算法題做爲結束:求兩個字符串的最長公共子串
1.也是跟一面差很少Java和Android,好比Activity的啓動模式,類加載的過程
2.設計模式
2.Activity的啓動流程,這個有點意思
不少真的忘記了,只記得下面這些了。
1.講一下項目,主要是深刻框架的源碼
2.Java忘記問啥了,Android問啓動模式的時候,對四種啓動模式的實際運用問得比較深,還有觸摸事件的細節問得深
3.sp的commit和apply區別
4.左鏈接和右鏈接區別
5.算法:輸出二叉樹每層的最大值
1.集合類,線程安全如何實現,寫一個算法ArrayList刪除全部值是50的。
這裏有坑:http://blog.csdn.net/lazy_p/article/details/7365324
除了遍歷還有更優的方法嗎?想不出來。換成LinkedList性能如何?
2.異常類的繼承結構,如何捕捉異常,如何全局捕捉異常並上報
3.數據的存儲方式與其的應用場景,ContentProvider的底層實現,如何保證多進程讀寫安全
4.類加載,jvm內存模型
5.自旋鎖
6.Linux的fork
7.數據庫的ACID
8.手寫反轉鏈表
1.intent是什麼來的?爲何不是動做,用來幹什麼的?
(什麼向什麼表現什麼意圖)
2.爲何設置tcp三次握手,四次揮手
3.hashmap的底層實現
4.場景題分析:手機掃網頁端的二維碼如何提起的登陸的過程,是如何實現的?
5.Service的源碼
6.Handler的實現,Looper怎麼終止。
7.項目是MVC,那根據本身負責的項目講下Model、View、Controller層
8.問了下晝夜模式、多語種、屏幕適配的問題,追問了下,若是要關閉晝夜模式功能怎麼辦?不少類的話,一個個去關嗎?
9.有沒有接觸過JNI和NDK?
10.ListView的錯位問題緣由以及如何處理?
11.如何設計一個抽獎系統,好比滿200抽20,滿500抽50
一些基礎知識和理論確定是要背的,要理解的背,用本身的語言總結一下背下來。
雖然 Android 沒有前幾年火熱了,已通過去了會四大組件就能找到高薪職位的時代了。這隻能說明 Android 中級如下的崗位飽和了,如今高級工程師仍是比較缺乏的,我能明顯感受到國慶後多了不少高級職位,因此努力讓本身成爲高級工程師纔是最重要的。
有些東西你不只要懂,並且要可以很好地表達出來,可以讓面試官承認你的理解,例如Handler機制,這個是面試必問之題。有些晦澀的點,或許它只活在面試當中,實際工做當中你壓根不會用到它,可是你要知道它是什麼東西。
對於程序員來講,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提高本身,歷來都是咱們去適應環境,而不是環境來適應咱們!
好了,但願對你們有所幫助。
接下來是整理的一些Android學習資料,有興趣的朋友們能夠加我wx:X1524478394 免費獲取。
①Android開發核心知識點筆記
②對標「阿里 P7」 40W+年薪企業資深架構師成長學習路線圖
③面試精品集錦彙總
④全套體系化高級架構視頻
Android精講視頻領取學習後更加是如虎添翼!進軍BATJ大廠等(備戰)!如今都說互聯網寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力夠強,公司換掉的代價大,怎麼可能會被裁掉,都是淘汰末端的業務Curd而已!現現在市場上初級程序員氾濫,這套教程針對Android開發工程師1-6年的人員、正處於瓶頸期,想要年後突破本身漲薪的,進階Android中高級、架構師對你更是如魚得水,趕快領取吧!
上述【高清技術腦圖】以及【配套的架構技術PDF】能夠 加我wx:X1524478394 免費獲取