近期面試Android的一些面試題

近期一個多月面試過一下公司(均爲實習):
騰訊:內推一面卒。java

正式校招拿到offer
阿里:內推二面卒。android


蘑菇街:面完三面技術面,等待HR面
網易:拿到offer。
可以看到,大部分問題不難,但是能回答對和回答的好很差又是兩個兩個不一樣的狀況了。不論什麼問題都儘可能回答的越具體,越清晰。越全面,面試官就會越以爲你掌握的越好。面試


比方問一下內存泄露,那麼試着多列舉一些狀況:算法

首先解釋內存泄露是什麼。設計模式


最多見的handler引用Activity。static+WeakReference解決
耗時線程
bitmap調用recycle,3.0前和後,3.0後偷換native內存
想持久化Drawable,定義成static,老版本號他持有view,view持有activity,可能間接形成activity泄露。4.0已修復。
廣播記得取消註冊
除此以外,如能提到jdk1.6中String的substring方法。那效果更好。
數組

再比方問到性能優化:緩存

從佈局優化ViewStub,merge,include
overdraw。GPU選項觀察overdraw狀況
view的ondraw。儘可能別new對象,不能耗時,60fps,16ms。GPU加速
必要狀況下使用SurfaceView
避免內存泄露(又回到上一個問題了)
ListView的優化:holder。分頁載入,滑動中止後再下載圖片等
Bitmap的優化。載入單個bitmap。多個bitmap時的內存硬盤緩存
利用android中的一些數據結構比方ArrayMap和SparseArray
少用枚舉。多用static訪問快
性能優化

下面是面試中問到的問題,可能不全,因爲隔得時間有些長可能忘記了。markdown

jvm:

內存模型,特色。類信息在哪一個區
棧和堆的差異
GC怎麼知道一個對象要被回收,
GC Root
強引用,軟引用,弱引用,虛引用
類載入過程
在項目中哪裏使用過JVM的知識網絡

java:

java基本數據類型
多態是什麼,怎麼實現的
==和equals
hashcode
HashMap和HashTable差異
HashMap,LinkedHashMap底層實現
HashMap的整過過程,怎麼設計一個hash函數散列均勻
併發容器包,ConcurrentHashMap原理
ArrayList和LinkedList差異
虛函數實現
反射。項目中啥時候用過。
wait和sleep的差異
併發同步,synchronized爲何是重量級的方式
votilekeyword的特色
線程和線程池,線程池的實現的原理
兩個線程依次打印一串數字
NIO。原理。裸寫NIO的難點在哪
unix的I/O模型

數據結構算法

堆得實現。數組保存二叉樹
堆排序
高速排序
數組找反覆數字,位置
講一下常見排序算法的思想和複雜度

android:

activity生命週期,每個函數調用發生在什麼狀況下
Fragment生命週期。開發中需要注意什麼問題
android中幾種上下文的差異
bitmap優化。複用,偷換native內存,BitmapFrctory.option幾個參數
緩存策略,LruCache和DiskLruCache原理。加上軟引用。緩存框架的構架大概是什麼樣子。
網絡請求緩存
handler機制
handler通常用來幹什麼?還有在哪些地方看到使用handler
HandlerThread
Service和IntentService
啓動服務的方式。有沒有使用過bindService
view繪製過程
事件分發過程
使用過Canvas沒
ListView優化
作過什麼本身定義控件,需要注意什麼問題
View的onDraw方法扯到SurfaceView
ANR怎麼避免
OOM怎麼避免
Binder底層實現,框架
ViewRoot源代碼,這個類的主要功能
內存泄露
怎麼檢測內存泄露
性能優化
動態載入瞭解不
activity啓動過程
/data/app/的目錄和文件的權限(很是犀利的面試官問的。項目中用到最重要的一點。不愧10年工做經驗)
Android是怎麼學的

強行裝逼時刻:想辦法扯到Binder的源代碼。動態載入。插件框架:360的DroidPlugin和百度的DynamicLoad原理,activity啓動流程,跨進程回調上面來,以及一些開源庫。基本上講完動態載入的框架就是和麪試官聊天了。

設計模式:

知道哪些設計模式,平時怎麼用的?
口頭念出一個單例每行怎麼寫,多線程問題
外觀模式

http:

(每次http的問題我回答不出來我就告訴面試官,http這些我僅僅知道簡單的,沒有深刻研究,android的可以隨便問,而後就不問http的問題了)

304
緩存

tcp/ip:

七層模型
TIME_WAIT
流量控制,擁塞控制
http頭裏面的host有什麼用url裏面都有了爲何在頭字段要有

操做系統:

進程與線程
操做系統看了那些內容
進程間通訊的方式
死鎖。怎麼避免。平時遇到沒

項目:

每講一個點的時候都會問我爲何這麼設計,你從哪裏學到的?在哪裏看到這麼作的?
遇到了什麼問題。怎麼解決的?是怎麼發現問題的?log。單步調試
項目的架構
有沒有爲面試作準備。準備了哪些內容。

大概就是這些,有些可能時間太長我也記不太清了。

相關文章
相關標籤/搜索