關注我的一個讀者,在春招補招中順利上岸,拿到了大廠 offer,我一直在強調:意識 + 打法是努力的前提。
拿到大廠 offer 再回來感謝的人,以及願意分享自己這段經曆的人,都是真正在我文章中受益的,這讓人很暖心。
下面是作者全文,請仔細認真閱讀!
個人背景
先彙報一下戰果,我是某雙非一本智科專業,經過兩年的努力面試來了差不多100次幾乎面試了所有網際網路公司,終于拿到頭條蘑菇街百度小米合合資訊的offer,薪資的話大概是按照我寫的順序排序的,頭條的薪資還是比較誘人的,但是績效的占比會比較高,沒有選頭條的原因主要是因為女朋友的工作找在了杭州,是以選擇了965的蘑菇街,選擇方面的問題看個人權衡吧,我就不多說了。
實習秋招
因為我秋招開始的比較晚很多公司的面試都錯過了,但是仍然面了很多次,尤其是頭條。慢慢的經過超級多輪的面試我的小筆記本也逐漸壯大并且有了自己的體系。腦子裡的知識樹也逐漸清晰了起來。
筆者頭條面試從19年4月找實習開始到最後拿到offer一共面試18次,前兩次基本就是一面挂,一面不挂二面挂。後面就是三面挂,三面又挂,三面雙挂???最後一次終于沒挂哈,但是也看開了。一面挂的時候感覺自己太菜了,還要努力,二面挂的時候感覺自己有進步,還要加油。三面挂感覺...有點可惜,不甘心;三面又挂:不會吧,就這麼沒緣分?三面雙挂:拉倒吧求我我都不去了(默默又找hr内推)。
上面說的都挺輕松哈,但是對當時的我來說,每一次挂都是很大的打擊。是以現在還沒心儀offer的鐵子一定要堅持住嗷。學弟學妹們遇到瓶頸也不要放棄,畢竟我這種傻籃子好好努力都能有offer,你們也可以的。
學習路線
學習路線的話我經過這麼多彎路以及思考大緻總結了一下,不隻是學習路線,也是面試準備的思路:
1.首先Java基礎很重要,需要花時間對Java中資料結構,Java并發,JVM虛拟機等有比較深入的認知。
2.然後就是Android方面的知識,從四大元件到消息機制,到事件分發等等等。
3.多做項目,前提就是前面兩個搞差不多,不然就是照抄代碼,根本不了解。
4.Android的一些開源架構原理,學習這些原理可以提高自己對整個架構的了解,對設計模式的了解。
5.作業系統,計算機網絡。Android崗位來說這部分内容其實是比較少的,應對面試的話0基礎一周也能學會。當然這裡是針對應屆生校招哈,之後要進階的話可能還要對Linux有一定的了解。開發設計網絡架構的話也要對網絡很熟悉。
6.每天做一道算法題,首先劍指offer全文背誦了解,然後再搞其他的。這個東西主要是保持手感,說實話感覺對算法題的了解要是不到一種境界,面試手撕代碼都是運氣占比比較大,面試官問一個你見過的,10秒思路就想起來了,沒見過的五分鐘不見得有思路。
學習大緻路線就是這六點,關于第二點補充幾本書,按順序看即可,期間根據能力做項目拓寬眼界。《第一行代碼》+入門級項目熟練掌握基礎元件+《Android開發權威指南》+接觸Handler,IPC的項目+《開發藝術探索》《Andriod群英傳》+自學RecyclerView(需要很全面,因為很重要),MVVM、MVP架構思想,視訊以及Camera等;雖然還是會有些跳躍,最後我也會盡量詳細地放在簡書上,供大家參考。
說來Andriod的學習并不容易,因為總體來說相較于其他的各個方向,Android的學習資源是比較散的,成體系的書比較少,每一本書之間都有較大的跨度,是以學習Android需要花費的工夫是比較大的,大家堅持就是勝利啊!
面經真題
接下來就到了大家最喜歡的面經環節,因為面試公司太多了我就不按公司分類了,直接按照我的筆記順序從基礎到進階地給大家過一遍。
還是先說一下面試技巧,首先,下面的這些問題都搞明白,搞得清清楚楚,最好每個問題都有逐字稿。
然後就是心态要好,不管面試回答得怎麼樣,保持happy,不會的話也不要慌張,就當是一場夢,醒了很久還是很感動就完事兒了。說不定你今天很陽光,沒說上也很陽光保持求知,給面試官留下好印象,另一個大兄弟沒說上但是慌慌張張的,整個後半場都發揮不好了,你不就過了嘛。
其實大家都是人,招人也不是隻看技術的,技術過關然後性格好對胃口,有一種可以以後做朋友的感覺,哪怕你技術沒那麼全面但是很開朗陽光,和一個極度内向或者傲氣的大牛比較的話我覺得都有很大機會。
好了話不多說開始查漏補缺:
首先,Java方面的話一定要全面,各種資料結構,語言特性,并發操作都要熟悉,而且不僅要會用,還要看看關鍵源碼了解原理。JVM也要了解,因為Android的虛拟機其實和JVM很相似,是以開發中很多技術比如熱更新之類的都和JVM中的一些原理很相似。因為Java相關的面試問題實在太多太廣了我就不一一寫出來了。後續會上傳相關所有的内容。
Android相關:
- 四大元件,背的滾瓜爛熟先,然後注意啟動模式以及場景,四大元件需要非常全面的了解。
- 消息機制:必問!handler原理以及裡面的各種小細節,這個點可以說問的問題太多了,你想象不到的問題
- 事件分發機制,各種情況下的傳遞和傳回。
- 滑動沖突
- 各種Layout差别,性能差别,特性差别
- RecyclerView 這玩意兒太重要了鐵子們,關于這個東西的緩存機制,分段加載,等等問的非常多,直接就能看出來你的實戰經驗豐不豐富
- AsyncTask
- HandlerThread,IntentService
- LruCache:這裡就可以引入LinkedHashMap
- Activity、Window、DecorView、ViewRootImpl、AMS ...這些個東西之間的關系,一定要捋清楚。
- View的Measure,Layout,Draw。這部分内容概念很簡單,但是面試不會問你簡單的概念,都是通過場景來問你怎麼處理,是以結合一定的實踐需要深刻了解。
- IPC通信方法以及Binder機制 重中之重 基本必問,内容很多,大家自行選擇學習方法。
- Bitmap壓縮
- 動畫 動畫這部分也是看你有沒有實戰過的常問問題,被問了幾次都不是正常的概念問題。
- dp sp px
- sharePreferences
Android進階相關:
- Android多線程端點續傳
- 全局異常捕獲過嗎,怎麼搞的
- MVC,MVP,MVVM
- Binder原理,架構
- Activity啟動流程
- 記憶體洩漏優化,布局優化
- 元件化,熱修複熱更新原理
- 權限機制
- RequestLayout/Invalidate差別
- LayoutInflater
- 架構原理:okhttp,Retrofit,Glide,Arouter
計算機網絡以及作業系統:
- 網絡分層
- tcp、udp 重點 常問
- http、https 重點 常問
- DNS 常問 以及各層的常用協定
- 線程程序 重點,包括差別,通信等等
- 記憶體管理
- 死鎖,異步同步等概念
常見的問題就這麼多,主要針對今年要參加秋招和明年春招的想要從事Android開發的學弟學妹們參考,其他就是平常對一些三方庫的使用和原理的了解以及三方庫中整個架構的設計和使用的設計模式以及思想,需要多多積累。
大家也都知道最近大環境不好,找工作屬實不易,要求也越來越高,但是幹這行就得時刻保持學習的狀态,既然選了就盡量奧力給。
那麼就說這麼多,各位加油,江湖見!祝大家都能拿到自己心儀的offer~
面試前的複習路線
多餘的話就不講了,接下來将分享面試的一個複習路線,如果你也在準備面試但是不知道怎麼高效複習,可以參考一下我的複習路線,有任何問題也歡迎一起互相交流,加油吧!
接下來給大家提供一個方向,進行體系化的學習:
總共分為6個部分:
- Java 基礎(★★)
- Java 進階(★★)
- Android 基礎(★★★)
- Android 進階(★★★)
- Android 項目(★★★)
- 項目面試常見問題(★★★)
一、Java 基礎(★★)
- 面向對象思想
- 多态
- 異常處理
- 資料類型
- Java 的 IO
- 集合
- Java 多線程
Java 進階(★★)
- Java 中的反射
- Java 中的動态代理
- Java 中的設計模式&回收機制
- Java 的類加載器
Android 基礎(★★★)
- Android 基本常識
- Activity
- Service
- BroadCastReceiver
- ContentProvider&資料庫
- Android 中的布局
- ListView
- JNI & NDK
- Android 中的網絡通路
- Intent
- Fragment
Android 進階(★★★)
- Android 性能優化
- Android 螢幕适配
- AIDL
- 自定義控件
- Android 中的事件處理
- Android 簽名
- Android 中的動畫
- 網絡協定
- 其他
項目面試常見問題(★★★)
- 開發周期
- 項目中遇到的難題
- 項目中最大的收獲
- 項目是如何上線的
- 項目是如何盈利的
- 繪制項目架構圖
- 項目開發流程
- 你在項目中的角色
- 你負責項目中的哪些子產品
- 講講你負責子產品的具體實作
- 項目中都用到了哪些第三發架構
- 有沒有自己寫過架構
- 業餘時間你是如何提高自己(學習)的
- 有沒有自己的技術 blog
- 你的職業規劃
- 為什麼離職
- 為什麼選擇我們公司
- 說說你們項目的亮點和不足
- 你們的項目是如何保持風格一緻的
- 項目架構是如何搭建的
- 螢幕适配是如何解決的
- 都看過哪些源碼
- 項目版本是如何更新的
- 用的什麼版本控制工具
- 你能獨立開發嗎
- App 跟伺服器是如何互動的
- 需求文檔寫過嗎
- 接口文檔寫過嗎
- 雲伺服器都用過哪些
- 第三方平台都用過哪些
履歷+社招解答+經典HR面試解析
以上是整理總結的Android中進階面試遇到的真題解析,希望對大家有幫助;同時很多人經常也會遇到很多關于履歷制作,職業困惑、HR經典面試問題回答等有關面試的問題。同樣我也搜集整理了全套履歷制作、金三銀四社招困惑、HR面試等問題解析,有疑問,可以提供專業的解答。
Android源碼解析
“程式設計語言是程式員的表達的方式,而架構是程式員對世界的認知”。是以,程式員要想快速認知并學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 了解事物,更重要的:看到源碼背後的想法;程式員說:讀萬行源碼,行萬種實踐。
主要内含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。
對于Android開發的朋友來說應該是最全面最完整的面試資料,為了更好地整理每個子產品,我參考了很多網上的優質博文和項目,力求不漏掉每一個知識點。很多朋友靠着這些内容進行複習,拿到了BATJ等大廠的offer,這個資料也已經幫助了很多的安卓開發者,希望也能幫助到你。