這篇文章收錄這輪面試我遇到的題目,目的是幫助Junior後端工程師準備技術面試。如果你的求職方向和我一樣,應該會有幫助:
- 台灣新創公司
- 使用Node.js
- 非本科轉職
這篇不包含演算法的題目,因為太多了沒辦法全部記得XD。但大多數題目都在LeetCode Easy程度, 全部題目都是陣列相關。
以下會按照技術去分類題目,除了AWS部分沒工作經驗的人不一定要會,建議其他每一題都要弄懂或大概知道概念。
資料庫相關
- ORM是什麼?ORM的優缺點是什麼?
- 請解釋CAP定律或是ACID
- 請解釋關聯式資料庫和非關聯式資料庫的差異
- 請解釋Redis適用的使用情境
- 資料庫cache會遇到什麼問題?
- 什麼是資料庫正規化?
- 什麼情況要使用反正規化?
- 什麼是資料庫index?
- 什麼是composite index?
- 為什麼一般來說不建議使用 SELECT * ?
- 什麼是transaction? Transaction失敗了怎麼辦?
- 如果要用MongoDB紀錄一個人的點擊log,你會怎麼設計?
- MongoDB有哪些常用的優化措施?
- 假設今天有一模一樣的query,前幾天只要500ms就能跑完,今天突然要5s才跑完,你會怎麼解決這個問題?
- 某生產環境,有node.js一台、DB一個,尖峰時刻請求都卡在DB,請問短期、長期各有什麼策略?
JavaScript / Node.js 相關
- 這段code會印出什麼,為什麼?
for (var i = 0; i < 5; i++){
setTimeOut(()=> {
console.log(i)
}, 1000)
}
2.
var a = {} ; var b = {}; var c = a
- a === b ?
- a === c ?
- 解釋為什麼前兩題答案不同(或相同)
3. 解釋JavaScript的event loop
4. 什麼是Promise?
5. 解釋var, const, let的差異
6. 用closure寫一個函數
7. 實作[1,2,3].duplicate() = [1,2,3,1,2,3]
8. 為什麼要用Node.js? Node.js的好處是什麼?
9. 解釋同步和非同步的差異
10. JavaScript有哪些方法可以進行非同步流程的控制?
11. 常用的JavaScript類別定義的方法有哪些?
12. JavaScript類別繼承的方法有哪些?
13. 解釋Node.js的EventEmitter的作用
14. 什麼是Node.js錯誤優先的回調函數?
JWT / Session相關
- JWT和Session的差異是什麼?
- JWT解決了什麼問題?
- JWT的缺點是什麼?
- JWT的組成是什麼?payload會帶什麼?可以被竄改嗎?
- 解釋cookie和session之間的關係
HTTP相關
- 解釋GET和POST的差異
- 解釋POST / PUT / PATCH在Restful定義下的差異與使用時機
- 給很多選項,選出哪些是HTTP method (GET, POST, PUT…)
AWS相關
- 有用過AWS的哪些服務?
- Service建置在AWS ECS上,這時候出現status code 500,請問你會執行哪些處理與檢查?
- 描述你操作過的AWS RDS 備份與還原的過程
協作相關
- 有協作過的經驗嗎?遇到最大的困難是什麼?
- 如果再讓你回到當時遇到困難的情境,你會怎麼做?
- 什麼是git flow?
程式碼相關
- 你認為怎麼樣算是好code?
- 你平常怎麼確保程式碼的可讀性和維護性?
- 程式碼時間和空間的取捨,可以舉個例嗎?
資料庫與API設計(白板題)
- 某網站需要有多個前後台角色且各自有不同權限,請設計API與資料庫
- 電商網站賣家需要一個可以指定未來時間上架的功能,設計API與資料庫
- 電商網站需要能夠顯示前十名賣得最好的商品,請設計API與資料庫。如果前端今天不需要即時更新名單,可以怎麼做?
- 畫出並描述轉帳功能的流程,Server、DB、銀行API各自需要做什麼檢查邏輯與例外處理?
其他
- 什麼是Mircroservice架構?
- 什麼是Functional Programming? 簡單解釋你的理解。
- SPA 和 SSR技術上有什麼不同?你偏好哪個?為什麼?
- 描述一下你的專案用了什麼技術、遇到什麼困難、怎麼解決