2020年底狂歡總結,月薪30K的BATJ大廠面試筆記解析:技能面+HR面

2020面試20家公司後的幾點建議

1.簡歷要如實寫,相關的知識點一定要爛熟於心。

2.基礎紮實,android和java相關的知識樹網上有很多資料,看過但讓你講出來未必能說的好。

3.提前總結,你還擅長什麼其他技術?這種開放問題要看知識面了。

4.學會提問,你有什麼問題要問我嗎?這種禮貌性問題也是一個瞭解對方的好機會。

5.良好的心裏素質,無論遇到什麼情況,面試官遲到、面試官態度冰冷說話不客氣、質疑你的回答等等各種問題都不要慌也不要排斥,一定要沉住氣,耐心積極的思考並回答對方的提問。

6.推薦幾本書,也是好幾次面試後發現裏面涵蓋了大部分答案。《Android開發藝術探索》《Android源碼設計模式-解析與實戰》《Android進階之光》《深入理解Java虛擬機》,多看幾遍。

大廠的面試流程比較長,面試是一場全面大考驗,如果想換個工作,最好提前充分準備。


面試準備

知識點準備

Android開發給人的感覺是門檻很低,因此有不少人會說Android很簡單,實際上Android開發說簡單也不簡單。簡單是因爲它入門快、上手簡單;不簡單是因爲Android的知識點比較瑣碎,如何從瑣碎的知識點中理解Android工程師的本質並形成一個完整的知識體系,這是不簡單的。

相信不少開發者會有這種感覺,Android的好多知識點自己都知道,但又不是特別懂,這就是碎片化知識未形成一個完整體系的表現。如何對Android建立全面的理解?需要一種有效的學習方式,在學習過程中知道哪些知識點需要深挖、哪些知識點需要融會貫通、哪些知識點了解即可。在這裏Android學科參考衆多學習者和開發者在Android應用層的學習過程,總結了一個適合大多數人的學習路線,整體路線如下圖所示。


領取下載完整版路線圖地址:【點擊我

面試刷題準備

tb:電面一

  • dp是什麼,sp呢,有什麼區別

  • 自定義View,ViewGroup注意那些回調?

  • 界面卡頓的原因以及解決方法

  • android中的存儲類型

  • service用過麼,基本調用方法

  • Handler機制

  • LinearLayout、FrameLayout、RelativeLayout性能對比,爲什麼

  • Activity的生命週期,finish調用後其他生命週期還會走麼?

  • FW層熟悉麼,源碼看過麼

  • GC回收機制熟悉麼,分代算法知道麼

  • Java的類類加載原理

  • 內存泄漏如何排查,MAT分析方法以及原理,各種泄漏的原因是什麼比如

  • Handler爲什麼會泄漏

  • gradle熟悉麼,自動打包知道麼

  • 介紹下先的app架構和通信

  • 自己負責過哪些模塊,跟同事相比自己的優勢是什麼

  • 遇到過什麼印象深刻的問題,怎麼解決的

現場面試:三場

First:

  • 最近都做了哪些工作?

  • 遇到了什麼印象深刻的問題。A:會順着你介紹的項目問下具體實現。

  • 推送消息有富文本麼?

  • 熱修復瞭解麼,用的什麼?

  • apk包大小有限制麼?怎麼減少包大小?

  • 工作中有沒有用過或者寫過什麼工具?腳本,插件等等

  • 比如:多人協同開發可能對一些相同資源都各自放了一份,有沒有方法自動檢測這種重複之類的

  • 寫過native的底層代碼麼

  • view的繪製熟悉麼,介紹下

  • gc相關的算法

  • anr是因爲什麼產生的,怎麼排查

  • 界面上的話,有什麼優化措施麼?比如列表展示之類的,平時遇到過內存問題嗎,怎麼優化的?

  • 平時用過哪些設計模式?

Second:

  • 介紹下最近一年主要做了什麼工作

會對簡歷上突出的技能進行詳情的詢問:

