面試問答
說明過往工作中,與團隊中其他夥伴協作分工狀況
後端分工狀況:
(...
一面現場面試約50分鐘,與後端兩位主管面談,內容含工作經歷、技術面、人格特質。
二面現場面試:若第一關有通過的話,會與
技術主管面談,主要了解人格特質、協作方式,但也問了兩道邏輯題。
面試官會將一面二面內容整理成文件並提供給HR,團隊回報七日工作天左右會給出評核結果,結果如何都會通知。
面試問答
說明過往工作中,與團隊中其他夥伴協作分工狀況
後端分工狀況:
(a) Leader 負責各需求的進度掌控、檢視需求設計
(b) 組員自行分配 Sprint 需求、撿 high 票處理
(c) 時程評估:無壓力就自己做、有壓力就討論分工
(d) 需求分工、共用分支:共用部分先推分支
(e) 設計模板架構:table 規格及索引建立 -> 共用物件或方法 -> 各 api 功能與實作
(f) 部署:輪流安排組員負責
各部門分工:
(a) PMM:產品規劃,大方向/ usecase/ 需求規格書
(b) PM:專案進度控管、bug 票安排
(c) FE:WEB 介面、串接後端 API
(d) APP:APP 介面、串接後端 API
(e) BE:後端 API 開發
(g) QA:產品驗收測試
離職原因
一、覺得學習差不多了
二、目前目標:技術積累
(a) 高併發:高併發需求、緩存
(b) 高可用:微服務架構
(c) 高性能:緩存、讀寫分離、分庫分表、中間件ActiveMQ、RabbitMQ、Kafka
(d) 高擴展:容器化技術Docker/K8S
什麼是 OOP 物件導向?
以物件為概念去開發,透過 OOP 特性提升可獨性、靈活性、重用性、擴展性
請說明 Spring 的 IOC & AOP
IOC 控制反轉:將物件生命週期交給容器去控制,透過 DI 依賴注入來達成
AOP 橫向切面編程:將共用行為抽出,橫向切一刀的方式去執行,避免相同行為重複編寫
若有1隻API目前效能過慢,請試著簡述問題查找流程
一、慢在查詢 DB 時
(a) 請求卡住等鎖 -> 上鎖是否正確?
(b) 查詢時間長 -> 查詢是否踩索引?框架問題?Lazy 加載是否失效變 Eager?N+1 問題?表的資料量太大?-> 加索引、用緩存、讀寫分離、分庫分表
二、慢在商業邏輯時
(a) 是否是第三方 API 回應慢?
(b) 寫法是否有 for 迴圈查 DB 或可優化處?
對 spring boot 有怎樣的了解?
加速開發,根據 spring 的功能,做自動配置。
spring 還需額外做許多設定,spring boot 相對簡單快速。
有應用過 AOP 嗎?
沒實際使用過,但有使用過底層是 AOP 的功能,比如 @transactional。
spring data jpa 的 cascade?
不清楚,好像沒在使用。
transactional 的 propagation?
事務傳播機制。(舉例幾個常用的說明...)
知道 open-in-view 嗎?知道用途嗎?
session,api 進來就開 session,有 session 才能跟資料庫溝通,如果沒 session,比如 lazy 加載就會報錯。
如何去判斷建立哪些索引?
選取具有識別度且根據查詢較常用到的欄位去建立索引,但刪改頻繁的欄位則盡量避免建立索引,比如課表的老師ID經常查詢且不容易變動就可以建立索引,比如課表人數經常變動就不應該建立索引。
請說明上份工作 AWS 的相關應用,ec2/ s3/ rds/ sqs/ lambda。
ec2 -> 應用程式的機器
rds -> 關聯式資料庫的機器
sqs -> 中間訊息,應用在服務需要丟 queue 處理
s3 -> 存放圖檔、log的服務
lambda -> 應用在解決平行喚醒,call 服務的 api,避免需求重複處理
最近一個有印象跟同事討論的有趣的事情?
票券額度 race condition 問題,事務隔離級別的討論。
有遇過跨部門合作上的問題嗎?如何解決?
比如前端反應 api 文件不清楚,後端就討論並將輸出輸入的範例提供完善。
面試建議
有技術題也有人格特質相關或閒聊,工作履歷也要熟悉,會詢問相關問題。
面試官人都蠻好的,可以放輕鬆面試,