總結一下面試中遇到的問題,一共面試了4家公司。
基本情況:本科畢業一年,面試職位:北京的Android開發職位。
1.搜狗:
(1)5種基本的Layout:relative,linear,frame,absolute,table.
(2) wait和sleep的區別:wait釋放鎖,但是sleep不釋放。
(3)單例模式的實現
(4)演算法題:程式碼實現一個字串如abcd的全部排列。
(5)兩種方法註冊broadcaseReceiver,及其區別。
(6) 索引的優化
(7)String常量池
(8)用asynctask實現一個音樂播放器,需要實現播放,暫定,進度提示等功能。
(9)Service是否在UI執行緒中,OnstartCommand是否有可能阻塞主執行緒
(10)android訊息分發機制
2.奇虎360
(1)hashtable和hashset的區別,hash對映的實現原理。
(2)https和http協議的區別
(3)靜態內部類和匿名內部類‘
(4)jdk1.5和1.6的新加特性
(5)4中luncmode的區別。
(6)對於handler和looper的理解
3.百度
(1)hashcode和equals相關,hashcode的原始碼實現。
(2)dp,px和螢幕密度的關係
(3)訊息傳遞的三個方法:onTouch,dispathcTouchEvent,interceptTouchEvent的理解,及原始碼
(4)view中繪畫相關的原始碼:draw的實現,dispatchDraw等
(5)View中animation的原始碼實現
(6)wait和sleep哪個會消耗cpu資源
(7)如何實現,在一個電子書展示頁面,按下音量大小控制鍵來實現翻頁
(8)重寫控制元件實現一個歌詞滾動播放效果,說出關鍵程式碼實現
(9)httpclient的使用情況
(10)handler和looper的實現原始碼
4.騰訊:
(1)演算法題居多,筆試:
逆序一個有序連結串列;消除兩個雙向連結串列中相同元素;一個字串,如"abcd",向左平移N位;1億個數字,找出第N(N<10000)的數字,注意效率。
A,B兩個二叉樹,判斷是否有包含關係。
程式碼實現這個問題:檔案A中存取一堆人的ID和年齡,檔案B中存了一堆人的ID和名字,AB中都是根據ID升序排列的。請實現在檔案C中寫入A,B中排序和合並的情況。注意,A,B中所有的資料量很大,超過物理機記憶體容量。
(2)如何進行低版本機器適配。
(3)Adapter的優化
(4)java的反射機制
(5)java多型性:子類物件指向父類引用
(6)java垃圾回收的機制
(7)哪些手段進行圖片記憶體優化