如何設定一個 element 與相鄰 element 的距離?
margin, padding, postion, transform 等屬性要熟
margin 和 padding 的差別?
內距、外距
如何設定RWD?常見的 breakpoints?
使用 media query
min-width mobile first
max-width desktop first
手機、平板、筆電、桌電 breakpoints 記一下
display block 和 display inline 差別?
block: 區塊元素、會換行、預設 width 100%、可以設定寬高
inline: 行內元素、不換行、無法設定寬高、margin/padding 設定受限(通常只能設定水平)
inline-block: 不換行 + 可以設定寬高 + margin/padding
JPG、 PNG、WebP、GIF、SVG 的差別?
JPG: 檔案較小、畫質較差,適合大面積背景圖或不用精細呈現的圖片
PNG: 較高的畫質、透明背景,適合需要清晰畫質的圖片
WebP: 結合 JPEG + PNG 檔案小畫質高的優點,但瀏覽器支援有限
GIF: 256色、檔案小、動圖
SVG: 檔案小、向量圖、縮放不失真,適合 icon, logo 等場合
var, let, const 差別?
1. scope
- var: function scope
- let, const: block scope
2. hoisting
- var: yes
- let, const: TDZ
3. 可否重新宣告
- var: yes
- let, const: no
4. 可否重新賦值(const, let 主要差別)
- var, let: yes
- const: no
localStorage, sessionStorage, cookie 的差別?
1. 使用場景
- localStorage: 容量大且不易刪除,適合跨頁或長時間保存資料的場景
- sessionStorage: 關掉頁面就消失,適用單次使用需要保存數據的場景
- cookie: 常夾帶在 HTTP 請求,需要辨識用戶的場景
2. 生命週期
- localStorage: forever
- sessionStorage: 關掉頁面就失效
- cookie: 可設定 expiration,若無設定則預設關閉瀏覽器即失效
3. 存放大小
- cookie: 4KB
- localStorage: 5M
- sessionStorage: 10M
4. 運行位置
- localStorage: client
- sessionStorage: client
- cookie: client, server
JS 有什麼型別?
Primitive type: String/ Number/ Boolean/ Null/ Undefined/ BigInt/ Symbol
& Object
淺拷貝和深拷貝的差別?
淺拷貝:拷貝時,滿足物件 A 與物件 B 不同(第一層),擁有相同的結構,但內部屬性指向相同的參考
深拷貝:拷貝時,滿足物件 A 與物件 B 不同(第一層),擁有相同的結構,但內部屬性指向不同的參考
什麼是 event loop?
解釋 JS synchronous 的特性,event loop 是瀏覽器內建達成 asynchronous 的機制,execution stack, Web API, event queue 的作用和彼此間的關係了解一下。
在 JS 中如何處理非同步?
Promise, async await
什麼是 Promise?
處理 asynchronous 函式
結構 new Promise((resolve, reject)=>{ })
pending, fulfill, reject 三種狀態
try, catch, finally 的處理
什麼是 debounce?
多次呼叫某函式時不會馬上執行,而是等到最後一次呼叫之後經過 t 時,這個才會被執行。
React 中為何使用 map 進行列表渲染
JSX 中的 {} 需要收到一個表達式,而 map 會回傳一個新的陣列(要講深一點可以提 React.creatElement 的參數)
為何要使用框架?使用框架的好處是什麼?
提高開發效率、程式碼的一致性和可維護性、減少錯誤和安全風險
CSR, SSR 的差別
1. client-side rendering
- client 渲染,AJAX 請求動態生成內容
- 操作流暢使用體驗好
- bundle 大小較大初次載入時間長、SEO 不友善
2. server-side rendering
- server 渲染
- 初次載入時間短、SEO 友善
- 伺服器負載高、因為要渲染所以初次載入時間較長、互動性較差
工程師間如何協作?git 相關經驗
依照工作實際經驗回答