Android
開發(fā)職位或許沒有之前如此火爆沙兰,但是只要你有真才實(shí)學(xué)舷丹,找個(gè)較好的工作還是比較容易的抒钱。如果你是985,211,如果你是碩士學(xué)歷谋币,那找個(gè)滿意的offer更是不再話下仗扬;即使不是上面的條件,只要你好好努力的學(xué)習(xí)瑞信,把每一項(xiàng)的技術(shù)點(diǎn)攻破了厉颤,同樣可以達(dá)到甚至超越上面條件的同學(xué)穴豫。
我隔一段時(shí)間都會(huì)出去面試一次凡简,面試的目的不是為了找到好的工作,而是知道自己的優(yōu)缺點(diǎn)是什么精肃?知道市場(chǎng)需要什么樣的人秤涩?同樣,面試你的也是同行司抱,這樣也能夠碰撞出不同的思想筐眷。當(dāng)然,遇到好的機(jī)會(huì)那是再好不過了习柠。試想匀谣?如果你一直待在一家公司,都不知道外面的情況如何的話资溃,那是很可怕的武翎,至少我這么認(rèn)為。如果您同意這樣的觀點(diǎn)溶锭,不妨接著往下看宝恶,讓我們一起研究面試過程中需要具備的知識(shí)。下面是我親生經(jīng)歷的一次面試趴捅,這里寫出來給大家分享垫毙,更多的是總結(jié)面試中遇到的問題以及以后學(xué)習(xí)過程中的方向。只有這樣才能和社會(huì)接上軌跡拱绑。
我面試的是美團(tuán)综芥,這家公司還算不錯(cuò)的,至少在我印象中還是挺好猎拨。技術(shù)面試一共是三面膀藐。下面做一個(gè)總結(jié)
第一面:
1 手寫算法題。一共有3個(gè)迟几,面試官隨機(jī)選擇一個(gè)消请。貓撲素?cái)?shù);1到n类腮,求1的個(gè)數(shù)臊泰;單詞反轉(zhuǎn)。
2 Activity的加載模式蚜枢。
standard缸逃,singleTop针饥,singleTask,singleInstance需频。
可以參考:https://developer.android.com/guide/components/tasks-and-back-stack.html
2.1 什么時(shí)候會(huì)用到singleTask丁眼?
在MainActivity的時(shí)候用到
3 Handler機(jī)制?
MessageQueue昭殉,Looper等苞七。
3.1 一個(gè)線程是否只有一個(gè)Looper?
3.2 如何保證一個(gè)線程只有一個(gè)Looper挪丢?
參考:ThreadLocal
4 多線程的方式有哪些蹂风?
1) new Thread()
2) AsyncTask
3) Handler
4) IntentService
5) ThreadPoolExecutor
5 ANR異常發(fā)生條件
1)5s內(nèi)沒有響應(yīng)用戶輸入事件
2)10s內(nèi)廣播接收器沒有處理完畢
3)20s內(nèi)服務(wù)沒有處理完畢
5.1 如何分析ANR
log+trace.txt
6自定義View和ViewGroup
說一下自己定義的組件就行
7 事件處理
分發(fā),攔截乾蓬,處理惠啄。只是View沒有攔截處理
8 GC算法
標(biāo)記清除,標(biāo)記整理任内,復(fù)制撵渡,分代收集
參考:http://www.reibang.com/p/7c708a66ff42
把上面文章弄懂了,就能刷過GC
9 四大引用
強(qiáng)死嗦,軟趋距,弱,虛越走,并說明下合適GC
10 動(dòng)畫
View動(dòng)畫棚品,屬性動(dòng)畫,幀動(dòng)畫廊敌。再說下View和屬性動(dòng)畫區(qū)別铜跑。
參考:https://developer.android.com/guide/topics/graphics/overview.html
11 Dalvik和Art區(qū)別?(Just In Time和Ahead Of Time)
就這樣第一面基本結(jié)束骡澈。一共問了11個(gè)問題锅纺,其中美團(tuán)的手寫算法在業(yè)界算是比較出名,很多小伙伴可能卡在手寫算法上肋殴。然后就是一些Android和Java的細(xì)節(jié)性東西囤锉,這些基礎(chǔ)內(nèi)容只要有1年經(jīng)驗(yàn)的都基本能說出個(gè)一二三。
大概過了10分鐘护锤,接下來是
第二面:
1 OkHttp原理官地?
2 Retrofit原理?為何用代理烙懦?代理的作用是什么驱入?
3 ButterKnife原理?用到反射嗎?為什么亏较?
4 ANR異常如何查找并分析莺褒?
5 JVM內(nèi)存模型?性能調(diào)優(yōu)雪情?
6 垃圾搜集算法有哪些遵岩?G1算法?
7 Http和Https的區(qū)別巡通?
1)Https是ssl加密傳輸尘执,Http是明文傳輸
2)Https是使用端口443,而Http使用80
3)HttpsSSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸扁达、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議要比Http協(xié)議安全
4)Https協(xié)議需要到CA申請(qǐng)證書
8 加密算法有哪些正卧?對(duì)稱加密和非對(duì)稱加密的區(qū)別?
MD5跪解,SHA1,Base64签孔,RSA叉讥,AES,DES
對(duì)稱:使用相同密鑰饥追,需要在網(wǎng)絡(luò)傳輸图仓,安全性不高。
非對(duì)稱:使用一對(duì)密鑰但绕,公鑰和私鑰救崔,私鑰不在網(wǎng)絡(luò)傳輸,因此安全性高捏顺。
9 TCP的三次握手六孵??jī)纱涡胁恍校繛槭裁捶荆縏CP攻擊知道嗎劫窒?如何進(jìn)行攻擊?
10 內(nèi)存優(yōu)化如何做拆座?
11 看過那些源碼主巍?
12 會(huì)對(duì)代碼進(jìn)行review嗎?何時(shí)review挪凑?怎么review孕索?
13 項(xiàng)目中遇到的讓你棘手的問題?多久解決躏碳,怎么解決搞旭?(考的是你發(fā)現(xiàn)問題和解決問題的能力)
14 如何學(xué)習(xí)?何時(shí)學(xué)習(xí)?怎么學(xué)習(xí)?學(xué)習(xí)渠道?(考的是學(xué)習(xí)能力)
就這樣选脊,第二面結(jié)束了杭抠。可以看出恳啥,第二面的難度會(huì)比第一面大一點(diǎn)偏灿,但是還好,基本都是常用的內(nèi)容钝的,深度會(huì)偏向原理性質(zhì)翁垂。這就說明在平時(shí)的編碼過程中,需要多多思考硝桩,多看源碼實(shí)現(xiàn)方式沿猜,而不要一味著去寫代碼。程序員會(huì)寫代碼碗脊,但不要做一個(gè)只會(huì)寫代碼的程序員啼肩。我們的思維方式是不可替代的。
大概過了10分鐘衙伶,開始進(jìn)行第三面面試:
第三面:
1 前幾次面試感覺如何祈坠?
2 你現(xiàn)在的APP日活是多少?
3 你現(xiàn)在如何處理崩潰日志矢劲?
4 你覺得小團(tuán)隊(duì)好還是大團(tuán)隊(duì)好赦拘?(這個(gè)問題不能直接回答好和不好,不然掉坑里了)
5 你的優(yōu)點(diǎn)和缺點(diǎn)說下芬沉?
6 你的發(fā)展方向說下躺同?是先講究寬度還是講究深度,為什么丸逸?
7 為什么離職蹋艺?
8 其他小問題,如哪里人巴衷薄车海?現(xiàn)在工資怎樣?要求如何隘击,何時(shí)到崗笆讨ァ?有什么問題要問我的嗎埋同?
就這樣州叠,第三面結(jié)束了⌒琢蓿可以看出咧栗,第三面面試官不會(huì)考察你的知識(shí)細(xì)節(jié)逆甜,而是問一些形而上的知識(shí)。他是從整體方向上去把握面試者致板,往往最后一個(gè)面試官對(duì)你起到?jīng)Q定性作用交煞。當(dāng)然,能見到最后一面面試官斟或,說明你前兩面都已經(jīng)過了素征。
總結(jié):
這次面試感覺還不錯(cuò),美團(tuán)的開發(fā)同學(xué)待人方面很隨和萝挤。很喜歡這種氛圍御毅。結(jié)果不重要,重要的是過程怜珍。只要你有實(shí)力端蛆,就別擔(dān)心。如果不好好學(xué)習(xí)酥泛,就算背了面試題今豆,又能如何?一樣會(huì)在面試中PASS揭璃。所以說晚凿,平時(shí)寫代碼的時(shí)候需要多多思考,不一定用到才去Google瘦馍,對(duì)于一些新的技術(shù),要不斷追求同時(shí)別忘記了基礎(chǔ)很重要应役,基礎(chǔ)情组,基礎(chǔ),基礎(chǔ)箩祥,重要的事說3遍院崇。
在接下來的學(xué)習(xí)和工作中,需要學(xué)習(xí)繼續(xù)探索以下問題袍祖。
1 Java基礎(chǔ)知識(shí)底瓣。線程,java虛擬機(jī)蕉陋,內(nèi)存模型等捐凭。
2 Android基礎(chǔ)知識(shí)。官方API凳鬓,常用控件源碼茁肠,自定義控件,動(dòng)畫缩举,性能分析等垦梆。
3 app層面:第三方開源框架(okHttp,Retrofit,ButterKnife),熱修復(fù)技術(shù)(Andfix,Robust,Tinker等)匹颤,崩潰處理,日志處理托猩,內(nèi)存溢出內(nèi)存泄漏定位等印蓖。
4 網(wǎng)絡(luò)基礎(chǔ):TCP/IP,Http/Https,UDP,七層網(wǎng)絡(luò)協(xié)議等等。
5 溝通能力和相處能力京腥,這是軟實(shí)力赦肃。非常關(guān)鍵,如果你技術(shù)很好绞旅,但是相處起來很困難摆尝,我想面試官也不太愿意招你。
最后因悲,向您請(qǐng)教一個(gè)問題唄堕汞?您是如何學(xué)習(xí)的?如何對(duì)知識(shí)進(jìn)行管理和規(guī)劃晃琳?如何善用記憶七天遺忘曲線讯检?如何對(duì)碎片化的時(shí)間進(jìn)行管理?這個(gè)問題是我一直在黑暗中摸索的問題卫旱,希望大家踴躍留言人灼?一起進(jìn)步!