前端面試時總讓寫原生Ajax真的很有意義嗎?

最近面試總有些公司喜歡讓寫原生Ajax,但是這真的有意義嗎,實際工作中假設不使用jQuery,難道不也是使用封裝好的?只要記住原生xhr的幾個判斷,send/open/abort和readyState不就行了嗎


不講這個問題有沒有意義,在我看來的確沒有意義,但是這個的根源其實不是在於這些問題是否有意義。

而在於

你能夠控制面試官問出你擅長回答的問題?

作為一名面試官,我面試過很多人了也算,首先,挑選簡歷的時候我就會挑選我能問出問題的簡歷,如果一個簡歷看了之後我都問不出什麼針對性的問題,只能隨口問一個「閉包怎麼寫」這樣的問題的話,這個簡歷也沒什麼面試的必要性了。所以第一關就是,簡歷有可以讓面試官針對性提問的內容,有亮眼的內容,有思考有總結,這樣我們就可以愉快的進行一場互相交流的面試了,而不是給你一張卷子,你挨個寫代碼寫演算法。

然後,到了現場面試,同樣,你需要引導面試官來提問。首先是簡歷上體現的內容,然後是讓你自我介紹的時候,一定要抓住這個時機!!!!不要說些沒用的,你愛好打球什麼的,我都不關心!!讓你自我介紹,是給你一個機會,你來開啟一下我們的話題!其實就類似於述職,你講講你過去一段時間做過的有意義的事情,符合你定位的事情,不管是技術上提升,還是學習了新東西,還是你帶項目作分析,還是做了什麼優化,做了什麼提升團隊效率的工具,或者是你是管理者,你如何管理團隊,如何提升團隊效率,如何思考提升團隊整體技術能力影響力等等等等。這真是太重要了。

這些表達都是從你想呈現的自己擁有的優秀特質作為起點來總結的,
平常多思考下什麼樣的工程師特質是大家希望看到的,
這些是你要做的,是你要總結的,就是你下次面試的時候要表達的

如果你的簡歷和你的自我介紹都沒什麼說頭,那不好意思,為了應付一下,我有個面試題列表,我只能從裡面隨便挑一條出來問,都是很形式化的題目,其實你回答對了也沒卵用,只是湊合一下場面而已啦,畢竟這些問題隨便google一下就知道掌握了。

說的都是大實話,不管是做面試官,還是去面試,想清楚自己要表達出什麼東西來,想清楚自己想要得到什麼信息,都一樣,凡事就怕用心!


不讓上網查的話確實沒什麼意義。我就不信出這種題的公司的工程師所有的原生 API 都是默寫從來不查的。

我還是那個看法,都什麼年代了,技術面試如果足夠有誠意就讓人拿出筆記本當場寫,隨便查,你才能看到面試者在真實的寫代碼的時候是什麼狀態,什麼思路。就看面試者去哪裡查,怎麼查,你就能得到比讓人默寫 API 要有價值得多的信息。


看到這個問題,挺有意思,我面試的時候就會問。因為這貨可以作為一條主線來用,以下是針對一位簡歷中寫到:熟悉原生js,http協議,了解seajs的面試者,我常用的套路:

開局問:原生xhr怎麼寫?

答:創建一個xhr對象,readystate onload send open blabla

接著問:怎麼處理回調?

答:status等於200且readystate等於4的時候,取responseText處理。

接下來開啟http協議分支任務

問:http狀態碼常見有哪些?

答:200,302,304,404,5xx

問:302是啥?304是啥?什麼時候會返回304?你剛剛說瀏覽器緩存,具體緩存機制是怎麼樣的?

答:…

問:你剛剛說的是發起一個get請求,除此之外http method還有哪些?

答:常用的還有post,put,delete等。

問:post跟get有啥區別?

答:…

http分支聊得差不多啦,回主線,進入跨域和web前端安全分支。

問:http聊的差不多啦,我們回到xhr,你知道同源策略么?

