菜鳥從業記:沒準備好的面試,那叫尬聊


 

 

最近我的朋友王小閏參加了一場面試,在他填寫簡歷表的時候,排在他前面的應聘者正在旁邊鄰桌接受來自面試官的檢驗。

 

王小閏邊寫邊想,這不就是一會兒要面試自己的前端leader麼,現在面試官提問的一些面試題會不會就是待會兒要問自己的問題? 想到這,我朋友王小閏不自覺地豎起了耳朵聽,借鑑下別人回答問題的經驗,保不齊自己一會兒要套用一下。

 

不聽不知道,一聽嚇一跳。沒準備好的面試,那叫一個尬聊。

 

首先,面試開場白總缺少不了自我介紹,一方面是面試官想聽聽你對自己的介紹,順便有時間看看簡歷上的描述,是否與口述一致。另一方面就是看看你簡歷上做過什麼項目,用到了哪些技術棧,一會兒好提問你。

 

其實,最重要的是爲了緩解兩人的緊張,以打開局面。當然,如果坐在對面的面試官是第一次面試別人,也免不了會緊張。

 

那哥們自我介紹完畢之後,面試官問了幾個問題,都比較有針對性,聽得出來這家公司對數據交互綁定這一塊還是比較重視的。

 

比如面試官上來就問,你在之前公司項目裏用過ajax嗎?

 

只聽那哥們很自信地說,用過的,上家公司做的是前後端分離的vue項目,經常使用ajax獲取後臺數據,然後渲染到頁面上。

 

面試官追問:那ajax默認是同步還是異步?

 

問到這個問題的時候,前面那個哥們卻一直在扯ajax的 get 和 post 方法,聽的王小閏後背直冒冷汗,這麼尬聊好麼?知之爲知之,不知爲不知啊,哥們~

 

面試之前千萬要準備好,不然會鬧笑話的。

 

話說回來,這個問題你想到應該怎麼回答才能令面試官滿意了嗎?

 

一般前端老司機都是這麼回答的:AJAX中根據async的值不同分爲同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。

 

默認情況下async是true,也就是異步。

 

其實面試官看得出來他答非所問,但是並沒有揭穿他,而是繼續提問下一個問題。

 

面試官接着問:Ajax中什麼時候用同步,什麼時候用異步?

 

想要回答這個問題,首先要縷清思路,先要了解什麼是同步請求,什麼是異步請求,然後纔是使用場景的分析。

 

先來聽聽職場老司機是如何回答的吧~

Java初高級一起學習分享,共同學習纔是最明智的選擇,喜歡的話可以我的學習羣64弍46衣3凌9,或加資料羣69似64陸0吧3

一.什麼是同步請求:(false)

 

同步請求即是當前發出請求後,瀏覽器什麼都不能做,必須得等到請求完成返回數據之後,纔會執行後續的代碼,相當於是排隊,前一個人辦理完自己的事務,下一個人才能接着辦。也就是說,當JS代碼加載到當前AJAX的時候會把頁面裏所有的代碼停止加載,頁面處於一個假死狀態,當這個AJAX執行完畢後纔會繼續運行其他代碼頁面解除假死狀態(即當ajax返回數據後,才執行後面的function)。 

 

二.什麼是異步請求:(true)

 

異步請求就當發出請求的同時,瀏覽器可以繼續做任何事,Ajax發送請求並不會影響頁面的加載與用戶的操作,相當於是在兩條線上,各走各的,互不影響。

 

一般默認值爲true,異步。異步請求可以完全不影響用戶的體驗效果,無論請求的時間長或者短,用戶都在專心的操作頁面的其他內容,並不會有等待的感覺。

 

下面來區別一下同步和異步有什麼不同:

 

異步:在異步模式下,當我們使用AJAX發送完請求後,可能還有代碼需要執行。這個時候可能由於種種原因導致服務器還沒有響應我們的請求,但是因爲我們採用了異步執行方式,所有包含AJAX請求代碼的函數中的剩餘代碼將繼續執行。如果我們是將請求結果交由另外一個JS函數去處理的,那麼,這個時候就好比兩條線程同時執行一樣。

 

同步:在同步模式下,當我們使用AJAX發送完請求後,後續還有代碼需要執行,我們同樣將服務器響應交由另一個JS函數去處理,但是這時的代碼執行情況是:在服務器沒有響應或者處理響應結果的JS函數還沒有處理完成return時,包含請求代碼的函數的剩餘代碼是不能夠執行的。就好比單線程一樣,請求發出後就進入阻塞狀態,直到解除阻塞,餘下的代碼纔會繼續執行。

 

有人說:既然異步這麼好,那全部都用異步好了,同步存在還有什麼意義?

 

那麼,同步適用於一些什麼情況呢?

 

我們可以想一下,同步是一步一步來操作,等待請求返回的數據,再執行下一步,那麼一定會有一些情況,只有這一步執行完,拿到數據,通過獲取到這一步的數據來執行下一步的操作。這是異步沒有辦法實現的,因此同步的存在一定有他存在的道理。

 

