最近面試Android的一些面試題

最近一個多月面試過一下公司(均爲實習):
騰訊:內推一面卒。正式校招拿到offer
阿里:內推二面卒。
蘑菇街:面完三面技術面,等待HR面
網易:拿到offer。
能夠看到,大部分問題不難,可是能回答對和回答的好很差又是兩個兩個不一樣的狀況了。任何問題都儘可能回答的越詳細,越清晰,越全面,面試官就會越認爲你掌握的越好。
好比問一下內存泄露,那麼試着多列舉一些狀況:java

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

再好比問到性能優化:面試

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

如下是面試中問到的問題,可能不全,由於隔得時間有些長可能忘記了。設計模式

jvm:

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

java:

java基本數據類型
多態是什麼,怎麼實現的
==和equals
hashcode
HashMap和HashTable區別
HashMap,LinkedHashMap底層實現
HashMap的整過過程,怎麼設計一個hash函數散列均勻
併發容器包,ConcurrentHashMap原理
ArrayList和LinkedList區別
虛函數實現
反射,項目中啥時候用過。
wait和sleep的區別
併發同步,synchronized爲何是重量級的方式
votile關鍵字的特色
線程和線程池,線程池的實現的原理
兩個線程依次打印一串數字
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是怎麼學的markdown

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

設計模式:

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

http:

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

304
緩存

tcp/ip:

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

操做系統:

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

項目:

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

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

相關文章
相關標籤/搜索