作者:勇闖天涯
當某人順利通過大廠面試時,總會有人認為這是運氣比較好罷了,但他們不曾得知對方之前受過多少苦和委屈,又付出了多少努力一步步去突破這些困境。正是因為他們的努力付出,在合適的時間與地點,用自己付出的成果牢牢找抓了自己的機遇。遇到機遇這可以說是運氣,能不能抓住這還得看你自己的實力。
廢話不多說了,直接來說說我最近的面試經歷吧。我投簡歷的公司有很多,基本都收到了面試通知的邀請,其中有讓我心血沸騰的簡歷,也有讓我感到失望到無助的經歷,于是我將這些經歷都記錄下來了,細想之后很值得,面試了這么多家公司,要是到最后什么都沒有留下來,那就白白浪費了這么多的時間。至少對我來說將一些好的經歷與差的經歷進行整理總結,最后肯定能等到我想要的答案。希望這些能給想換工作的大家提供幫助。
離職原因
公司裁員的時候我們老大對我說:你留下來好好干,后面不管公司怎么分股份、期權、肯定不會少你。當時我很信任老大,跟著老大一起干感覺就是一種享受。
但是沒有想到公司裁員后,公司內部動蕩很大,主業務線從客戶端A業務線轉移到B業務上。我主要負責的是A客戶端的架構,于是我閑下來了。B業務線那邊很忙,沒時間配合我做一些架構上的事情。于是我每天就在腦補的查看各種學習文檔,補充知識點能量。
做了幾天后,后悔自己當時沒有那 N+1 走人,有種被老大忽悠的感覺。因為后面發生的是我就暫且不講了。只怪本人經歷尚淺,看不清一些大的趨勢,還是老鳥們聰明,拿錢走人,然后換一個新工作,好不自在啊。
沒過多久我就離職,開啟了我的面試之旅~
面試分級
我在家休息了一周左右的時間,給自己簡單的放松了一下。休息完后就開始了投遞簡歷(世界那么大,我想去看看)。這次看機會與以往不同,我決定先想好好的準備一番,然后開始投遞簡歷,主要通過的是朋友內推,Boss直聘。
這次看機會我將所有公司分為三類:
1.A類: BAT公司,非常靠譜,各項待遇都是很優厚的
2.B類:一些知名的互聯網公司(基本都在C輪以上),基本很靠譜,該有的都少不了
3.C類:就是那些正在招聘的公司,沒啥名氣,雖然錢多但是事也多。靠不靠譜真還不知道,只能碰運氣
基礎很重要
以前自己一直覺得從事 Android 開發工作都好幾年了,去面試基礎問題應該沒什么問題。正式因為自己傲嬌的自信,導致自己總是碰壁,尤其是遇到很多基礎性的提問,一時尷尬的不知道怎么回答?還有一種情況就是,一些問題面試前都記得很準確,但到我回答的時候,卻怎么也打不上了。
于是在這次面試前,我在網上收集整理了一些 Android 開發相關的學習文檔、面試題等進行了復習學習。還把自己之前做過的一些項目中遇到的問題進行了回顧,并找到了相應的解決方案。心想這次應該沒有那么尷尬的碰壁了吧。
為了方便以后能夠利用空余時間進行查閱翻閱復習,我特此整理在該筆錄里面了,如有需要參考的可以直接去我 https://qr18.cn/CgxrRy
訪問查閱。
剛踏入架構師之路的經歷
這次我給自己的規劃是做一個架構師,但是我深知架構師可不是鬧著玩的,必須要有很強的一面,因此我在簡歷里面寫的只是“架構師方向”。我在K公司 做得是架構師方向,因此我覺得有必要朝著這個方向發力,雖然現在不是很厲害,但是堅持一兩年后,即使不是非常厲害,但是也距離非常厲害很近(這里使用了《孫子兵法》的一句:“求其上,得其中;求其中,得其下,求其下,必敗。” )。
這個想法來源于在K 公司我第一任leader曾經跟我說過的話:『對于新東西,如果你覺得掌握了,但是不應用到項目里面來,是沒有什么意義的,時間長了還是會忘記的。』我很慶幸我有一個好老大(我是屬于雙領導型的,K 公司 A項目的負責人是我的leader,但是我的直接匯報對象是 K 公司的副技術總監,下文就成為老大),用他的話來說就是經常踢著我的屁股走。
當我在網上了解到很多實用的新技術時,跟他隨意吐露一句話,他就能非常用心的傾聽我的想法,并鼓勵我將這些東西帶入到項目中來。從那以后我就開始看很多新技術,感覺合適的會引進到我們的項目中。從之后的證明中來看,是非常有價值的。
面試經歷
A公司一面
- 自定義view
- Handler機制
- 組件化和插件化
- HashMap的源碼
- retrofit和okhttp的源碼用到了哪些設計模式
- NDK靜態庫和動態庫編譯流程
- openGL渲染模式
- Android中的動畫有哪些它們之間的區別
- 談談mvvm
A公司二面
- 講之前做的項目負責哪塊,根據業務采用什么架構
- 使用過哪些設計模式,項目中遇到哪些棘手的問題,如何解決的。
A公司三面
這個是hr說,整體問下以前公司的情況等問題
感受:自己簡歷上寫的東西要熟悉,基本面試官都是根據簡歷來問的。對自己以前做的項目也好好梳理,提前組織好語言,挖掘項目閃光點。
B公司一面
- java引用,以及引用隊列,以及使用場景
- 拆裝箱
- LeakCanary
- map
- 線上性能監控
- SharedPrefrence 遇到的問題
- 手寫算法
B公司二面
- Handler
- 進程間通信
- 序列化
- 動畫
- native崩潰捕獲原理
- 結合項目提問
- Recyclerview的點擊事件原理
- 啟動一個空的apk,回啟動幾個線程
- 手寫算法
B公司三面
- 跳槽原因
- 原來公司規模
- 預期薪資
- 個人優勢
感受:
1.簡歷上寫的一定要了解,并且知道原理
2.多熟悉項目,找出一些能聊得功能點
3.崩潰捕獲,以及解決(java ,native)
4.優化需要知道(大廠都會問)
5.了解由點到面,需要把知識連貫起來
6.還有如果想要高薪,一定要多跳槽,一般大廠工資漲幅都是有限度的,最高漲幅百分之30,除非你特別牛皮
C公司一面
- MediaCodec連環炮:MediaCodec報錯,只有錯誤碼,沒有任何其它信息,如何解決?使用MediaCodec遇到了哪些問題?同步使用和異步使用有什么區別?
- 如何計算音頻幀,一幀音頻幀有多大
- YUV基礎知識,相比于RGB減少了多少空間,YUV 各個分量都是0實際渲染出來是什么顏色的,NV21和NV12有什么區別
- MP4是如何存儲音視頻文件的,它是什么結構
- OpenSL 相關的問題,如何使用。可以干什么不可以干什么
- 結合項目問題
C公司二面
1.SurfaceView和TextureView區別
2.OpenGL ES相關問題,MVP矩陣左乘和右乘有什么區別,什么是外部紋理,為什么叫外部
3.OpenGL如何渲染一個View
4.VBO是用來干嘛的解決什么問題
5.結合項目問問題
C公司三面
1.項目是什么架構,如何設計的,為什么這么設計
2.算法題:字符串反轉
3.平時如何學習的
感受:音視頻開發感覺OpenGL ES問的比較多
D公司一面
1.問的項目中哪些用到了hook技術,是怎么實現的
2.Okhttp底層原理
3.點擊應用圖標的啟動流程
4.hashmap在java7和java8的區別,為什么要引入紅黑樹
D公司二面
1.項目是怎么搭建的,用到了哪些技術點
2.arouter用到了什么技術點,是用來解決什么問題
3.socket底層原理
4.一個功能是如何從分析需求到落地的
5.如何帶領團隊的
感受:主要簡歷要寫的好,盡量圍繞簡歷上的點來刷面試題,不一定都要研究透徹,被問到自己不熟的點,可以盡量嘗試著往自己熟悉點帶,例如之前我被問到pms是怎么管理package信息的,我就說目前我對pms了解不深,主要也是研究了ams,然后就把自己了解的說一下就好了。
總結
先說再投簡歷前,首先要對自己的簡歷進行優化,簡歷中填寫的一些項目經歷要熟悉。還有就是在面試前期要復習好基礎知識點,不要像文章前面說的,等到被提問是自己回答不上來,那就真的尷尬了!!!
最后跟大家分享一下我這面試前期進行收集整理復習的一些 Android 開發相關的學習文檔、面試題、Android 核心筆記等等文檔,希望能幫助到大家學習提升,為了方便以后能夠利用空余時間進行查閱翻閱復習,我特此整理在該筆錄里面了,如有需要參考的可以直接去我 https://qr18.cn/CgxrRy
訪問查閱。
祝想找工作換工作的小伙伴們都能去自己心儀的公司,前程似錦!