轉(zhuǎn)自 2016Android某公司面試題 - 享受技術帶來的快樂 ? ? ? ?- 博客頻道 - CSDN.NET
2016年4月某公司面試題及面試流程。
靜態(tài)內(nèi)部類俯树、內(nèi)部類帘腹、匿名內(nèi)部類,為什么內(nèi)部類會持有外部類的引用许饿?持有的引用是this阳欲?還是其它?
靜態(tài)內(nèi)部類:使用static修飾的內(nèi)部類
內(nèi)部類:就是在某個類的內(nèi)部又定義了一個類陋率,內(nèi)部類所嵌入的類稱為外部類
匿名內(nèi)部類:使用new生成的內(nèi)部類
因為內(nèi)部類的產(chǎn)生依賴于外部類球化,持有的引用是類名.this
ArrayList在Java1.2引入瓦糟,用于替換Vector
Vector:
線程同步
當Vector中的元素超過它的初始大小時筒愚,Vector會將它的容量翻倍
ArrayList:
線程不同步,但性能很好
當ArrayList中的元素超過它的初始大小時菩浙,ArrayList只增加50%的大小
Java中try catch finally的執(zhí)行順序
先執(zhí)行try中代碼發(fā)生異常執(zhí)行catch中代碼锨能,最后一定會執(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中采用了雙緩存技術浸剩,在單獨的線程中更新界面
View在UI線程中更新界面
前臺進程
可見進程
服務進程
后臺進程
空進程
tips:靜態(tài)變量持有Activity引用會導致內(nèi)存泄露
service生命周期绢要,可以執(zhí)行耗時操作嗎吏恭?
JNI開發(fā)流程
Java線程池,線程同步
自己設計一個圖片加載框架
自定義View相關方法
http ResponseCode
插件化重罪,動態(tài)加載
性能優(yōu)化樱哼,MAT
AsyncTask原理
65k限制
Serializable和Parcelable
文件和數(shù)據(jù)庫哪個效率高
斷點續(xù)傳
WebView和JS
WebView中的Java與JavaScript提供【安全可靠】的多樣互通方案
所使用的開源框架的實現(xiàn)原理,源碼
沒看過剿配,被pass了
去面試之前把用到的開源框架源碼分析一定要看看啊
http://yuweiguocn.github.io/2016/04/13/interview-2016-big-company/
3,4月春招實習面試面經(jīng)(今日頭條搅幅,騰訊,阿里呼胚,360)
在三月的某一天茄唐,當我還沉浸在代碼世界的時候,突然一聲鈴聲響蝇更,拿起手機一看沪编,杭州電話==大三春招第一次面試開始了。
問的問題不多年扩,也就26分鐘的樣子
你用過哪些集合類漾抬?==太多了,隨便說了些
那你說說ArrayList,LinkedList的區(qū)別(還是挺簡單的常遂,一般用過的都說會)纳令。
說說hashMap是怎樣實現(xiàn)的(這個之前看過,順利回答上克胳。還回答了多線程的問題出現(xiàn)的原因平绩,面試官表示很驚訝的樣子)
說說可重入鎖
說說view繪制過程和事件分發(fā)機制,我大概回答了下漠另。然后面試官又問:onTouch和onTouchEvent是什么區(qū)別捏雌?如果我重寫了ontouch和onClick,它們的調(diào)用順序是怎樣的笆搓?什么時候會不調(diào)用onClick性湿?
handler的是怎樣實現(xiàn)的?
由于項目里面用到了picasso满败,所以最后問了下picasso實現(xiàn)原理肤频。
一面結(jié)束,最后面試官居然問我是不是第一次面試== 估計是幫緊張了算墨。不過一面過程中面試官心情還不錯宵荒,都是笑著問的。
當天晚上接到二面,面試官太累了报咳,約我第二天面試侠讯。
二面氣氛一直不對,感覺面試官非常嚴肅暑刃,一來就感覺很有壓力
自我介紹
操作系統(tǒng)里面線程和進程的區(qū)別(挺基礎的) 厢漩,接著麻煩就來了;我說完大致區(qū)別后岩臣,他就問溜嗜,你說進程里面線程是共享內(nèi)存的,那么一個進程最大能占多少內(nèi)存婿脸?粱胜?(懵逼柄驻,這是什么意思狐树?考的分頁知識?)鸿脓。然后這里我想了一下抑钟,說應該和硬件有關,他繼續(xù)問野哭,有什么關系在塔?(應該和地址總線有關,當時沒想起拨黔,他叫我再想想蛔溃,要是你設計的系統(tǒng),應該和什么有關篱蝇,還是沒答上==)贺待。
你項目中圖片是怎么處理的?回答:picasso零截,順便說了下picasso原理麸塞。然后又問:那么picasso里面有多少個線程來加載圖片?要是網(wǎng)絡不同涧衙,線程數(shù)目分別是多少哪工?
布局優(yōu)化(這里開始說錯了一點,然后面試官很生氣的樣子==弧哎,自我感覺就要掛了)
項目中有哪些優(yōu)化雁比?
最后果然掛了==(慘痛的經(jīng)歷,不過為后面打下了很好的基礎==至少不 怎么緊張了)
然后后面就沒有面試了
直到4月騰訊面試==
騰訊是走的正常渠道撤嫩,到成都現(xiàn)場面試
面試場地是在一個賓館里面章贞,一對一面試,face to face還是有點緊張的
自我介紹
java多態(tài)你了解多少?鸭限?
你說說重寫和重載區(qū)別蜕径,然后拿了紙筆,手寫一個能體現(xiàn)多態(tài)的例子
說說java在運行main函數(shù)之前做了哪些工作败京?兜喻? 這個我居然從啟動虛擬機——>加載類——>初始化類一直說到執(zhí)行Main
你對大尾小尾了解多少? 我反問:您說的是大小端么赡麦? 他說對朴皆,然后我正準備給他解釋的時候,他又拿了一張紙:用java寫一個判斷大小尾的程序==
java靜態(tài)方法能不能被重寫泛粹? 答:不能遂铡。 問:為什么?
為什么java靜態(tài)方法不能調(diào)用普通方法晶姊?普通方法能調(diào)用靜態(tài)方法扒接?(其實還是實例引用問題)
java內(nèi)存模型和GC機制
其實騰訊面試官感覺都很nice,他稱呼我 都用您们衙。感覺怪怪的钾怔,而且禮儀非常好。最后面完后蒙挑,我問我面試得怎樣宗侦?他說你了解的知識還是挺寬的,然后問了我一句要不要去做游戲忆蚀?矾利??當然要安鐾唷男旗!
然后就走了。然后就沒有然后了桃焕,晚上查狀態(tài)是不適合剑肯。
騰訊面試后,感覺不怎么死心观堂,又跑去長沙霸面了让网,我一去,HR說移動端基本已經(jīng)招滿了师痕,你可以把簡歷放在這兒溃睹,要是有面試機會的話,我會通知你胰坟。然后我心情失落地回去了因篇。
當我剛到住處,剛出電梯,HR就來電話了竞滓,叫我去面試==
我那個開心啊咐吼,把平時20分鐘的路程當成10分鐘不對跑過去,直接一面商佑。
一面面試官也很nice锯茄,還驚訝我從重慶來==
Hashmap原理
hashcode和equals還有==的關系
用hashmap實現(xiàn)hashset。茶没。我之前看過的肌幽,忘記了。然后按照我的想法回答了抓半。(最后面試官告訴了我該怎樣實現(xiàn)==)
內(nèi)部類訪問外部類的變量有什么問題喂急?
android里面onStop和onPause本質(zhì)區(qū)別。什么時候可以存數(shù)據(jù)笛求?
兩個單鏈表尋找有沒有交點廊移,然后再尋找交點位置
android oom怎么解決
還問了一些項目的問題
其實中間還問了幾個算法,忘記是什么了涣易,后面想到了的話會加上的画机。
二面面試官感覺很牛的樣子冶伞,一直技術轟炸
告訴我你所直到的所有關于java虛擬機的東西==我說了好久好久新症。還說了新生代大概什么時候會加入老年代==
binder機制
handler原理, Message,loop,messageQueue關系响禽,handler內(nèi)存泄露問題徒爹。
TCP三次握手,用紙畫出來
為什么TCP是可靠的芋类,UDP早不可靠的隆嗅?為什么UDP比TCP快?
面試官看到了我的項目侯繁,然后問了我一個用到的框架的原理胖喳,還問了我里面的很多細節(jié)==估計是以為我直接看的別人的博客了解到的這些知識,還好我是自己看了源碼==
算法:幾百萬個QQ號 贮竟,找出前100個消費最高的QQ號丽焊。直接小頂堆什么的
android四大組件 ,這里擴展了很多咕别,畢竟非常熟悉技健,還說了很多坑,很多實現(xiàn)原理(比如activity start原理)
還問了優(yōu)缺點==
(也有一些問題忘記了)
這次面試很久惰拱,忘記帶水了雌贱,出來我直接喝完了一瓶怡寶==
這交自我感覺答得不錯,然后過了2個小時就收到HR面通知
自我介紹
項目里面怎么解決安全問題的?好可怕欣孤,會技術的HR
有沒有女朋友?
家在哪里
有沒有親戚在騰訊馋没?
我問了下要是過了的話大概會在哪里實習?HR說在深圳==還問我有什么問題么降传?我說沒有披泪,我爸媽也在那邊==然后他在我簡歷上面記了一下。
為什么要學習android?
HR面就10多分鐘搬瑰,很快款票,和我一起面試的還有幾個學生,也都是10來分鐘泽论,然后HR叫我等結(jié)果
然后等啊等艾少,等到現(xiàn)在還沒有結(jié)果==
360全程視頻面試加寫代碼什么的
寫一個adapter,我后面忘記了getView的一個參數(shù)==一直在那里想翼悴,面試官問我是不是在編譯器里面寫==我說我在想怎么寫缚够。
hashmap原理==
java可重入鎖
排序算法和穩(wěn)定性,快排什么時候情況最壞鹦赎?
一個獲全國獎的項目問了我20分鐘谍椅,特別是service不被殺死的方法==我說了4種才放過我,還問了我具體實現(xiàn)古话,特別是在JNI里面實現(xiàn)的時候==
項目中界面適配雏吭,自定義過view沒有?
NFC讀卡陪踩,這個是我的項目杖们,我說了具體實現(xiàn),然后就放過我了
我項目中用了google map 和定位肩狂,他問怎么定位的摘完?居然問了我具體API==我還說了里面的坑,國產(chǎn)手機閹割了一部分的問題==
一面大概1個半小時==頭昏腦漲==然后面試官并不放過我傻谁,叫我等等孝治。他去叫二面面試官
http協(xié)議了解多少,說說里面的協(xié)議頭部有哪些字段审磁?
https了解多少谈飒?為什么百度全部都用了https包括首頁
散列表的基礎知識,里面也問了hashmap(可見hashmap重要性)
項目問題,幾個項目都問了力图,什么分工啊什么的
問了我很多項目中開發(fā)的問題步绸,還好基本都答出來了==二面基礎知識基本沒多少,都是項目問題
二面接近一個半小時吃媒,還好在寢室面試瓤介,邊面邊喝水==二面腦袋都是糊的==
二面完后吕喘,10分鐘打電話通知一周內(nèi)有HR面
HR面的時候,我正在火車上刑桑,HR說只有15分鐘氯质,我說當場面了,因為我那個時候正停在一個大站里面祠斧,要停半個小時
自我介紹闻察,問了我所有項目的分工問題和設計等問題,好幾個項目琢锋,這里就花了接近20分鐘辕漂,然后火車開走了,然后大家都知道吴超,悲催了钉嘹,沒信號==
等到我有信號的時候,再給HR打電話約好第二天繼續(xù)面鲸阻。
第二天
繼續(xù)項目分工==
中興實習情況跋涣?為什么最后沒留下?(要讀書澳胥病)
開發(fā)的一些規(guī)范
投了XX公司和XX公司沒有陈辱?為什么沒投XX公司?哎细诸,這里太年輕別坑了==
怎么看待3Q大戰(zhàn)==(大姐沛贪,這個我怎么來說呢?)
問了我實習時間揍堰,希望實習的地點鹏浅,希望做哪方面嗅义?
你覺得你一面和二面哪一面成績更好屏歹?每一面大概多少分
優(yōu)缺點==
每個問題都問了很久,因為每個過后都接著往下問了的之碗。整個HR面都1小時13分鐘蝙眶,累啊M誓恰幽纷!說好的15分鐘呢
然后N天后,收到360拒信博敬。
今日頭條也是我唯一過的公司==一面還好友浸,二面全程技術轟炸,HR面聊得挺好偏窝,雖然有點短
今日頭條我是內(nèi)推的收恢,N天后給我發(fā)郵件和電話約面試武学,本來是北京面試的,結(jié)果去不了伦意,就電話面試了火窒。
兩次技術面試也是接近2個小時 。一面面試官面完后驮肉,叫我去吃飯熏矿,過會兒繼續(xù)面,天真的我以為已經(jīng)二面了离钝,然而并不是票编,這個時候面試官還是建議去北京面試,過的機會大些== 這個時候哪還有心情吃飯卵渴,一直等面試官的電話栏妖,結(jié)果繼續(xù)面的時候直接寫了一個代碼就OK了,代碼是在一個矩陣是查找有沒有某個數(shù)奖恰,矩陣從左到右依次增大(忘記是增大還是減小了)吊趾,從上到下也一樣。由于電腦問題瑟啃,我還是翻墻去寫代碼的==寫代碼的時候论泛,由于網(wǎng)不穩(wěn)定,還經(jīng)常斷==
寫完直接叫我等二面蛹屿,過了會兒二面面試官馬上來了電話
二面面試官感覺很隨和屁奏,從Java的用法問到了虛擬機,問到了操作系統(tǒng)错负,最后深入問到了一個編譯原理坟瓢。還問了一些C語言的東西。
還問了排序犹撒。
然后可能是因為我所有東西是自學的折联,面試官在問之前都問了我了解不,不了解就重新?lián)Q一個识颊。還問了一些圖論最短路徑問題(還好面試前不久做了一個比賽诚镰,華為的未來尋路,就是最短路徑問題)祥款,這個答得還行清笨,說了一些經(jīng)典算法,還有一些只能算法刃跛,還有一些改進等抠艾。
然后就是我項目中的問題,因為我用了rxjava,picasso,retrofit等開源項目桨昙,所以面試官問了我retrofit是如何處理注解的检号,我直接講了源碼首懈,其過我博客里面也寫過了這個,然后面試官可能發(fā)現(xiàn)我了解谨敛,就直接跳過了這個究履。然后問了我rxjava的東西,我結(jié)合博客看了部分源碼脸狸,還問了rxjava里面用了大量的這些最仑,是什么意思。
過后問我了解github上的一些開源項目不炊甲,我說了解一些泥彤,然后就是butterknife了,然后我回答錯了卿啡,以為是注解+反射吟吝。后面掛電話后,找了時間分析了源碼颈娜,還真不是反射==butterknife分析在這里剑逃。
今日頭條感覺是我面試問題水平最高的,不再局限于基礎知識官辽,問了很多很深入的東西蛹磺。感覺面試官都是根據(jù)我具體情況問的,隨手丟出問題同仆,直到我回答不上萤捆。總以為二面會掛俗批。
結(jié)果在某天中午接到了HR的電話俗或,由于那個時候有事,重新約了時間==
當時都有HR面恐懼癥了岁忘,因為前面兩次HR面后都沒消息了==
時間很短辛慰,幾個問題而已,回答完就叫我等結(jié)果臭觉,說5月中旬會出結(jié)果昆雀。