先說說本身的基本狀況吧,陝西某雙非一本本科,軟件工程專業,從大二第一學期開始自學Java,Android,大二大三逃了兩年課,在圖書館自學兩年,秋招提早批拿到了網易雲音樂和金山WPS的 Android開發工程師 offer。目前的話,我已經很滿意了,不投了,收手java
坑逼學校不讓出去實習,也沒辦法,強制在學校實習。從7月20號在校實習結束以後,開始準備秋招,投簡歷。投了70+份簡歷,目前爲止的話,面了6家大廠,拿了兩家offer,還有幾家待面(貝殼找房,蘑菇街),剩餘的筆試也都沒作。面的7家分別是:面試
由於也知道本身學校很差(高考發揮重大失誤),大一心裏很是掙扎,一直不肯作一個平凡的人。大一在課餘時間看了一百多本書,大二開始自學安卓,入了安卓的坑,也深知去大廠,必須很是牛逼,牛逼到面試官能夠忽略你的學歷。所以大二,大三課全逃,在圖書館潛心修煉兩年。所幸逃了兩年課,只掛了一門,編譯原理,仍是開卷,無語。算法
好了,開始上面經吧:sql
CVTE一面:數據庫
介紹項目架構 MVP,MVC 介紹及優缺點 Butterknife源碼(直接問源碼~~~~~~~~) EventBus源碼 騰訊Bugly 原理及實現,若是是你的話,你怎麼實現日誌上傳傳策略,答到 後臺sevice+守護線程編程
安卓跨進程通訊方式 內存泄露,如何檢測內存泄露 LeakCany原理 Binder 原理 (加一個)冷啓動優化 項目中文件的下載 斷點續傳的實現 Java線程安全,jmm,可見性,原子性,有序性 synchornized和lock的區別,以及原理 TCP 如何實現 可靠傳輸? 擁塞控制的四種方法,這個實在想不起來 安卓學習了多長時間,平時怎麼學習安卓?設計模式
CVTE二面:瀏覽器
設計模式的六大原則,對六大原則的理解,在項目中的應用 說說你最熟悉的三中設計模式 單例模式如何實現線程安全 Builder模式 和set方法有什麼區別 觀察者模式 推和拉,有什麼區別緩存
MVC MVP MVVM 的區別,在項目中的應用 MVP如何進行解耦合,P如何實現V 和M 的交互安全
看過什麼源碼? Retrofit源碼,如何實現動態代理,和rxjava如何交互,可不能夠設置多個convertFactory,若是設置了怎麼辦?如何動態肯定 Volley源碼,緩存超時如何判斷
而後是編程 題,不能使用 java數據結構,實現棧,須要考慮 線程安全 ,泛型 ,擴容, 限定 5分鐘 能不能優化,scyronized 和 volitle 區別,votile原理
IPC方式? Binder原理?Binder鏈接池(這個真不會) Client調用Server方法的過程? 看過Framework那些源碼?
自定義View 須要注意的問題,MesureSpec, 自定義View 動畫的實現
Handler原理?子線程如何實現Handler,Message如何存儲在MessageQueen? 有沒有學習什麼新技術,有沒有看今年的Google IO 大會。
面試官看了個人博客,問了一些簡單的問題
金山WPS一面
介紹一下Volley,okhttp,retrofit volley的基本流程,OKhttp的攔截器鏈,retrofit的動態代理
photoview如何實現 Glide與Picasso區別 若是讓你設計圖片加載框架,你如何設計(三級緩存機制) 插件化,熱修復,andfix原理,如何作到機型適配(native如何作到機型適配 我很慌啊~~~~) Hashmap原理,如何實現線程安全,HashTable,CourrentHashmap原理 介紹一下java中的鎖 單例模式,dcl存在的問題,如何解決 http/https區別,HTTPS加密如何實現。 get/post區別,post 如何實現密文傳輸 事件分發機制 activity的四種啓動模式,及其應用場景 Handler的使用及其原理,子線程如何實現 eventbus幹什麼的,和handler有什麼區別 eventbus可否實現IPC IPC方式 AIDL底層,沒問Binder原理
金山WPS二面
hashmap的實現方式 hashmap如何查找元素 static關鍵字 final關鍵字 volatile關鍵字 單例 線程安全的實現方式,細節 事件分發 volley源碼 java函數的訪問權限 圖片緩存框架的區別 java垃圾回收
算法: 二叉樹遍歷 中序遍歷的下一個節點(劍指offer原題,看了四五遍,還沒記住,該打) 翻轉鏈表 二叉樹深度
途牛一面
應用上線細節(說要搜我上線的應用)
retrofit源碼涉及的設計模式
handler asynctask HandlerThread 的源碼
熱修復與插件化
Java類加載機制
線程,線程池,線程池核心參數
30M圖片的加載,如何預防oom
內存泄漏 的檢測與預防
事件分發機制
自定義view
listview 與recycleview 的複用和回收
tcp udp區別
三次握手和四次揮手(這個真沒背,那圖怎麼記啊)
360一面 static關鍵字 syrizoned原理 自定義控件 事件分發 滑動衝突 四中引用 弱引用的使用 內存泄漏 插件化 dla原理 65535方法的解決 360二面 介紹一下項目 service的使用 IPC java 安卓 把知道的IPC 全說出來,p/v 信號量 管道 信號量 ,複製黏貼版 什麼的 性能優化 ANR OOM 內存泄漏 UI卡頓 BItmap優化 Listview優化 launcher的啓動過程 volley源碼 butterknife源碼 熱修復,andfix,sophix,hotfix原理
由於金山二面,和360在同一天面試,金山二面約了45分鐘,結果聊了70分鐘,錯過了360二面的時間,二面面試官一臉嫌棄的看着我。固然這也怪我沒安排好時間,但願你們之後面試時間好好安排一下。
騰訊 一面
activity的四種啓動模式,具體場景分析 volley,OKhttp有什麼區別 OKhttp 複用鏈接池怎麼實現的(這個沒看過,面完趕忙看)
volley的源碼,OKhttp源碼,eventbus源碼
httpclient,httpURLconnection內部實現(太原理了,沒看過)而後問httpclient,httpURLconnection是哪一個組織開源的,黑人問號臉???,還有這種操做。哈哈 。我知道。httpclient是Apache開源實現的,httpURLconnection是sun開源實現的
activity的啓動流程(面試完了趕忙看),說沒看過,看過其餘framework源碼,說來一下handler,asynctask源碼
Android的任務棧 類的加載過程
不容許寫代碼,如何定位anr。
service的保活 極光推送的原理 ,心跳包的發送間隔時間(我回答的是5s,面試官讓我好好思考思考,而後回答根據具體的應用場景進行判斷。巴拉巴拉一大堆) 熱修復原理,andfix,hotfix源碼? 方法數超過65535怎麼辦?分包是哪一個版本開始支持的,以前的版本不支持,如何加載dex文件。 騰訊 二面
介紹第一個項目的功能,大部分問題是根據第一個項目問的 用戶登陸與服務器進行交互的過程,如何優化。加密:HTTPS,base64,md5,非對稱加密算法 及其使用場景。 listview 如何進行優化,無限下拉加載如何優化
bitmap的優化
jpg和png圖片的區別(這個打錯了,面試官讓我下去查一下)
三級緩存機制,何時內存緩存,何時磁盤緩存 熱修復,阿里andfix,騰訊 hotfix 原理,方案對比
騰訊面試官 仍是主要看 思考過程,對安卓總體的理解,而不是答案。後面網易也是同樣的。
多是由於春招面過,評價不太好(當時準備基礎,沒想到面試官面問框架源碼,16分鐘,gg),致使秋招沒法經過。
網易雲音樂一面 安卓經常使用的佈局,特色。LinearLayout和relaviteLayout 區別
fragment與view的區別
fragment的切換方式
fragment的生命週期
fragment的內存泄露
bitmap優化
反射的做用?編譯時仍是運行時?
java IO 多線程
抽象類和接口的區別
hashmap的底層實現,hash算法,爲何選擇hashcode 高16位於低16位異或?直到問到不會~~
synchronized 與reentrantlock 的區別? 等待可中斷的內部實現(what~~~ 說了一下若是是我我該怎麼實現)
eventbus的內部實現 一直問到不會~~~
handler內部實現 一直問到不會~~~ 網易雲音樂二面 用過數據庫?寫了一條sql,問我怎麼建索引,而後把 or改爲and 問怎麼修改優化?(本菜雞不太會)沒怎麼用過數據庫,只用原生寫過一個小demo,安卓基本都orm框架了吧。而後解釋了個人數據庫是怎麼作的。
數據庫設計規範,三大範式(數據庫課程逃了一學期,老師吹逼很差好講,沒辦法,會寫sql語句,只知道第一範式)
volley源碼,一直問,一直問到不會
項目的難點 MVP的設計架構,MVVM
Drawable 的子類 ,方法(表示只知道 colordrawable,bitmapdrawable,而後繼續追問,就說,看過安卓開發藝術探索,有一張專門講drawable,由於用的少,沒怎麼看,就放過了) Drawable 和bitmap區別(又來)
okhttp源碼,brigeIntecptor 做用是什麼?說一下 http header
Http和HTTPS的區別,HTTPS工做原理
事件分發機制 自定義view
最後問我你以爲你那塊須要繼續深刻?
*具體的HR面 面經我就不貼了吧,都大同小異,真誠一些就好,意願表達強烈一些,也不能太實誠,具體的話,多面多總結吧~~~~*
如今工做也找到了,得給本身找點事作,原本說想混吃等死,玩了一週,感受很空虛,同窗基本不是準備考研就是跑招聘會,無聊,接下來的話準備:
這是我總結的安卓面試準備你們能夠看看
但願我寫的這些能幫助到你們。但願你們沉住氣,都能拿到滿意的offer
你們具體有什麼問題的話,能夠給我留言,這是個人博客地址:blog.csdn.net/qq_29375837
我也轉載兩句我喜歡的詩鼓勵你們吧
朋友,堅決地相信將來吧 相信不屈不撓的努力 相信打敗死亡的年輕 相信將來、熱愛生命
也許迷途的惆悵會扯碎個人腳步 可我相信將來會給我一雙夢想的翅膀 雖然挫折的創傷讓我步履維艱 可我堅信光明就在遠方