ShopBack 前端工程師面試題目與答案:HTTP、JWT、CORS 與 LeetCode

更新於 發佈於 閱讀時間約 6 分鐘


📡 HTTP 請求方法

在 Web 開發中,HTTP 方法(Methods)決定了請求的行為。以下是常見的 HTTP 方法:

  • GET:用於請求資源(讀取資料)
  • POST:用於提交資料(如表單)
  • PUT:用於更新資源(完整更新)
  • PATCH:用於部分更新資源
  • DELETE:用於刪除資源

範例:

fetch('https://api.example.com/data', {
method: 'GET',
headers: { 'Content-Type': 'application/json' }
})
.then(response => response.json())
.then(data => console.log(data));


🔐 JWT(JSON Web Token)介紹

JSON Web Token(JWT)是一種用於認證與授權的輕量級機制。它通常由三個部分組成:

  1. Header(標頭):包含 Token 類型(typ)與加密演算法(alg)。
  2. Payload(負載):包含使用者資訊與權限等內容。
  3. Signature(簽名):使用密鑰對 Header 和 Payload 進行簽名,以確保數據完整性。

JWT 的應用場景

  • 身份驗證:使用 JWT 來驗證使用者身份。
  • API 授權:確保請求者具有適當的權限。
  • 單點登入(SSO):讓使用者在多個應用間無縫切換。

範例 JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNjEyMzQ1Njc4fQ.HMACSHA256

注意:JWT 在使用時應該考慮安全風險,如存儲方式、過期時間、以及是否適用於 Session 管理。


🌍 源資源共用(CORS)是什麼?如何設定 CORS?

CORS(Cross-Origin Resource Sharing)是一種機制,允許不同來源(origin)之間的請求。

