百度Web前端面試經(jīng)歷
今天面了百度的前端實習職位。一面。時間大概是50分鐘。面試官是位很帥氣的小伙子,非常友好的一個人。進門的時候他讓我等一會,我瞄了一眼他的電腦屏幕,發(fā)現(xiàn)他在coding……
9點50開始的面試。
面試官:自我介紹一下。
我:blablabla。
面試官:javascript的類型轉換(比如"2"*1, "a"*1)。
我:javascript會調用valueOf來轉換為一個基本數(shù)據(jù)類型,在這種情況下,如果javascript不能通過valueOf轉成一個number,會嘗試調用toString,然后再轉。實在無法轉就只能NaN了。
面試官:說說類的創(chuàng)建、繼承和閉包。
我:new一個Function,繼承通過prototype。超類和子類可以通過子類的prototype=new 超類(),然后把prototype的constructor指回子類。閉包是一個變量作用域的問題(這里我也不是特別清楚,隨便說了些)。
面試官:說說get和post請求的區(qū)別。
我:1.參數(shù)形式不同;2.發(fā)送數(shù)據(jù)大小限制不同;3.在后臺轉碼時不同,post可以簡單地修改編碼方式來避免亂碼,get不可以。
面試官:Get請求最大能多大。
我:幾K吧,2K?
面試官:你猜的?
我:。。。嗯。
面試官:說說事件綁定。
我:W3C是addEventListener,IE是attachEvent。
面試官:這兩種事件綁定有什么不同。
我:。。。。(真心不知道有什么不同,亂說一氣,難道是綁定事件執(zhí)行的先后順序不同?)。
面試官:這兩種綁定還是有很大差別的。
我:。。。。是的是的,之前沒有了解過。
面試官:說說事件冒泡的機制。
我:blablabla。
面試官:如果上層元素想知道到底是從哪個元素起的泡,怎么搞?
我:Event的target屬性吧。
面試官:不是,再想想。
我:真心不會。。。(面試官也沒告訴我答案,整個面試過程中感覺這位面試官側重于指引你自己去找尋答案,不會告訴你答案的)
面試官:做一個圖片輪播的腳本。
我:blablabla(總之就是通過父元素設置overflow為hidden,position為relative,然后幾個圖片列表修改他的left值。因為之前我寫過一個,所以我還說道了如何實現(xiàn)動畫序列,比如點擊一次向左,一次向右,再來一次向左,動畫會依次執(zhí)行。)
面試官:圖片加載比較慢,你這個輪播組件怎么解決。
我:new一個Image對象,然后注冊onload事件和src屬性,都onload完畢了再顯示,此前顯示一個占位符。
面試官:如果圖片很多,有兩萬個,怎么辦。
我:按需加載,用多少加載多少(然后講了我的實現(xiàn)思路)。
面試官:但是用戶瀏覽了很多張圖片會越來越卡。
我:把之前看過的圖片從dom里刪掉,來釋放內存,但是要是用戶回頭又看之前看過的就比較麻煩了,不曉得這個圖片該往哪里插入了。
面試官:是的,這道題我不告訴你正確答案,你可以好好想想(面試結束后面試官讓我看了百度圖片搜索的例子)。
我:好的。
面試官:你后臺用哪個語言最多?
我:java。
面試官:Why java?
我:好用。而且我發(fā)現(xiàn)其實大運算時跟C++的效率也差不多。
面試官:還是要比C低一些的。
我:嗯。
面試官:用java寫網(wǎng)站還是客戶端?
我:網(wǎng)站。
面試官:用框架嗎?
我:看需求,需求簡單就用servlet可以了。
面試官:說說servlet的生命周期。
我:blablabla。
面試官:前臺怎么寫。
我:。。。JSP<%%>不就行了。
面試官:我知道。我問還有其他方案嗎?
我:我們現(xiàn)在用模板引擎,比如velocity。
面試官:講講velocity怎么寫。
我:blablabla。
面試官:和JSP比,優(yōu)勢如何?
我:速度快,寫起來簡單,而且好看。
面試官:應該不會比JSP快啊。
我:(這個問題我們爭論了好久,面試官是沒有用過velocity的)。
面試官:velocity可以自定義標簽嗎?
我:可以自定義指令,每個指令其實對應的就是一個java類。自定義指令要繼承Directive類。
(然后問了些MVC,此處不表)
面試官:(因為我說道這一年過來都在寫后端,針對spring做了一層淺封裝)說說你的封裝里DAO怎么實現(xiàn)的。
我:泛型+模板設計模式。緩存是裝飾器模式搞得,裝飾的是不帶緩存的類。
面試官:那表的結構已經(jīng)事先定好了嗎?
我:對的,通過反射獲取類屬性,然后轉換為sql,比如loginTime轉成login_time,類名UserData轉成user_data。這個要事先商量好才可以。不遵守約定就沒法搞了。
面試官:緩存用什么實現(xiàn)的。
我:Ehcache。
面試官:和memcache差不多嗎?
我:沒錯。
面試官:更新策略是什么。
我:LRU。然后get做緩存,update和delete都直接刪除對象。
面試官:用什么做key?
我:id。
面試官:說說緩存怎么避免并發(fā)下臟讀等不一致問題。
我:我的類都是單例的(我傻逼了,單例和并發(fā)有關系嗎?面試官后來也糾正了我這個錯誤)。讀是沒有問題的,寫的話我沒有做處理,感覺ehcache自己內部做了處理吧,比如代碼同步,或者用concurrenct包下的類。
面試官:。。。。(這道題我沒明白他要問什么,他也沒明白我在說什么。。。好混亂)不糾結這個問題了。數(shù)據(jù)庫連接池怎么實現(xiàn)的。
我:直接用的DBCP。
面試官:我那時都是自己寫的。
我:。。。(心中默念:牛逼)。
面試官:好的,有什么問題想問我的。
我:百度是彈性工作制嗎?Web前端部門可以接觸到其他技術嗎?
面試官:彈性工作制,我們一般都是十點鐘來上班(笑)。Web前端部門以寫JS為主,會接觸到Controller的編寫,不過我們是用php的。也會接觸到服務器的配置和web工程的部署。不過大部分時間都在寫JS上。
然后我們就互道Goodbye了。
我的處女面,就這樣獻出去了。
原文鏈接:http://fantasticinblur.iteye.com/blog/1517328
【編輯推薦】