天天看點

2年Android開發面經分享:跳槽網易個人創業失敗後,拿到快手,位元組,百度,美團的Offer之旅

glide如何加載一個gif圖

對于android中記憶體使用中注意的點(圍繞記憶體洩露與記憶體優化講)

mvp,mvvm,mvc的差異性已經适用場景

android apk為什麼不可以在ios上運作,如何設計可以讓其運作?

android系統設計為什麼要用虛拟機不直接執行機器碼?

通過虛拟機運作和直接執行機器碼的差異性其各自的優勢在哪裡?

dalvik和art的差別

native生命周期如何通知到web?

了解android中的anr嗎?

了解android中的oom嗎?

recyclerview中的緩存實作原理

recyclerview中itemdecoration的實作原理

activity,window,windowmanager,viewrootimpl如何看這幾個的關系

廣播動态注冊和靜态注冊的差異是什麼?

android中程序通信的方式,binder的優勢是什麼?

sparyarray和arraymap的實作原理?

使用過koltin嗎?

使用過rxjava和retrofit嗎?

web與native的通訊方式

surfaceview和textureview的差別

surface為什麼要用雙緩沖機制?

bitmap大圖加載的優化政策?

sharepreference的commit和apply的差別

hashmap和hashtable,concurrenthashmap的差别

concurrenthashmap的1.7和1.8版本差異

linkedhashmap實作原理

arraydeque實作原理

java object中有哪些方法?equals和hashcode方法什麼時候會被重寫?

java中悲觀鎖與樂觀鎖,舉例并說明其相關實作?

cas實作原理

synchronized和reentrantlock的實作差異

synchronized對不同方法的修飾,持有的鎖對象的差異

threadlocal實作原理

volatile用法

說一下對于泛型的了解

泛型擦除

什麼情況下不會出現泛型擦除

說一下對于線程安全的了解,java中線程安全與不安全的集合類有那些?

java的垃圾回收機制

jvm中記憶體配置設定機制

java類加載機制

平時項目中對于鎖的應用

java線程池預設提供了哪些類型?分别适合什麼場景?

java線程中interrupt()、interrupted()和isinterrupted()分别代表什麼意思?

動态代理與靜态代理

對于用戶端來說,各大廠基本不會有難度太大的題,難度基本在《劍指offer》和leetcode中等難度水準,基本還是都可以做到手寫bug free的,對于實作複雜的,面試官也會給予提示或者隻是讓你講一些思路就好了,除了百度之外,其它都是需要手寫的。因為百度無需手寫,考察思路,是以難度上會偏難一些。

二維坐标系中有一些點,找出一點直線覆寫盡可能多的點

連結清單表示一個數字,求兩個數字相加之和,傳回一個連結清單

連結清單反轉

二叉樹的最低深度路徑列印

無序數組中查找兩個和為某一個值的數字,傳回索引值

二叉樹的後續周遊,非遞歸實作

字元串中最長不重複子串

背包問題(最大容量與最大價值)

動态規劃與遞歸的差異性,什麼問題可以用動态規劃,什麼問題不可以

排序算法類型與複雜度,有沒有更優的優化空間

排序算法複雜度中nlgn中的lgn是怎麼來的

堆排序相關,堆排序中的堆與堆棧中堆的差異性

兩個字元串,求其最長子串?例如abc1234,123bc(暴力方法的複雜度,動态規劃的複雜度)

什麼是完全二叉樹?

對于算法問題,需要找到最優解,手寫達到bug free的水準,同時對于各種解決方式都能夠給出時間複雜度,同時給出時間複雜度的計算過程。

tcp三次握手,四次揮手

dns解析過程

http和https的差別

https的建立連接配接過程

什麼是死鎖?如何産生?如何消除?

tcp擁塞控制與流量控制實作?

弱網下網絡請求的處理政策,結合直播場景

了解那些設計模式?

工廠設計模式的優點在于什麼?

外觀設計模式和政策模式的是如何在項目中應用的?

有使用過那些加密算法?

怎麼了解原子性和可見性?

如何保證原子性?

https中資料傳輸是對稱加密還是非對稱加密?

補碼表示方式,int最大值加2後等于多少

lrucache實作

生産者,消費者模型

微信錄音子產品設計

設計一個日志系統

設計一個圖檔加載架構,你會如何實作?

手寫一個單例實作

設計一個小程式容器,有哪些點需要注意的?

如何設計web與native通信的鑒權

hr面

對于hr面基本主要是聊一些過往經曆,看一下求職意願,我覺業務部門決定要人了,hr挂人的機率應該是很小的,然後是聊一下薪資期待,說白了就是圍繞其自己的kpi來跟你周旋,價格壓低同時保證你有足夠的入職意願。吐槽一下,某公司的hr素質是真的爆炸,問我創業虧了多少錢?女朋友在北京嗎?(特碼的是準備要包養我?)

leader面

你期望的工作内容是什麼?你覺得你可以給公司帶來什麼?當然這個不同公司的面試風格差異性還是挺大的,上述面試的公司感覺素質都還是挺高的,給予面試者充分的尊重。這個環節除非是覺得你的工作内容和薪水期望跟他們可以提供的差距較大,一般都是可以通過的。

通過上述問題可以看出,對于面試過程除了原有項目的考察,對于知識點的考察上,主要是android基礎知識,java基礎知識,計算機網絡,系統設計,算法,結合上述面試題目和自己準備過程中的一些學習記錄,下面通過一個腦圖的方式進行一個梳理。

2年Android開發面經分享:跳槽網易個人創業失敗後,拿到快手,位元組,百度,美團的Offer之旅

以下是自己結合自己的面試整理出來的,當然并沒有完全覆寫到所有的android知識點,大家可以結合自己的日常項目和一些書籍自己在整理彙總。

android知識

2年Android開發面經分享:跳槽網易個人創業失敗後,拿到快手,位元組,百度,美團的Offer之旅

對于android這塊,從打包到安裝,再到一個app的啟動,到一個頁面顯示出來内容,再到我們的手指去觸摸螢幕對螢幕帶來了改變,對這個流程可以跟進相應的源碼,順着這個流程來自己捋一遍,即使不是為了準備面試,作為android知識的儲備對開發工作也是有很好的提速作用的。當把上述流程梳理完成,再考慮對于其中每一個環節的各個擊破,對流程的把控對于我們對應用進行系統性的優化也是非常有價值的。

2年Android開發面經分享:跳槽網易個人創業失敗後,拿到快手,位元組,百度,美團的Offer之旅

java這塊除了對一些基礎知識的考察之外,主要是對于java虛拟機,和多線程場景下對于鎖的控制,還有對于其中集合類的一些相關實作和優化的點。流程上是對于一個.java檔案如何被編譯成.class檔案,然後jvm如何去加載這個二進制流并進行執行,記憶體如何做配置設定,配置設定之後,如何為對象配置設定空間,執行位元組碼。

2年Android開發面經分享:跳槽網易個人創業失敗後,拿到快手,位元組,百度,美團的Offer之旅

算法這一塊建議把《算法》查找與排序讀以下,同時跟着《算法導論》學習一下時間,空間複雜度的計算,常見的題目類型為圖上這些,在我之前的部落格中有寫動态規劃一期,包教包會。