我了解到的面试的一些小内幕!附面试题答案
背景
首先我是個(gè)菜雞,工資也低的一筆。
剛畢業(yè)時(shí)候在一家國(guó)企上班干 app 開(kāi)發(fā),干了快兩年的時(shí)候,跳槽到了一家偽大廠干安全。投了不少簡(jiǎn)歷都沒(méi)有回音,只有這加偽大廠要我就來(lái)了。當(dāng)時(shí)說(shuō)好了會(huì)接觸一些底層的東西,然而平時(shí)也就寫 python 腳本,逆向,android 上寫了一些風(fēng)控的東西,感覺(jué)有點(diǎn) low,工資也不高,當(dāng)初沒(méi)敢多要,hr 給的比我要的還高。剛剛 leader 談了談明年的規(guī)劃,現(xiàn)在想跳槽。
現(xiàn)在也是很尷尬,原來(lái) app 開(kāi)發(fā)的東西也忘了不少,然后其實(shí)我想干 framework 開(kāi)發(fā),自己對(duì) ams,pms 還算挺了解的,平時(shí)也根據(jù)他們?cè)瓌?chuàng)了一點(diǎn)微小的解決方案。最近開(kāi)始 fork 一個(gè) aosp,買個(gè) pixel 改改刷刷練習(xí)一下。
理想畢竟是理想,Android 低端不好混,沒(méi)什么經(jīng)驗(yàn)跳到 framework 上去感覺(jué)也是挺難的,跳回 app 開(kāi)發(fā)又不甘心,現(xiàn)在的狀態(tài)貌似是干了快 3 年沒(méi)有特別精通的東西。最近鬧的裁員,我司也是其中之一。加薪怕是沒(méi)戲了,然而生活還要繼續(xù),跳槽避無(wú)可避。
背景
面是是上海的Android leader崗位,周日一輪面試,自我感覺(jué)答的都還不錯(cuò)。
結(jié)果收到郵件面試結(jié)束了,說(shuō)什么"你優(yōu)秀的學(xué)識(shí)和能力給我們留下了深刻的印象!經(jīng)過(guò)對(duì)你綜合情況的仔細(xì)評(píng)估,并經(jīng)過(guò)與崗位需求進(jìn)行謹(jǐn)慎匹配和權(quán)衡之后, 非常遺憾,我們這次沒(méi)有和你達(dá)成合作。但你的信息已經(jīng)被錄入到公司人才庫(kù)"。意思就是掛了唄。
后來(lái)打電話問(wèn)hr,沒(méi)跟我說(shuō)原因。然后面試過(guò)程中,有一點(diǎn)奇怪的地方,面試前面試官跟我說(shuō)我面的而這個(gè)崗位有點(diǎn)奇怪,他也沒(méi)跟我說(shuō)哪奇怪。
面試過(guò)程
下面是面試官提的一些問(wèn)題:
面試官:點(diǎn)擊一個(gè)圖標(biāo)到這個(gè)應(yīng)用啟動(dòng)的全過(guò)程(前面是項(xiàng)目經(jīng)驗(yàn)沒(méi)啥好說(shuō)的)。
回答:
點(diǎn)擊圖標(biāo)后通過(guò)startActivity遠(yuǎn)程調(diào)用到ams中,ams中將新啟動(dòng)的activity以activityrecord的結(jié)構(gòu)壓入activity棧中,并通過(guò)遠(yuǎn)程binder回調(diào)到原進(jìn)程,使得原進(jìn)程進(jìn)入pause狀態(tài),原進(jìn)程pause后通知ams我pause了。ams再根據(jù)棧中activity的啟動(dòng)intent中的flag是否含有new_task的標(biāo)簽判斷是否需要啟動(dòng)新進(jìn)程,啟動(dòng)新進(jìn)程通過(guò)startProcessXXX的函數(shù)。啟動(dòng)新進(jìn)程后通過(guò)反射調(diào)用ActivityThread的main函數(shù),main函數(shù)中調(diào)用looper.prepar和lopper.loop啟動(dòng)消息隊(duì)列循環(huán)機(jī)制。
最后遠(yuǎn)程告知ams我啟動(dòng)了。ams回調(diào)handleLauncherAcitivyt加載activity。在handlerLauncherActivity中會(huì)通過(guò)反射調(diào)用Application的onCreate和activity的onCreate以及通過(guò)handleResumeActivity中反射調(diào)用activity的onresume。一個(gè)應(yīng)用就此啟動(dòng)。
面試官:Retrofit原理。
回答:
主要是通過(guò)動(dòng)態(tài)代理將接口直接轉(zhuǎn)換成代理對(duì)象。動(dòng)態(tài)代理和靜態(tài)代理的區(qū)別,動(dòng)態(tài)代理直接在虛擬機(jī)層面構(gòu)建字節(jié)碼對(duì)象。
面試官:View自定義的流程,實(shí)現(xiàn)哪些方法。
回答:
實(shí)現(xiàn)OnMeasure,onlayout,onDraw。
繼續(xù)問(wèn)“onMeasure中會(huì)用哪些方法?”(我覺(jué)得這題可能沒(méi)大好,我是想回答的詳細(xì)點(diǎn)的,結(jié)果還沒(méi)打到點(diǎn)他就說(shuō)好,繼續(xù)下一題,不知道是認(rèn)可了還是覺(jué)得我答的過(guò)于啰嗦,如果覺(jué)得太啰嗦可以提出來(lái)啊。。。)
我回答onMeasure 中傳入兩個(gè)int數(shù)值,這個(gè)數(shù)值32位,前2位表示模式,后30位表示寬度、高度。這是外表容器給內(nèi)部view的限制。
一種模式是容器給你多大的值,你就是多大的值(match_parent),
第二種,容易給內(nèi)部view多大的空間,內(nèi)部view不用管,是多大就是多大。
第三種,容器給子view多大的空間,和子view自己算出來(lái)的占用空間,選擇小的那個(gè)(wrap_content)。說(shuō)到這我正打算說(shuō)onMeasure會(huì)調(diào)用measureChildwithmargin類的函數(shù),他說(shuō)好了,然后下一題。
面試官:怎么設(shè)計(jì)app的。
回答:
基本都用的mvc架構(gòu),曾經(jīng)有個(gè)項(xiàng)目使用mvp。還有其它一些整體設(shè)計(jì)上的問(wèn)題,很零碎,但都答的差不多。
面試官:(最后是算法題,面試官的表述不是很清晰,所以開(kāi)始沒(méi)理解他的意思,我歸納一下題目)
有1,3,7三個(gè)面值的金錢,現(xiàn)在要取n元。怎么取個(gè)數(shù)最少。(n是已知數(shù)) 意思就是 1 * a+3 * b+7 * c=n 什么情況(a+b+c)最小。
當(dāng)然這是我自己歸納出來(lái)的,他開(kāi)始的描述讓我想哭。
回答:
開(kāi)始腦子有點(diǎn)沒(méi)反應(yīng)過(guò)來(lái),把它當(dāng)邏輯題做了,想了5分鐘后才反應(yīng)過(guò)來(lái),這是編程題啊。遍歷呀, a的取值范圍(0n)b的取值范圍(0n/3) c的取值范圍(0~n/7) 遍歷取最小值。當(dāng)然這種情況效率并不高,我當(dāng)時(shí)也和面試官說(shuō)了,沒(méi)太考慮效率,如果需要可以再改。感覺(jué)他也認(rèn)可,思路對(duì)就行了。 其它一些零碎的問(wèn)題沒(méi)印象了,主要就這些。
我想大家應(yīng)該看過(guò)很多分享面試成功的經(jīng)驗(yàn),但根據(jù)幸存者偏差的理論,也許多看看別人面試失敗在哪里,比如我這次的掛了的面試,大家可以對(duì)比下,發(fā)現(xiàn)一些自己回答的話會(huì)有哪些問(wèn)題,這樣對(duì)自己之后的面試才更有幫助。
最后
我這里整理了一份完整的學(xué)習(xí)思維以及Android開(kāi)發(fā)知識(shí)大全PDF,有需要的同學(xué)可以自行領(lǐng)取。
資料獲取方式:Android完整知識(shí)學(xué)習(xí)體系路線
當(dāng)然實(shí)踐出真知,即使有了學(xué)習(xí)線路也要注重實(shí)踐,學(xué)習(xí)過(guò)的內(nèi)容只有結(jié)合實(shí)操才算是真正的掌握。
com/doc/DSkNLaERkbnFoS0ZF)**
當(dāng)然實(shí)踐出真知,即使有了學(xué)習(xí)線路也要注重實(shí)踐,學(xué)習(xí)過(guò)的內(nèi)容只有結(jié)合實(shí)操才算是真正的掌握。
總結(jié)
以上是生活随笔為你收集整理的我了解到的面试的一些小内幕!附面试题答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黑色代码第一季剧情介绍
- 下一篇: 我凭什么拿到了阿里、腾讯、今日头条3家大