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