7個 Javascript 面試題及回答策略

前端先鋒發表於2019-03-06

翻譯:瘋狂的技術宅

原文:https://www.indeed.com/hire/interview-questions/javascript

不管你是面試官還是求職者,裡面的思路都能讓你獲益匪淺。

單體應用和微服務架構之間有哪些主要區別,從靈活性和可擴充套件性的角度來看,哪個是更好選擇?

解析:

這個問題用來評估基礎編碼知識。答案可以有多種,所以應該注意傾聽具體的問題,並儘量全面回答,來展示自己對單體應用與微服務架構的理解。

面試官想知道些什麼:

  • 求職者對編碼的熟悉程度
  • 求職者對不同構建方法利弊的理解
  • 是否具有從單體應用服務過渡到微服務的能力

參考答案:

設計單體架構在短期內成本較低,但程式碼在記憶體是單一的內聚單元。微服務架構提供了靈活性和可擴充套件性,因為每個元件都是一個獨立的程式。

同步和非同步程式設計有什麼區別,非同步程式設計與你的 JavaScript 工作有什麼關係?

解析:

非同步程式設計允許多個併發操作,並且它非常適合 JavaScript 程式。這個問題評用來估求職者的編碼知識,以及對 JavaScript 的具體理解。

面試官想知道些什麼:

  • 能夠清晰地表達同步和非同步程式設計之間的差異
  • 非同步程式設計對使用者介面的影響
  • 瞭解阻塞以及對效能的影響

參考答案:

簡單來說,同步程式設計意味著程式碼以線性方式執行。這些程式通常不能同時處理多個操作。使用非同步程式設計,有一個事件迴圈。一個程式執行緒可以處理多個操作。由於 JavaScript 通常用於使用者介面,因此同時執行多個操作的能力可以帶來更好的使用者體驗。

你是否在 JavaScript 中使用過類繼承和原型繼承?為什麼?

解析:

這個問題有助於瞭解求職者是否具有 JavaScript 經驗和專業知識。原型繼承比類繼承更容易、更靈活,這是判斷一個有經驗的 JavaScript 程式設計師的首選方法。

面試官想知道些什麼:

  • 是否偏愛原型繼承和組合
  • 具有闡明這種偏好的原因的能力
  • 函式繼承,原型鏈繼承,原型委託和物件組合

參考答案:

當使用類繼承時,例項繼承自類,這會產生分層。而通過原型繼承,例項繼承自其他物件,並且可以從多個物件建立。我更喜歡原型繼承,因為它更簡單、更靈活。

在你看來,類繼承是否是正確的選擇?如果是的話,是在什麼情況下?如果不是,為什麼?

解析:

求職者的答案能讓面試官深入瞭解他們使用 JavaScript 的經歷。類繼承有意義的情況很少,求職者可能會說根本沒有。 否定的答案優於對適當情況冗長的描述,因為這些通常是基於錯誤資訊的。

面試官想知道些什麼:

  • 類繼承永遠或幾乎從來都不是正確的選擇
  • 求職者能否闡明其回覆的原因
  • 求職者有能力用邏輯來捍衛他們的結論

參考答案:

類繼承幾乎從來都不是正確的解決方案。只有在極少數情況下,它可能被用到。

你如何定義函數語言程式設計?函數語言程式設計在 JavaScript 中的作用是什麼?

解析:

函數語言程式設計是目前 JavaScript 使用的基本原則。求職者是否能夠完整的回答這個問題,可以證明他們的基礎知識是否紮實。

面試官想知道些什麼:

  • 提及純函式和避免副作用
  • 能夠提供函數語言程式設計語言的示例
  • 能夠認同 JavaScript 的函數語言程式設計,並具有使用它們的能力

參考答案:

函數語言程式設計允許通過使用純函式來設計軟體。此方法避免了很多程式設計問題,如共享狀態,副作用和可變資料。它作為物件導向程式設計的替代方案,其中應用狀態通常與物件中的方法搭配並共享。

使用函數語言程式設計方法而不是物件導向程式設計有什麼好處?你能提供一個例子嗎?

解析:

任何具有 JavaScript 經驗的求職者都會使用其中一種風格,因此應該能夠對每種風格的優缺點提出一些看法。這個問題可以幫助面試官衡量求職者使用 JavaScript 的深度。

面試官想知道些什麼:

  • 能夠闡明任何一種方法的優缺點
  • 提及共享資源導致的問題
  • 瞭解函數語言程式設計如何簡化應用程式

參考答案:

雖然我主要使用物件導向程式設計方式,但是我更希望用函數語言程式設計開發。在用物件導向程式設計時遇到不同的元件競爭相同的資源的時候,更是如此。

你如何定義單向資料流和雙向資料繫結?兩者有什麼區別?

解析:

這個問題能夠說明求職者對 JavaScript 重要基本原則的深刻理解。不熟悉這些條款的求職者可能沒有該職位所需的經驗。

面試官想知道些什麼:

  • 能夠清晰、簡潔的定義這兩個概念
  • 能夠闡明兩個概念之間的差異
  • 提及相關的框架

參考答案:

當模型是單一事實來源時,會發生單向資料流,React 就是一個例子。雙向資料繫結是使用者介面與模型資料動態連結的狀態。如果使用者介面中的欄位發生了變化,模型也會發生變化,比如 Angular。

歡迎關注京程一燈公眾號:jingchengyideng,獲取更多前端乾貨。

相關文章