LZ-Says:真是人生如戲,夢如人生吶。
一、前言
驕陽似火,烈日當空。
這是 LZ 面試的天氣最真實的寫照。
汗如雨下,汗流浹背,渾身黏的難受。
這是 LZ 面試最難受的地方。
96 年老鼠一枚,自認為年少輕狂,為時尚早,而今,真正被現實打醒了。
好吧,感謝大家耐心檢視 LZ 以上的廢話,開始進入正題了。
二、面試經歷
6 天,21 家公司赴約參加面試,感覺被扒了一層皮,So tired。
首先簡單介紹下 LZ,LZ 不是大神,只是一名普普通通的小白,小菜鳥。
LZ 是一枚 96 年 Android 鼠,曾經自認為 I Love Android,enmmm,Android 不愛我。
非本科,非專科,只是一名光榮的未持證上崗的小獸醫。enmmm,目前報名了成人函授本科,啦啦啦~~~
從 14 年 9 月參加工作至今,都是屬於野路子,野蠻生長,很是慶幸自己還能堅持到現在,依舊搞 Android。
下面簡述 LZ 面試中面試官提問的問題,希望會對各位有需要的小夥伴有所幫助。
2.1 某電商公司
- 熟悉 Kotlin 麼?請簡述你所瞭解的。
- 圖片優化怎麼做的? (問了好多次)
- 圖片適配怎麼做的? (問了好多次)
- 基於 UI 提供的 IOS 尺寸圖,如何做到相容 Android 各個解析度?
- 效能優化,具體做了哪兒些操作?
- RecyclerView 中 onCreateView 以及 onBindView 作用以及執行流程,滑動時又是如何執行的?
- RecyclerView 實現多佈局、複雜佈局思路以及邏輯,包含事件處理。
- 瀑布流如何實現?瀑布流如何實現 item 項之間邊距相同?
- RxJava 理解。
- 如果想倆個介面的資料都返回後進行處理,應該使用 RxJava 哪兒個操作符?
- 列舉熟知的 RxJava 操作符。
- 還使用過 RxJava 實現過什麼效果?
- 輪播圖實現原理。
本次面試,主要是之前沒有經歷過電商專案以及對已掌握的內容沒有更深層次挖掘,另外對其中的圖片部分、RxJava(原理、常用操作符)、RecyclerView 底層以及最常見的輪播圖掌握過於片面,一知半解。
2.2 某辦公 OA
- 簡述 Futtur 以及底部開發使用什麼語言?
- 跨平臺方案瞭解過麼?有關底層實現瞭解麼?
- 熱修復瞭解麼?底層如何實現呢?
- 記憶體優化做過哪兒些操作,具體說明下。
- Apk 瘦身做過什麼操作?
- SVG 圖片考慮過麼?為什麼沒有使用?
- 記憶體洩漏場景、如何解決以及都使用過哪兒些工具?
- Handler 記憶體洩漏原因。
- Java 中引用型別以及區別。
- App 保活如何實現。
本次面試,掛在了對底層的不熟悉,掌握的太過於片面。不過面試官很不錯,一點點的引導,感謝提供機會。
2.3 某公司
Enmmm,進去一通問,基本沒停過。
- 支付怎麼做的?微信支付以及支付寶支付區別?
- 記憶體洩漏怎麼解決的?
- 記憶體優化怎麼操作的,描述具體內容。
- OKHttp 使用過程。
- 簡述 RxJava + Retrofit 使用。
- App 保活。
- 熱更新如何實現。
- 圖片壓縮方式。比例壓縮會導致圖片質量有問題麼?
- 螢幕適配如何實現。
- 效能優化,具體做了哪兒些操作?
- 圖片載入。
- 如何減少 Apk 大小。 。。。
Enmmm,直接拜拜啦您那~
2.4 某音視訊公司
- 執行緒和程式區別。
- 程式中如何開啟一個執行緒。
- 程式間通訊方式。
- Intent、Bundle 內部如何實現傳遞。
- 演算法瞭解過麼?
- 樹的結構簡要分析。
- 二叉樹瞭解麼?
- 紅黑樹簡述。
Enmmm,全程很是尷尬,最後面試官淡淡說了句,我們要求必須掌握演算法。
Enmmm,秒懂。。。
果斷掛在演算法。。。以及底層。。。
2.5 某谷歌工具
- Service 使用場景以及啟動方式。
- 廣播註冊方式以及使用場景。
- 為什麼進行 Android 逆向反編譯,主要做什麼操作。
- 資料共享做過麼,請描述具體細節。
- App 保活如何實現。
- RxJava + Retrofit 如何使用,請簡述。
- 動態許可權管理。
- 如何實現類似炫彩來電效果。
- 記憶體優化、記憶體洩漏以及 Apk 減小大小如何實現。
Enmmm,面試官小哥哥很 nice,老闆人很不錯,聊得很開心,可惜沒有心動的感覺。Sorry,祝願公司一切順利~ 感謝認可。
2.6 某支付公司
- 做過串列埠開發麼?
- C++ 熟悉麼?
- SDK 寫過麼?
- 底層架構瞭解過麼?
Enmmm,HR 說想要找個會底層開發的。
Enmmm,秒懂。。。感覺有點坑,其實應該早早的溝通好,避免無效意義的面試。
2.7 某 AR / VR SDK 公司
- 做過 SDK 麼?SDK 封裝的重點,要點以及優化。
- AR 以及 VR 區別。
- 螢幕適配怎麼實現。
- 效能優化,具體做了哪兒些操作?
- 對接過底層麼?
- 音視訊瞭解過麼?
- 視訊錄製、預覽、顯示以及壓縮瞭解過麼?
- 圖片拍攝、預覽以及壓縮瞭解過麼?
- 呼叫過 Anroid 感測器麼?
- 哈夫曼演算法簡述。
- Android 外接裝置瞭解過麼?
- 通訊協議以及硬體互動通訊協議瞭解多少?
- 安全方面做過什麼?
- Android 如何控制攝像頭、閃光燈等。
Enmmm,感覺還不錯,可能是因為半年試用以及沒有心動的感覺吧,Sorry,感謝認可。
2.8 某區塊鏈公司
面試過程前遇到一點不愉快,後期被公司的實力折服了。
第一輪面試:
- Http 瞭解過麼,簡單描述。
- Http 底層協議瞭解過麼?
- get、post、delete 等常用方式瞭解過麼?
- Http 通訊協議瞭解過麼?
- 圖片載入使用過哪兒些工具,包含第三方開源工具。
- Glide 3.0 以及 4.0 區別。
- 如何基於 Glide 3.0 實現圖片載入進度顯示。
- png,jpg,webP 以及 svg 區別。
- EventBus 瞭解過麼,底層機制是什麼?
- 圖片優化怎麼做的。
- 大圖載入做過麼,描述思路。
- 首頁包含四個底部 Tab 以及 ABCD 4 個 Fragment,A Fragment 內部包含 ABCD 4 個 Fragment,內部需要動態載入資料,如何實現?
- Handler 機制。
- 執行緒間通訊。
- 快取池、執行緒池瞭解過麼?實現原理。
- OkHttp 快取內容是什麼?
- Maven 以及遠端依賴地址區別。
- 區塊鏈瞭解過麼?
第二輪面試:技術總監
- HashMap 機制以及 put 資料時內部如何實現?
- HashMap 如果新增資料時,Hash 值衝突內部怎麼解決?
- Java 中的 GC 機制以及內部使用演算法簡述。
- Android 如何形成一個 APK,請簡述過程。
- 為什麼要將 java 檔案轉為 class 檔案。
- Tcp、Socket、WebSocket 使用過麼。
- Http 底層架構瞭解多少。
- 通訊協議瞭解多少?
- Android 逆向原理。
- Android 各個版本之間差異。
- 所經歷公司哪兒家收穫最大,請說出原因。
- 你覺得你擅長什麼?
- 演算法瞭解多少?
- 職業規劃怎麼想?
Enmmm,雖說面試前遭遇了一絲絲不愉快,但是公司環境不錯,大佬很 6,挺喜歡,高階霸氣上檔次~
2.9 某坑公司
- 做過 TV 應用麼?
- Activity 生命週期以及生命週期作用。
- 系統保活。
- Service 如何啟動 Activity?
Enmmm,問了下薪資,然後直接拜拜了。。。
蛋疼無比。。。麻煩貴司 HR 小姐姐看好簡歷在傳送邀請函,或者說前提溝通確認好再傳送好嗎?大熱天的跑的,enmmm,扎心。也怪自己沒提前看清楚。
2.10 某鍵盤公司
- 請說出快取池中關鍵幾個引數。
- 正式包與測試包區別。
- 程式碼混淆,應該混淆哪兒些檔案,哪兒些檔案不能混淆,為什麼?
- RxJava 瞭解多少?還用 RxJava 做過哪兒些東西?
- 多執行緒使用注意要點。
- HashMap 原理。
- 螢幕適配以及許可權處理。
- 有沒有在其他裝置上遇到坑,比如小米手機拍照。
- 記憶體洩漏怎麼解決。
- 元件化了解多少?
- 效能優化怎麼操作,使用過什麼工具?
- RxJava 舉例操作符以及作用,執行緒切換使用哪兒個操作符?
- RxJava 中 subscribeOn 和 observeOn 兩個操作符區別。
- Http 協議、Http 基於什麼實現以及請求規範是什麼?
- Token 使用場景。
- 如何確定使用者異地登陸。
- 極光推送失敗時如何處理。
Enmmm,望京 SOHO,幾乎快乾到最高一層,要求手寫元件化,短板一個,八成完犢子了。
2.11 某教育公司
- 泛型意義,Android 中有哪兒些 API 使用了泛型。
- ScrollView 包含一個 Button,請問當 Button 被點選時事件如何傳遞,按住 Button 滑動時事件又是如何分發的?
- 排序演算法瞭解多少?
- 快速排序底層原理簡單描述。
- 二叉樹簡單描述。
- 紅黑樹簡單描述。
Enmmm,公司看的不錯,高階大氣上檔次。感覺有點抓不住面試官的思路,也可能自己對所掌握的知識太過於的死板,不能達到活學活用吧。
2.12 望京 SOHO 某坑公司
9.30 面試,到了等半天,差不多十一點多 HR 過來簡單問了點基本問題以及瞭解基本情況。 Enmmm,然後用人部門過來,簡單問了問之前如何對接支付然後說學歷不行。 然後說幫忙問其他部門需要麼,結果,Enmmm。。。 無奈,GGG。。。
小姐姐,下次能認真點麼?地鐵費也很貴的呢~!!!
對了出來的時候還遇到一個貴婦人,據說要給我內推 JD 金融,問學歷是不是 211 / 985,然後 GG 了,哈哈。
2.13 某軍工通訊公司
- SDK 做過麼?請描述 SDK 開發過程中注意的要點。
- Http 協議以及其他通訊協議瞭解多少?
- 為什麼不能在子執行緒中例項化 Handler?
- AsyncTask 內部機制。
公司離得比較遠,不過薪資待遇還不錯,可惜沒找到心動的感覺,Sorry。
2.14 某某金融集團
- 底部導航如何實現,請說出手寫和第三方開源庫區別。
- 自定義 View 瞭解過麼?請簡單描述。
- Fragment 切換方式。
- Fragment 懶載入實現。
- 圖片載入與優化。
- 使用過哪兒些開源框架?
- 效能優化如何實現?
- 有沒有觀察過 App 手機所佔記憶體。
Enmmm,感覺不是很爽。
名兒挺好聽,就好比 LZ 之前廊坊帶的公司,某某集團,結果,感覺不是成心招人。遂,拜拜了您吶~
2.15 某社交公司
面試小哥哥:
- 變數的作用域區別,預設不寫是哪兒種?
- 全域性變數和區域性變數區別。
- String 是執行緒安全的麼?執行緒安全應該使用什麼?
- HashMap 底層原理。
- List 底層原理。
- ArrayList 和 LinkList 區別、優劣勢以及底層操作原理。
- 棧和堆區別。
- Java 中 GC 機制簡述,包含其內部使用演算法。
- Java 中設計模式瞭解多少?常用的場景有哪兒些(你一般在哪兒些場景使用)?
- 請簡述單例模式。
- 請簡述觀察者模式。
- 觀察者、被觀察者以及訂閱作用是什麼?觀察者和被觀察者關係是什麼,n 對多,還是?
- A 是被觀察者,B 是觀察者,B 發生改變時,他倆之間的執行順序是什麼?C 也是觀察者,此時被觀察者發生改變,執行的順序又是什麼?
- 執行緒池和快取池瞭解多少?它們之前的優勢又在哪兒?
- 你是如何實現快取池的,請說出實現思路以及其中關鍵引數。
- Activity 生命週期、每個生命週期作用以及在專案中會在哪兒些狀態下進行哪兒些操作,例如在某某中進行資料快取等。
- Activity 啟動模式、啟動模式區別以及適用場景。
- 假設現在有 A,B 兩個 Activity,A 跳轉 B,此時生命週期如何呼叫?從 B 返回 A,此時又是如何呼叫?
- Service 簡述、啟動方式有幾種,區別在哪兒?在專案中哪兒塊用過,怎麼使用的?
- 廣播使用,靜態註冊和動態註冊區別,以及倆種註冊方式使用場景。
- ContentProvider 如何實現資料共享,原理是什麼,如何操作?請簡要說出實現步驟。
- Handler 實現機制原理。
- 請簡述 Volley、OKHttp 以及 RxJava + Retrofit 之間區別。
- OKHttp 底層原理了解多少?
- 請簡述 Lru Cache 演算法。
- 圖片壓縮如何實現?
- 圖片載入使用過什麼?
- Gilde 3.0 和 4.0 區別。
- Gilde 內部原理看過麼?快取機制如何實現?
- RxJava 操作符瞭解多少?
- map 作用,concat 作用。
- MVC、MVP 以及 MVVM 區別。
- SQLite 使用過麼,第三方的資料庫使用過哪兒些?
- 執行緒間如何通訊,多執行緒實現原理以及多執行緒時需要注意的要點。
- 自定義 View 以及 自定義 ViewGroup 區別。
- 記憶體優化、效能調優等等等。
- AS 開發過程中安裝的外掛有哪兒些。
- 手寫氣泡排序以及單例模式。
有些記不清了。。。
技術總監:
- 說說 Java 為什麼能跨平臺。
- 列舉作用以及用法。
- 不使用列舉,自定義一個類實現列舉效果,怎麼實現,說一下大概思路。
這家面試官小哥哥感覺不錯,技術總監感覺不是很靠譜,不過,說得事後想想還是蠻有道理。只是 LZ 一直野路子,之前只是為了工作而使用,而沒有去考慮內部底層實現原理。
2.16 剩下其餘的公司
其實問的都差不多,可能很多方面都是更偏向於貴司業務或者其他方面,接到一些 offer,但是由於個人原因還是拒絕了,Sorry,感謝認可。
2.17 Bear 提供面試大綱
- Handler 訊息轉遞機制,為什麼 Loop 一直在死迴圈而 UI 介面不會卡死?
- 資料庫多執行緒併發問題。
- 網路層的重構為什麼不用 AskTask。
- OKhttp 的原始碼,任務連線池是怎麼複用的,說一下各個攔截器的順序以及做了哪些東西。Cache Lru演算法瞭解一下。
- Glide 的快取。
- APK瘦身做了哪些?要具體來實踐一波。
- 執行緒間通訊方式。
- Recyclerview 的 4 級快取。
- App 啟動流程。
- Binder 。
- 自定義 View。
- Okhttp 原始碼。
- Retrofit 和 Rxjava。
- HashMap。
- 事件分發機制。
三、比較好的面試資料
Enmmm,針對以上內容,個人找了一些面試題,也算是儘自己一點微薄之力吧~
Enmmm,祝願各位老鐵都可以找到滿意的工作~
3.1 前輩的面試心路
- 最接地氣的 Android 面試總結心得:www.jianshu.com/p/d800165da…
- 我所經歷的Android面試:www.imooc.com/article/245…
- 震驚!這年Android面試的那些套路:www.jianshu.com/p/c3965e82b…
- Android面試經驗分享,一舉拿下百度、網易、美團、小米 offer 面試經歷:android.tedu.cn/workplace/2…
- 面試完 BATTMD 等數十家公司,我想談談關於 Android 面試那些事**(收費)**:xiaozhuanlan.com/topic/59612…
3.2 比較不錯的面試題
- Android 2017 - 2018 最新面試題(3-5年經驗個人面試經歷):blog.csdn.net/huangqili13…
- 2018 年 Android 面試題含答案--適合中高階(上):www.cnblogs.com/huangjialin…
- 2018 年 Android 面試題含答案--適合中高階(下):www.cnblogs.com/huangjialin…
- Android 面試題含答案 適合中高階:www.apkbus.com/blog-873055…
- Android 陽哥面試寶典 3.0 pdf 文件:連結:pan.baidu.com/s/1aXXbBdVr… 密碼:e4d3
- Android 面試系列 2018 總結(全方面覆蓋 Android 知識結構):blog.csdn.net/clandellen/…
其實個人感覺,面試題都差不多,可能就是多看多瞭解,多去理解,說出自己的見解,勇於和麵試官進行溝通,以方便深入瞭解。
而且很多時候,在工作中使用的過程中要多去=考慮考慮其內部,多問幾個為什麼。
最後嘛,因為 LZ 自身原因,暫時無緣 BATJ 等一梯隊或者二梯隊面試,暫時不能提供更有效的建議咯。
3.3 Java 部分
- HashMap 深度解析(一):blog.csdn.net/ghsau/artic…
- HashMap 深度解析(二):blog.csdn.net/ghsau/artic…
- HashTable 和 HashMap 的區別詳解:blog.csdn.net/fujiakai/ar…
- Java 容器類原始碼 ArrayList 的最全的原始碼分析:blog.csdn.net/ljcITworld/…
- Java GC(絕對乾貨):yq.aliyun.com/articles/91…
- 記憶體溢位和記憶體洩漏的區別:blog.csdn.net/buutterfly/…
- 設計模式 | 菜鳥教程:www.runoob.com/design-patt…
- Java 教程:www.runoob.com/java/java-t…
3.4 Android 部分
簡單分類,簡單記錄,搜尋比較好的文章,以供大家查閱。
3.4.1 Android 基礎部分
- 2018年安卓巴士最新Android入門教程:www.apkbus.com/book/cover.…
- Material Design 學習:blog.csdn.net/column/deta…
網上基礎教程太多了,琳琅滿目,索性直接貼出 Bus 最近新推出的教程吧,簡單有個瞭解。
3.4.2 Android 第三方使用
- 賀賀逆向路(簡單實際):blog.csdn.net/column/deta…
- Data Binding 基礎篇:blog.csdn.net/u012400885/…
- Data Binding 進階篇:blog.csdn.net/u012400885/…
- Data Binding 高階篇 - 簡單閱讀原始碼:blog.csdn.net/u012400885/…
- 騰訊 Bugly 學習瞭解:blog.csdn.net/u012400885/…
- 極光推送使用心得以及記錄:blog.csdn.net/u012400885/…
- 玩轉 GreenDao 3.2.2:blog.csdn.net/u012400885/…
- 初識 ButterKnife (8.5.1) 及簡單運用:blog.csdn.net/u012400885/…
3.4.3 框架原始碼解析部分
- Glide 3.7.0 最全解析**(郭神出品,必屬精品)**:blog.csdn.net/column/deta…
- OkHttp 3.7 原始碼分析:yq.aliyun.com/articles/78…
- EventBus 原理原始碼分析和使用:blog.csdn.net/hua63115087…
- 這可能是最好的 RxJava 2.x 入門教程:www.apkbus.com/blog-898535…
3.5 雞大精品
雞大的文章都是很 666 的,個人節選以下幾篇,希望大家有所收穫:
- Android 開發相關的導圖收集:www.dajipai.cc/archives/f2…
- Handler 訊息原始碼流程分析:www.dajipai.cc/archives/f6…
- HandlerThread 執行緒間通訊:www.dajipai.cc/archives/af…
- 瞎扯 - 學技術:www.dajipai.cc/archives/75…
- 瞎扯 - 表達:www.dajipai.cc/archives/9f…
3.6 收集的一些簡歷模板
可以淘寶一塊錢買個 500 丁的一天會員,直接寫完匯出 PDF。
下面附上個人收集的部分簡歷模板,感興趣的可以下載挑挑:
連結:pan.baidu.com/s/173acrwNR… 密碼:htvf
四、面試心得
第一條心得:
永遠不要沉浸在溫水區,適當的折騰折騰自己,去看看外面的世界。
第二條心得:
一定要追求程式碼的高質量,高效能,一定要多去看原始碼,從原始碼的思路出發。
第三條心得:
工作中涉獵到的技術點,一定要深究底層,哪兒怕是簡單深入瞭解也要比只是簡單會使用要強很多。
第四條:
一定要多結實大佬,大佬的點滴都能讓我們受益匪淺。
第五條:
面試簡歷上寫的東西,一定要自己掌握了,目前還是少寫精通,否則面試官會問到你底褲沒得。
第六條:
面試時,一定要自信一些,多去和麵試官進行交流溝通,畢竟有些面試官喜歡問自己擅長的部分,而且面試官也不缺乏大佬。而且,接 offer 時需要簡單瞭解下公司情況以及業務方向,以免造成無效意義的面試。
六條小心得,衷心祝願各位老鐵能找到自己滿意的工作~!
另外,以上內容是 LZ 簡單整理,歡迎各位補充~~~
五、個人公眾號
不定期釋出博文,感謝已關注各位老鐵理解,謝謝~
本次徵文活動連結:juejin.im/post/5b923a…