渣渣二本的辛酸面試之路:從深圳外包到杭州螞蟻金服,4年小Android的爬坑歷程

寫在開頭

筆者16年於長沙一個普通二本,畢業後去了滿地都是機會的深圳。第一份工作是一家外包公司,主要業務是電商和電子支付信息安全方面的。一年後跳槽到華潤旗下一個子公司做金融。至今已工作4年。大家都知道,對於跟我一樣沒有名校背景,也沒有大廠出身的程序員來說,面試唯一的加分項就只有某一方面的技術深度了。所以我也建議各位小夥伴也跟我一樣,選擇一個自己感興趣的,或者比較自信的方向,不斷的鑽研深入。

衆所周知,2020年的冬天非常煎熬,疫情肆虐,大批的互聯網公司都在裁員甚至倒閉。年後的金三銀四跳槽季競爭愈發激烈,崗位需求急劇減少,求職者一面難求,能找到心儀offer的人就更少了。所以我並沒有在疫情的風波中着急去跳槽找工作,而是一邊觀望,一邊收集面試素材和麪試真題,沉澱自己,提高自己的核心競爭力。

在剛過去的金九銀十跳槽季,國內疫情已基本 穩定,經濟復甦後,面試壓力也就不那麼大了,我開始投簡歷。我投遞簡歷的順序是按小公司—>大公司的套路來的,深圳的小公司非常多,中大型公司比較少,因此,在這一個多月的面試歷程中,我估算了一下,大概面了6家小公司,2家中型公司和1家大公司。一般我去面比較大的公司之前,我都會先面一兩家小公司預熱一下。

以下是面試中被問到的一些問題

基礎:

1.描述一下Activity 生命週期?
2.A Activity 打開 B Activity 時都有哪些生命週期回調?
3.Activity的啓動模式分別說一下
4.如何保存Activity的狀態或者(Activiy 重啓怎麼保存數據?)
5.橫豎屏切換時Activity的生命週期
6.onStart,onStop和onResume,onPause的區別?
7.橫豎屏切換時的生命週期?
8.Android中的Context, Activity,Appliction有什麼區別?
9.Context是什麼?,一個應用有多少個Context
10.Service是否在main thread中執行, service裏面是否能執行耗時的操作?
11.Android應用程序啓動過程
12.如何保證Service不被殺死?
13.onActivityResult 在哪兩個生命週期之間回調?
14.Fragment的生命週期?
15.Activity和Fragment的區別?
16.簡述下Acitivty任務棧和使用方法
17.請描述一下BroadcastReceiver
18.BroadCastReceiver的生命週期
19.什麼是Service?Service的生命週期?
20.Service的啓動方式?如果啓動方式交織在一起的話,會出現什麼情況?
21.怎麼在Service中創建Dialog對話框
22.Service和Thread的區別?
23.ActivityManagerService瞭解嗎?有什麼作用?
24.廣播的兩種註冊方式有什麼區別?
25.廣播發送和接收的步驟是什麼?原理了解嗎?
26.ContentProvider 是如何實現數據共享的?
27.activity的startActivity和context的startActivity區別
28.爲什麼要用ContentProvider?它和sql的實現上有什麼差別?
29.ListView如何優化?(複用,滑動流暢等)
30.在什麼情況下BroadcastReceiver接收不到廣播?






























Android 中高級

1.TCP的三次握手和四次揮手,爲什麼不是兩次握手?爲什麼揮手多一次呢?
2.如何對Android應用進行性能分析
3.Devik進程,linux進程,線程的區別
4.android應用對內存是如何限制的?我們應該如何合理使用內存?
5.數字簽名的原理
6.Android 源碼中常見的設計模式以及自己在開發中常用的設計模式
7.Android與 js 是如何交互的
8.網頁中輸入url,到渲染整個界面的整個過程,以及中間用了什麼協議?
9.說一下handler機制?
10.子線程如何使用 Handler?
11.說一下你對Handler中ThreadLocal的理解?
12.主線程的 Looper 什麼時候創建的?ActivityThread 的 main 什麼時候調用?
13.Handler中有Loop死循環,爲什麼沒有阻塞主線程,原理是什麼
14.如何優化自定義View
15.如何解決View的事件衝突?舉個開發中遇到的例子?
16.網絡請求緩存處理,okhttp如何處理網絡緩存的?
17.WebSocket與socket的區別?
18.handler postDelay這個延遲是怎麼實現的?
19.hashcode()和 equals()的作用、區別、聯繫?
20.Handler、Looper、MessageQueue、Thread關係?
21.Hashmap如何解決散列碰撞(必問)?
22.Hashmap底層爲什麼是線程不安全的?
23.RecyclerView的ItemView層級過深怎麼優化?
24.怎麼設計Android線程間通信?
25.Bitmap JPG區別 圖像處理:JPG、PNG及BMP的區別?
26.廣播(全局 本地區別)
27.onSaveInstanceState onRestoreInstanceState區別,調用時機
28.Serializable與Parcable的區別?
29.是否瞭解SurfaceView,它是什麼?他的繼承方式是什麼?他與View的區別(從源碼角度,如加載,繪製等)。
30.說下冷啓動與熱啓動是什麼,區別,如何優化,使用場景等。




























面試題集和答案在文末

下面我來結合我的面試經歷來談談不同公司級別的面試難度。

小公司(0-200人)

