Android 面試經(jīng)驗(yàn) - 大廠 騰訊 面

寫在前面

那天剛好是下午 oppo hr 面完,大約 3 點(diǎn)左右騰訊來(lái)電沥曹,我在電梯里沒太注意沒接到電話份名,下午就一直盼呀盼,大約九點(diǎn)剛下班到公司樓下來(lái)電了妓美,問(wèn)方不方便我當(dāng)然說(shuō)方便同窘,就在馬路邊上面了大約 50 來(lái)分鐘,我感覺應(yīng)該是掛了的部脚,因?yàn)檫^(guò)程中電話老是斷加上環(huán)境又比較吵想邦,第二天問(wèn)獵頭說(shuō),下班前查了一下同一批面試的都釋放了委刘,你應(yīng)該是過(guò)了只說(shuō)是應(yīng)該過(guò)了丧没。過(guò)了整整一周到了隔周五上午,接到了第二面的面試通知锡移,約的是隔周三上午 10:30 呕童。第二面面試官時(shí)不時(shí)的面帶笑容,給人很輕松的感覺淆珊。二面完后要我稍等一下接著面三面夺饲,三面面完面試官問(wèn)我下午還有事沒?我們***(應(yīng)該是領(lǐng)導(dǎo))有點(diǎn)事施符,下午四點(diǎn)左右可以面第四面往声,具體我也沒聽清楚是誰(shuí)我也不敢問(wèn)。我說(shuō)下午要上班就先回去了戳吝,下午接到 hr 電話約的是隔周二的上午浩销。總共五輪面試含 hr 面听哭,持續(xù)周期一個(gè)月左右慢洋。

技術(shù)一面

  1. mmap + native 日志優(yōu)化?
    講了傳統(tǒng)日志打印的兩個(gè)性能問(wèn)題陆盘,一個(gè)是反復(fù)操作文件描述符表普筹,一個(gè)是反復(fù)進(jìn)入內(nèi)核態(tài),然后講了 mmap 的原理機(jī)制隘马。

  2. 廣播和 EventBus 的區(qū)別太防?
    說(shuō) EventBus 的實(shí)現(xiàn)原理是基于反射,里面管理了兩張表祟霍,且代碼之間關(guān)聯(lián)性不大不易于維護(hù)杏头,EventBus 不支持跨進(jìn)程通信盈包,被面試官反問(wèn)你確定不支持跨進(jìn)程?我說(shuō)我的看的源碼是不支持醇王,面試官說(shuō)那好吧呢燥。

  3. 常用設(shè)計(jì)模式你了解哪些?
    我開始巴拉巴拉說(shuō)了一大堆寓娩,其中說(shuō)到了裝飾設(shè)計(jì)模式叛氨,被面試官打斷了,請(qǐng)你具體說(shuō)說(shuō)裝飾設(shè)計(jì)模式棘伴。

  4. 跨進(jìn)程通信有哪些寞埠?
    管道,信號(hào)焊夸,信號(hào)量仁连,文件,本地套接字阱穗,共享內(nèi)存饭冬,binder 驅(qū)動(dòng)

  5. 簡(jiǎn)單講講 binder 驅(qū)動(dòng)吧?
    從 Java 層來(lái)看就像訪問(wèn)本地接口一樣揪阶,客戶端基于 BinderProxy 服務(wù)端基于 IBinder 對(duì)象昌抠,從 native 層來(lái)看來(lái)看客戶端基于 BpBinder 到 ICPThreadState 到 binder 驅(qū)動(dòng),服務(wù)端由 binder 驅(qū)動(dòng)喚醒 IPCThreadSate 到 BbBinder 鲁僚。然后又講了虛擬內(nèi)存炊苫、物理內(nèi)存和內(nèi)存映射,跨進(jìn)程通信的原理是要基于內(nèi)核的冰沙, 當(dāng)我講到 binder_open 侨艾、binder_mmap 和 binder_ioctl 是被面試官打斷了,估計(jì)是怕我講太久了倦淀。

  6. 跨進(jìn)程傳遞大內(nèi)存數(shù)據(jù)如何做蒋畜?
    我說(shuō) binder 肯定是不行的,因?yàn)橛成涞淖畲髢?nèi)存只有 1M-8K撞叽,可以采用 binder + 匿名共享內(nèi)存的形式,像跨進(jìn)程傳遞大的 bitmap 需要打開系統(tǒng)底層的 ashmem 機(jī)制插龄。

  7. 說(shuō)說(shuō) ConcurrentHashMap 的實(shí)現(xiàn)原理說(shuō)下愿棋,初始化大小是多少?
    是線程安全的均牢,實(shí)現(xiàn)原理采用的是分段鎖糠雨,初始化大小是 16 ,必須是 2 的冪次徘跪。

  8. 啟動(dòng)優(yōu)化怎么優(yōu)化甘邀?
    我說(shuō)了關(guān)鍵優(yōu)化 Application 琅攘,被面試官打斷了,說(shuō)大家都能想到的東西你不要說(shuō)了松邪,我想聽的是你能不能站在系統(tǒng)的角度去做一些優(yōu)化坞琴,我提到了優(yōu)化包體積大小能優(yōu)化啟動(dòng)速度,優(yōu)化 dex 分包能優(yōu)化啟動(dòng)速度逗抑,可以參考最新的華為方舟編譯器等等剧辐。

  9. 你寫的 rxpay 和 rxlogin 具體怎么實(shí)現(xiàn)的?
    一般我們集成第三方登錄和第三方支付 SDK 都需要監(jiān)聽 onActivityResult 方法邮府,我是參考了 RxPermission 的實(shí)現(xiàn)方案添加了透明 Activity 荧关。

  10. kotlin + fullter 方面的
    kotlin 自己學(xué)了語(yǔ)法但是開發(fā)項(xiàng)目中沒用上,fullter 我是了解了它的實(shí)現(xiàn)原理但是開發(fā)中也沒用上褂傀。

