斬獲美團和咕咚的offer後,說一說面試和想法~
過去的一週中,我主要是出去找工作去啦~過去的一週,面了 4 家公司,從小到大都有,最終斬獲了 3 個 offer。在經歷了一番內心掙扎之後,我於週二上午決心選擇了福利待遇相對較差一些的咕咚。
主要還是因爲咕咚的面試官給我的印象非常深刻,我很高興能夠加入一家技術氛圍如此淳厚的廠子。
相對較大的公司的話,面試題可能更加具有一定的參考性,所以我就姑且把上週面試的咕咚和美團面試題分享給大家,可能不全,有些問題可能忘了。
咕咚
一面(Android Leader)
- 請舉出你認爲你在工作中挑戰最大的事例;
- RecyclerView 一個適配器如何適配多種佈局,不考慮根據不同 Type 設置不同 ViewHolder;
- 用過數據庫麼?如何防止數據庫讀寫死鎖?
- 可以考慮採用 ContentProvider && 單例實現。
- CardView 真的好麼?除了 CardView 還能用什麼方式實現圓角等?假設我們有上千個 Shape 文件,如何維護?
- 瞭解過 MVVM 麼?它和 MVP 有什麼差距?
- 是否用過 DataBinding?ButterKnife 是怎麼做到佈局綁定的?
- 使用過什麼圖片加載庫,Glide 的源碼設計哪裏很微妙?
- 知道 Linux 的線程間通信麼? Android 爲啥會採用 Binder?Binder 的機制又是怎樣的?
- 講講 AIDL。
- 如何能保證隨時隨地都能拿到一個 Activity 的當前生命週期?
- 會用 Kotlin 麼?
- 可見 Kotlin 自從成爲了谷歌首推語言後,確實還挺重要的,必須學習一下了。
- Android 7.0 都適配了什麼?
- 你還有什麼想問我的?
二面(移動端 Leader)
- 講講 HTTPS 是怎麼做加密的?講講非對稱加密算法。
- Android 8.0 都有些什麼新特性?
- 畫中畫;
- 自適應 icon;
- WebView 增強;
- 通知分類別,增加圓點,通知延後,通知增加背景,同樣增加歷史,通知超時自動清除;
- 自動填充信息(類似瀏覽器的選擇保存的賬號密碼功能)
- 後臺執行增加限制(主要是服務和廣播);
- 藍牙提升。支持藍牙低功耗 5.0 標準;
- 智能文本選擇與智能共享;
- WLAN 感知;
- 取消屏幕縱橫比限制;
- 多顯示器支持;
- 可下載字體、XML 定義字體;
- 自適應 TextView,統一佈局邊框;
- 更豐富的色彩管理功能;
- 可以聲明應用類別。
- 使用過 Gradle 的哪些功能。
- RecyclerView 滑動卡頓,請分析原因,並提供解決方案。TraceView 都能看到哪些成分?
- 操作系統裏面的一個「虛擬內存」是指的什麼?
- 虛擬內存指的是一個對內存和外存進行調度,只是從邏輯上擴充了內存,但實際上不存在的內存存儲器。
- 原理是:基於局部性原理,在程序裝入的時候,可以將程序的一部分裝入內存,而在其餘部分留在外存,就可啓動程序執行;在程序執行時,當所訪問的信息不在內存的時候,由操作系統所需要的部分調入內存,然後繼續執行程序;操作系統再將內存中暫時不使用的內容換出到外存上,從而騰出空間存放將要調入內存的信息。
- Android 是如何做的性能調優?
- 講講適配器模式中適配器是幹嘛的?在開發中都在哪裏有用到?
- 都用過哪些開源庫?
- 會用 KotLin 麼?
- 你還有什麼想問我的?
三面:技術總監
- 爲什麼大多數 API 會選擇短連接而不是長連接?
- 爲什麼會選擇用 RxJava?
- MVVM 模式到底有什麼好處?
- 詳細講講 Android 8.0 新特性。
- Kotlin 學習的怎麼樣了?
- 你的職業規劃是怎麼樣的?
- 你有什麼想問我的?
四面:HR
- 你目前是在職還是已經離職?
- 你爲什麼離職?
- 對咕咚 APP 的瞭解?
- 你是一個自律的人麼?
- 你的職業規劃是怎麼樣的?
五面:CT0
- 先做個自我介紹。
- 你在原來公司發展挺好的,但你爲什麼離職?
- 你們的 APP 採用藍牙協議了麼?
美團
一面(Android 技術)
- 講講你工作開發的項目是幹嘛的。
- 手寫快排;
- 手寫二分查找,並分析時間複雜度;
- 講講 APK 是如何做瘦身的?
- 說說你項目中挑戰最大的一件事。
- 講講 HTTPS 是如何做加密的,說下非對稱加密算法;
- 說一下 HTTP 協議請求頭我們常用的 3 個字段;
- 講講你這個圖片壓縮庫是怎麼做的?
- 進程保活怎麼做?進程拉活現在還可以做麼?
- 用過線程池麼?講講 AsyncTask 的原理。
- 講講 HashMap 的原理。
- 講講 Android 如何做性能調優?
- 你們是如何做 UI 的機型適配的?
- 講講你們的多渠道打包是怎麼做的?
- bugly 是幹嘛用的?Handler 怎麼處理內存泄漏,除了使用弱引用。你還知道哪些地方需要注意內存泄漏?
- Bitmap 使用需要注意哪些問題?Bitmap.recycle() 會立即回收麼?什麼時候會回收?如果沒有地方使用這個 Bitmap,爲什麼垃圾回收不會直接回收它?
- 如何存儲一個大圖,但顯示在 UI 上的是小圖。
- 官方爲什麼會把 HttpClient 和 HttpUrlConnection 替換爲 OkHttp 默認實現?它有什麼好處?
- 你的 GitHub 上都開源了些什麼東西?都爲哪些開源庫貢獻了源碼?ImagePicker 爲啥會出現有些圖片拿不到?
- 瞭解二叉樹的遍歷麼?講一講他們。
- 講講 SVN 和 Git 的差別,Git 的優勢是什麼。
- 講講 MVVM,主要是爲了解決 MVP 和 MVC 的什麼問題?
- equals() 和 hashCode() 的區別是什麼?平時有重寫過它們麼?什麼情況下會去重寫。
- 講下爲什麼在 Android 下推薦使用 ArrayMap,相比 HashMap 它到底有什麼優勢?