一般只要你收到這類型公司的面試邀請,只要你能把自己做過的項目架構項目重難點說清楚,還有一些Android基礎知識稍微紮實一點,然後你稍微準備一兩個深一點的技術點,什麼GC機制、基本的熱修復原理說個10分鐘,offer妥妥的,個別公司可能會考一些簡單的算法題和智力題,比如冒泡、查找等等。在深圳這類型的公司三年安卓的價位一般在12-15這個區間,個別有錢的可能上限可以到18,一般都是15左右。至於面試題太常規,這裏我就不多說了,想要看面試題和詳細答案的可以直接看總結部分。

中型公司(200-1000人)

這類公司我面的其實也不是很多,深圳面試那家BL,做外匯金融的(ps:金融業務相關的公司都比較有錢,如果面試過程中面試官表現出對你有興趣,聊薪資的時候你就可以大膽要)我去面試的時候,公司應該是在擴招階段,面試的人很多。問的問題比較廣泛,Java、Android、算法、框架都有涉及到,雖然問的都比較基礎,但是我回答的都會比他問的更深入一點,也許是對我比較有好感,聊了半個多小時後,他叫我稍等一下,然後去叫來了他們的Team Leader。然後問了一些事件分發和繪製流程的細節問題,還問了一些binder的原理性問題,我…基本上能答出來,然後leader就直接問我,期望薪資是多少(一般技術面試官直接問你這個問題了,也就代表這份offer已經穩了)我說:22K。leader笑着說了句:好,說下週會給我答覆。

後來也確實收到了答覆,但是答覆說22k給不了,18k能不能來入職,然後…就沒有然後了。

大型公司(5000人以上)

騰訊

一面之後就沒有音訊了,所以沒有什麼發言權…
面試問的跟其他小公司一樣從基礎問起,但面試官會一步一步往深的問,直到你答不出來爲止,然後下一個點 ,框架、原理性問題和性能優化方面的工作經驗是比較注重的。也不覺得是自己答的太爛,只能說面試者中優秀的人太多,自己不夠亮眼吧

上海嗶哩嗶哩(B站)

B站一面

1.自我介紹
2.treemap、紅黑樹、完全平衡二叉樹
3.快速排序和插入排序
4.個大致有序的數組如何排序,最快時間複雜度
5.如何自定義實現一個FlexLayout
6.RecyclerView的回收複用機制
7.如何實現RecyclerView的局部更新
8.說說對泛型的瞭解,Retrofit中的泛型是怎麼解析的
9.說說對binder機制的瞭解
10.進程的狀態,線程的狀態,兩者有區別嗎
11.synchronized鎖住對象的理解
12.Fragment replace生命週期變化
13.TCP和UDP有什麼區別? 講講招手揮手過程
14.用過C++開發嗎
15.Dalvik和Hotspot虛擬機瞭解嗎?有什麼區別?













B站二面

1.說自己做過最滿意的項目
2.性能優化你做過哪些工作
3.屏幕適配做過哪些工作
4.遇到過哪些坑(困難點),是怎麼解決的
5.如果要你來開發B站的一個頁面,哪一個頁面可以很快入手
6.用過哪些框架?MVVM?Jetpack有入手嗎?
7.用過哪些開源庫
6.熱修復、插件化都用過,遇到過哪些坑?可以講講原理嗎
7.爲什麼想來B站,看哪種視頻多一點,點贊多還是白嫖多
8.你覺得B站APP有哪些可以優化的地方








面試B站可以說純粹是因爲興趣吧,大學時期就一直用B站的APP,學習娛樂都是非常不錯的地方。因爲要去杭州面阿里,所以在上海朋友那裏玩兩天,順便面阿里之前試試B站預熱一下,一面二面是緊接着面的,邀請我三面的時候,我已經離開上海去了杭州,就沒有後文了。

螞蟻金服

實話實說,螞蟻金服是我內推面試的,之前投過簡歷,但是沒有收到面試。
這次面試難度總的來說中等偏上,面試過程跟騰訊的差不多,也是從基礎往深處問,問到你答不出來爲止。還問了一些安全性問題,因爲我前幾年的工作也是做金融的,所以相對來說比較輕鬆些,也正因如此纔來了螞蟻金服。其他注重的就是架構技術,設計思想,還有第三方庫的一些掌握使用這些。
技術面試過後,hr會跟你談薪資,衆所周知,阿里的福利待遇是很好的,月薪18k,也算不錯的。

期間也內推面試過百度、華爲、字節、美團等公司。但是百度和華爲對學歷都有較高的要求,所以並沒有拿到面試機會。字節、美團傾向於招5年以上的技術專家,所以也沒有成功。

面試複習筆記:

這份資料我從2020年春招開始,就會將各博客、論壇。網站上等優質的Android開發中高級面試題收集起來,然後全網尋找最優的解答方案。每一道面試題都是百分百的大廠面經真題+最優解答。包知識脈絡 + 諸多細節。節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習。

由於篇幅原因,下面以截圖展示部分內容。如有需要以下完整學習筆記PDF,可以點贊+評論支持下打工人老弟,點擊這裏即可免費自取

正文總共分爲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開發的朋友來說應該是最全面最完整的面試資料,爲了更好地整理每個模塊,我參考了很多網上的優質博文和項目,力求不漏掉每一個知識點。很多朋友靠着這些內容進行復習,拿到了BATJ等大廠的offer,這個資料也已經幫助了很多的安卓開發者,希望也能幫助到你。

由於篇幅原因,如有需要以上完整學習筆記PDF,可以點贊+評論支持下打工人老弟,點擊這裏免費自取

感謝您閱讀這篇文章,如果可以收到您的點贊,那是將使我非常榮幸,希望我們可以成爲朋友,一起分享交流Android技術。

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