前端手寫題是許多面試會考的題型,從最基本上的各類效用函式(例如 debounce、curry、deepClone 等等),到常見的 JavaScript 方法(例如 Promise.all),都不能只會用,還要會自己手寫出來。本篇文章將會節錄常見的手寫題目,並附上解答。除此之外,每一題都有詳細解說,供讀者們參考。
ES6 推出了 Map 物件,讓開發者可以透過這個特製資料結構進行鍵值對(key-value pairs)的操作。然而 JavaScript 原始物件(plain object)就可以用來做鍵值對的操作,為什麼還需要 Map 物件呢? Map 物件解決了什麼問題?那與 Set 又有什麼不同呢?本篇來詳細說明一下。
從 1989 年起,HTTP 經歷了數代的演化,從 1 到 1.1 再到 2 以及目前的 3,這些不同版本有些什麼不同呢?不管是前端或後端的面試,都是經常會考的。這篇我們會先針對 1 到 1.1 再到 2 之間的異同處做摘要。
當使用者與瀏覽器互動時,會觸發各類不同的事件 (event),例如常見的點擊 (click)、滑動 (scroll)。我們可以透過 JavaScript 的事件處理器 (handler),來處理這些事件。讓我們能在事件觸發時,做出我們要的效果,例如點擊某個按鈕,觸發某個邏輯。針對瀏覽器事件,最常見的考題之一,便是事件委派、事件捕獲、事件冒泡,是很常見的面試考題。以下將用第一人稱的擬答,來回答「請說明瀏覽器中的事件委派、捕獲、冒泡」這個問題。
當我們已經跟後端請求過某個資源,例如某筆資料或某張圖片,下一次再次請求時,如果該資源沒有改變,這時再次請求會相對浪費網路頻寬;反之,如果第一次請求來的資源已經被存下來,那麼下次請求時,可以直接用該資源,這樣可以減少不必要的請求。而這也是 caching 的概念。