正如這世界上大部分事物發展的規則一樣,存在即合理。

 

如何選擇同步還是異步模式?要回答這一問題,我們可以通過下面可能出現的問題來回答:

 

我們在發送AJAX請求後,還需要繼續處理服務器的響應結果,如果這時我們使用異步請求模式同時未將結果的處理交由另一個JS函數進行處理。這時就有可能發生這種情況:異步請求的響應還沒有到達,函數已經執行完了return語句了,這時將導致return的結果爲空字符串。

 

如此回答,才能體現出你思維邏輯縝密,以面試官拋出來的問題作爲引子,以點帶面深入闡述一下,既回答了面試官的問題,又展示了你思考問題的深度。

 

這也算是一個面試技巧,不單單要回答問題,還要說出你對這個概念的全方位的理解,如此才能在面試中加分。

 

很顯然,這個問題那哥們也是強行尬聊,回答的模棱兩可,沒有說到點兒上。

 

爲了不冷場,面試官繼續拷問:如何設置ajax爲同步?

 

此時那哥們心理活動肯定在想,mmp,看來這次面試要栽倒在ajax上面了。這個問題思索了半天,知道躲不過了,然後前面那哥們直接委婉地說,我之前在公司項目裏使用到ajax的地方比較少,沒有做太多深入的瞭解。

 

其實這個問題很簡單,只要把async字段的value值更改成false就OK了。下面的代碼片段形象又生動地闡述了ajax同步的機制。

 

複製代碼
console.log(1);

$.ajax({

    url: '',

    async: false,

    success: function() {

        console.log(2);

    }

});

console.log(3);
複製代碼

 

面試講到這兒,你需要記住的幾點:

 

1.Jquery中的ajax在默認不寫async情況下,請求爲異步請求;即:async:true;

 

2.如果項目中在做一項操作之前要進行ajax的驗證,無論同步或者異步,都必須在驗證通過後,方纔進行其他操作。

 

3.熟練應用error參數,關注返回來的異常信息,從而判定程序的錯誤位置;

 

4.項目前端做驗證,後端也做相應的驗證;前端做驗證是爲了減少服務器壓力和增加用戶體驗,後端做驗證纔是爲了安全。

 

還有,我想對前面面試的那哥們說點我的想法,如果哪個面試題不會,或者不清楚,就直接告訴面試官,不好意思這個我不太清楚,然後虛心求教,這樣起碼能落個真誠、好學的好印象。如果你胡編亂造,只會降低你在面試官心中的形象,這樣是會減分的。

 

所以,你對ajax真的瞭解嗎?

 

面試快結束的時候,面試官還問了一些關於vue的問題,這哥們回答的還行。

 

最後,面試官問那個應聘者哥們,你有什麼想問我的嗎?

 

那哥們吞吞吐吐地說,其實也沒什麼想問的,只要貴公司能給我發offer,我來了咱公司一定捲起袖子好好幹,幹出自己的風采,體現出自己的價值!!!反正他說了一大堆誠懇的話。

 

其實後來這家公司沒有錄用他,原因不詳。

 

面試官提的某些問題,我朋友王小閏也不是很瞭解。於是他趕緊拿出手機準備百度一下,手機一掏出來,面試官回頭說:簡歷表填好了吧,輪到你了。

 

此時,王小閏只想攤手說一句:好尷尬~

 

不過還好我比較真誠,有一說一,有二說二,從不尬聊。

 

面試寫到這兒,也該做個總結了。

 

首先,面試之前,一定要做好準備。就算沒準備好也沒關係,當着面試官的面一定要實話實說,如果你不知道的東西千萬別瞎說,別跟面試官尬聊或者是較真,面試官之所以能坐在那個位置由他來面試別人,肯定也是身經百戰,見過很多場面的人物,能看出來你是否在亂講,從你一張嘴就基本能判斷出你對某個技術點是否熟悉,或者是熟練到了哪種層次,浮於表面的理解還是深入原理的探索。

 

當然,也不要因爲這次面試沒準備好,白白浪費了一次工作機會而氣餒,換個角度想想,多面試幾家多踩幾個坑,對你之後的面試是有好處的。喫一塹長一智,面試結束後,回去把不懂的不會的問題,都在網上查查,瞭解清楚,深入研究下它的原理。等到下一次面試,如果問同樣的或者類似的問題,你就胸有成竹了。

 

番外:這輪面試的結果是,經過激烈的崗位競爭,王小閏被那家公司給錄取了,感謝前面那個哥們爲自己踩的坑。同行也是競爭對手,王小閏不是贏了競爭對手,而是贏了昨天還不夠努力的自己。

 

柳傳志曾經說過,小公司裏做事,大公司裏做人。

 

最後祝大家都能找到適合自己的好工作!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章