2018年5月份,北京,在所謂的互聯網寒冬裏,一個普通二本的學生,在小公司工做一年後,跳槽拿到了百度的offer,月薪從9k變爲17k,漲薪幅度接近100%。git
2018年末,上海,一個只有高中學歷的同窗,經過培訓加入了IT行業,剛開始他的月薪只有6k,一年後,他的月薪變爲了16k,漲幅接近167%。github
2019年3月,北京,一個xx科技學院畢業的的普通二本,在小公司跌跌撞撞半年後,今年年初忽然開掛,成功拿到了百度、小米、網易和頭條的offer,最終他選擇了多金的頭條,拿到了近30k的月薪。面試
2020年初,深圳,一個物理專業畢業的研究生,在工做短短兩年後,拿到了年薪50萬的offer,如今已是高級工程師了。算法
像這樣的例子還有不少,沒法一一列舉,可見,沒有名校學歷和耀眼的光環,照樣能夠進入大廠拿高薪,只是不少人沒有領悟要領而已。設計模式
其實,對於學歷普通也沒有耀眼光環的人來講,進大廠就靠一條,那就是:技術實力。可是不少人在小廠待習慣了,老是用小廠的標準來衡量大廠的要求,多次面試受挫,因而得出了一個結論:面試造飛機,入職擰螺絲釘。數組
但事實上,大廠的平臺更大,用戶量也更多,天然技術要求也更高,不能徹底用擰螺絲釘來形容。就算大廠作的也是普通的事情,可是不少時候,大廠對穩定性、執行效率和崩潰率的極致追求,都是在小廠沒法體會的。緩存
咱們知道,一件看似簡單的事情,若是要作到80分,那垂手可得;若是要作到95分以上,那就很是困難了;而若是要作到99分以上,那就難如登天了。在大廠不少時候都要把事情作到95分甚至更高,這種追求極致的過程頗有技術含量,你們好理解嗎?安全
如何進入大廠,我總結下來就是:微信
瞭解個人讀者都知道,我待過不少大廠,騰訊百度滴滴我都待過,並且個人技術級別還不低,好幾年前我就是技術專家了,我很清楚大廠的用人標準和技術要求。架構
之前在網上找技術博客,不成體系的學習效果然的過低了,常常由於信息過多,還有信息不許確而耽誤時間,很容易就分心了。
後面除了跟視頻學習,就是一直在刷這套1307頁Android 面試全套真題解析。
這份資料是真的幫到了不少,內容全面,覆蓋率比較高,省去了不少時間和精力。
前面面了貝殼找房和網易,都經過了,雖然最後沒有談好,可是有了一些信心。後面讓朋友幫忙內推了騰訊,三面順利拿下offer,薪資是28K,相比於上一份工做上漲了15K。
這裏主要放騰訊面經
一面
0、說說作過的項目(差很少包括了自我介紹)
說一下我表達的重點:我作了AndroidQ的適配;我在項目中使用了新的技術:LiveData、BiometricPrompt;我使用到了設計模式:工廠、簡單工廠、單例;我在不斷優化個人代碼;我關注Google開發者大會
一、問上一份工做
抓着工做中的技術點問了不少,而後後面問題的差很少都是來自這裏面。
二、EventBus和回調的對比。有沒有其餘辦法能夠解決類之間的耦合性。
說了LivaData,但其實差很少。老老實實說不知道了……
如今想了想,這個題目那份資料裏面好像也有提到過,可是……我沒記住!!!
三、ListView和RecyclerView的比較,ListView沒用了嗎?
說了實現效果,代碼、緩存方面、ViewHolder的差別,講了一下RecyclerView在多個Fragment中有相同Item時的優越性。
ListView這個問題問到我時我差點沒笑出來……我看了微信團隊對於卡包界面是否要更新爲RecyclerView的一篇文章,建議背誦全文……
四、Service和AsyncTask對比。
由於AsyncTask因爲不使用匿名內部類方式極可能出現內存泄露問題,因此本身不使用,基本都是開線程池。而後面試官問AsyncTask底層,也就說了一下handler+線程池。
如今回想,有這麼幾個點:生命週期方面;消息傳遞方面;底層實現方面。
五、線程通訊機制。
handler、信號量、互斥量、臨界區管理synchronized之類的、共享變量volatile。
六、Android進程通訊機制。
AIDL、Binder、共享文件。
前兩個沒啥說的了,老特長了。
說一下共享文件,這個我原本以爲很low,可是最近研究SharedPreference的時候,發現若是APP簽名同樣的話,可使用同一個SharedPreference,因此也就說了共享文件。我不是想表達我用共享文件做爲進程通訊方式,我只是想說我瞭解SharedPreference。
七、ArrayList和Vector對比……不會Vector,那麼ArrayList和LinkedList對比。
底層,數組,鏈表。擴容問題,我歸納了一下全部的集合類的擴容方式都是裝載因子+當前容量+須要擴容容量。
我說線程安全的List有CopyOnWriteArrayList,可是面試官沒有往下問。
八、爲何擴容不少狀況下都是擴容爲兩倍?
這個不會,可是說底層代碼不少狀況下擴容都是移位操做進行的。可能和查詢相關?
九、HashMap和HashTable對比,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,並且鎖的時候是鎖數組,併發的粒度很大。
ConcurrentHashMap用的是分段鎖並且有一個:判空+判相等+CAS+synchronized的一個鎖的過程,因此很強大。
十、CAS相關。
十一、知道優先級反轉嗎?
不知道……回去研究去……
十二、TCP三次握手四次揮手。
主要思路是經過SACK和全雙工來總體講解。
1三、代碼,如何判斷兩個鏈表是否相交 。
我最開始想成了找到第一個相交結點,而後說了思路,面試官說有沒有更好的。而後直接判斷最後一個結點是否相等。面試官說若是有環呢,那隻能用HashSet存一下了。
1四、反問。
問了下面試官是什麼事業羣。
說是PCG平臺,感受本身應該是被PCG撈起來了。
後面就問了一下公司的一些不疼不癢的問題。
總結
總體答得還能夠,就是覺得是2點面試,結果3點30才面上,多是我記錯時間了。狀態沒有調整到最好。
二面
0、自我介紹。
一、hashCode和equals方法。
二、HashMap,hash衝突解決,紅黑樹相關。
三、String、StringBuilder。
面試官問String的加法
String a = "a"+"b"+"c"; StringBuilder sb = new StringBuilder(); a = sb.append("a").append("b").append("c").toString();
這二者效率差異,我說沒差異啊,第一種String的加法被編譯器優化成第二種,他不信我……不過還好,最後達成共識面試官面試完本身去查。
如今覆盤以爲面試官應該想問的是這種狀況:
String a =""; a+="a"; a+="b"; a+="c";
我仍是對的。
四、wait、notify。
問是否是隻能在有鎖的狀況下wait和notify。
[圖片上傳失敗...(image-1692c4-1602502611210)]
五、線程間通訊方式。
handler那一套。
六、快排原理,最好狀況和最壞狀況時間複雜度。
最壞狀況逆序n**2,順序狀況個人算法仍是nlogn,問了優化思路。
七、算法題,
用了貪心沒ac,面試官提示快排,沒想明白……
八、思考題,若是我想將一顆二叉樹存入文件,怎麼樣的格式存儲可使得讀取效率最高。
這題是個開放討論題,和麪試官一直在討論怎麼作。
【當時覺得本身涼了,沒想到順利收到了三面的通知】
三面
0、自我介紹
一、實習工做深挖
二、RePlugin原理深挖,其餘插件化框架對比
三、爲何要選擇RePlugin框架
四、你以爲本身對於Android掌握到了什麼地步
五、看過什麼源碼
六、你爲何要看源碼
七、你爲何要寫博客
八、知道哪些著名開源框架
九、什麼是進程,進程調度算法
十、什麼是線程
十一、你以爲什麼是JVM
十二、有哪些線程同步算法
1三、死鎖是什麼,舉個例子
1四、Object有哪些方法
1五、Java異常有哪些,Error和Exception區別
1六、OSI七層模型,TCP、UDP是哪一層,應用層有哪些協議
1七、若是要設計一個大量圖片下載的方法,如何肯定併發量,有哪些指標。
1八、APP間傳遞消息安全嗎?要怎麼作才能安全呢?
1九、廣播怎麼分類
20、自定義View重寫的關鍵有哪些,onLayout和onMeasure區別
2一、Android有哪些動畫,MotionLayout講一下。MotionLayout使用場景。
2二、Activity四種啓動模式,SingleTask和SingleTop的使用場景
2三、一些Framework層的問題,不太會因此記不得了。
當時收藏一位B站UP主的視頻,有須要能夠去看一下
2四、你爲何想了解Framework層知識。
2五、算法題。
2六、你對於咱們的Offer的態度
2七、閒聊
總而言之,Android開發行業變化太快,做爲技術人員就要保持終生學習的態度,讓學習力成爲核心競爭力,所謂「活到老學到老」只有不斷的學習,不斷的提高本身,才能跟緊行業的步伐,才能不被時代所淘汰。
在這裏我分享一份本身收錄整理上述技術體系圖相關的幾十套騰訊、頭條、阿里、美團等公司19年的面試題,把技術點整理成了視頻和PDF(實際上比預期多花了很多精力),包含知識脈絡 + 諸多細節,因爲篇幅有限,這裏以圖片的形式給你們展現一部分。須要的朋友能夠私信我【資料】或者 點這裏 免費領取
還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料 幫助你們學習提高進階,也節省你們在網上搜索資料的時間來學習,也能夠分享給身邊好友一塊兒學習。 領取地址: Android學習PDF+架構視頻+最新面試文檔+源碼筆記