秋招 百度二轮面试---血淋淋的经历写实
一名自信向上的良好青年,參加百度面試被面試官按在地板來回摩擦~
簡單回顧一下,面試的經(jīng)歷吧
百度二面對話大概是這樣的。
面:這個知道嗎?
我:不知道。
面:這個呢?
我:不知道。
面:那我問你這個吧。
我:知道。
面:看過源碼嗎,底層是怎么實現(xiàn)的?【【底層原理】Linux進程及其調(diào)度策略】
我:。。。。。。
面:好吧,下一個問題
場面巨尷尬
下面是具體的問題,可能有忘記的題.沒有自我介紹..
1,安卓源碼看過多少
有時候看到某個函數(shù),心血來潮可能會點進去看看是如何實現(xiàn)的,但是沒有集體性看過.
2,RecyclerView怎么實現(xiàn)的?不知道啊,那你說說是怎么用的?
怎么實現(xiàn)的,我是真的沒有一個大體的認識,之前沒去集體看過RecyclerView的源碼,最多只是知道幾個方法是怎么實現(xiàn)的.怎么用的我就不說了,大家都比我清楚.
源碼分析可以看看大神的文章搭配起看看源碼吧:【Java實現(xiàn)貪吃蛇小游戲(附完整源碼)】
RecyclerView源碼分析(一)–整體設(shè)計
http://www.jianshu.com/p/9ddfdffee5d3
RecyclerView源碼分析(二)–測量流程?
http://www.jianshu.com/p/4b8d6e5004d5
RecyclerView源碼分析(三)–布局流程?
http://www.jianshu.com/p/898479f103b6
RecyclerView源碼分析(四)–動畫流程
http://www.jianshu.com/p/f7f8814bd09a
3,線程池,用過嗎?
我:聽說過,沒用過.
看看大神的文章吧【Java后端技術(shù)從0到1路線,一步步走向大神!】
Android開發(fā)——Android中常見的4種線程池(保證你能看懂并理解)
http://blog.csdn.net/seu_calvin/article/details/52415337
4,Service和IntentService區(qū)別
推薦文章:
Android中IntentService與Service的區(qū)別
http://blog.csdn.net/matrix_xu/article/details/7974393
4.1,service的啟動方式有幾種,分別是什么?生命周期有什么區(qū)別?多次調(diào)用startService()會啟動多個Service嗎?bindServive呢?
如果一個 Service 已經(jīng)被啟動,其他代碼再試圖調(diào)用 startService() 方法,是不會執(zhí)行 onCreate() 的,但會重新執(zhí)行一次 onStartCommand()【為什么不應(yīng)該重寫service方法?】
看我的Github筆記了解具體詳情:
https://github.com/xfhy/notes/blob/master/Android/Android學(xué)習(xí)筆記/四大組件/Service%20服務(wù).md
5,TreeMap干什么的,怎么用
說實話,我平時確實沒怎么用過這個,除了當時在學(xué)習(xí)時.就是一個排序的?
馬克-to-win:TreeSet是按升序順序輸出的。TreeMap也是按升序輸出,但是和它的區(qū)別就是TreeSet存儲的是單個元素,而TreeMap存儲的是一個一個的鍵值對。
http://www.mark-to-win.com/JavaBeginner/JavaBeginner7_web.html#DefinitionUsageOfTreeMap
6,實現(xiàn)單鏈表倒置,手寫【Redis實現(xiàn)的分布式鎖和分布式限流】
7,二叉樹后序遍歷,手寫
8,新開一個線程和開一個IntentService有什么區(qū)別。假如系統(tǒng)內(nèi)存不足,誰先被干掉?
(1)前臺進程
是用戶操作所必須的,任一時間下,僅有少數(shù)進程會處于前臺,這樣的進程擁有一個在屏幕上顯示并和用戶交互的 activity 或者它的一個IntentReciver 正在運行。僅當內(nèi)存實在無法供給它們維持同時運行時才會被殺死。一般來說,在這種情況下,設(shè)備依然處于使用虛擬內(nèi)存的狀態(tài),必須要殺死一些前臺進程以用戶界面保持響應(yīng)。【【底層原理】Linux進程及其調(diào)度策略】
(2)可視進程
沒有前臺組件,但仍可被用戶在屏幕上所見。當滿足如下任一條件時,進程被認為是可視的:
●它包含著一個不在前臺,但仍然為用戶可見的activity(它的onPause()方法被調(diào)用)。這種情況可能出現(xiàn)在以下情況:比如說,前臺activity是一個對話框,而之前的Activity位于其下并可以看到。
●它包含了一個綁定至一個可視的activity的服務(wù)。
可視進程依然被視為是很重要的,非到不殺死它們便無法維持前臺進程運行時,才會被殺死。
(3)服務(wù)進程
是由startService() 方法啟動的服務(wù),它不會變成上述兩類。盡管服務(wù)進程不會直接為用戶所見,但它們一般都在做著用戶所關(guān)心的事情(比如在后臺播放mp3或者從網(wǎng)上下載東西)。所以系統(tǒng)會盡量維持它們的運行,除非系統(tǒng)內(nèi)存不足以維持前臺進程和可視進程的運行需要。
(4)背景進程
包含目前不為用戶所見的activity(Activity對象的onStop() 方法已被調(diào)用)。這些進程與用戶體驗沒有直接的聯(lián)系,可以在任意時間被殺死以回收內(nèi)存供前臺進程、可視進程以及服務(wù)進程使用。一般來說,會有很多背景進程運行,所以它們一般存放于一個LRU(最后使用)列表中以確保最后被用戶使用的activity最后被殺死。如果一個activity正確的實現(xiàn)了生命周期方法,并捕獲了正確的狀態(tài),則殺死它的進程對用戶體驗不會有任何不良影響。
(5)空進程
不包含任何活動應(yīng)用程序組件。這種進程存在的唯一原因是做為緩存以改善組件再次于其中運行時的啟動時間。系統(tǒng)經(jīng)常會殺死這種進程以保持進程緩存和系統(tǒng)內(nèi)核緩存之間的平衡。【面試常考!緩存三大問題及解決方案】
9,List和Set集合存放對象時的區(qū)別
10,說說你最擅長的領(lǐng)域,比如安卓中的某個東西,或者算法,數(shù)據(jù)結(jié)構(gòu),網(wǎng)絡(luò)。
11,說出你的優(yōu)點和缺點。說說最值得你驕傲的事情。
12,關(guān)注最新的技術(shù)?說說學(xué)過Kotlin哪些東西?我:學(xué)過一些語法和寫過幾個demo。面:什么,就只是語法層?好吧,下一個問題
13,二分查找的時間復(fù)雜度
總共有n個元素,每次查找的區(qū)間大小就是n,n/2,n/4,…,n/2^k(接下來操作元素的剩余個數(shù)),其中k就是循環(huán)的次數(shù)。
由于n/2^k取整后>=1,即令n/2^k=1,
可得k=log2n,(是以2為底,n的對數(shù)),所以時間復(fù)雜度可以表示O()=O(logn)
14,Activity.OnNewIntent()解釋一下是什么?
Activity的四種啟動模式和onNewIntent()
http://blog.csdn.net/linghu_java/article/details/17266603
15,怎么利用handler實現(xiàn)主線程和子線程通信?MessageQueue是什么?子線程實現(xiàn)hander應(yīng)該注意什么?
這個剛好知道.哈哈
16,ThreadLocal用過嗎?
徹底理解ThreadLocal【深入分析 ThreadLocal 內(nèi)存泄漏問題】
http://blog.csdn.net/lufeng20/article/details/24314381/
17,HandlerThread用過嗎?
Android HandlerThread 完全解析
http://blog.csdn.net/lmj623565791/article/details/47079737/
18,Java中是怎么實現(xiàn)線程同步的?假如我定義一個類,里面有一個方法fa()被synchronized修飾了,另一個fb()沒有被修飾。現(xiàn)在聲明2個對象a1,a2,現(xiàn)在2個線程同時分別調(diào)用a1.fa(),a2.fb(),fb()方法中的代碼會被執(zhí)行到嗎?
19,會反編譯嗎?我:用過,拿來反編譯其他的app。
20,你覺得你的安卓達到一個什么樣的水平了?
21,面:好了,還有什么想問的嗎?
22,回去等消息吧,待會兒HR小姐姐會聯(lián)系你。過了的話還有三面,大概在這周三。
總結(jié)
很多問題不會,場面蜜汁尷尬.好吧,本人菜鳥一枚….【如何準備校招技術(shù)面試+一只小菜鳥的面試之路】
下面是一個朋友(也是這場百度,二面)的問題
計算機網(wǎng)絡(luò):
http協(xié)議概述,特點,運用,http為什么底層是tcp不是udp ?
tcp是基于流式傳輸?shù)?#xff0c;怎么設(shè)計協(xié)議,進行協(xié)議的解析?
抓包工具的原理是啥?
socket異常斷開時,設(shè)計一個合理的重連機制。
數(shù)據(jù)結(jié)構(gòu):
叫我寫二叉樹的前序遍歷非遞歸,跟遞歸方式比較時間復(fù)雜度,快排的原理。
項目:
檢測內(nèi)存泄漏的工具,它為什么能檢測?
做過的項目有什么技術(shù)難點(我說的難點在面試官看來都是簡單問題)?
思維題:
在很多的數(shù)據(jù)中如何快速找到最大的100個數(shù)?
你有什么創(chuàng)新能力?
你還有什么問題問我?
擴展閱讀
2018百度Java后端面試真題,你會幾個?
Java 面試題 :百度前 200 頁都在這里了
最終一輪面試被 Google 刷掉,這是一種什么樣的體驗?
最新Java面經(jīng) | 阿里2019實習(xí)內(nèi)推 五輪技術(shù)面+一輪HR面
美團Java實習(xí)面試經(jīng)歷(拿到Offer)
Java 面試題 —— 老田的螞蟻金服面試經(jīng)歷
來源:https://blog.csdn.net/xfhy_/article/details/78024466
轉(zhuǎn)載于:https://www.cnblogs.com/javafirst0/p/10789417.html
總結(jié)
以上是生活随笔為你收集整理的秋招 百度二轮面试---血淋淋的经历写实的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 渗透测试-基于白名单执行payload-
- 下一篇: hbase 问题整理