10 câu hỏi có thể gặp khi phỏng vấn
Chọn theo kỹ năng và cấp của tin (DevOps & CI/CD, System Design & Kiến trúc). Gợi ý trả lời do Drama Công Ty biên soạn để bạn ôn nhanh, không phải đề của công ty.
01GitOps là gì? Bạn tổ chức repo và quy trình deploy cho nhiều môi trường, nhiều service ra sao?DevOps & CI/CD · Senior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →GitOps coi Git là nguồn sự thật cho trạng thái hệ thống; một agent trong cluster (Argo CD, Flux) liên tục kéo và đồng bộ, thay vì CI đẩy thẳng bằng
kubectl.- Tách repo code ứng dụng và repo cấu hình deploy; CI build image rồi mở PR cập nhật tag.
- Cấu hình dùng chung bằng Helm chart hoặc Kustomize, overlay riêng cho dev/staging/prod.
- Lên prod qua PR có review; rollback bằng
git revert. - Bật phát hiện drift và tự sửa lệch cấu hình.
- CI không cần giữ credential admin của cluster.
Người phỏng vấn muốn nghe: cân nhắc được đánh đổi, ví dụ secret vẫn cần giải pháp riêng và số lượng PR cập nhật tag có thể nhiều.
02Container khác máy ảo (VM) ở điểm nào? Khi nào vẫn nên dùng VM?DevOps & CI/CD · Junior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Container dùng chung kernel của máy chủ và cô lập bằng namespace + cgroup, nên khởi động nhanh và nhẹ; VM ảo hoá cả phần cứng và chạy một hệ điều hành riêng.
- Container: nhẹ, đóng gói ứng dụng cùng thư viện, hợp microservice và CI/CD.
- VM: cô lập mạnh hơn, chạy được kernel/OS khác (Windows trên host Linux), hợp workload cần ranh giới bảo mật rõ hoặc phần mềm cũ.
- Thực tế hai thứ thường đi cùng nhau: node Kubernetes chính là các VM trên cloud.
Hay sai: nói container "an toàn như VM". Container thoát ra host được nếu chạy
--privilegedhoặc kernel có lỗ hổng.03Bạn viết Dockerfile thế nào để image nhỏ, build nhanh và an toàn?DevOps & CI/CD · Junior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Ý chính: dùng multi-stage build, sắp xếp layer để tận dụng cache, và không chạy bằng root.
FROM node:22-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM node:22-alpine USER node COPY --from=build /app/dist /app- Copy file khai báo dependency trước, code sau, để đổi code không phải cài lại package.
- Dùng
.dockerignoreloạinode_modules,.git, file.env. - Không nhét secret vào image (kể cả ở layer đã xoá); dùng build secret hoặc biến môi trường lúc chạy.
- Ghim phiên bản base image, quét lỗ hổng trong pipeline.
04Khi gặp đề bài system design (vd. thiết kế hệ thống rút gọn link), bạn tiếp cận theo các bước nào?System Design & Kiến trúc · Junior
Gợi ý trả lời
Ôn thêm câu hỏi System Design & Kiến trúc →Người phỏng vấn đánh giá cách bạn suy nghĩ và trao đổi nhiều hơn một đáp án "chuẩn". Hãy đi theo trình tự rõ ràng:
- Làm rõ yêu cầu: chức năng chính, ngoài phạm vi; yêu cầu phi chức năng (độ trễ, sẵn sàng, nhất quán).
- Ước lượng quy mô: số người dùng, tỉ lệ đọc/ghi, QPS, dung lượng lưu trong vài năm.
- API và mô hình dữ liệu chính.
- Thiết kế tổng quan: client, load balancer, service, DB, cache, queue.
- Đào sâu vào phần khó nhất: với link rút gọn là cách sinh mã ngắn không trùng và cache cho luồng redirect đọc rất nhiều.
- Điểm nghẽn và trade-off: điểm lỗi đơn lẻ, cách scale, giám sát.
Hay sai: vẽ ngay Kafka, Kubernetes, microservices khi chưa hỏi quy mô. Một thiết kế đơn giản có lý do rõ ràng được đánh giá cao hơn.
05Scale dọc (vertical) và scale ngang (horizontal) khác nhau thế nào? Load balancer đóng vai trò gì?System Design & Kiến trúc · Junior
Gợi ý trả lời
Ôn thêm câu hỏi System Design & Kiến trúc →Scale dọc là nâng cấp một máy (thêm CPU, RAM); đơn giản nhưng có giới hạn phần cứng và vẫn là điểm lỗi đơn lẻ. Scale ngang là thêm nhiều máy chạy song song; gần như không giới hạn nhưng đòi hỏi ứng dụng stateless.
- Muốn scale ngang, session và file upload phải nằm ở nơi dùng chung (Redis, object storage), không nằm trên đĩa hay RAM của từng máy.
- Load balancer phân phối request (round robin, least connections), kiểm tra health để bỏ máy lỗi, có thể kết thúc TLS.
- L4 cân bằng theo kết nối TCP/UDP; L7 hiểu HTTP nên định tuyến được theo path, header.
Người phỏng vấn muốn nghe: database thường là phần khó scale ngang nhất, nên cần thêm cache, read replica, rồi mới đến partition hay sharding.
06CI, Continuous Delivery và Continuous Deployment khác nhau thế nào? Một pipeline cơ bản gồm những bước gì?DevOps & CI/CD · Junior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →CI là tự động build và test mỗi lần merge code; Continuous Delivery là luôn có bản sẵn sàng deploy nhưng lên production cần bấm duyệt; Continuous Deployment thì tự lên production nếu mọi bước đều qua.
Pipeline cơ bản:
- Checkout, cài dependency (có cache).
- Lint, unit test, quét bảo mật (SAST, dependency, secret).
- Build artifact/image, gắn tag theo commit SHA, đẩy lên registry.
- Deploy lên staging, chạy smoke/integration test.
- Deploy production (thủ công hoặc tự động), có cách rollback.
Người phỏng vấn muốn nghe: build một lần, dùng cùng một artifact cho mọi môi trường; chỉ cấu hình là khác nhau.
07Trong Kubernetes, Pod, Deployment và Service là gì và liên quan với nhau thế nào?DevOps & CI/CD · Junior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Pod là đơn vị chạy nhỏ nhất (một hoặc vài container dùng chung network); Deployment quản lý số bản sao Pod và việc cập nhật; Service cho một địa chỉ ổn định để gọi tới nhóm Pod.
- Pod có thể chết và được tạo lại với IP mới, nên không gọi trực tiếp IP Pod.
- Deployment tạo ReplicaSet, hỗ trợ rolling update và rollback.
- Service chọn Pod theo label (
selector), kiểuClusterIP(nội bộ),NodePort,LoadBalancer. - Từ ngoài vào HTTP thường dùng Ingress hoặc Gateway API phía trước Service.
Hay sai: label của Pod template không khớp
selectorcủa Service, khiến Service không có endpoint nào.08Pod bị CrashLoopBackOff, bạn điều tra thế nào?DevOps & CI/CD
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →CrashLoopBackOff nghĩa là container khởi động rồi thoát liên tục; cần tìm lý do nó thoát.
kubectl describe pod <pod> # events, exit code, OOMKilled? kubectl logs <pod> --previous # log của lần chạy trước khi chết kubectl get events --sort-by=.lastTimestamp- Exit code 137 /
OOMKilled: thiếu memory limit hoặc rò rỉ bộ nhớ. - Lỗi cấu hình: thiếu biến môi trường, Secret/ConfigMap sai, không kết nối được DB.
- Liveness probe quá gắt khiến app bị kill khi đang khởi động; cân nhắc
startupProbe. - Sai lệnh
command/args, sai kiến trúc image (arm64 và amd64).
Người phỏng vấn muốn nghe: quy trình có thứ tự, dựa vào events và log trước khi đoán.
- Exit code 137 /
09Monolith và microservices: khi nào nên tách? Cái giá phải trả là gì?System Design & Kiến trúc
Gợi ý trả lời
Ôn thêm câu hỏi System Design & Kiến trúc →Microservices giải quyết vấn đề tổ chức: nhiều team cần deploy độc lập và scale riêng từng phần. Nó không tự làm hệ thống nhanh hơn.
Nên cân nhắc tách khi:
- Nhiều team đụng nhau trong cùng codebase, deploy phải chờ nhau.
- Một phần có tải hoặc yêu cầu công nghệ rất khác phần còn lại.
- Ranh giới nghiệp vụ (bounded context) đã rõ ràng và ổn định.
Cái giá: gọi mạng thay vì gọi hàm (độ trễ, lỗi một phần), nhất quán dữ liệu phân tán, cần tracing, service discovery, CI/CD và vận hành phức tạp hơn.
Người phỏng vấn muốn nghe: "modular monolith" là bước khởi đầu hợp lý: chia module rõ ràng trong một ứng dụng, sau này tách theo đúng ranh giới đó. Tách sai ranh giới tạo ra "distributed monolith", tệ hơn cả monolith.
10Bạn thấy mình ở đâu sau 2–3 năm nữa?Câu hỏi hành vi & văn hoá
Gợi ý trả lời
Ôn thêm câu hỏi Câu hỏi hành vi & văn hoá →Người phỏng vấn muốn biết mục tiêu của bạn có khớp với hướng phát triển ở công ty và bạn có định gắn bó không.
- Nêu hướng phát triển cụ thể, thực tế: đi sâu chuyên môn (senior, chuyên gia một mảng) hay quản lý (lead, PM).
- Kèm kế hoạch: kỹ năng cần học, trách nhiệm muốn nhận thêm.
- Gắn với cơ hội ở vị trí đang ứng tuyển.
Câu mẫu: "Trong 2–3 năm tới em muốn trở thành senior có thể tự thiết kế và chịu trách nhiệm một module lớn, đồng thời hướng dẫn được các bạn mới. Em đang học thêm về thiết kế hệ thống và thấy team bên mình có nhiều bài toán ở quy mô lớn, rất hợp để em phát triển theo hướng đó."
Hay sai: "Em muốn mở công ty riêng" hoặc "em chưa nghĩ tới". Cũng đừng nói muốn ngồi vào chỗ của người đang phỏng vấn.
Bạn đã phỏng vấn ở Renesas Design Vietnam?
Kể lại các vòng và câu hỏi đã gặp (ẩn danh) để người sau ôn đúng trọng tâm.
Chia sẻ kinh nghiệm phỏng vấn