比如:音頻合成的具體步驟,以及遇到的一些問題和細節處理。
會根據面試發散一些問題,問到,seek方法播放到末尾後重新播放會有一些卡頓的不流暢問題,怎麼避免,從交互設計或者技術角度。(個人表示沒怎麼關注這種)。

  • 項目團隊多少人,怎麼分配工作

  • 線程之間怎麼通信的?

  • app的架構是怎麼樣的,並且爲什麼這樣,有什麼優缺點?

  • 算法熟悉麼?給了一個二叉排序樹,出了一個給定節點找到它的下一個元素(指的是大小順序的下一個)的算法題。

  • 在職場工作裏,自己的優勢是什麼

Third:

  • 技術問題不再侷限於簡歷,可能根據簡歷和回答情況漸進並擴散。

  • 感覺各個技術面試官之前並沒有溝通,可能會問到類似的問題

  • 介紹下自己主要負責的工作

  • Activity的生命週期有哪些,知道onRestart麼,介紹下

  • savedInstanceState知道麼,幹什麼用的,什麼時候有值,什麼時候爲空,平時是怎麼用的

  • View繪製熟悉麼,介紹下,能說下是實現原理麼?

  • 平時用過什麼開發工具,分析工具?

  • ANR是怎麼回事?怎麼查?Service會引起ANR麼?

  • Activity的啓動模式有哪些?棧裏是A-B-C,先想直接到A,BC都清理掉,有幾種方法可以做到?這幾種方法產生的結果是有幾個A的實例?

  • 有什麼工具可以看到Activity棧信息麼?多個棧話,有方法分別得到各個棧的Activity列表麼

  • 都熟悉哪些命令?知道怎麼用命令啓動一個Activity麼?

  • SharedPrefrences的apply和commit有什麼區別

  • java裏帶$的函數見過麼,是什麼意思

  • MD5是加密方法麼,Base64呢

  • 有博客和github,主要是寫的什麼?有哪些關注

  • android 10.0 有哪些新特性

  • 差不多就這些吧。。最後每個面試官都會讓你問他問題。

二.NetBase:

  • Canvas的底層機制,繪製框架,硬件加速是什麼原理,canvas lock的緩衝區是怎麼回事

  • surfaceview, suface,surfacetexure等相關的,以及底層原理

  • android文件存儲,各版本存儲位置的權限控制的演進,外部存儲,內部存儲

  • 上層業務activity和fragment的遇到什麼坑??頁面展示上的一些坑和優化經驗

  • 網絡請求的開源框架:OKHttp介紹,寫過攔截器麼

三.Netbase:AI

  • 數據層有統一的管理麼,數據緩存是怎麼做的,http請求等有提供統一管理麼?

  • 有用什麼模式麼,邏輯什麼的都在Activity層?怎麼分離的

  • 如果用了一些解耦的策略,怎麼管理生命週期的?

  • 有什麼提高編譯速度的方法?

  • 對應用裏的線程有做統一管理麼?

  • jni的算法提供都是主線程的?是不是想問服務類的啊

  • 邊沿檢測用的啥?深度學習相關的有了解麼?

  • 上線後的app性能分析檢測有做麼

四.yz:

  • 進程間通信方式?Binder的構成有幾部分?

  • HttpClient和HttpConnection的區別

  • View的事件傳遞機制

  • MVC,MVP,MVVM分別是什麼?

  • Android中常用的設計模式,說三個比較高級的?

  • 內存優化,OOM的原因和排查方法

  • 想改變listview的高度,怎麼做

  • Https是怎麼回事?

  • 除了日常開發,其他有做過什麼工作?比如持續化集成,自動化測試等等

