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
跨越國界的程式人生
0會員
7內容數
自學程式,現為網頁開發工程師,同時擔任線上課程講師,專注於幫助自學程式的開發者找到理想工作。熱愛技術與分享,致力於將複雜的概念轉化為實用知識,讓更多人踏入軟體開發的世界。
留言
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 友善的方式撰寫,適合想學習前端開發或準備面試的讀者。
這篇文章提供完整的求職策略,特別針對如何有效利用獵頭資源。內容涵蓋獵頭類型篩選、與獵頭高效溝通技巧、面談流程、談判薪資策略,以及如何透過獵頭獲取公司內部資訊等面向,協助求職者提升求職效率並找到理想工作。
探討離職前應考量的三大關鍵問題:工作是否有助於職涯發展、是否具備更好的就業機會,以及是否適應現有環境與文化。建議先評估自身能力、市場需求和經濟狀況,再透過與主管溝通、投遞履歷、提升技能等方式做出更明智的決策。
本篇參與的主題活動
各位彩妝控、眼影收藏家們!是不是覺得眼妝是整個妝容的靈魂?一盤對的眼影盤,就能讓你輕鬆變換風格,從溫柔日常、氣質通勤到閃亮派對,通通搞定!看著那一格格美麗的顏色,排列組合出無限可能,就是讓人忍不住一盤接一盤地收啊!
## 第一季活動時間提醒 🗓️ 2025/3/28 15:00 - 4/27 14:59 ## 段位系統說明 ### 不會降級的段位 🔒 - 新手級 1-4 - 精靈球級 1-4 - 超級球級 1 ### 會降級的段位變動規則 📊 **超級球段位**
你所失去的,本就不屬於你 你正經歷的,皆在淬煉未來的自己 別急,事緩則圓,人緩則安 允許自己慢慢來。 ▉為什麼我們總是這麼著急? 在這個快節奏的時代,我們習慣了即時滿足。 一封訊息沒有立即回覆,就開始焦慮; 努力了幾個月看不到成果,就覺得自己白費力氣; 看到別人比自己更快成功,便懷疑自己的
各位彩妝控、眼影收藏家們!是不是覺得眼妝是整個妝容的靈魂?一盤對的眼影盤,就能讓你輕鬆變換風格,從溫柔日常、氣質通勤到閃亮派對,通通搞定!看著那一格格美麗的顏色,排列組合出無限可能,就是讓人忍不住一盤接一盤地收啊!
## 第一季活動時間提醒 🗓️ 2025/3/28 15:00 - 4/27 14:59 ## 段位系統說明 ### 不會降級的段位 🔒 - 新手級 1-4 - 精靈球級 1-4 - 超級球級 1 ### 會降級的段位變動規則 📊 **超級球段位**
你所失去的,本就不屬於你 你正經歷的,皆在淬煉未來的自己 別急,事緩則圓,人緩則安 允許自己慢慢來。 ▉為什麼我們總是這麼著急? 在這個快節奏的時代,我們習慣了即時滿足。 一封訊息沒有立即回覆,就開始焦慮; 努力了幾個月看不到成果,就覺得自己白費力氣; 看到別人比自己更快成功,便懷疑自己的
你可能也想看
Google News 追蹤
Thumbnail
【vocus 精選投資理財/金融類沙龍,輸入 "moneyback" 年訂閱 9 折】 市場動盪時,加碼永遠值得的投資標的——「自己」 川普政府再度拋出關稅震撼彈,全球市場應聲重挫,從散戶到專業投資人,都急著找尋買進殺出的訊號,就是現在,輪到知識進場!把握時機讓自己升級,別放過反彈的機會!
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
【vocus 精選投資理財/金融類沙龍,輸入 "moneyback" 年訂閱 9 折】 市場動盪時,加碼永遠值得的投資標的——「自己」 川普政府再度拋出關稅震撼彈,全球市場應聲重挫,從散戶到專業投資人,都急著找尋買進殺出的訊號,就是現在,輪到知識進場!把握時機讓自己升級,別放過反彈的機會!
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】要能確實將資料庫內的文章資料,筆數不多不少地回應出來。 當使用者瀏覽單一文章頁時: 使用者可看到該文章資料,也就是【