# 前端面試問題 不定期更新遇過的前端面試題目。如果想補充題目的話,歡迎登入後編輯。 ## 2025 年 9 月補充 - 當初這份筆記撰寫時,目標受眾是「想轉職成前端工程師」的朋友 - 如果已經有前端工作經歷,通常面試提問的重點會放在履歷的內容和先前的工作經歷。當然有些考題還是可能會遇到,只是比重會比找第一份前端工作時來得低很多 - 可以請 AI 出一些常見的前端考題,幫忙模擬面試。這樣準備起來的效率,會比看這份題庫來得高很多,題型也比較活 ## JavaScript * map() 與 foreach() 使用時機?如何選擇? * null與undefined差別? * []= =[]嗎? []===[]嗎? * 什麼是作用域 (scope)? * 什麼是 hoisting? * 什麼是 event loop? * function declaration vs function expression 差別? * By value vs by reference * 在不同情況下 this 指向對象會是什麼? * 什麼是原型鍊(prototype chain)? * 什麼是閉包(closure)?用途是什麼? * 非同步與同步操作混用時的輸出順序 * Promise & async await 差別在哪裡?有沒有什麼是其中一個做得到另一個做不到的? * 有用遞迴的方式寫過 async await 嗎? * var、let、const 的差別? * Array.forEach、Array.map、Array.filter、Array.reduce 的差別? * 如果要實現myMap()跟map的功能一樣,要怎麼做(`[1,2,3].myMap(()=>{...})`) * Promise 和 async await 要解決的是什麼問題? * 什麼是 event bubbling? * 知道event bubbling和capture的事件傳遞流程嗎? * 請解釋何謂 callback function? * 分別解釋 debounce 跟 throttle,以及兩者的差異 * 什麼是「淺比較」和「深比較」? * 請解釋「淺拷貝」和「深拷貝」 * 請說出 JavaScript 所有的基本型別 * 請解釋 == 和 === 的差異 * 使用過什麼方法處理 AJAX? ## TypeScript * type `any` vs. `unknown` 的差別 * `type` 跟 `interface` 的差別在哪? * 請說明泛型(generics)是什麼? * `extend` 在泛型中的用途? * enum 和 const 的差別是什麼? * 什麼是 function overload? ## 框架/套件/工具類 * 為什麼選擇你現在用的這個 JavaScript 框架? * 用過其他 JavaScript 框架嗎?跟你現在用的框架差別在哪裡? * 有用過 Webpack 嗎? * 平常寫 code 有用 linter 嗎?用哪個? * 什麼是 SPA?優缺點為何? * 有使用過 Gulp 嗎? * Canvas和 WebGL的差異? * 有使用過 Three.js 嗎? * 知道什麼是 WebRTC嗎? * 知道什麼是 WebAssembly 嗎? * 用過 Redux 嗎?它要解決什麼問題? * 什麼是 SSR(server-side rendering)? * 有用過什麼處理非同步操作的 library? * styled-component vs. css module * 知道 Tailwind 嗎?優缺點是什麼? * 有用過什麼 CSS 框架? * 有用過什麼處理非同步操作的 library? ## React * React 框架是什麼?有什麼特點? * React component 的生命週期為何? * 哪些情況會造成 component re-render * React key 的用途在哪裡? * 用過 React Hook 嗎?它要解決什麼問題? * React Hook 的規則有哪些? * 請舉出三種 React Hook 並說明各自的用途是什麼? * 使用 useState 時可以給定一個初始參數,也可以給一個function,兩者差別在哪 * useState 怎麼使用?setState 的時候要注意哪些事項? * 假如 useState 放巢狀的資料(例如:array of objects),更新狀態時要注意哪些地方? * setState 是同步還是非同步? * useEffect 怎麼使用?用途是什麼?有哪些要注意的地方?傳入的第二個參數作用是什麼? * useEffect 回傳的 function 用途是什麼? * 假如 useEffect 的 dependency array 放了物件或陣列,會發生什麼事? * 用過 useLayoutEffect 嗎? * useRef 怎麼使用?跟 useState 差別在哪裡? * 假如 useRef 放了物件或陣列,再放到 useEffect 的 dependency array,元件 render 的時候 useEffect 會執行嗎? * useRef 的值改變會不會造成 useEffect 觸發?如果把變數放到 component 之外呢? * memo 跟 useMemo 分別怎麼使用?差別在哪裡? * useCallback vs. useMemo * 把所有變數都用 useMemo 包起來的做法可不可以?為什麼可以/不行? * React 下層元件的 state 要給上層元件用的話要怎麼做? * 有聽過 React batch update 嗎?可以稍微解釋嗎? * 什麼是 prop drilling?要如何避免? * Context 和 Redux 的差別在哪裡?可不可以用 Context 代替 Redux?有沒有什麼是其中一個做得到另一個做不到的? * 要寫出好維護的 React code,需要注意或遵守哪些事項? * PureComponent 是什麼? * 寫過 useReducer 嗎?試著改寫範例程式碼看看 * 用 Context 改寫範例程式碼 * Controlled Component 和 Uncontrolled Compoenet 有什麼差異? * React 17 和 18 的差別? * 什麼是 reconciliation? * 什麼是 React Fiber? ## Vue * vue的生命週期 * 雙向數據綁定的原理 * Vue 中給 data 中的對象屬性添加一個新的屬性時會發生什麼?如何解決? * $set 的實現原理是 * vue 打包優化方案 ## 版本控制類 * 請解釋目前你使用 git 版控的流程 ## 網路類 * 知道哪些 HTTP methods? * GET & POST 兩者差異是? * PUT & PATCH 兩者差異是? * 有實作過登入功能嗎?可以說明你怎麼做的嗎? * Cookie 跟 session 的差異是? * Cookie、localStorage、sessionStorage 的差別? * 知道怎麼做 SEO 嗎? * 什麼是 CORS? * HTTP 狀態碼 304 代表什麼?是多好還是少好? ## 效能優化類 * 如何降低網頁載入的效能? * 如何加快頁面載入速度? * 假如後端有很大一包資料(假設是高達 5 MB 的文字資料),需要花一些時間才能下載完,你身為前端工程師,能想出幾種方法去縮短使用者的等待時間? * CSS 擺放在前面 和 JavaScript 擺放在後面 對效能的影響? * 本機載入 JS 檔和 CDN 載入的差異? * 打包成 webpeck 和分開載入的差異及對效能的影響? * 假如遇到網頁有效能問題,你有什麼策略應對? ## 設計方法/設計模式類 * 知道 OOP 嗎?什麼是 OOP? * 聽過 MVC 嗎?什麼是 MVC? * 聽過 functional programming 嗎? * 什麼是 immutable / immutability? ## 資料結構、演算法類 - 解釋一下什麼是 Stack、Queue。兩者的差別為何?什麼地方會用到這兩種資料結構? ## CSS * 水平垂直置中的不同方法 * 說明下列 CSS selectors 的差別: - div .a.b - div .a .b - div section - div > section - div + section - div ~ section * CSS Specificity(通常會要你排優先順序) * 什麼是 CSS Box Model? * box-sizing 的 content-box 和 border-box 差別,預設值為何? * id 跟 class 的差別?id 可以多於一個嗎? * :before 跟 :after 用途? * display: inline 跟 display: block 的差別 * 寫一個顏色漸變的動畫要用什麼 property * ~~知道什麼是 block formatting context (BFC) 嗎?~~ * 會使用SASS、SCSS嗎? * SASS 的 & 代表什麼? * 知道如何使用 mixin 和 SASS、SCSS變數嗎? * 寫過什麼 CSS 動畫? * 常見的單位有哪些?差別在哪裡? * font-size 單位 rem 、 em、 % 分別有什麼差別? * 什麼時候用 padding 什麼時候用 margin? * 知道什麼是 CSS reset 嗎? * Flexbox 怎麼使用?常用哪些屬性? * 規劃前端開發時,使用 Flex, Box, Grid 排版的考量是? ## 行為問題 * 能請你簡單自我介紹嗎? * 為什麼想轉來寫程式/前端發展? * 有帶電腦嗎?能展示一下你的作品嗎? * 遇到程式問題都如何解決?解決的管道?有效性?效率? * 過去經歷/學習前端上有遇到什麼挫折嗎?怎麼克服的? * 通常你的開發流程是什麼? * 開發流程來不及怎麼辦? * 你有嘗試去接案嗎? * 你有跟別人協同開發過嗎?例如跟其他人一起寫前端、或是跟後端、設計師配合的經驗? * 開發時有沒有什麼比較不能忍受或討厭的事情? * 方便透露目前的薪資待遇嗎? * 期望的薪水是? * 最快能報到的日期是? * 關於公司你有什麼想問的嗎? * 如何在設計師與前端工程師溝通的方式?前端工程師和後端工程師溝通的方式?使用的工具、溝通的模式?遇到的問題?怎麼解決? * 有在研究 UI/UX 嗎?經常會瀏覽怎樣的文章? * 有研究過設計準則嗎? * 最近有學習什麼新的技術或知識?可以分享一下心得?(前端知識更新的頻率) * 最近有對什麼還不會但有興趣學習的?不管是程式技術或是工具? * 第一個接觸和程式是什麼時候?後續培訓課程的內容有關什麼? * 選擇就職的公司時,前三項考量依序是什麼? * 有沒有處理過跨瀏覽器的兼容問題?如何解決? * 如果你是面試官,會最重視哪三個問題? * 你在 Code Review 時最重視哪三件事?
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.