有了這篇Android面試葵花寶典,你就離進(jìn)入大廠不遠(yuǎn)了
跳槽,這在 IT 互聯(lián)網(wǎng)圈是非常普遍的,也是讓自己升職加薪,走上人生巔峰的重要方式。那么作為一個(gè)普通的Android程序猿,我們?nèi)绾尾拍軘孬@大廠offer 呢?
疫情向好、面試在即,還在迷茫躊躇中的后浪們,如何才能在面試中讓自己脫穎而出,讓面試官眼前一亮?
下面,我將結(jié)合我過往的面試經(jīng)歷來幫大家分析,在Android大廠面試過程中,我們需要注意的關(guān)鍵點(diǎn)以及我們需要做怎樣的準(zhǔn)備。
本文適合人群: 剛畢業(yè)的大學(xué)生、缺乏面試經(jīng)驗(yàn)的求職者、致力于在大廠社招中尋找Android相關(guān)機(jī)會(huì)的開發(fā)者等。
面試前的準(zhǔn)備
在這部分,我將詳細(xì)講解面試前我們需要做哪些方面的工作,以保證我們?cè)诿嬖囘^程中更加順利。
準(zhǔn)備一份漂亮的簡(jiǎn)歷
一份漂亮的簡(jiǎn)歷就是你進(jìn)入大廠的敲門磚。
網(wǎng)上有很多教程教大家如何寫出一份漂亮的簡(jiǎn)歷,這里我就不做重復(fù)勞動(dòng)了,直接分享給大家一個(gè)簡(jiǎn)歷模板:https://github.com/geekcompany/ResumeSample
今天我就要逆向思維講解一下什么樣的簡(jiǎn)歷是糟糕的,這里大家一定要檢查一下自己的簡(jiǎn)歷有沒有如下的毛病:
薪資期望定得過高或者過低
。我們?cè)诤?jiǎn)歷上填寫的期望薪資,建議和投遞的崗位薪資范圍較為接近,懶人可以直接填面議。因?yàn)槎ǖ眠^高,面試官看到之后可能會(huì)加大面試過程中提問問題的難度。(你想啊,你定的薪資都比面試官高那么多,人家心里什么滋味?還不把你往死里問,看看你到底值不值這個(gè)價(jià)?)但是如果你定得過低,面試官可能直接就選擇忽視你的簡(jiǎn)歷了,畢竟工資又不是面試官發(fā)的,人家只是想招進(jìn)來一個(gè)有能力可以背鍋的,你定得那么低,明顯是對(duì)自己水平?jīng)]信心,也就不會(huì)考慮你了。對(duì)自己盲目自信,自己搞不明白的也往簡(jiǎn)歷里寫,什么都寫精通
。這也是非常常見的問題。簡(jiǎn)歷最講究的是真誠(chéng),會(huì)什么就寫什么,不要為了凸顯自己多厲害而胡亂往上寫,否則害的還是你自己。你要知道的是,一般好一點(diǎn)的面試官都會(huì)簡(jiǎn)單結(jié)合你簡(jiǎn)歷上填寫的內(nèi)容進(jìn)行針對(duì)性的提問。因?yàn)榧夹g(shù)可提問的點(diǎn)非常多,但是面試的時(shí)間是有限的,那么如何才能快速地考察一個(gè)人的技術(shù)水平呢?最簡(jiǎn)單的方式就是結(jié)合這個(gè)人的工作經(jīng)歷進(jìn)行針對(duì)性的提問。其實(shí)面試最基本的一項(xiàng)任務(wù)就是驗(yàn)證你簡(jiǎn)歷內(nèi)容的真實(shí)性。簡(jiǎn)歷內(nèi)容過于豐富,技能內(nèi)容與崗位描述匹配度不高
。我就經(jīng)常在Android招聘崗位上收到很多奇葩的簡(jiǎn)歷。這些人的技能樹通常是:C,Android,后臺(tái),js等,也就是俗稱的全干工程師。說真的,即使你真的全會(huì),你寫的這個(gè)簡(jiǎn)歷也只是適合小廠的面試,因?yàn)榇髲S是不會(huì)去招一個(gè)什么都會(huì),什么都不精的人的。你需要在簡(jiǎn)歷中著重突出你區(qū)別于其他人的優(yōu)勢(shì),最好的做法就是什么樣的崗位投遞什么樣的簡(jiǎn)歷,多做幾套簡(jiǎn)歷作為備選。工作經(jīng)歷過于豐富
。例如3年待過3家及以上數(shù)量的公司。工作經(jīng)歷豐富固然是好事,但你也不能全都寫到簡(jiǎn)歷里去,選擇2~3家較為有名的公司介紹一下即可,否則別人會(huì)對(duì)你的團(tuán)隊(duì)協(xié)作能力以及忠誠(chéng)度提出質(zhì)疑。項(xiàng)目經(jīng)驗(yàn)過于簡(jiǎn)單或者論文化
。無(wú)論你的項(xiàng)目經(jīng)驗(yàn)是多還是少,列舉3~4個(gè)即可。除此之外,項(xiàng)目經(jīng)驗(yàn)切忌不要論文化,我經(jīng)常看到很多人的簡(jiǎn)歷上項(xiàng)目經(jīng)驗(yàn)是大段大段的描述,加起來可能有2~3頁(yè)紙...說真的,你寫這么多,面試官反而不會(huì)看,因?yàn)橄肴靠赐陮?shí)在是太累了。這里你只需要簡(jiǎn)單介紹一下項(xiàng)目的內(nèi)容、你負(fù)責(zé)的模塊和擔(dān)任的角色、涉及到的技術(shù)以及最后項(xiàng)目的成果等即可。技術(shù)博客或者github主頁(yè)沒有什么內(nèi)容也寫到簡(jiǎn)歷里
。記住技術(shù)博客或者github主頁(yè)這一類的,本來都屬于加分項(xiàng),可有可無(wú)的,但是如果你寫了,面試官勢(shì)必會(huì)滿懷期待地點(diǎn)進(jìn)去看,如果這個(gè)時(shí)候呈現(xiàn)給他的卻是空白頁(yè)或者寥寥幾行內(nèi)容的話,這種一落千丈的感受會(huì)給面試官留下非常不好的印象。簡(jiǎn)歷中填寫很多對(duì)求職無(wú)關(guān)的內(nèi)容
。與職位要求無(wú)關(guān)的內(nèi)容就不需要寫到簡(jiǎn)歷里去了。因?yàn)槟愕暮?jiǎn)歷是拿去找工作用的,任何一個(gè)與找工作無(wú)關(guān)的內(nèi)容寫到簡(jiǎn)歷里只會(huì)浪費(fèi)你簡(jiǎn)歷的空間。例如你的一些興趣愛好或者無(wú)關(guān)證件。
自我介紹要背得滾瓜爛熟
自我介紹可以說是面試的必要環(huán)節(jié),無(wú)論你參加什么形式的面試,面試官一定會(huì)首先讓你做一個(gè)簡(jiǎn)單的自我介紹,所以自我介紹這一關(guān)一定要準(zhǔn)備充分,最好做到爛熟于心。
自我介紹不是簡(jiǎn)歷的重復(fù)背誦。我們?cè)谧鲎晕医榻B的時(shí)候,一定要把握好重點(diǎn),切忌過長(zhǎng)或者過短。
自我介紹的過程,也是一個(gè)自我推銷的過程。你可以把面試官當(dāng)作你的顧客,而把你自己當(dāng)作推銷的產(chǎn)品。你要做的就是使用最真誠(chéng)的方式,把你個(gè)人的工作經(jīng)驗(yàn)、優(yōu)點(diǎn)、能力與面試公司的崗位需求緊密結(jié)合起來,讓面試官相信招這個(gè)人進(jìn)來確實(shí)可以分擔(dān)工作的壓力。
那么我們?cè)谧鲎晕医榻B的時(shí)候,需要介紹哪些內(nèi)容呢?下面我簡(jiǎn)單列舉一些內(nèi)容供大家參考:
個(gè)人基本信息
。個(gè)人信息的介紹要突出重點(diǎn)。我們需要把重點(diǎn)放在與「公司需求」匹配的信息上,如果該信息匹配或有關(guān)聯(lián),那么我們就說,如果完全沒關(guān)聯(lián),那就一句話帶過或者不說。工作經(jīng)歷
。如果你的工作經(jīng)歷非常豐富,那么簡(jiǎn)單挑1~2家和目前應(yīng)聘公司類似的簡(jiǎn)單介紹一下即可,其實(shí)底層的邏輯就是過去經(jīng)歷是否與目前應(yīng)聘崗位相匹配或有關(guān)聯(lián)。項(xiàng)目經(jīng)歷
。項(xiàng)目經(jīng)歷不要講太多,挑一個(gè)匹配的或者印象最深刻的重點(diǎn)講一下即可,其他的可以一筆帶過。項(xiàng)目經(jīng)歷可以簡(jiǎn)單從四個(gè)維度展開:項(xiàng)目的背景、項(xiàng)目的內(nèi)容、你在項(xiàng)目中承擔(dān)的角色和工作、項(xiàng)目的成果或者業(yè)績(jī)。未來愿景
。說一些積極向上的內(nèi)容,進(jìn)一步說明自身與崗位相匹配,描繪未來愿景,從而更好地打動(dòng)面試官。(要讓面試官覺得招你進(jìn)來是非常有價(jià)值的,小伙子不僅是沖著錢來的,還是有追求講情懷的)
自我介紹不易過長(zhǎng),準(zhǔn)備2~3分鐘即可。與此同時(shí),你平時(shí)還需要多加練習(xí),根據(jù)不同的公司、不同的場(chǎng)合以及面試的不同崗位,進(jìn)行不同內(nèi)容的自我介紹。
面試前多刷刷面試題
面試前多刷面試題,是對(duì)面試最起碼的尊重。
雖然我在這里不提倡大家臨時(shí)抱佛腳,但是適當(dāng)?shù)乇б槐Х鹉_也比那些什么都不準(zhǔn)備,就直接裸面的人要好很多,至少你的態(tài)度是端正的。
臨近年終,很多人開始蠢蠢欲動(dòng)了,這段時(shí)間面試的時(shí)候,我就經(jīng)常能夠面到幾個(gè)啥都不準(zhǔn)備,直接甩兩膀子就過來面試的。面試基本上是一問三不知,要么就是說之前看過忘了...更有甚者直接就說,我就是出來面?zhèn)€試感受一下面試氣氛以及最新行情的...
拜托,能不能給予面試最起碼的尊重?你來面試也是需要花費(fèi)面試官時(shí)間的,簡(jiǎn)單準(zhǔn)備一下不香嘛?萬(wàn)一你運(yùn)氣好,恰好這家公司職位擴(kuò)充,降低面試要求了呢?你這么隨便,豈不是把白花花的機(jī)會(huì)全都給浪費(fèi)掉了嘛!
面試前先了解一下應(yīng)聘的公司及職位
提前了解一下應(yīng)聘的公司及職位內(nèi)容,可以避免一些不必要的尷尬:
“你知道我們公司是做什么的嗎?”
“emm...”
“你知道我們這個(gè)崗位的工作內(nèi)容嗎?”
“emm...”
(老哥!你真的是來面試的嗎??。?br>
如果你是面試官,你會(huì)用一個(gè)都不知道公司和崗位職責(zé)是什么的人嗎?這至少說明了2個(gè)問題:
1.他對(duì)這次面試是不重視的?。撬趺磿?huì)對(duì)他的工作重視呢?)
2.錄用他的風(fēng)險(xiǎn)很高?。ㄋ枪ぷ饕欢螘r(shí)間發(fā)現(xiàn)不適合怎么辦?)
所以我們?cè)诿嬖嚽?,一定要先在網(wǎng)上搜索一下應(yīng)聘公司的詳細(xì)資料以及職位信息:百度、脈脈、企查查、看準(zhǔn)網(wǎng),企業(yè)官網(wǎng)等都可以獲取到。
那么提前了解這些信息對(duì)我們面試會(huì)有哪些方面的幫助呢?
1.方便我們準(zhǔn)備與之匹配的簡(jiǎn)歷。如果你應(yīng)聘的是一家做手機(jī)Rom定制開發(fā)的公司,那么你的簡(jiǎn)歷就需要圍繞著手機(jī)Rom定制以及Android Framework開發(fā)展開。
2.方便我們準(zhǔn)備自我介紹的重點(diǎn)。如果你應(yīng)聘的是一個(gè)手機(jī)藍(lán)牙開發(fā)的職位,那么你在自我介紹的時(shí)候就需要突出你在設(shè)備通訊以及bluetooth、ble方面的經(jīng)驗(yàn)和能力。
3.方便我們準(zhǔn)備與面試相關(guān)的面試題。如果你應(yīng)聘的部門是做技術(shù)中臺(tái)的,那么你可能就需要多準(zhǔn)備一些技術(shù)中臺(tái)、設(shè)計(jì)模式、框架設(shè)計(jì)、算法方面的知識(shí)。
4.方便我們準(zhǔn)備面試時(shí)提問的問題。如果你對(duì)應(yīng)聘企業(yè)的一些規(guī)章、福利或者工作內(nèi)容有疑問的可以提前準(zhǔn)備一些相關(guān)問題。
面試過程中需要注意的點(diǎn)
保持良好的心態(tài)
只要我們?cè)诿嬖囍白龊贸渥愕臏?zhǔn)備,那么我們就應(yīng)該有足夠的信心去面對(duì)接下來的各種提問,我們唯一需要做的就是保持良好的心態(tài),下面我簡(jiǎn)單歸納幾點(diǎn):
淡化成敗意識(shí)
。我們要以一個(gè)正常的心態(tài)去面對(duì)面試,畢竟這不同于研究生面試或者公務(wù)員面試那種考試性質(zhì)的面試,即使沒面上你也不會(huì)損失什么,何況還能積累面試的經(jīng)驗(yàn),所以我們有什么可以擔(dān)心的呢,就權(quán)當(dāng)是和面試官聊聊天,討論討論技術(shù)罷了。保持自信
。很多面試官在面試的時(shí)候,喜歡采用"你確定嗎?"這一類的反問句去反問應(yīng)聘者的回答,以核實(shí)應(yīng)聘者對(duì)知識(shí)的掌握是否牢靠。如果這個(gè)時(shí)候你就開始懷疑自己,出現(xiàn)舉棋不定的情況的話,那么面試官可能就會(huì)認(rèn)為你之前的回答只是道聽途說,或者就是瞎猜的,根本就沒有掌握這個(gè)知識(shí)點(diǎn)。不要緊張
。緊張的表現(xiàn)主要包括:說話結(jié)巴,語(yǔ)無(wú)倫次,邏輯混亂,神情慌張,下意識(shí)做很多小動(dòng)作,目光斜視等。這些在面試官看來都是緊張的表現(xiàn),如果遇到好的面試官可能還會(huì)提醒你一下,否則面試基本是涼涼了。冷靜思考
。在考官提問問題之后一定要先冷靜思考,理清思路,不要急于回答。當(dāng)遇到問題不清楚或者疑惑的時(shí)候,可以主動(dòng)詢問面試官,表達(dá)自己的疑惑。這樣一方面顯得比較沉著冷靜,穩(wěn)重得體。另一方面也可以給自己留出時(shí)間理清思路清晰回答。
注意基本禮儀
無(wú)論任何時(shí)候,我們?cè)谂c別人交談的過程中都應(yīng)當(dāng)遵守最基本的禮儀。
面試一定要準(zhǔn)時(shí),遇事提前溝通,不可隨意放別人鴿子。
說話一定要注意語(yǔ)速,不可過快或過慢,口齒要清晰。
面試過程保持一定的嚴(yán)肅性,不可過于散漫甚至笑場(chǎng)。
不要隨意打斷面試官的話,這是非常不禮貌的行為,
回答面試官提出的問題時(shí)一定要有條理,逐句回答。
視頻或者電話面試的時(shí)候,一定要選擇在一個(gè)相對(duì)安靜的環(huán)境下進(jìn)行。
合理運(yùn)用表達(dá)技巧
一個(gè)人的語(yǔ)言表達(dá)藝術(shù)標(biāo)志著你的成熟和素養(yǎng)。尤其是在大廠中,很多問題其實(shí)是可以通過溝通來解決的,所以一個(gè)人的語(yǔ)言表達(dá)能力往往也是面試官需要考核的內(nèi)容。
我們應(yīng)該學(xué)會(huì)在面試過程中合理運(yùn)用表達(dá)技巧,去凸顯自己的語(yǔ)言表達(dá)能力。
那么我們應(yīng)該怎么做呢,這里我僅僅是簡(jiǎn)單列舉一些供大家參考:
吐字清晰、大方得體、語(yǔ)速適中。
說話的語(yǔ)氣要平和,不可忽高忽低,也不能過于情緒化。
認(rèn)真聆聽面試官的發(fā)言,注意面試官一些細(xì)微的表情變化以及手勢(shì)動(dòng)作。
必要時(shí)可以使用一些機(jī)智、幽默的話術(shù)。
當(dāng)語(yǔ)言并不能完全表達(dá)意思的時(shí)候,可以加上手勢(shì)或者書面的形式加以描述。
多做一些積極的溝通
我們?cè)诿嬖囘^程中,難免會(huì)遇到一些我們平時(shí)從未接觸過的內(nèi)容,如果這個(gè)時(shí)候你只是簡(jiǎn)單地回復(fù)"我沒做過"、"我不了解"、"之前工作沒有這方面的要求"之類的消極回答,最終的面試總評(píng)可能會(huì)被標(biāo)上不善于思考和分析問題,從而導(dǎo)致面試分?jǐn)?shù)大打折扣,因?yàn)闆]有哪個(gè)面試官是喜歡不善于思考和分析的應(yīng)聘者的,尤其你應(yīng)聘的還是一個(gè)研發(fā)崗位。
這里我建議大家在面試過程中最好還是多做一些積極的回答,少做一些消極的回答,除非你對(duì)這個(gè)問題是徹底不了解。
這里我們可以先和面試官通個(gè)氣,表明自己平時(shí)對(duì)這塊接觸得不多,不過可以簡(jiǎn)單分析一下。如果這個(gè)時(shí)候面試官?zèng)]有明確你不需要繼續(xù)進(jìn)行下去的話,你就可以簡(jiǎn)單思考和分析一下,然后提出你的觀點(diǎn)。如果遇到一些好一點(diǎn)的面試官,說不定還會(huì)提醒你一下,或者和你一起分析,這就非常棒了。
面試禁忌
我們?cè)诿嬖嚨倪^程中,一定要注意避雷,以下列舉出來的禁忌一定不要去嘗試觸碰!
切勿答非所問,偷換概念
。當(dāng)面試官提出一個(gè)你并不是很了解的問題時(shí)候,即使冷場(chǎng)也不要答非所問,進(jìn)行偷換概念。因?yàn)槊嬖囎钪v究的就是真誠(chéng)二字。你這樣做只會(huì)加深面試官對(duì)你的厭惡。切勿侃侃而談
。有很多人在面試時(shí),為了能夠在面試官面前一展"風(fēng)采",常常是夸夸其談,口若懸河,殊不知這其實(shí)是犯了大忌的。因?yàn)樵诿嬖嚬傺劾?,你這樣啪啦啪啦沒完沒了地講下去,面試官可能會(huì)有如下四種理解:沒有快速答到要點(diǎn),認(rèn)為你并沒有g(shù)et到這個(gè)問題的本質(zhì),對(duì)這塊掌握得不夠。
賣弄自己的知識(shí),日后和這種人合作起來會(huì)不會(huì)很費(fèi)力?
廢話連篇,浪費(fèi)我的時(shí)間,這樣的人工作起來效率是否會(huì)打折扣?
知識(shí)掌握得還是比較詳細(xì)的。(這可能是唯一一個(gè)為數(shù)不多的正面評(píng)價(jià)吧)
切勿進(jìn)行不當(dāng)?shù)姆磫?/code>。在一個(gè)不恰當(dāng)?shù)臅r(shí)機(jī)進(jìn)行一個(gè)不恰當(dāng)?shù)姆磫?,?shì)必會(huì)導(dǎo)致很多麻煩。我們?cè)诿嬖囘^程中,一定不要和面試官進(jìn)行爭(zhēng)論或者反問面試官(虛心求教還是可以的)。如果面試官的水平或者度量還好的話可能沒什么關(guān)系,但是也不能排除哪些個(gè)水平一般或者度量較小的面試官,你和他爭(zhēng)論是沒有任何好處的。你來這兒面試是為了找工作的,不是去爭(zhēng)個(gè)對(duì)與錯(cuò)的,得罪了面試官?zèng)]有任何好處。
切勿套近乎
。面試過程中,一定要注意保持與面試官的距離,不要上來就套近乎,整得好像你跟面試官很熟似的。即使問題答不上來也不要笑場(chǎng),記住面試是一件非常嚴(yán)肅的事情,不要過于兒戲!切勿問與面試結(jié)果相關(guān)的問題
。這里我需要明確的一點(diǎn)是,一輪面試下來,如果你是合適人選的話,面試官一定會(huì)告訴你下面面試的流程。你那樣急吼吼地想要知道面試結(jié)果,非但沒有任何意義,反而會(huì)加深面試官對(duì)你的厭惡。
Android技術(shù)面試一般涉及的要素
上文主要講解了一些面試通用的技巧,下面就讓我來簡(jiǎn)單講解一下Android技術(shù)面試中主要涉及的內(nèi)容有哪些。
Java基礎(chǔ)
面試Android崗位,Java基礎(chǔ)那是必問的。如果項(xiàng)目中使用kotlin比較多的話,可能還會(huì)問一些kotlin相關(guān)的問題。
Java, 作為一門基礎(chǔ)語(yǔ)言,考核的是應(yīng)聘者是否具備扎實(shí)的基本功。很多培訓(xùn)班或者非科班出身的人,經(jīng)常會(huì)栽在這一環(huán)節(jié)。一般這個(gè)環(huán)節(jié)的問題答不上來的話,基本上是提前結(jié)束了。
那么常見面試的Java基礎(chǔ)問題有哪些呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.Java集合類List,Map,Set相關(guān)的實(shí)現(xiàn)原理。
2.Java線程池的實(shí)現(xiàn)原理和使用
3.Java線程同步相關(guān)的知識(shí)點(diǎn)。
4.Java鎖機(jī)制,以及死鎖產(chǎn)生的原因以及解決方案。
5.Java反射、泛型、注解相關(guān)的知識(shí)點(diǎn)以及使用。
6.Java類加載機(jī)制。
7.Java虛擬機(jī)的資源回收機(jī)制以及算法。
以上基本上是面試Android崗位的常見考點(diǎn),所以我們必須重視對(duì)Java語(yǔ)言的學(xué)習(xí)和理解,即便你在平時(shí)工作中使用kotlin較多,也不能忽視對(duì)Java基礎(chǔ)知識(shí)的鞏固和學(xué)習(xí)。
設(shè)計(jì)模式
設(shè)計(jì)模式其本身其實(shí)也是屬于Java基礎(chǔ)范疇的,只不過部分大廠對(duì)設(shè)計(jì)模式的要求較高,所以會(huì)單獨(dú)擰出來進(jìn)行考察。
很多大廠都喜歡招那些對(duì)代碼有潔癖,有高追求的人進(jìn)來。在他們眼里,追求的并不是這個(gè)功能如何實(shí)現(xiàn),而是這個(gè)功能如何更好地實(shí)現(xiàn)。只要性能不佳或者擴(kuò)展性不夠強(qiáng)的話,結(jié)局基本上就是推翻重構(gòu)。
其實(shí)設(shè)計(jì)模式的考核因人而異,面試官并不會(huì)過于為難你,因?yàn)樵O(shè)計(jì)模式其本身就是個(gè)非常虛的東西,很多人即使是了解設(shè)計(jì)模式,在平時(shí)的工作中也不一定會(huì)使用它們。所以設(shè)計(jì)模式的考核更多的是加分項(xiàng),并不是必要項(xiàng),所以即使答不上來其實(shí)也是沒什么關(guān)系的。
但是如果你在簡(jiǎn)歷中寫了"熟悉/精通常用的設(shè)計(jì)模式"的時(shí)候,那么你就要小心了,因?yàn)槟憧赡軐?huì)面臨一波直擊靈魂深處的拷問。
那么設(shè)計(jì)模式一般會(huì)考察哪些內(nèi)容呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.java設(shè)計(jì)模式的六大設(shè)計(jì)原則以及它們的關(guān)系。
2.單例模式、適配器模式、裝飾者模式、代理模式、外觀模式、策略模式、觀察者模式、責(zé)任鏈模式、命令模式、狀態(tài)模式、中介者模式。這十一種常用的設(shè)計(jì)模式是考核的重點(diǎn),你需要掌握它們的優(yōu)缺點(diǎn)以及使用的場(chǎng)景。
3.適配器模式,裝飾者模式,外觀模式它們之間的區(qū)別是什么。
4.代理模式、策略模式、狀態(tài)模式它們之間的區(qū)別是什么。
5.外觀模式、中介模式它們之間的區(qū)別是什么。
6.靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別,什么場(chǎng)景使用,實(shí)現(xiàn)動(dòng)態(tài)代理的幾種方式。
7.簡(jiǎn)單列舉幾個(gè)Android源碼中使用到設(shè)計(jì)模式的例子。
以上我只是簡(jiǎn)單列舉了一些設(shè)計(jì)模式常見的考點(diǎn),因?yàn)樵O(shè)計(jì)模式的考核相對(duì)靈活,因此還是以實(shí)際應(yīng)用場(chǎng)景為主。
例如,面試官可能會(huì)問你:簡(jiǎn)單列舉幾個(gè)你常用的設(shè)計(jì)模式,談?wù)勊鼈兊膬?yōu)缺點(diǎn)以及使用的場(chǎng)景。
這個(gè)時(shí)候,大多數(shù)做Android開發(fā)的人腦海里可能只剩下單例模式、觀察者模式這些個(gè)常常被他們?yōu)E用的設(shè)計(jì)模式。
這里我并不推薦大家說這兩種設(shè)計(jì)模式,為什么呢?因?yàn)檫@兩種設(shè)計(jì)模式并不能很好地詮釋設(shè)計(jì)模式的美。而且你要知道任何東西聽多了,人的心理是受不了的,這很容易導(dǎo)致面試官心態(tài)崩潰。
就拿我來說,只要一有人無(wú)腦回答單例模式或者觀察者模式的時(shí)候,我都會(huì)情不自禁地提高問題的難度。你要知道,就是一個(gè)簡(jiǎn)簡(jiǎn)單單的單例模式,我也能給你問到心態(tài)崩潰。
所以聽我的勸,不要一提到設(shè)計(jì)模式,你腦海里就只剩下單例模式或者觀察者模式,多了解了解其他設(shè)計(jì)模式,對(duì)你會(huì)有很大的幫助。
注意:對(duì)設(shè)計(jì)模式不夠了解的,可以參考我開源的 architect-java 項(xiàng)目,里面有我自己整理的一些簡(jiǎn)單的算法和設(shè)計(jì)模式的講解,可以說非常實(shí)用。
Android基礎(chǔ)
Android基礎(chǔ),不用說這是面試Android崗位必須要問的內(nèi)容。要是連這個(gè)都答不上來,基本你的面試就提前結(jié)束了。
Android基礎(chǔ)是任何Android面試都需要考核的內(nèi)容。不過這也是按級(jí)別而定,一般高級(jí)開發(fā)工程師的面試,Android基礎(chǔ)只是一筆帶過。
那么Android基礎(chǔ)有哪些呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.Handler機(jī)制以及相關(guān)知識(shí)。
2.Activity和Fragment生命周期。
3.Android四大組件相關(guān)的知識(shí)。
4.Android進(jìn)程間通信的方式。
5.Context相關(guān)的知識(shí)。
6.Activity的啟動(dòng)模式。
7.Android動(dòng)畫相關(guān)知識(shí)。
8.Android自定義組件相關(guān)知識(shí)。
9.Android事件分發(fā)機(jī)制以及觸摸事件沖突的處理。
10.ANR產(chǎn)生的原因以及避免ANR的方式。
11.內(nèi)存泄漏產(chǎn)生的原因以及定位解決的方式。
12.OOM產(chǎn)生的原因以及解決的方式。
13.Android頁(yè)面渲染機(jī)制以及優(yōu)化方式。
14.LinearLayout、FrameLayout、RelativeLayout和ConstraintLayout的理解和性能對(duì)比。
15.Android各版本的特性。
16.Android屏幕適配的技巧。
17.MVC,MVP,MVVM的理解與實(shí)踐。
18.Android的主題、樣式、屬性相關(guān)的內(nèi)容。
19.JNI相關(guān)的知識(shí)。
以上內(nèi)容是作為一名合格Android開發(fā)工程師所必備的知識(shí)點(diǎn),也是常見的考點(diǎn),請(qǐng)務(wù)必每條都要清楚掌握,這樣你在面試過程中才能游刃有余。
Android源碼分析
Android源碼分析,算是要求較高的考核。不過這在大廠面試中非常普遍,因?yàn)楹芏啻髲S對(duì)Android源碼的分析和理解都有相當(dāng)高的要求。
那么常見的Android源碼分析有哪些呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.Android系統(tǒng)的啟動(dòng)流程分析。
2.APP啟動(dòng)的流程分析。
3.Activity的啟動(dòng)流程分析。
4.Zygote進(jìn)程的創(chuàng)建和啟動(dòng)流程分析。
5.Window窗口創(chuàng)建和加載的流程分析。
6.Dalvik和ART的理解。
7.RecyclerView的源碼分析。
閱讀源碼是一件相對(duì)枯燥的事情,如果平時(shí)工作中涉及不到的話就很難堅(jiān)持下去,因此需要非常強(qiáng)的毅力。不過話又說回來,如果你能夠熟練地掌握Android源碼的話,那么就非常有機(jī)會(huì)進(jìn)入大廠了。
Android進(jìn)階技能
這部分一般是對(duì)Android高級(jí)開發(fā)工程師的考核,主要涉及的點(diǎn)主要是一些性能優(yōu)化,技術(shù)細(xì)節(jié)方面的問題。
要想成為一名高級(jí)開發(fā)工程師,性能優(yōu)化以及架構(gòu)設(shè)計(jì)永遠(yuǎn)都是繞不開的話題。做技術(shù)如果只是廣而不深的話,是不可能成為一名高級(jí)開發(fā)工程師的。只有不斷提升自己的不可替代性,才能提高自己的價(jià)值。
那么常見的Android進(jìn)階技能有哪些呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.App穩(wěn)定性優(yōu)化。(crash、性能以及體驗(yàn)等)
2.App啟動(dòng)速度優(yōu)化。
3.App內(nèi)存優(yōu)化。
4.App界面繪制優(yōu)化。
5.App瘦身優(yōu)化。
6.App安全優(yōu)化。
7.網(wǎng)絡(luò)請(qǐng)求優(yōu)化。
8.WebView使用優(yōu)化。
9.RecyclerView的緩存刷新優(yōu)化。
10.AOP技術(shù)的原理和實(shí)踐。
11.gradle腳本持續(xù)集成技術(shù)。
12.App進(jìn)程保活。
以上只是Android進(jìn)階技能的一小部分通用性技術(shù),除此之外還有很多細(xì)分領(lǐng)域相關(guān)的進(jìn)階技能??傊绻@項(xiàng)技術(shù)是你掌握而其他人普遍不了解的,那么它就屬于進(jìn)階技能。
新技術(shù)研究
Android這些年的技術(shù)發(fā)展基本上已經(jīng)趨向成熟,所以對(duì)于新技術(shù)的研究也并不是那么看中,可能面試官就是隨口問一下,想要知道你的學(xué)習(xí)欲望強(qiáng)不強(qiáng)罷了。
那么有什么新的技術(shù)可以在業(yè)余時(shí)間進(jìn)行研究呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.Android組件化。
2.Android插件化。
3.Android熱更新技術(shù)。
4.Android JetPack框架技術(shù)。
5.Kotlin開發(fā)技術(shù)。
6.Android Hook技術(shù)。
7.AOP技術(shù)。
8.依賴注入技術(shù)IoC。
9.跨平臺(tái)開發(fā)技術(shù):ReactNative、Flutter等。
上面的內(nèi)容,其實(shí)很多已經(jīng)算不上新技術(shù)了,如果你現(xiàn)在還不了解的話,那么你最好花點(diǎn)時(shí)間了解一下,否則我只能說你是真的out了。
開源項(xiàng)目源碼分析
開源項(xiàng)目源碼分析和Android源碼分析一樣,也是考核應(yīng)聘者對(duì)原理的理解。如果僅僅只是會(huì)使用而不對(duì)其原理加以了解的話,那么你也只能算是達(dá)到初級(jí)水平,這樣是無(wú)法進(jìn)入到大廠的。
那么開源項(xiàng)目的源碼分析我們應(yīng)該怎么做呢?首先我們需要帶著問題一點(diǎn)點(diǎn)閱讀源碼,搞清楚其內(nèi)部的實(shí)現(xiàn)邏輯,然后梳理出其大致的設(shè)計(jì)架構(gòu),畫出UML圖,最后總結(jié)出其中運(yùn)用到的設(shè)計(jì)模式和思想。
那么有哪些優(yōu)質(zhì)的開源項(xiàng)目值得我們?nèi)パ芯科湓创a呢?下面我們簡(jiǎn)單列舉一些供大家參考:
OkHttp
Retrofit
Glide
LeakCanary
RxJava
ARouter
EventBus
ButterKnife
GreenDao
Dagger2
以上我列舉的基本上都是我們平時(shí)開發(fā)過程中經(jīng)常使用到的開源項(xiàng)目,認(rèn)真研究和分析他們的設(shè)計(jì)思想和精髓,并積極運(yùn)用到我們平時(shí)的編碼當(dāng)中去,可以讓我們的技術(shù)得到質(zhì)的飛躍!
算法
部分大廠對(duì)Android開發(fā)工程師的算法也是有一定要求的,這部分沒有什么好說的,打開LeetCode去多刷刷題就可以了。
雖說Android開發(fā)工程師也需要掌握一定的算法,不過和那些專業(yè)做算法的相比肯定是沒那么高的要求的,我們并不需要把LeetCode的每道題都刷一遍,只要把一些簡(jiǎn)單和中等難度的題刷一遍就可以了。
那么常見的Android算法題有哪些呢?下面我們簡(jiǎn)單列舉一些供大家參考:
1.各類排序。(尤其二分法插入排序、歸并排序需要著重掌握其思想)
2.手寫反轉(zhuǎn)鏈表、鏈表復(fù)制、鏈表合并。
3.手寫隊(duì)列或者鏈表等數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)。
4.字符串匹配、去重問題。
5.雙指針?biāo)惴▎栴}。
6.數(shù)組查重問題。
7.二叉樹的遍歷和序列化。
8.貪心算法相關(guān)問題。
一個(gè)好的算法可能極大地提升應(yīng)用的性能,如果你平時(shí)有心的話就會(huì)發(fā)現(xiàn)在Android源碼中也經(jīng)常能看到算法的身影,感興趣的可以閱讀一下SparseArray的源碼。