前言:
“金三銀四”這句話真的不是說說而已,每年的三四月份確確實實是招聘旺季,各公司人才缺口大,市場總體需求量大增,想要換份好工作的同學(xué)們一定不要錯過哦!
個人認(rèn)為,每一次的跳槽經(jīng)歷對我們來說都是一次提升,在面試前,需要我們?nèi)セ仡櫥A(chǔ)知識,深入了解各大框架,狠刷算法題等等;面試過程中,我們要沉著冷靜,思路清晰,知無不言,言無不盡,也是對我們溝通能力的考驗;面試過后,我們必須找個安靜的地方,對整個面試過程進(jìn)行復(fù)盤,同時對面試題進(jìn)行記錄,對自己的回答進(jìn)行總結(jié)。下面是我對自己近期面試的部分總結(jié),目前只給出了問題,之后我會盡量補上答案,希望能夠幫到大家!
奇虎360:
1、Activity啟動模式及應(yīng)用場景
2、handler機制、以及和message、looper等之間的關(guān)系
3、與service通信的幾種方式,進(jìn)程間通信和進(jìn)程內(nèi)通信的區(qū)別
4、線程死鎖、用代碼實現(xiàn)
5、寫出兩種單例模式,說出優(yōu)缺點
6、實現(xiàn)recycleview側(cè)滑刪除
7、http、tcp/ip,get和post區(qū)別
8、內(nèi)部類為什么會內(nèi)存泄漏?換成靜態(tài)內(nèi)部類為什么就解決了?
9、給recycleview加header和footer如何加,為什么能加,復(fù)雜布局實現(xiàn)等
10、輸入字符串“abcdef”,輸出“*****abcdef”,并返回號個數(shù),代碼實現(xiàn),盡量用空間復(fù)雜度和時間復(fù)雜度最小的方式
11、一個整數(shù)數(shù)組中,只有兩個數(shù)出現(xiàn)1次,其他數(shù)均出現(xiàn)2次,求這兩個數(shù),盡量用空間復(fù)雜度和時間復(fù)雜度最小的方式
12、談?wù)勴椖恐凶约赫J(rèn)為做的很好并有一定難度的東西
人人車:
1、activity生命周期,onsaveinstance和onrestoreinstance是成對調(diào)用的嗎
2、set和list有什么區(qū)別
3、線程池的創(chuàng)建、使用,核心線程和非核心線程的區(qū)別
4、handler機制,looper什么時候創(chuàng)建?在prepare里做了什么?在loop方法里做了什么?
5、自定義view繪制,onMeasure里測量規(guī)格,測量模式和測量大小如何存在?
6、事件分發(fā)機制,onTouch、onTouchevent和onClick的調(diào)用順序
7、okhttp的實現(xiàn)原理、普通攔截器和網(wǎng)絡(luò)攔截器有什么區(qū)別,緩存攔截器和網(wǎng)絡(luò)攔截器的調(diào)用順序
8、retrofit的實現(xiàn)原理,動態(tài)代理相關(guān)
9、rxjava線程調(diào)度器有幾種、如何使用?
10、如何實現(xiàn)進(jìn)程間通信?binder原理相關(guān)
11、servicemanager的作用是什么?
12、bundle傳值有限制嗎?是多少?
13、抽象類和接口區(qū)別、接口中可以有方法體嗎?
14、hashmap是怎么實現(xiàn)的?發(fā)生數(shù)據(jù)碰撞該如何處理?
15、handler的post和sendMessage有什么不同?有什么聯(lián)系?
16、manifest中activity的export屬性有什么作用
新東方在線:
1、自定義view流程
2、RxJava使用,原理等
3、activity間跳轉(zhuǎn)時的生命周期
4、內(nèi)存泄漏和內(nèi)存溢出的區(qū)別
5、強軟弱虛引用的區(qū)別
6、設(shè)計模式、靜態(tài)內(nèi)部類的單例模式為什么性能好
7、30M的大圖片處理
8、字符串反轉(zhuǎn)
好未來:
1、項目中是如何使用MVP模式的?實現(xiàn)與結(jié)構(gòu)
2、自定義view流程
3、性能優(yōu)化、內(nèi)存泄漏、內(nèi)存溢出(列舉項目中遇到的)
4、本地與h5互調(diào)有哪些方式?連接橋的方式用過嗎?
5、事件分發(fā)流程
6、http與https區(qū)別,post和get區(qū)別
7、兩個單鏈表相交,找出相交的結(jié)點(手寫實現(xiàn))
8、獲取單鏈表倒數(shù)第k個元素(手寫實現(xiàn))
9、153=13+53+3^3,求出符合上述條件的1000以內(nèi)的數(shù)(手寫實現(xiàn))
課程格子:
1、自定義view流程,有一個寬高屬性設(shè)置為wrapcontent的imageview,它的大小是如何測量的?
2、rxjava的線程切換,single和observable等的區(qū)別,subscribeOn和observeOn可以調(diào)用幾次?
3、簡述OKhttp的原理,如何實現(xiàn)?
4、handler的postDelayed內(nèi)部是如何實現(xiàn)的?
5、簡述eventbus的原理
6、arrayList和linkedList區(qū)別
7、介紹一下接口的特征
8、activity啟動模式,singletask相關(guān),任務(wù)棧相關(guān)
9、項目中框架的搭建
10、native和js互調(diào)有哪些方式?注解的方式會有問題,說說怎么解決的
貍米科技:
1、anctivity啟動流程
2、廣播安全性,本地廣播、設(shè)置權(quán)限、綁定進(jìn)程等
3、事件分發(fā)流程
4、rxJava 被觀察者如何創(chuàng)建?有幾種創(chuàng)建方式?如何實現(xiàn)線程切換的?轉(zhuǎn)換用過嗎?
5、設(shè)計模式用過哪些?手寫單例模式
6、volatile關(guān)鍵字的作用
7、content provide如何使用
8、項目中做過哪些內(nèi)存優(yōu)化
總結(jié):
1、java和Android基礎(chǔ)一定要過一遍,推薦大家看這個總結(jié),比較全面;
2、Android中流行的各大框架至少要會用并了解原理,然后最好能深入源碼理解,這點很加分;
3、一般大點的公司都會有兩到三輪技術(shù)面試,第一輪面基礎(chǔ),二輪和三輪除了問的更深之外,算法題也是少不了的,建議大家平時抽空刷刷LeetCode或者劍指Offer。
最后,祝每一位努力的人都能得到自己想要的結(jié)果!加油!