百度App研發(fā)部一面(電話面試)
1.是否了解快速排序?說一下快速排序的思想。
答:balabala。這里就不詳述了,如果不清楚可以去網(wǎng)上找一下。
備注:快排推薦這篇文章https://www.cnblogs.com/CBDoctor/p/4077574.html
2.有看過Java源碼嗎?
答:只看過HashMap,ArrayList之類的源碼(開始慌了)
追問:2.1 能否說一下HashMap的源碼實(shí)現(xiàn)?
答:balabalabala
追問:2.2 能否描述一下HashMap是如何求哈希值的?
答:balabalabala
追問:2.3 想象現(xiàn)在有這樣一個場景,我希望存入HashMap的key值范圍在0-1000,但是其中大部分的key值范圍都在200-300之間,請給出一個求哈希值的算法,使得哈希分布比較均勻(哈希沖突盡可能少)。
答:balabalabala
3.你的簡歷里面有提到對序列化了解比較深刻,能否介紹一下序列化相關(guān)的問題?
答:balabalabala
追問: 3.1 說一說Serializable跟Parcelable的相同點(diǎn)跟不同點(diǎn)吧。
答:balabalabala
追問: 3.2 Serializable用到了反射,那Parcelable是怎么做的呢,為什么Parcelable性能會比Serializable要好?
答:balabalabala
追問: 3.3 假設(shè)有一個進(jìn)程A,一個進(jìn)程B,進(jìn)程A有個對象,現(xiàn)在需要進(jìn)程B也能夠獲取該對象,有哪些方法可以做到?
答:balabalabala
4.來問一些Android的問題吧。你簡歷上寫了Activity的啟動模式,能否說一下,包括你了解的各種Flag?
答:balabalabala
追問: 4.1 你說項(xiàng)目里面有實(shí)際用到,能否描述一下具體情況?
答:balabalabala
追問: 4.2 既然你項(xiàng)目里有用到SingleInstance,假設(shè)現(xiàn)在有這樣一個場景:有4個Activity ABCD,其中B是SingleInstance模式,其他都是Standard模式。如果A啟動B,B啟動C,C啟動D,這時候我連續(xù)按返回鍵,會出現(xiàn)什么現(xiàn)象?
答:balabalabala
追問: 4.3 確定嗎?
答:balabalabala
追問: 4.4 TaskAffinity屬性了解吧?假設(shè)有這樣一個場景:Activity A屬于一個Application,Activity B屬于另一個Application,Activity B指定TaskAffinity屬性值為Activity A的包名,并且Activity B是SingleTask模式。如果從Activity A啟動Activity B,Activity B會進(jìn)入到哪個Activity棧?
答:會進(jìn)入Activity A所在的Activity棧。
追問: 4.5 如果Activity B是Standard模式呢?
答:這時候TaskAffinity屬性不作用,仍然會進(jìn)入Activity A所在的Activity棧。(問題問的不太好,但是我表達(dá)出了我了解這個知識點(diǎn)。追問到這里,面試官終于肯定了我一次,不容易啊o(╥﹏╥)o)
5.自定義View這部分可以描述一下嗎?
答:大概分為onMeasure,onLayout,onDraw三步。
追問:5.1 可以描述具體一點(diǎn)嗎?每一步都做了什么?
答:
追問:5.2 你在項(xiàng)目里面應(yīng)該用到過自定義View吧,具體是怎么用的呢?用的時候需要注意些什么問題?
答:
6.Android消息機(jī)制可以簡單說一下嗎?
答:
追問:6.1 你提到了消息被取出來后,會被傳回給發(fā)送消息的handler,這個是怎么做到的呢?(這個問題實(shí)際上是想看看你是否真的看過源碼)
答:message里面有個target變量,這個變量就是發(fā)送message的那個handler對象,通過這個target就可以執(zhí)行該handler的handleMessage方法了。
7.你在項(xiàng)目里面用到了動畫,說一下你對動畫的理解吧。
答:
追問:7.1 項(xiàng)目里面具體是怎么用的呢?比如說你用了屬性動畫,能不能詳細(xì)描述一下你是如何一步一步操作屬性來達(dá)到對應(yīng)的動畫效果的?
答:
8.TCP的三次握手了解嗎?
答:
追問: 8.1 為什么是三次握手而不是4次或者其他次數(shù)的握手呢?
答:
追問: 8.2 之前你說有做過java web,服務(wù)器通信返回的狀態(tài)碼有哪些,可以說一下嗎?
答:200成功碼,404找不到請求資源,503錯誤,其他的記不清了。
備注:常見的狀態(tài)碼分為2xx,3xx,4xx,5xx系列。其中2xx為成功狀態(tài)碼,比如200ok,204not content,206Partial content;3xx為重定向系列,比如301永久重定向,302臨時重定向,303,304,307等;4xx為客戶端錯誤,比如400Bad request,401Unauthorized,403Forbidden,404Not found等;5xx系列為服務(wù)器錯誤,比如500Internal Server Error,503Service Unavailable等。
9.OK,那今天的一面就到這里,你還有什么想問我的嗎?(面試慣例,都懂的)
答:
面試總結(jié):第一次面試BAT級別的大廠。跟非大廠的面試比起來,有幾點(diǎn)很明顯的區(qū)別:
- 更加注重基礎(chǔ)。(算法,數(shù)據(jù)結(jié)構(gòu))
- 更關(guān)注你解決一個問題的思路而不是結(jié)果。
- 對一個知識點(diǎn)會一直追問,直到滿意或者你不會為止。
- 考察一個知識點(diǎn)的時候,會結(jié)合實(shí)際問題考察。
- 針對一個知識點(diǎn),基本不會問應(yīng)用的問題,而是問你源碼級的東西。
Ps.一面過了,不過已經(jīng)接了另一家公司的offer,也已經(jīng)回了青島,所以不打算去北京二面,直接拒了。螞蟻金服那邊也給了面試邀請,同樣因?yàn)闆]法去北京,也拒了。
雖然遺憾,但是經(jīng)過多家公司的面試,目前對自己的水平已經(jīng)了解的差不多,BAT還是夠嗆,就算面試僥幸通過也只會是校招水平的定級。深入考慮了下,還是決定去心儀的公司鍛煉一下,暫時就不考慮毀約了。