五.DiDi:比較全面

  • ActivityA跳轉ActivityB然後B按back返回A,各自的生命週期順序,A與B均不透明。

  • Synchronize關鍵字後面跟類或者對象有什麼不同。

  • 單例的DCL方式下,那個單例的私有變量要不要加volatile關鍵字,這個關鍵字有什麼用

  • JVM的引用樹,什麼變量能作爲GCRoot?GC垃圾回收的幾種方法

  • ThreadLocal是什麼?Looper中的消息死循環爲什麼沒有ANR?

  • Android中main方法入口在哪裏

  • jdk1.5?SparseArray和ArrayMap各自的數據結構,前者的查找是怎麼

  • 實現的,與HashMap的區別

  • Runnable與Callable、Future、FutureTask的區別,AsyncTask用到哪個?AsyncTask是順序執行麼,for循環中執行200次new AsyncTask並execute,會有異常嗎

  • IntentService生命週期是怎樣的,使用場合等

  • RecyclerView和ListView有什麼區別?局部刷新?前者使用時多重type場景下怎麼避免滑動卡頓。懶加載怎麼實現,怎麼優化滑動體驗。

  • SQLite的數據庫升級用過麼

  • 開放問題:如果提高啓動速度,設計一個延遲加載框架或者sdk的方法和注意的問題。

  • Scroller有什麼方法,怎麼使用的。

  • 分享下項目中遇到的問題

  • webwiew瞭解?怎麼實現和javascript的通信?相互雙方的通信。@JavascriptInterface在?版本有bug,除了這個還有其他調用android方法的方案嗎?

  • ReactiveNative瞭解多少

  • JNI和NDK熟悉麼?Java和C方法之前的相互調用怎麼做?

面試技巧準備

1、之前的薪水有多少?

【參考回答】:在以前的單位,差不多一個月薪水是在1500到2000之間吧,因爲獎金是看績效考覈的,不過我一般情況的薪水都在1800到1900之間。
【解答思路】:之前的薪水可據實以報,切勿寫不實數據,因爲有些公司會去查證,萬一得知所言不實,就可能會喪失工作機會。

2、希望待遇多少?

【參考回答】:剛到公司,還是按照公司的崗位工資我就滿意了,後期我想咱們單位應該是能力與待遇成正比的,對嗎?
【解答思路】:常被問到希望待遇時,最好能誠實回答,考慮年齡、經驗及能力等客觀條件來決定,對某些企業而言,這也是評論應徵者的能力及經驗的參考,一般要求比以前一工作薪水高出百分之十是合理範圍。

3、除了本公司外,還應徵了哪些公司?

【參考回答】:是我離職以來應聘的第一家單位,之前還沒有過求職
【解答思路】:這是相當多公司會問的問題,其用意是要概略知道應徵者的求職志向,所以這並非絕對是負面答案,就算不便說出公司名稱,也應回答“銷售同種產品的公司”,如果應徵的其他公司是不同業界,容易讓人產生無法信任的感覺。

4、何時可以到職?

【參考回答】:如果被錄用的話,可按公司規定時間上班。
【解答思路】:大多數企業會關心就職時間,最好是回答“如果被錄用的話,可按公司規定時間上班,”但如果還未辭去上一個工作、上班時間又太近,似乎有些強人所難,因爲交接至少要一個月的時間,應進一步說明原因,錄取公司應該會通融的

5、你瞭解我們公司嗎

【參考回答】:之前我在網絡上以及朋友的口中瞭解過咱們單位,咱們單位在網絡行業是xxx巨頭,………
【解答思路】:只要畢業生提前做些準備,從多種途徑收集用人單位的信息,這樣的問題就比較容易回答,如果答非所問或張口結舌,場面可能會很尷尬。

6、希望工作地點在哪裏?

【參考回答】:至於工作地點,我會按照單位的需求而定
【解答思路】:這是有數個分公司及營業場所的企業會問到的問題,如果有希望的工作地點,可據實說出來,如:現在雖然希望在某營業場所工作,但也可有“將來還是希望能到總公司服務”之類的要求。

7、你爲什麼應聘我們單位