技術(shù)二面

  1. 單例設(shè)計(jì)模式都寫寫忍啤,靜態(tài)內(nèi)部類是怎么保證線程安全的?

  2. synchronized 底層實(shí)現(xiàn)原理仙辟,ReentrantLock 公平鎖與非公平鎖檀轨。

  3. 主線程等待所有線程執(zhí)行完畢,再執(zhí)行某個(gè)特定任務(wù)怎么實(shí)現(xiàn)欺嗤?原理和源碼看過(guò)沒参萄?

  4. 自定義 view 的一般流程,要注意些什么如何優(yōu)化煎饼,點(diǎn)擊事件和長(zhǎng)按時(shí)間分別是怎么實(shí)現(xiàn)的讹挎?

  5. 四種啟動(dòng)模式,在源碼分析中的原理是怎樣的吆玖?

  6. 講講 bindService 的過(guò)程筒溃,你當(dāng)初是怎么優(yōu)化后臺(tái)服務(wù)進(jìn)程的?

  7. 開發(fā)中你都用到了哪些設(shè)計(jì)模式沾乘?說(shuō)說(shuō)當(dāng)時(shí)具體的場(chǎng)景怜奖。為什么你要用方法工廠,另外兩種呢翅阵?

  8. RxJava 在使用過(guò)程中碰到了某些不友好的錯(cuò)誤一般怎么解決歪玲?發(fā)現(xiàn)了內(nèi)存泄露一般怎么解決分析,有沒有碰到過(guò)系統(tǒng)服務(wù)內(nèi)存泄露的問(wèn)題掷匠?

  9. 你們用的 okhttp 滥崩?那你有沒有做過(guò)一些網(wǎng)絡(luò)優(yōu)化呢?比如弱網(wǎng)環(huán)境讹语。

  10. 給你個(gè)數(shù) 1 吧钙皮,比如 1000011 里面有幾個(gè) 1 ?

  11. 快排了解不?最壞的情況是怎樣短条?如果有大量重復(fù)數(shù)據(jù)怎么優(yōu)化导匣?

技術(shù)三面

  1. 講講 handler 的底層實(shí)現(xiàn)原理?
    這么簡(jiǎn)單茸时?問(wèn)到碗里來(lái)了贡定,后面漸漸說(shuō)到延遲消息是 nativePollOnce 來(lái)處理的,在 6.0 以上用的是 epoll 方式來(lái)監(jiān)聽文件描述符屹蚊。接著問(wèn)道了為什么要用這種方案厕氨?它跟 poll 和 select 比起來(lái)有哪些優(yōu)勢(shì)?它是怎么監(jiān)聽的你看過(guò)它的內(nèi)部實(shí)現(xiàn)原理沒汹粤?反正感覺很難受了命斧。

  2. 說(shuō)說(shuō)你做的日志記錄優(yōu)化?
    把第一輪面試的又講了一通嘱兼,你在每個(gè)文件的最后寫入了當(dāng)前內(nèi)容的大小国葬,你有沒有想過(guò)如果文件被破壞的情況?這種異常情況怎么處理芹壕?后面還問(wèn)到了加密和壓縮汇四。

  3. 你看過(guò) binder 驅(qū)動(dòng)的源碼,說(shuō)說(shuō)他的內(nèi)存映射過(guò)程踢涌,說(shuō)說(shuō)客戶端等待服務(wù)端處理返回的流程通孽,如果要跨進(jìn)程傳遞大內(nèi)存數(shù)據(jù)你具體會(huì)怎么做?簡(jiǎn)單寫一寫吧睁壁。

  4. 在公司做過(guò)哪些優(yōu)化背苦?
    內(nèi)存優(yōu)化,啟動(dòng)優(yōu)化潘明,網(wǎng)絡(luò)優(yōu)化行剂,包體積優(yōu)化,具體說(shuō)說(shuō)包體積優(yōu)化钳降。我提到了包體積優(yōu)化不僅僅是優(yōu)化了包的大小厚宰,包體積太大從安裝的那一刻開始,我們的應(yīng)用就可能比較慢了遂填,因?yàn)?pms 會(huì)去拷貝解壓解析我們的 apk 安裝文件铲觉,會(huì)去優(yōu)化我們的 dex 等等,包體積太大還會(huì)影響我們的啟動(dòng)速度城菊。然后就巴拉巴拉說(shuō)具體怎么做备燃,問(wèn)到了為啥混淆資源能減少包體積大小凌唬?你當(dāng)時(shí)優(yōu)化的時(shí)候效果是怎樣的減少了多少?

  5. 開發(fā)過(guò)程中遇到的一些最難解決的問(wèn)題?
    提到了動(dòng)態(tài)修復(fù)替換加載 so 客税,那你知道怎么修復(fù) class 嗎况褪?怎么修復(fù)資源呢?后面又聊到了插件化更耻,提到了 360 用的是借尸還魂测垛,那如果我們?cè)诓寮?Androidmanifest.xml 中注冊(cè)了其它屬性該怎么解決,資源方面怎么處理秧均?

  1. 還有什么要問(wèn)我的食侮?

