百度、头条、网易 Android 等社招面试题目
一.拼多多
"備受爭議"的一家電商公司,發(fā)展很快,不過這不是我想說的重點,我想說的是,拼多多的兩位技術(shù)面試官很和藹(當然hr同學也很好了~),提出的問題很新穎,就拿Handler來說吧,大部分的公司都會直接問,說說你對消息機制Handler的理解,拼多多的提問大概意思是:
1.讓你設(shè)計一個線程池,如果調(diào)用者在傳入的Runnable任務(wù)時,在run方法直接使用了Handler,會發(fā)生什么? 2.1的問題還比較簡單,子線程不會默認給你一個looper,你需要調(diào)用prepar去創(chuàng)建,調(diào)用loop去開啟無限循環(huán),這是一個正常的回答,問題又來了,面試官又問你,接下來又會發(fā)生什么? 3.到這里我相信會有一些同學暫時會"蒙"一下,心想,應(yīng)該不會發(fā)生什么了吧?2中已經(jīng)提到loop是無限循環(huán)取消息,如果到現(xiàn)在什么都不做,這個線程會一直停留在run方法中,結(jié)束不了.到這里還沒完。 4.知道IntentService嗎,它里面也有一個Handler,它是如何結(jié)束執(zhí)行呢,如果多次start這個IntentService,它又如何判斷什么時候結(jié)束呢?這系列問題都不難,但我想說的是答案并不重要,重要的是我們在學習的時候不但要多問為什么,還要把各個知識點可以串聯(lián)起來,這個很重要,如果各個知識點都略知一二,都串不起來,說明沒有正真的理解。也體會不到學習的樂趣。
為了可以更加深刻的體會到"知識點串聯(lián)"的重要性,我這里再舉一道題:
1,相信大家都被問過activity啟動流程,也被問過activity生命周期,也被問過ui繪制流程,當然也被問過在activity的oncreate方法中,為什么獲取不到控件的寬高,如何才可以獲取,為什么? 2,上面一口氣說了四道經(jīng)典面試題,當然答案不重要,這里我在追問一下:如果在onresume方法中可以獲取控件寬高嗎?在追問一下:ui繪制流程和activity生命周期有什么關(guān)系,或者ui開始繪制的時機到底在什么時候? 3,所以仔細想想,這些知識點都是有關(guān)系的,我們在復(fù)習的時候應(yīng)該這樣去想,這樣才可以更加有效率的去學習,才可以更加快速的擺脫初級工程師的帽子。這里最后舉一道題,以結(jié)束拼多多面試給帶來的思考: 大家都知道子線程不能更新ui,我再追問一下,子線程真的不能更新ui嗎(答:是可以的,也不會報錯,當然答案不重要)。
二.百度:
我心目中大廠中的大廠,正因為這樣也是我這么多次面試中唯一緊張的一次,還好結(jié)果還很滿意。兩位面試官也給我提了很多建議,很感謝,這里還是用一道現(xiàn)場面試題來表達我的思考吧。
你對網(wǎng)絡(luò)請求做過哪些優(yōu)化呢~
1, 對于我這種菜鳥來說,這道題真的很空洞,但是我不能就這樣簡單的回答,我不知道,我沒做過,網(wǎng)絡(luò)這塊我只用了現(xiàn)成的框架,這樣回答肯定會掛的! 2, 我相信如果我是面試官,對面坐著一位工作經(jīng)驗不足1年的同學,我也不期待他可以把這道題回答的很好,但我也不想聽到那么簡單的我不知~ 3, 所以,對于這道題而言,我首先回答了下okhttp中鏈接池復(fù)用,又簡單講了下對HttpDNS,IP直連的理解,以及對Http2.0多路復(fù)用,長連接的理解等等,當然我理解的非常淺,也當然答案并不重要,重要的是你面對一道不會的題目時,不要簡單的去說no,傾其所有,把你的想法和思路都列舉出來,不管對錯,讓面試官看到,你在思考~當我簡單說完這些思路后,面試官又給我深入解釋了下,非常感謝接下來我也會查盡資料去深入學習這塊知識,當然其他知識模塊也都要慢慢去深入,去總結(jié)~
三.小米:
在去面試的路上,感覺小米總參好遠好偏僻,到了之后,環(huán)境還可以,不過接下來的面試就不是那么順利了,這可能是我這次所有面試經(jīng)歷中最糟糕的一次了…令人意外的是我居然還通過了面試,幸運~
小米這次面試經(jīng)歷可能對我的影響最大,因為這次經(jīng)歷算是刷新了我一次認知(說是刷新認知,可能夸大了些,但我找不到其他詞語來描述了,就這樣了),還是用一道現(xiàn)場面試題來:
依然答案并不重要,我記得我回答這道題目的時候有理有據(jù),面試出來后,我總感覺哪不對,就又認真看了看源碼,寫了個demo去驗證,果然我的回答大錯特錯,現(xiàn)在回想面試官聽我回答的時候是什么想法,感覺好尷尬~
給我的啟示是,看源碼的時候,要帶著問題去看,可能這個誰都知道吧,我就不著重提醒了。另外對我這樣初級程序員來說,看源碼的時候不可避免的會去搜索現(xiàn)有的文章幫助理解,這無可厚非,重要的是不要百分百依賴這些文章,我的意思不是說這些文章寫的不好,我可能更多的想要強調(diào)一個自主獨立性,因為你看源碼時的思維模式可能和文章作者的不同,這樣可能就造成你一直在跟著作者走,沒有了自己的思考方向,因此也可能去忽視或者誤解其中某些知識點,造成我這次的尷尬~
還有看完源碼后,如果可以,動手寫一個demo去驗證你所學到的知識就更好了,另外更加深層次的要求是,如果可以手動模仿寫一個大概的功能框架,相信會對其中實現(xiàn)的細節(jié)更加透徹,比如手寫Handler,手寫Retrofit等等。
四.網(wǎng)易:
對于網(wǎng)易,我的第一印象就是“豬廠”,自己養(yǎng)的豬一定很好吃,哈哈,可惜沒有吃過網(wǎng)易的食堂,一定很好吃_
網(wǎng)易的兩輪面試中沒有提問一個具體的知識點,這點有的意外,所以印象很深刻。
一面全程問的是我的項目經(jīng)歷,重難點是什么以及解決方案,在前面的“面試風格”那部分也提到過,感受也在前面說了,總結(jié)一句話就是:平時工作中一定要多積累項目中的重難點。雖然一面的最后也問了道算法題,但很簡單,就不提了。
二面面試官我感覺是一名技術(shù)總監(jiān),因為全程問的是開放性問題,其中一個問題是:你如何看待flutter,flutter能否真正的普及。差不多是這個意思把。
五.頭條:
字節(jié)跳動是我一直很向往的一家公司,創(chuàng)新、活力、強大、潛力,是目前為數(shù)不多可以挑戰(zhàn)bat地位的獨角獸。
在頭條的面試過程中,印象最深刻的一個問題是對MVC、MVP、MVVM的理解,以及MVVM的實現(xiàn)方式有哪些。雖然很多博客也都介紹過三者的區(qū)別,以及MVVM的實現(xiàn)
我認為這道題目很重要,因為通過這道題目的考察,可以看出一名程序員是否在程序設(shè)計上有過自己的思考,而不是在工作中簡單的“搬磚”。
在Android架構(gòu)設(shè)計中,大體上只有三種設(shè)計,組件化,插件化,再加上MVVM(或mvp、mvc),如果再能夠熟練都應(yīng)用各種設(shè)計模式,理解設(shè)計模式的六大原則,那么你的代碼寫的一定很漂亮。
同時由于頭條在面試中非常注重算法,這段時間我也狠狠的總結(jié)了一下算法相關(guān)的知識點。
數(shù)組類、鏈表類、樹類,位運算類,大數(shù)處理,簡單的動態(tài)規(guī)劃,特殊的數(shù)據(jù)結(jié)構(gòu),如map,set
如果對算法并不是那么感興趣,僅僅想要應(yīng)付面試而言,算法其實并不可怕,大家都知道頭條可能是面試算法最多的一家公司了吧,即使這樣,頭條算法面試中的題目也都不難,無非是上面中的分類,數(shù)組,鏈表,以及二叉樹的操作,最多加一些簡單的動態(tài)規(guī)劃題目~
例如中序遍歷二叉樹,使用非遞歸方式,就拿這道題而言,非?;?#xff0c;也沒有難度,希望對算法面試畏懼的同學提高信心,認真學習數(shù)據(jù)結(jié)構(gòu)就可以了(另外在補充一點,對于校招而言,因為有一個線上筆試環(huán)節(jié),筆試中的算法平均難度稍微高于面試中的)
這里我還想再啰嗦一點,因為對于算法的準備大家大都不知到如何去復(fù)習,只知道一味的刷題,尤其是對于數(shù)據(jù)結(jié)構(gòu)薄弱的伙伴來說,沒有目的的刷題并不能真正提高你的算法能力,更多的是你的自我安慰,心理告訴自己在學算法,然而并沒有效率。
首先一定先要認認真真學的數(shù)據(jù)結(jié)構(gòu),圖的那章如果不想看,對于算法面試而言可以不去看,還過有精力的還是去看看,畢竟樹與圖之間還是有很多相似之處。
基礎(chǔ)不好的伙伴在刷題的時候一定要注意一下幾點:
開始時先按照類型去刷,諸如今天看數(shù)組類算法題,明天看鏈表類的等等
每刷一類題目時一定要去總結(jié)其中的知識點,將這類題目的特點,常用的方法,??嫉姆较蛞欢ㄒ斫馔笍?#xff0c;這樣才有效率,才會進步。
基本類型的題目都刷過一遍時,再回頭總結(jié)所有題目常用的思想
以上操作都應(yīng)在數(shù)據(jù)結(jié)構(gòu)學的比較牢固的基礎(chǔ)上進行才更有意義,所謂磨刀不誤砍柴功嘛
六.職業(yè)規(guī)劃:
“職業(yè)規(guī)劃”可能這四個字說的可能大了點,本質(zhì)其實就是一個目標,包括你的當前目標,短期目標,長遠目標等等。同樣這也是面試中最常問到的一個問題,不管在技術(shù)面,還是在hr面都是有可能被問到的,并且概率很大,幾乎每家公司都會問,所以對于這個問題,我們必須有所思考和實際的規(guī)劃,不僅僅是為了應(yīng)付面試,還關(guān)乎我們的未來,有了適合自己的方向,才能更有效率、更有動力的前進,畢竟我們都有夢想~
七.最后
我的面試經(jīng)驗分享可能不會去羅列太多的具體題目,因為我依然認為面試經(jīng)驗中最寶貴的不是那一個個具體的題目或者具體的答案,而是結(jié)束面試時,那一刻你的感受以及多天之后你的回味~
很多人在剛接觸這個行業(yè)的時候或者是在遇到瓶頸期的時候,總會遇到一些問題,比如學了一段時間感覺沒有方向感,不知道該從那里入手去學習,對此我整理了一些資料,需要的可以免費分享給大家
如果喜歡我的文章,想與一群資深開發(fā)者一起交流學習的話,獲取更多相關(guān)大廠面試咨詢和指導以及上圖免費的安卓資料,請查看我的主頁
總結(jié)
以上是生活随笔為你收集整理的百度、头条、网易 Android 等社招面试题目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot基础教程之文件上传
- 下一篇: python之sys模块【获取参数】