【參考回答】:有兩點,一是我對這個行業很感興趣,二是咱們單位在這個行業裏屬於領軍式企業,對我吸引力很打。
【解答思路】:畢業生可以從該單位在行業中的地位、自己的興趣、能力和日後的發展前景等角度回答此問題

8、你找工作最重要的考慮因素是什麼

【參考回答】:我覺得應該是發展和提升,再者就是公司的培訓,每個人都有自己的職業規劃和定位,二我的規劃就是在這段時間內無論是外職業生涯還是內職業生涯,我希望都有所發展。
【解答思路】:可以結合你正在應聘的工作,側重談你的興趣、你對於取得事業上的成就的渴望、施展你的才能的可能性、未來的發展前景等方面來談

9、你認爲你適合什麼樣的工作

【參考回答】:我大學的專業是計算機應用,主要學習的是網絡方面的知識,在我畢業以後我又進行了網絡工程師系統的培訓,所以我覺得在網絡方面的工作我會做的很好
【解答思路】:結合你的長處或者專業背景回答,也許單位是結合未來的工作安排來提問,也許只是一般性地瞭解你對自己的評價,不要說不知道,也不要說什麼都行

10、你爲什麼選擇我們公司?

【參考回答】:在幾家應聘單位中我之所以選擇咱們公司,是因爲看重咱們公司在業內的影響力以及咱們公司的實力
【解答思路】:
1、面試官試圖從中瞭解你求職的動機、願望以及對此項工作的態度。
2、建議從行業、企業和崗位這三個角度來回答。
3、參考答案——“我十分看好貴公司所在的行業,我認爲貴公司十分重視人才,而且這項工作很適合我,相信自己一定能做好。”

11、您在前一家公司的離職原因是什麼?

【參考回答】:我離職是因爲這家公司倒閉。我在公司工作了三年多,有較深的感情。從去年始,由於市場形勢突變,公司的局面急轉直下。到眼下這一步我覺得很遺憾,但還要面對顯示,重新尋找能發揮我能力的舞臺。
【解答思路】:
1、最重要的是:應聘者要使找招聘單位相信,應聘者在過往的單位的“離職原因”在此家招聘單位裏不存在。
2、避免把“離職原因”說得太詳細、太具體。
3、不能摻雜主觀的負面感受,如“太幸苦”、“人際關係複雜”、“管理太混亂”、“公司不重視人才”、“公司排斥我們某某的員工”等。
4、但也不能躲閃、迴避,如“想換換環境”、“個人原因”等。
5、不能涉及自己負面的人格特徵,如不誠實、懶惰、缺乏責任感、不隨和等。
6、儘量使解釋的理由爲應聘者個人形象添彩。
7、同一個面試問題並非只有一個答案,而同一個答案並不是在任何面試場合都有效,關鍵在於應聘者掌握了規律後,對面試的具體情況進行把握,有意識地揣摩面試官提出問題的心理背景,然後投其所好。

12、如果我錄用你,你認爲你在這份工作上會待多久呢?

【參考回答】:
A.這問題可能要等我工作一段時間後,才能比較具體地回答。
B.一份工作至少要做3年、5年,才能學習到精華的部分。
C.這個問題蠻難回答的,可能要看當時的情形。
D.至少2年,2年後我計劃再出國深造。
【解答思路】:選擇B最多A次之。B的回答能充分顯示出你的穩定性,不過,這必須配合你的履歷表上,之前的工作是否也有一致性。A的回答則是非常實際,有些人事主管因爲欣賞應徵者的坦誠,能夠接受這樣的回答。

更多面試技巧我都整理好了,需要的朋友自行下載直達領取鏈接:【點擊我,即可獲得!

尾聲

最後,我再重複一次,如果你想成爲一個優秀的 Android 開發人員,請集中精力,對基礎和重要的事情做深度研究。

對於很多初中級Android工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學習效果低效漫長且無助。 整理的這些架構技術希望對Android開發的朋友們有所參考以及少走彎路,本文的重點是你有沒有收穫與成長,其餘的都不重要,希望讀者們能謹記這一點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章