Android面試總結

前言:

“金三銀四”這句話真的不是說說而已,每年的三四月份確確實實是招聘旺季,各公司人才缺口大,市場總體需求量大增,想要換份好工作的同學們一定不要錯過哦!

個人認爲,每一次的跳槽經歷對我們來說都是一次提升,在面試前,需要我們去回顧基礎知識,深入瞭解各大框架,狠刷算法題等等;面試過程中,我們要沉着冷靜,思路清晰,知無不言,言無不盡,也是對我們溝通能力的考驗;面試過後,我們必須找個安靜的地方,對整個面試過程進行復盤,同時對面試題進行記錄,對自己的回答進行總結。下面是我對自己近期面試的部分總結,目前只給出了問題,之後我會盡量補上答案,希望能夠幫到大家!


奇虎360

1、Activity啓動模式及應用場景

2、handler機制、以及和message、looper等之間的關係

3、與service通信的幾種方式,進程間通信和進程內通信的區別

4、線程死鎖、用代碼實現

5、寫出兩種單例模式,說出優缺點

6、實現recycleview側滑刪除

7、http、tcp/ip,get和post區別

8、內部類爲什麼會內存泄漏?換成靜態內部類爲什麼就解決了?

9、給recycleview加header和footer如何加,爲什麼能加,複雜佈局實現等

10、輸入字符串“ab**c*d*ef*”,輸出“*****abcdef”,並返回*號個數,代碼實現,儘量用空間複雜度和時間複雜度最小的方式

11、一個整數數組中,只有兩個數出現1次,其他數均出現2次,求這兩個數,儘量用空間複雜度和時間複雜度最小的方式

12、談談項目中自己認爲做的很好並有一定難度的東西


人人車:

1、activity生命週期,onsaveinstance和onrestoreinstance是成對調用的嗎 

2、set和list有什麼區別 

3、線程池的創建、使用,核心線程和非核心線程的區別

4、handler機制,looper什麼時候創建?在prepare裏做了什麼?在loop方法裏做了什麼?

5、自定義view繪製,onMeasure裏測量規格,測量模式和測量大小如何存在?

6、事件分發機制,onTouch、onTouchevent和onClick的調用順序 

7、okhttp的實現原理、普通攔截器和網絡攔截器有什麼區別,緩存攔截器和網絡攔截器的調用順序 

8、retrofit的實現原理,動態代理相關 

9、rxjava線程調度器有幾種、如何使用? 

答:RxJava中Schedulers有很多種,下表展示了RxJava中可用的調度器種類:
調度器類型效果
Schedulers.computation( )用於計算任務,如事件循環或和回調處理,不要用於IO操作(IO操作請使用Schedulers.io());默認線程數等於處理器的數量
Schedulers.from(executor)使用指定的Executor作爲調度器
Schedulers.immediate( )在當前線程立即開始執行任務
Schedulers.io( )用於IO密集型任務,如異步阻塞IO操作,這個調度器的線程池會根據需要增長;對於普通的計算任務,請使用Schedulers.computation();Schedulers.io( )默認是一個CachedThreadScheduler,很像一個有線程緩存的新線程調度器
Schedulers.newThread( )爲每個任務創建一個新線程
Schedulers.trampoline( )當其它排隊的任務完成後,在當前線程排隊開始執行
AndroidSchedulers.mainThread()是在Android中才有的。
調度器使用:
subscribeOn 指定了Observable的調度器.
subscribe 指示一個Observable在一個特定的調度器上調用觀察者的onNext, onError和onCompleted方法,即影響的是subscribe()裏的操作


10、如何實現進程間通信?binder原理相關

11、servicemanager的作用是什麼?

12、bundle傳值有限制嗎?是多少?

13、抽象類和接口區別、接口中可以有方法體嗎?

14、hashmap是怎麼實現的?發生數據碰撞該如何處理?

15、handler的post和sendMessage有什麼不同?有什麼聯繫?

16、manifest中activity的export屬性有什麼作用


新東方在線:

1、自定義view流程 

2、RxJava使用,原理等 

3、activity間跳轉時的生命週期 

4、內存泄漏和內存溢出的區別

5、強軟弱虛引用的區別

6、設計模式、靜態內部類的單例模式爲什麼性能好  

7、30M的大圖片處理

8、字符串反轉


好未來

1、項目中是如何使用MVP模式的?實現與結構

2、自定義view流程

3、性能優化、內存泄漏、內存溢出(列舉項目中遇到的)

4、本地與h5互調有哪些方式?連接橋的方式用過嗎?

5、事件分發流程

6、http與https區別,post和get區別

7、兩個單鏈表相交,找出相交的結點(手寫實現)

8、獲取單鏈表倒數第k個元素(手寫實現)

9、153=1^3+5^3+3^3,求出符合上述條件的1000以內的數(手寫實現)

課程格子:

1、自定義view流程,有一個寬高屬性設置爲wrapcontent的imageview,它的大小是如何測量的?

2、rxjava的線程切換,single和observable等的區別,subscribeOn和observeOn可以調用幾次?

3、簡述OKhttp的原理,如何實現?

4、handler的postDelayed內部是如何實現的?

5、簡述eventbus的原理 

6、arrayList和linkedList區別

7、介紹一下接口的特徵

8、activity啓動模式,singletask相關,任務棧相關

9、項目中框架的搭建 

10、native和js互調有哪些方式?註解的方式會有問題,說說怎麼解決的

狸米科技:

1、anctivity啓動流程

2、廣播安全性,本地廣播、設置權限、綁定進程等 

3、事件分發流程 

4、rxJava 被觀察者如何創建?有幾種創建方式?如何實現線程切換的?轉換用過嗎? 

5、設計模式用過哪些?手寫單例模式 

6、volatile關鍵字的作用 

7、content provide如何使用 

8、項目中做過哪些內存優化


總結:

1、java和Android基礎一定要過一遍,推薦大家看這個總結,比較全面

2、Android中流行的各大框架至少要會用並瞭解原理,然後最好能深入源碼理解,這點很加分;

3、一般大點的公司都會有兩到三輪技術面試,第一輪面基礎,二輪和三輪除了問的更深之外,算法題也是少不了的,建議大家平時抽空刷刷LeetCode或者劍指Offer

最後,祝每一位努力的人都能得到自己想要的結果!加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章