轉(zhuǎn)自 2016Android某公司面試題 - 享受技術(shù)帶來的快樂 ? ? ? ?- 博客頻道 - CSDN.NET
2016年4月某公司面試題及面試流程。
靜態(tài)內(nèi)部類、內(nèi)部類、匿名內(nèi)部類,為什么內(nèi)部類會(huì)持有外部類的引用?持有的引用是this?還是其它?
靜態(tài)內(nèi)部類:使用static修飾的內(nèi)部類
內(nèi)部類:就是在某個(gè)類的內(nèi)部又定義了一個(gè)類,內(nèi)部類所嵌入的類稱為外部類
匿名內(nèi)部類:使用new生成的內(nèi)部類
因?yàn)閮?nèi)部類的產(chǎn)生依賴于外部類,持有的引用是類名.this
ArrayList在Java1.2引入,用于替換Vector
Vector:
線程同步
當(dāng)Vector中的元素超過它的初始大小時(shí),Vector會(huì)將它的容量翻倍
ArrayList:
線程不同步,但性能很好
當(dāng)ArrayList中的元素超過它的初始大小時(shí),ArrayList只增加50%的大小
Java中try catch finally的執(zhí)行順序
先執(zhí)行try中代碼發(fā)生異常執(zhí)行catch中代碼,最后一定會(huì)執(zhí)行finally中代碼
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch支持使用byte類型,不支持long類型,String支持在java1.7引入
Activity——onCreate->onStart->onResume->onPause->onStop->onDestroy
Fragment——onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDetach
onInterceptTouchEvent()和onTouchEvent()的區(qū)別?
onInterceptTouchEvent()用于攔截觸摸事件
onTouchEvent()用于處理觸摸事件
APPwidget和Notification中
SurfaceView中采用了雙緩存技術(shù),在單獨(dú)的線程中更新界面
View在UI線程中更新界面
講一下android中進(jìn)程的優(yōu)先級(jí)?
前臺(tái)進(jìn)程
可見進(jìn)程
服務(wù)進(jìn)程
后臺(tái)進(jìn)程
空進(jìn)程
tips:靜態(tài)變量持有Activity引用會(huì)導(dǎo)致內(nèi)存泄露
service生命周期,可以執(zhí)行耗時(shí)操作嗎?
JNI開發(fā)流程
Java線程池,線程同步
自己設(shè)計(jì)一個(gè)圖片加載框架
自定義View相關(guān)方法
http ResponseCode
插件化,動(dòng)態(tài)加載
性能優(yōu)化,MAT
AsyncTask原理
65k限制
Serializable和Parcelable
文件和數(shù)據(jù)庫哪個(gè)效率高
斷點(diǎn)續(xù)傳
WebView和JS
Android開發(fā)指導(dǎo)——綁定Service
Android開發(fā)指導(dǎo)——進(jìn)程間通信AIDL
Android面試基礎(chǔ)知識(shí)總結(jié)(一)
WebView中的Java與JavaScript提供【安全可靠】的多樣互通方案
所使用的開源框架的實(shí)現(xiàn)原理,源碼
沒看過,被pass了
去面試之前把用到的開源框架源碼分析一定要看看啊
http://yuweiguocn.github.io/2016/04/13/interview-2016-big-company/
3,4月春招實(shí)習(xí)面試面經(jīng)(今日頭條,騰訊,阿里,360)
在三月的某一天,當(dāng)我還沉浸在代碼世界的時(shí)候,突然一聲鈴聲響,拿起手機(jī)一看,杭州電話==大三春招第一次面試開始了。
問的問題不多,也就26分鐘的樣子
你用過哪些集合類?==太多了,隨便說了些
那你說說ArrayList,LinkedList的區(qū)別(還是挺簡(jiǎn)單的,一般用過的都說會(huì))。
說說hashMap是怎樣實(shí)現(xiàn)的(這個(gè)之前看過,順利回答上。還回答了多線程的問題出現(xiàn)的原因,面試官表示很驚訝的樣子)
說說可重入鎖
說說view繪制過程和事件分發(fā)機(jī)制,我大概回答了下。然后面試官又問:onTouch和onTouchEvent是什么區(qū)別?如果我重寫了ontouch和onClick,它們的調(diào)用順序是怎樣的?什么時(shí)候會(huì)不調(diào)用onClick?
handler的是怎樣實(shí)現(xiàn)的?
由于項(xiàng)目里面用到了picasso,所以最后問了下picasso實(shí)現(xiàn)原理。
一面結(jié)束,最后面試官居然問我是不是第一次面試== 估計(jì)是幫緊張了。不過一面過程中面試官心情還不錯(cuò),都是笑著問的。
當(dāng)天晚上接到二面,面試官太累了,約我第二天面試。
二面氣氛一直不對(duì),感覺面試官非常嚴(yán)肅,一來就感覺很有壓力
自我介紹
操作系統(tǒng)里面線程和進(jìn)程的區(qū)別(挺基礎(chǔ)的) ,接著麻煩就來了;我說完大致區(qū)別后,他就問,你說進(jìn)程里面線程是共享內(nèi)存的,那么一個(gè)進(jìn)程最大能占多少內(nèi)存??(懵逼,這是什么意思?考的分頁知識(shí)?)。然后這里我想了一下,說應(yīng)該和硬件有關(guān),他繼續(xù)問,有什么關(guān)系?(應(yīng)該和地址總線有關(guān),當(dāng)時(shí)沒想起,他叫我再想想,要是你設(shè)計(jì)的系統(tǒng),應(yīng)該和什么有關(guān),還是沒答上==)。
你項(xiàng)目中圖片是怎么處理的?回答:picasso,順便說了下picasso原理。然后又問:那么picasso里面有多少個(gè)線程來加載圖片?要是網(wǎng)絡(luò)不同,線程數(shù)目分別是多少?
布局優(yōu)化(這里開始說錯(cuò)了一點(diǎn),然后面試官很生氣的樣子==,自我感覺就要掛了)
項(xiàng)目中有哪些優(yōu)化?
最后果然掛了==(慘痛的經(jīng)歷,不過為后面打下了很好的基礎(chǔ)==至少不 怎么緊張了)
然后后面就沒有面試了
直到4月騰訊面試==
騰訊是走的正常渠道,到成都現(xiàn)場(chǎng)面試
面試場(chǎng)地是在一個(gè)賓館里面,一對(duì)一面試,face to face還是有點(diǎn)緊張的
自我介紹
java多態(tài)你了解多少??
你說說重寫和重載區(qū)別,然后拿了紙筆,手寫一個(gè)能體現(xiàn)多態(tài)的例子
說說java在運(yùn)行main函數(shù)之前做了哪些工作?? 這個(gè)我居然從啟動(dòng)虛擬機(jī)——>加載類——>初始化類一直說到執(zhí)行Main
你對(duì)大尾小尾了解多少? 我反問:您說的是大小端么? 他說對(duì),然后我正準(zhǔn)備給他解釋的時(shí)候,他又拿了一張紙:用java寫一個(gè)判斷大小尾的程序==
java靜態(tài)方法能不能被重寫? 答:不能。 問:為什么?
為什么java靜態(tài)方法不能調(diào)用普通方法?普通方法能調(diào)用靜態(tài)方法?(其實(shí)還是實(shí)例引用問題)
java內(nèi)存模型和GC機(jī)制
其實(shí)騰訊面試官感覺都很nice,他稱呼我 都用您。感覺怪怪的,而且禮儀非常好。最后面完后,我問我面試得怎樣?他說你了解的知識(shí)還是挺寬的,然后問了我一句要不要去做游戲???當(dāng)然要?。?/p>
然后就走了。然后就沒有然后了,晚上查狀態(tài)是不適合。
騰訊面試后,感覺不怎么死心,又跑去長沙霸面了,我一去,HR說移動(dòng)端基本已經(jīng)招滿了,你可以把簡(jiǎn)歷放在這兒,要是有面試機(jī)會(huì)的話,我會(huì)通知你。然后我心情失落地回去了。
當(dāng)我剛到住處,剛出電梯,HR就來電話了,叫我去面試==
我那個(gè)開心啊,把平時(shí)20分鐘的路程當(dāng)成10分鐘不對(duì)跑過去,直接一面。
一面面試官也很nice,還驚訝我從重慶來==
Hashmap原理
hashcode和equals還有==的關(guān)系
用hashmap實(shí)現(xiàn)hashset。。我之前看過的,忘記了。然后按照我的想法回答了。(最后面試官告訴了我該怎樣實(shí)現(xiàn)==)
內(nèi)部類訪問外部類的變量有什么問題?
android里面onStop和onPause本質(zhì)區(qū)別。什么時(shí)候可以存數(shù)據(jù)?
兩個(gè)單鏈表尋找有沒有交點(diǎn),然后再尋找交點(diǎn)位置
android oom怎么解決
還問了一些項(xiàng)目的問題
其實(shí)中間還問了幾個(gè)算法,忘記是什么了,后面想到了的話會(huì)加上的。
二面面試官感覺很牛的樣子,一直技術(shù)轟炸
告訴我你所直到的所有關(guān)于java虛擬機(jī)的東西==我說了好久好久。還說了新生代大概什么時(shí)候會(huì)加入老年代==
binder機(jī)制
handler原理, Message,loop,messageQueue關(guān)系,handler內(nèi)存泄露問題。
TCP三次握手,用紙畫出來
為什么TCP是可靠的,UDP早不可靠的?為什么UDP比TCP快?
面試官看到了我的項(xiàng)目,然后問了我一個(gè)用到的框架的原理,還問了我里面的很多細(xì)節(jié)==估計(jì)是以為我直接看的別人的博客了解到的這些知識(shí),還好我是自己看了源碼==
算法:幾百萬個(gè)QQ號(hào) ,找出前100個(gè)消費(fèi)最高的QQ號(hào)。直接小頂堆什么的
android四大組件 ,這里擴(kuò)展了很多,畢竟非常熟悉,還說了很多坑,很多實(shí)現(xiàn)原理(比如activity start原理)
還問了優(yōu)缺點(diǎn)==
(也有一些問題忘記了)
這次面試很久,忘記帶水了,出來我直接喝完了一瓶怡寶==
這交自我感覺答得不錯(cuò),然后過了2個(gè)小時(shí)就收到HR面通知
自我介紹
項(xiàng)目里面怎么解決安全問題的?好可怕,會(huì)技術(shù)的HR
有沒有女朋友?
家在哪里
有沒有親戚在騰訊?
我問了下要是過了的話大概會(huì)在哪里實(shí)習(xí)?HR說在深圳==還問我有什么問題么?我說沒有,我爸媽也在那邊==然后他在我簡(jiǎn)歷上面記了一下。
為什么要學(xué)習(xí)android?
HR面就10多分鐘,很快,和我一起面試的還有幾個(gè)學(xué)生,也都是10來分鐘,然后HR叫我等結(jié)果
然后等啊等,等到現(xiàn)在還沒有結(jié)果==
360全程視頻面試加寫代碼什么的
寫一個(gè)adapter,我后面忘記了getView的一個(gè)參數(shù)==一直在那里想,面試官問我是不是在編譯器里面寫==我說我在想怎么寫。
hashmap原理==
java可重入鎖
排序算法和穩(wěn)定性,快排什么時(shí)候情況最壞?
一個(gè)獲全國獎(jiǎng)的項(xiàng)目問了我20分鐘,特別是service不被殺死的方法==我說了4種才放過我,還問了我具體實(shí)現(xiàn),特別是在JNI里面實(shí)現(xiàn)的時(shí)候==
項(xiàng)目中界面適配,自定義過view沒有?
NFC讀卡,這個(gè)是我的項(xiàng)目,我說了具體實(shí)現(xiàn),然后就放過我了
我項(xiàng)目中用了google map 和定位,他問怎么定位的?居然問了我具體API==我還說了里面的坑,國產(chǎn)手機(jī)閹割了一部分的問題==
一面大概1個(gè)半小時(shí)==頭昏腦漲==然后面試官并不放過我,叫我等等。他去叫二面面試官
http協(xié)議了解多少,說說里面的協(xié)議頭部有哪些字段?
https了解多少?為什么百度全部都用了https包括首頁
散列表的基礎(chǔ)知識(shí),里面也問了hashmap(可見hashmap重要性)
項(xiàng)目問題,幾個(gè)項(xiàng)目都問了,什么分工啊什么的
問了我很多項(xiàng)目中開發(fā)的問題,還好基本都答出來了==二面基礎(chǔ)知識(shí)基本沒多少,都是項(xiàng)目問題
二面接近一個(gè)半小時(shí),還好在寢室面試,邊面邊喝水==二面腦袋都是糊的==
二面完后,10分鐘打電話通知一周內(nèi)有HR面
HR面的時(shí)候,我正在火車上,HR說只有15分鐘,我說當(dāng)場(chǎng)面了,因?yàn)槲夷莻€(gè)時(shí)候正停在一個(gè)大站里面,要停半個(gè)小時(shí)
自我介紹,問了我所有項(xiàng)目的分工問題和設(shè)計(jì)等問題,好幾個(gè)項(xiàng)目,這里就花了接近20分鐘,然后火車開走了,然后大家都知道,悲催了,沒信號(hào)==
等到我有信號(hào)的時(shí)候,再給HR打電話約好第二天繼續(xù)面。
第二天
繼續(xù)項(xiàng)目分工==
中興實(shí)習(xí)情況?為什么最后沒留下?(要讀書?。?/p>
開發(fā)的一些規(guī)范
投了XX公司和XX公司沒有?為什么沒投XX公司?哎,這里太年輕別坑了==
怎么看待3Q大戰(zhàn)==(大姐,這個(gè)我怎么來說呢?)
問了我實(shí)習(xí)時(shí)間,希望實(shí)習(xí)的地點(diǎn),希望做哪方面?
你覺得你一面和二面哪一面成績更好?每一面大概多少分
優(yōu)缺點(diǎn)==
每個(gè)問題都問了很久,因?yàn)槊總€(gè)過后都接著往下問了的。整個(gè)HR面都1小時(shí)13分鐘,累?。。≌f好的15分鐘呢
然后N天后,收到360拒信。
今日頭條也是我唯一過的公司==一面還好,二面全程技術(shù)轟炸,HR面聊得挺好,雖然有點(diǎn)短
今日頭條我是內(nèi)推的,N天后給我發(fā)郵件和電話約面試,本來是北京面試的,結(jié)果去不了,就電話面試了。
兩次技術(shù)面試也是接近2個(gè)小時(shí) 。一面面試官面完后,叫我去吃飯,過會(huì)兒繼續(xù)面,天真的我以為已經(jīng)二面了,然而并不是,這個(gè)時(shí)候面試官還是建議去北京面試,過的機(jī)會(huì)大些== 這個(gè)時(shí)候哪還有心情吃飯,一直等面試官的電話,結(jié)果繼續(xù)面的時(shí)候直接寫了一個(gè)代碼就OK了,代碼是在一個(gè)矩陣是查找有沒有某個(gè)數(shù),矩陣從左到右依次增大(忘記是增大還是減小了),從上到下也一樣。由于電腦問題,我還是翻墻去寫代碼的==寫代碼的時(shí)候,由于網(wǎng)不穩(wěn)定,還經(jīng)常斷==
寫完直接叫我等二面,過了會(huì)兒二面面試官馬上來了電話
二面面試官感覺很隨和,從Java的用法問到了虛擬機(jī),問到了操作系統(tǒng),最后深入問到了一個(gè)編譯原理。還問了一些C語言的東西。
還問了排序。
然后可能是因?yàn)槲宜袞|西是自學(xué)的,面試官在問之前都問了我了解不,不了解就重新?lián)Q一個(gè)。還問了一些圖論最短路徑問題(還好面試前不久做了一個(gè)比賽,華為的未來尋路,就是最短路徑問題),這個(gè)答得還行,說了一些經(jīng)典算法,還有一些只能算法,還有一些改進(jìn)等。
然后就是我項(xiàng)目中的問題,因?yàn)槲矣昧藃xjava,picasso,retrofit等開源項(xiàng)目,所以面試官問了我retrofit是如何處理注解的,我直接講了源碼,其過我博客里面也寫過了這個(gè),然后面試官可能發(fā)現(xiàn)我了解,就直接跳過了這個(gè)。然后問了我rxjava的東西,我結(jié)合博客看了部分源碼,還問了rxjava里面用了大量的這些,是什么意思。
過后問我了解github上的一些開源項(xiàng)目不,我說了解一些,然后就是butterknife了,然后我回答錯(cuò)了,以為是注解+反射。后面掛電話后,找了時(shí)間分析了源碼,還真不是反射==butterknife分析在這里。
今日頭條感覺是我面試問題水平最高的,不再局限于基礎(chǔ)知識(shí),問了很多很深入的東西。感覺面試官都是根據(jù)我具體情況問的,隨手丟出問題,直到我回答不上??傄詾槎鏁?huì)掛。
結(jié)果在某天中午接到了HR的電話,由于那個(gè)時(shí)候有事,重新約了時(shí)間==
當(dāng)時(shí)都有HR面恐懼癥了,因?yàn)榍懊鎯纱蜨R面后都沒消息了==
時(shí)間很短,幾個(gè)問題而已,回答完就叫我等結(jié)果,說5月中旬會(huì)出結(jié)果。