如果前端發送請求到不同來源的 API(例如 https://api.example.com),預設會被瀏覽器阻擋。要解決這個問題,需要後端設定 CORS。

📌 範例(Express.js):

const express = require('express');
const cors = require('cors');
const app = express();

app.use(cors({ origin: 'https://yourfrontend.com' }));

app.get('/data', (req, res) => {
res.json({ message: 'CORS 設定成功!' });
});

app.listen(3000, () => console.log('Server running on port 3000'));


🔄 在瀏覽器輸入網址並送出後,到底發生了什麼事?

  1. DNS 解析(Domain Name System)
  2. TCP 連線建立(握手)
  3. 發送 HTTP 請求
  4. 伺服器處理請求並回應
  5. 瀏覽器解析 HTML / CSS / JS
  6. 渲染頁面 & 執行 JavaScript

這是一個經典的面試問題,理解這個過程能幫助你掌握 Web 的運作原理!


⚠️ HTTP 狀態碼

  • 200 OK:請求成功。
  • 201 Created:資源成功建立。
  • 400 Bad Request:請求錯誤。
  • 401 Unauthorized:未授權,需要登入。
  • 403 Forbidden:無權訪問。
  • 404 Not Found:找不到資源。
  • 500 Internal Server Error:伺服器錯誤。


🧩 LeetCode 題目解析

LeetCode 3. Longest Substring Without Repeating Characters

題目: 找出一個字串中,不包含重複字符的最長子字串長度。

📌 解法(Sliding Window):

var lengthOfLongestSubstring = function(s) {
let set = new Set();
let left = 0, maxLength = 0;

for (let right = 0; right < s.length; right++) {
while (set.has(s[right])) {
set.delete(s[left]);
left++;
}
set.add(s[right]);
maxLength = Math.max(maxLength, right - left + 1);
}
return maxLength;
};

時間複雜度:O(n)


LeetCode 20. Valid Parentheses

題目: 判斷括號是否有效(成對匹配)。

📌 解法(Stack):

var isValid = function(s) {
let stack = [];
let map = { ')': '(', '}': '{', ']': '[' };

for (let char of s) {
if (char in map) {
if (stack.pop() !== map[char]) return false;
} else {
stack.push(char);
}
}
return stack.length === 0;
};

時間複雜度:O(n)


🎯 總結

這篇文章涵蓋了 HTTP 方法、JWT 的風險、CORS 設定、HTTP 狀態碼,以及兩道 LeetCode 題目的解法!希望對你有所幫助!🚀

💬 你最想了解哪個主題呢?歡迎留言交流!

自學程式,現為網頁開發工程師,同時擔任線上課程講師,專注於幫助自學程式的開發者找到理想工作。熱愛技術與分享,致力於將複雜的概念轉化為實用知識,讓更多人踏入軟體開發的世界。
留言
avatar-img
留言分享你的想法!
這篇文章記錄近期學習的技術重點,包含WebStorage & Cookie安全性問題、排序演算法Merge Sort、圖的遍歷DFS,以及React Component開發經驗。文中提供相關學習資源連結,適合對網頁開發、演算法及面試準備感興趣的朋友參考。
臺灣樂天與趨勢科技前端面試經驗分享,包含面試作業(樂天:無限滾動;趨勢科技:日期選擇器)、常見面試問題(HTML DOCTYPE、CSS/JS 位置、CSS 渲染機制、CSS 權重、JavaScript 變數類型、TypeScript 泛型、自訂 Array map 方法)及相關資源連結。
本文章提供前端開發的完整知識地圖,涵蓋 JavaScript 基礎概念、進階概念、前端開發基礎、前端框架與工具、系統設計與架構,以及開發工具與實作等面向,並以 SEO 友善的方式撰寫,適合想學習前端開發或準備面試的讀者。
這篇文章提供完整的求職策略,特別針對如何有效利用獵頭資源。內容涵蓋獵頭類型篩選、與獵頭高效溝通技巧、面談流程、談判薪資策略,以及如何透過獵頭獲取公司內部資訊等面向,協助求職者提升求職效率並找到理想工作。
探討離職前應考量的三大關鍵問題:工作是否有助於職涯發展、是否具備更好的就業機會,以及是否適應現有環境與文化。建議先評估自身能力、市場需求和經濟狀況,再透過與主管溝通、投遞履歷、提升技能等方式做出更明智的決策。
這篇文章記錄近期學習的技術重點,包含WebStorage & Cookie安全性問題、排序演算法Merge Sort、圖的遍歷DFS,以及React Component開發經驗。文中提供相關學習資源連結,適合對網頁開發、演算法及面試準備感興趣的朋友參考。
臺灣樂天與趨勢科技前端面試經驗分享,包含面試作業(樂天:無限滾動;趨勢科技:日期選擇器)、常見面試問題(HTML DOCTYPE、CSS/JS 位置、CSS 渲染機制、CSS 權重、JavaScript 變數類型、TypeScript 泛型、自訂 Array map 方法)及相關資源連結。
本文章提供前端開發的完整知識地圖,涵蓋 JavaScript 基礎概念、進階概念、前端開發基礎、前端框架與工具、系統設計與架構,以及開發工具與實作等面向,並以 SEO 友善的方式撰寫,適合想學習前端開發或準備面試的讀者。
這篇文章提供完整的求職策略,特別針對如何有效利用獵頭資源。內容涵蓋獵頭類型篩選、與獵頭高效溝通技巧、面談流程、談判薪資策略,以及如何透過獵頭獲取公司內部資訊等面向,協助求職者提升求職效率並找到理想工作。
探討離職前應考量的三大關鍵問題:工作是否有助於職涯發展、是否具備更好的就業機會,以及是否適應現有環境與文化。建議先評估自身能力、市場需求和經濟狀況,再透過與主管溝通、投遞履歷、提升技能等方式做出更明智的決策。
本篇參與的主題活動
pixiv 發表 BOOTH 3D 虛擬物件交易白皮書 2025,去年平台上 3D 模型交易金額增加 187%,交易件數也翻倍。「今年很可能是行動虛擬角色元年!」pixiv 整合旗下 VRoid、BOOTH 資源,並發表 VEAT,進軍手機 app ,期望讓 3D avatar 擴散至更多平台。
這套寶可夢牌組以瑪沙耶、恰雷姆、利歐路和路卡利歐為核心,搭配瑪夏多和樹才怪,透過巧妙的組合和運氣,能在短時間內打出高傷害。本文詳細介紹牌組配置、核心戰術、優缺點分析和戰術提示,適合喜歡高風險高回報玩法的玩家。
身為一個崇尚極簡主義者,近期我也把身邊的包包精簡到三個,並且感受到包包斷捨離後的好處,一起來看我是如何實踐的吧!
我的得力助手T小姐在短時間內經歷了2次流產。 第一次流產後沒幾個月又急著要懷上,其實我還蠻不能理解的,身體都還沒復原、還沒查清楚流產的原因又急著懷孕真的風險太大。第二次也是在6周左右又流產了,這次終於好好的去醫院檢查原因,然後讓身體休息了近一年才又懷孕。 但是我聽了他上次流產的原因,是染色體異常
本文將為大家介紹一套以葉伊布GX為核心的水草混合治癒型控場牌組,適合喜歡持久戰的玩家。 目錄 牌組概述 核心卡片介紹 配套訓練家卡 能量配置策略 對戰技巧 常見對手應對 替換建議 牌組概述 這套牌組以葉伊布ex為核心,搭配水屬性能量與珠貝的治癒效果,打造一套難以擊倒的生存型牌
pixiv 發表 BOOTH 3D 虛擬物件交易白皮書 2025,去年平台上 3D 模型交易金額增加 187%,交易件數也翻倍。「今年很可能是行動虛擬角色元年!」pixiv 整合旗下 VRoid、BOOTH 資源,並發表 VEAT,進軍手機 app ,期望讓 3D avatar 擴散至更多平台。
這套寶可夢牌組以瑪沙耶、恰雷姆、利歐路和路卡利歐為核心,搭配瑪夏多和樹才怪,透過巧妙的組合和運氣,能在短時間內打出高傷害。本文詳細介紹牌組配置、核心戰術、優缺點分析和戰術提示,適合喜歡高風險高回報玩法的玩家。
身為一個崇尚極簡主義者,近期我也把身邊的包包精簡到三個,並且感受到包包斷捨離後的好處,一起來看我是如何實踐的吧!
我的得力助手T小姐在短時間內經歷了2次流產。 第一次流產後沒幾個月又急著要懷上,其實我還蠻不能理解的,身體都還沒復原、還沒查清楚流產的原因又急著懷孕真的風險太大。第二次也是在6周左右又流產了,這次終於好好的去醫院檢查原因,然後讓身體休息了近一年才又懷孕。 但是我聽了他上次流產的原因,是染色體異常
本文將為大家介紹一套以葉伊布GX為核心的水草混合治癒型控場牌組,適合喜歡持久戰的玩家。 目錄 牌組概述 核心卡片介紹 配套訓練家卡 能量配置策略 對戰技巧 常見對手應對 替換建議 牌組概述 這套牌組以葉伊布ex為核心,搭配水屬性能量與珠貝的治癒效果,打造一套難以擊倒的生存型牌
你可能也想看
Google News 追蹤
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
可能包含敏感內容
先說一下我的背景,非本科系從 2022/3 開始接觸到前端領域,在摸索過程中遇到六角學院,買了 HTML 和 CSS 課程從基礎學起。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
最近有專案需求要在 Web 上進行一個掃描條碼辨識的動作,做了一些功課,有 Open Source 方案跟商業解決方案,整理起來分享給大家。
前兩天,我們探討了「網站文章」的情境題;今明兩天,就讓我們探討另一個情境題「會員註冊」吧! 這邊我們同樣假設網站是採前後端分離的設計,因此我們就專注在測試 API 的部分,不過會多一個「註冊驗證信」的部分要實作與做測試驗證。 使用案例 使用者可填寫註冊資料後送出資料。 使用者可收到註冊驗證信
今天就讓我們依照前一天的情境題,來撰寫測試案例函數吧! 先讓我們規畫擬訂測試案例: 測試案例 當使用者瀏覽文章清單頁時: 使用者可看到所有文章清單,也就是【文章清單API】要能確實將資料庫內的文章資料,筆數不多不少地回應出來。 當使用者瀏覽單一文章頁時: 使用者可看到該文章資料,也就是【
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
可能包含敏感內容
先說一下我的背景,非本科系從 2022/3 開始接觸到前端領域,在摸索過程中遇到六角學院,買了 HTML 和 CSS 課程從基礎學起。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
最近有專案需求要在 Web 上進行一個掃描條碼辨識的動作,做了一些功課,有 Open Source 方案跟商業解決方案,整理起來分享給大家。
前兩天,我們探討了「網站文章」的情境題;今明兩天,就讓我們探討另一個情境題「會員註冊」吧! 這邊我們同樣假設網站是採前後端分離的設計,因此我們就專注在測試 API 的部分,不過會多一個「註冊驗證信」的部分要實作與做測試驗證。 使用案例 使用者可填寫註冊資料後送出資料。 使用者可收到註冊驗證信
今天就讓我們依照前一天的情境題,來撰寫測試案例函數吧! 先讓我們規畫擬訂測試案例: 測試案例 當使用者瀏覽文章清單頁時: 使用者可看到所有文章清單,也就是【文章清單API】要能確實將資料庫內的文章資料,筆數不多不少地回應出來。 當使用者瀏覽單一文章頁時: 使用者可看到該文章資料,也就是【