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

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

軟體工程師職涯升級計畫啟動!立即預約職涯諮詢、履歷健檢或模擬面試👈,為您的加薪做好準備!

📡 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
留言分享你的想法!
avatar-img
跨越國界的程式人生
2會員
37內容數
自學程式,現為網頁開發工程師,同時擔任線上課程講師,專注於幫助自學程式的開發者找到理想工作。熱愛技術與分享,致力於將複雜的概念轉化為實用知識,讓更多人踏入軟體開發的世界。
2025/04/29
本文彙整了Pelith、Xrex和Garena三家公司前端面試題目,涵蓋JavaScript核心概念、React Hooks應用、Git操作、事件循環機制等,並提供詳盡的解析與答案,希望能幫助求職者提升面試技能,順利獲得理想Offer。
Thumbnail
2025/04/29
本文彙整了Pelith、Xrex和Garena三家公司前端面試題目,涵蓋JavaScript核心概念、React Hooks應用、Git操作、事件循環機制等,並提供詳盡的解析與答案,希望能幫助求職者提升面試技能,順利獲得理想Offer。
Thumbnail
2025/03/29
這篇文章整理了前端開發中常見的效能優化技巧、React與JavaScript的知識點,以及Redux Toolkit和React Fiber的應用、Reflow與Repaint、Event Loop、Higher Order Component、React Hooks等主題。
Thumbnail
2025/03/29
這篇文章整理了前端開發中常見的效能優化技巧、React與JavaScript的知識點,以及Redux Toolkit和React Fiber的應用、Reflow與Repaint、Event Loop、Higher Order Component、React Hooks等主題。
Thumbnail
2025/03/19
這篇文章記錄近期學習的技術重點,包含WebStorage & Cookie安全性問題、排序演算法Merge Sort、圖的遍歷DFS,以及React Component開發經驗。文中提供相關學習資源連結,適合對網頁開發、演算法及面試準備感興趣的朋友參考。
Thumbnail
2025/03/19
這篇文章記錄近期學習的技術重點,包含WebStorage & Cookie安全性問題、排序演算法Merge Sort、圖的遍歷DFS,以及React Component開發經驗。文中提供相關學習資源連結,適合對網頁開發、演算法及面試準備感興趣的朋友參考。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
本文介紹了CSS Battle 17的挑戰題目,並提供瞭解題的技巧和方法。內容包括基本排版、圖形解構能力和技術總結。歡迎大家分享自己的解法與作者交流。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
本篇文章分享了前端工程師在 CSS Battle #166 的解題方式,藉由使用 flex 來進行排版,並提供了相關的技術總結。歡迎一起來學習或練習基礎切版的朋友們和作者互動。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
這篇文章將解析CSS Battle第136題的解法,主要考驗基本CSS置中排版的能力,並提供了作者的解法與技術總結。透過互動學習,讓想要學習或練習基礎切版的朋友可以參與討論。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
在開發前後端分離架構時,使用兩個不同網域所遇到跨域請求問題。特別是在POST請求時行為差異大,揭示了「簡單請求」與「預檢請求」的關鍵差異。簡單請求不需預檢,但application/json會觸發預檢請求,需透過特定設定解決。分享這篇文章希望幫助開發者有效處理跨域問題。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
本文介紹CSS Battle題目#73的解法,涵蓋了分層拆解圖形、使用grid排版、調整樣式等基礎技巧。
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News