答:同協議,同埠,同域名

問:怎麼跨域發起請求

答:cors,jsonp等

接下來聊聊,cors的細節,jsonp的原理。

再接下來聊聊其他跨域的方案,postmessage,document.domain降域

接下來就著同源策略,跟面試者聊聊cookie,問題往csrf上走,csrf是啥,怎麼防。順著csrf,聊聊xss,概念,怎麼防?

跨域和安全聊完,跟面試者聊聊模塊化,seajs源碼之類,這個跟xhr關係不大,主要為後邊的問題鋪墊。

最後會讓面試者寫一個seajs插件,支持commonjs規範寫的模塊。基礎知識都懂,最後這個問題就看你怎麼用基礎去解決實際問題了


我覺得比 add(1)(2)(3) 有用


讓我默寫的話,估計拼寫會錯。。。


這問題要是筆試的話確實沒什麼意義.不過面試的時候問就比較有意思,面試是為了考察你對技術的深度和廣度,所以面試者其實可以就這個問題引申其他的一些知識,比如要實現h5跨域ajax要設置xhr.withCredentials = true,IE8/9可能要用XDomainRequest這個類,另外要修改請求頭可以通過改配置項.同步ajax.

再表明一下觀點:技術面試是為了考察你對技術的深度和廣度,不要只局限於回答問題,而是想辦法通過回答更好的展現自己.(不用太在意問題本身有沒有意義,有時候可能面試官也沒想好問什麼


我經常問這個題目,說說我的想法。

我不要求完全默寫,主要看面試者如何理解為何要這樣設計API。如果讓面試者自己設計,那應該提供哪些API,為什麼?這樣的問題,首先考察基礎知識面,然後也考察設計和架構能力,最後看面試者的學習和思考深度。

回答得好,由這個知識可以衍生出來,可以進一步跟面試者探討HTTP協議,前端非同步編程,XHR Level 2,HTML5 API,前端安全,前端跨域通訊及其優劣對比,前端性能。。。。。。只要腦洞大,前端領域的問題,都可以覆蓋到。

我的想法是,初學者盡量不要孤立地理解知識,要聯繫地,對比地看待問題,多問一個為什麼,會讓你成長得更快。比如說, jQuery 為什麼這麼火,因為方便,那它為什麼方便?gulp 說要革命 grunt ,那優點在哪裡,有沒有缺點?從命名空間的模塊化,到流行的xmd模塊化,再到語言級別的模塊化,為什麼前端這麼喜歡折騰,每次的變化,都有什麼樣的進步,解決哪些痛點?


那你就寫 fetch API 嘛(逃


我覺得解決問題的思路更重要吧

想想我們在使用新技術或者解決問題時的方法吧

如果是使用新技術,你肯定要去查文檔和demo,更深入得看源碼吧(如果有的話)

如果是報錯問題,如果debug進去也不明白的,你得把錯誤和不明白的扔到google或者stackoverflow里吧

如果是設計新東西,我們需要借鑒別人框架或者別人的架構思路吧

解決問題的時候如果缺了哪方面的知識,得買書看吧

至少我看到一些公司在招人時說的,對於reactjs或者angularjs了解優先,不了解的話,只要展現學習能力和解決問題的能力,進去學習這些東西不是問題。

再拿我前同事栗子來說:換了公司,漲了工資,java轉ruby,從頭學。我覺得對方公司看中的應該是他的經歷,學習能力和解決問題的能力。

每個公司要求不同,面試官根據自身知識體系去面試應聘者,我覺得首先弄明白,你招這個人進去是幹什麼的,對這人的期許是什麼樣的?

面試人,這人的態度和思路才是最重要的

個人淺見,例子也不能說普適


既然現實是這個狀況,那你就背下來唄。

能默寫出來應聘成功就有意義。把兼容IE的部分都背下來,嚇死面試官。

之前看過一個視頻,演講者當場手寫html4的doctype,現場效果也是蠻不錯的。恩,現場效果好


默寫的意義幾乎沒有。工程師的價值是 遇到問題 解決問題的能力。


鄧爺爺都說了:不管黑貓白貓,能抓到老鼠就是好貓。引用一下:不管是查API的還是默寫出來的,能快速優雅解決問題的猴子就是好猴子 ^o^。所以應該更多的關注面試者解決問題的思路和能力,而不是具體的代碼細節。原生的、第三方的API那麼多,僅僅只是記住具體寫法而不會靈活運用到項目解決實際問題有意義么?還有就是綜合素質,有時候人的溝通能力、獨立思考能力真的比技術神馬的更重要了。


所有為了突出面試官裝逼的面試公司都是耍流氓,回想多年前參加面試屢屢被面試官裝逼戲耍,之後也時不時寫文章實名制吐槽這些公司;說實話這些公司一般沒有加入的必要,不是整體團隊技術能力差,就是沒有活躍的技術氛圍;好的公司不是為了用面試者目前所掌握的技能,而是需要能夠在面試者身上挖掘出聰明,熱情,樂於折騰的特質,及未來能夠幫公司團隊取得進步的特質;因為對於一個聰明,對技術有熱情的人是很難有學不會的東西的,而喜歡折騰的人總會期望將社區的優秀技術基因帶到團隊中,讓團隊的技術氛圍更加活躍。


請記住,在面試的時候,不僅僅是公司在面你,你也在面公司,面試讓你覺得不合適,進去了也一樣讓你覺得不合適,多找幾家,總有合適的。


樓主應該是工作經驗很少的人或者學生。技術人員對知識的積累不應該僅限於使用,要了解其原理,否則你的技術水平永遠都在地平線左右徘徊。

舉個例子,如果某天我告訴你ajax請求經常報返回異常,需要你去查一下原因,你會如何快速查到這個原因?


讓你寫原生Ajax的真正意圖是啥你先要弄清楚,如果對方說:因為你沒寫出原生Ajax所以我們公司不會聘用你。這就有問題了,難道他們公司是用的原生Ajax?

所以這個問題唯一的解釋就是他們公司用原生Ajax,否則沒意義。


一般來說也不是讓你默寫嘛,把一次ajax的步驟過程,怎麼實現的一些細節,編碼中要考慮的場景之類的問題好好和面試官聊聊。最重要的還是要表達出自己的設計思路,架構能力,思維縝密,經驗豐富。


我一般比較重視解決問題的能力和邏輯思路。。

問問項目經驗,項目里用的啥,我就問啥,能把業務流程說個差不多基本上就行了。

技術面試其實也問不出啥,主要還是面人,是浮躁還是沉穩,是誠實還是浮誇。


還是問跨域有哪些解決方案,各有什麼優缺點,比較適合面試。


沒什麼意義,你可以問ajax是幹啥的,怎麼用,怎麼請求,請求有啥不同,整個流程是怎樣的,readystate有幾種狀態分別代表啥,狀態碼有啥代表啥意思。如果都回答清楚了那肯定知道咋用的。不會手寫也就是沒記住單詞的事,框架這麼多,API浩如煙海,為啥都要記著呢。那你說你要考基礎,那我問問你xhr對象是咋封裝的,你為啥拿來就能用。知其所以然比知其然重要得多。


推薦閱讀:

一個普通三本學院的一個普通學生,對未來的迷茫,我應該怎樣規劃我的人生?
當前諸多大公司活動頁很多都是用遊戲引擎做的,請問這種技術選型和普通DOM操作+CSS3相比有何優點?
知乎上複製回答,剪貼板里自動加上版權出處的技術js如何實現?
像這樣的奇偶行背景色不同的代碼塊效果是怎樣設置的?
新版知乎載入圖片時從模糊到清晰的這個效果是如何做出來的?

TAG:前端開發 | JavaScript | Ajax |