個(gè)人體會(huì)

要是換幾年前我也跟大家一樣,感覺這些面試題估計(jì)一個(gè)也答不好目胡,但是今天回過(guò)頭再來(lái)看其實(shí)感覺也就一般般吧锯七。當(dāng)我們讀小學(xué)時(shí)感覺初中知識(shí)比較難,但當(dāng)我們讀到高中時(shí)再回過(guò)頭來(lái)看就很簡(jiǎn)單了誉己。因此我們不必在乎現(xiàn)在的自己能力是否足夠強(qiáng)眉尸,一口也是吃不成胖子的,只要今天比昨天有進(jìn)步這就足夠了巨双。但道理我們都懂噪猾,可是能堅(jiān)持下來(lái)的同學(xué)卻比較少了,人生貴在堅(jiān)持筑累!

隨著年齡的增長(zhǎng)意味著我們的時(shí)間也越來(lái)越少了袱蜡,所以我們自己心里要明白想要什么?是想成為某個(gè)領(lǐng)域的專家慢宗,還是想多方面發(fā)展以后做領(lǐng)導(dǎo)型人才坪蚁。一個(gè)時(shí)間段往往只能做好一件事情,有舍必會(huì)有得婆廊。當(dāng)我們開著拖拉機(jī)在鄉(xiāng)村道路時(shí)迅细,不要看著別人開著跑車就羨慕,以為拖拉機(jī)也能上高速淘邻,但內(nèi)心要有換噴氣式飛機(jī)的勇氣和決心茵典。

大廠的正常面試流程周期一般是一到兩個(gè)月,就算薪資談完到 offer 最終審批下來(lái)可能都需要一到兩周宾舅,這段時(shí)間心理是比較難熬的统阿,因此建議大家盡量不要裸辭。面試完畢一般都會(huì)透露多久給答復(fù)筹我,如果是獵頭推的多跟獵頭聯(lián)系扶平,大家要盡量想辦法打聽到最新的動(dòng)態(tài)。

二本大學(xué)也會(huì)有一流的專業(yè)蔬蕊,所以并不一定說(shuō)一線互聯(lián)網(wǎng)企業(yè)就是最好的结澄,因此在面試的時(shí)候一定要問(wèn)一下部門和項(xiàng)目,自己根據(jù)自身的情況來(lái)選擇企業(yè)和項(xiàng)目組。一般情況下通過(guò)面試的難易程度就能判斷出部門的技術(shù)沉淀麻献,那種幾乎不問(wèn)技術(shù)很容易過(guò)的情況们妥,并不見得就一定是好現(xiàn)象,還是得根據(jù)自身的情況和以后的打算來(lái)判斷勉吻,有時(shí)選擇可能會(huì)大于努力监婶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市齿桃,隨后出現(xiàn)的幾起案子惑惶,更是在濱河造成了極大的恐慌,老刑警劉巖短纵,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件带污,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡踩娘,警方通過(guò)查閱死者的電腦和手機(jī)刮刑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)养渴,“玉大人雷绢,你說(shuō)我怎么就攤上這事±肀埃” “怎么了翘紊?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)藐唠。 經(jīng)常有香客問(wèn)我帆疟,道長(zhǎng),這世上最難降的妖魔是什么宇立? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任踪宠,我火速辦了婚禮,結(jié)果婚禮上妈嘹,老公的妹妹穿的比我還像新娘柳琢。我一直安慰自己,他們只是感情好润脸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布柬脸。 她就那樣靜靜地躺著,像睡著了一般毙驯。 火紅的嫁衣襯著肌膚如雪倒堕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天爆价,我揣著相機(jī)與錄音垦巴,去河邊找鬼媳搪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛魂那,可吹牛的內(nèi)容都是我干的蛾号。 我是一名探鬼主播稠项,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼涯雅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了展运?” 一聲冷哼從身側(cè)響起蛤售,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤憔杨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體健爬,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年件炉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峻凫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勘畔,死狀恐怖所灸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情炫七,我是刑警寧澤爬立,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站万哪,受9級(jí)特大地震影響侠驯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奕巍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一吟策、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧的止,春花似錦檩坚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至权谁,卻和暖如春剩檀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旺芽。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工沪猴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辐啄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓运嗜,卻偏偏與公主長(zhǎng)得像壶辜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子担租,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353