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, Python, Network & System Admin). 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.
01SLI, SLO và error budget là gì? Bạn đặt alert dựa trên chúng thế nào?DevOps & CI/CD · Senior
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →SLI là chỉ số đo trải nghiệm người dùng (tỷ lệ request thành công, độ trễ p99); SLO là mục tiêu cho SLI đó trong một khoảng thời gian; error budget là phần được phép hỏng còn lại.
- Ví dụ: SLO 99.9% request thành công trong 30 ngày, nghĩa là budget 0.1% request lỗi.
- Alert theo burn rate: budget đang bị tiêu nhanh bất thường (đo trên cửa sổ ngắn và dài) thì báo, thay vì báo mỗi khi CPU cao.
- Hết budget: ưu tiên việc ổn định, chậm lại tính năng mới.
Hay sai: đặt alert trên nguyên nhân (CPU, RAM) thay vì triệu chứng người dùng thấy, dẫn đến báo động giả và mệt mỏi vì alert.
02GitOps 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.
03Pod 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 /
04Bạn tổ chức một codebase Python lớn nhiều người cùng làm như thế nào: type hints, quản lý dependency, chất lượng code?Python · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Python →Python linh hoạt nên dự án lớn dễ rối; cần công cụ để bắt lỗi trước khi chạy.
- Type hints + type checker (
mypyhoặcpyright) chạy trong CI. DùngProtocolcho interface,TypedDicthoặc dataclass thay cho dict tự do. - Validate dữ liệu ở biên (request, config, message) bằng Pydantic; bên trong tin vào kiểu đã kiểm.
- Dependency: môi trường ảo riêng, file lock để build tái lập được (
uv, Poetry hoặc pip-tools). Tách dependency dev và production. - Lint/format tự động:
ruffthay cho nhiều công cụ cũ; chạy qua pre-commit và CI. - Cấu trúc: chia theo domain, tách logic nghiệp vụ khỏi framework để test không cần DB hay HTTP.
- Test bằng
pytestvới fixture; test tích hợp cho các luồng chính.
Người phỏng vấn muốn nghe: bạn hiểu type hints không kiểm tra lúc runtime, nên vẫn cần validate dữ liệu đầu vào.
- Type hints + type checker (
05Decorator hoạt động thế nào? Hãy viết một decorator đo thời gian chạy của hàm.Python
Gợi ý trả lời
Ôn thêm câu hỏi Python →Decorator là hàm nhận một hàm và trả về hàm mới bọc quanh nó.
@timerchỉ là cú pháp ngắn củafunc = timer(func).import functools, time def timer(func): @functools.wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() try: return func(*args, **kwargs) finally: print(func.__name__, time.perf_counter() - start) return wrapperfunctools.wrapsgiữ lại__name__, docstring của hàm gốc, quan trọng cho log và debug.- Decorator có tham số (ví dụ
@retry(times=3)) cần thêm một lớp hàm bên ngoài. - Ví dụ thực tế:
@app.getcủa FastAPI,@login_requiredcủa Django,@functools.lru_cache.
Hay sai: decorator viết kiểu đồng bộ bọc hàm
async def. Kết quả là đo thời gian tạo coroutine chứ không phải thời gian chạy.06VLAN là gì và vì sao cần chia VLAN? Trunk port khác access port thế nào?Network & System Admin
Gợi ý trả lời
Ôn thêm câu hỏi Network & System Admin →VLAN chia một switch vật lý thành nhiều mạng L2 logic tách biệt, giúp thu nhỏ vùng broadcast và cô lập các nhóm (kế toán, khách, camera, server).
- Access port: thuộc một VLAN, nối với máy trạm; frame không gắn tag.
- Trunk port: mang nhiều VLAN giữa switch với switch hoặc router, frame gắn tag 802.1Q.
- Các VLAN muốn nói chuyện với nhau phải qua thiết bị L3 (router, switch L3, firewall), nơi có thể đặt ACL.
Hay sai: để Wi-Fi khách chung VLAN với mạng nội bộ, hoặc cho phép mọi VLAN đi qua trunk khi không cần.
07Liveness, readiness và startup probe khác nhau thế nào? Cấu hình sai thì hậu quả gì?DevOps & CI/CD
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Readiness quyết định Pod có nhận traffic không; liveness quyết định có restart container không; startup probe tạm hoãn hai probe kia cho tới khi app khởi động xong.
- Readiness fail: Pod bị gỡ khỏi endpoint của Service, không bị restart.
- Liveness fail: kubelet restart container.
- Startup probe hợp với app khởi động chậm (JVM, nạp model).
Lỗi hay gặp:
- Liveness kiểm tra cả DB bên ngoài: DB chậm là toàn bộ Pod bị restart dây chuyền.
- Không có readiness: rolling update đẩy traffic vào Pod chưa sẵn sàng, gây lỗi 5xx.
Người phỏng vấn muốn nghe: liveness chỉ nên kiểm tra chính process còn sống, phần phụ thuộc để cho readiness.
08Terraform state là gì? Làm việc nhóm với Terraform bạn quản lý state thế nào?DevOps & CI/CD
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →State là file Terraform ghi lại ánh xạ giữa code và tài nguyên thật; Terraform dựa vào nó để tính
plan. Mất hoặc lệch state là nguy cơ tạo trùng hoặc xoá nhầm tài nguyên.- Lưu state ở remote backend (S3, GCS, Azure Blob, Terraform Cloud), bật versioning và mã hoá.
- Bật locking để hai người không
applycùng lúc. - Tách state theo môi trường/thành phần để giảm phạm vi ảnh hưởng.
- Không commit state lên Git: trong đó có thể chứa secret.
- Chạy
plantrong CI cho mỗi PR,applyqua pipeline có duyệt.
Hay sai: sửa tay trên console rồi quên, tạo drift; nên định kỳ chạy
planđể phát hiện.09Bạn quản lý secret (mật khẩu DB, API key) trong pipeline và Kubernetes thế nào?DevOps & CI/CD
Gợi ý trả lời
Ôn thêm câu hỏi DevOps & CI/CD →Nguyên tắc: secret không nằm trong Git, không in ra log, được cấp theo quyền tối thiểu và xoay vòng được.
- Dùng secret manager (Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) làm nguồn gốc.
- Đồng bộ vào cluster bằng External Secrets Operator hoặc CSI driver; nếu phải để trong Git thì mã hoá (Sealed Secrets, SOPS).
- Kubernetes Secret mặc định chỉ base64: bật mã hoá etcd và giới hạn RBAC đọc Secret.
- CI dùng biến được che (masked), ưu tiên OIDC để lấy credential ngắn hạn thay vì key dài hạn.
- Bật quét secret khi push code.
Người phỏng vấn muốn nghe: biết base64 không phải mã hoá, và có kế hoạch xoay key khi bị lộ.
10Vì sao bạn chọn ứng tuyển vào công ty chúng tôi?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á →Câu này kiểm tra bạn có tìm hiểu không hay chỉ rải CV. Nối ba thứ: công ty, vị trí, và bạn.
- Tìm hiểu trước: sản phẩm, khách hàng, công nghệ, tin tức gần đây, đánh giá của nhân viên cũ và hiện tại.
- Chọn một hai điểm cụ thể bạn thật sự quan tâm: sản phẩm bạn từng dùng, bài toán kỹ thuật, quy mô người dùng, văn hoá làm việc.
- Nối với kinh nghiệm hoặc mục tiêu của bạn.
Câu mẫu: "Em có dùng ứng dụng của bên mình và thấy phần thanh toán rất mượt. Trong JD có nói team đang mở rộng hệ thống xử lý giao dịch, đúng mảng em đã làm hai năm. Em nghĩ mình đóng góp được ngay và cũng học được nhiều ở quy mô lớn hơn."
Hay sai: "Vì công ty lớn, lương tốt" hoặc khen chung chung áp vào công ty nào cũng được.
Bạn đã phỏng vấn ở GLOBALTECH?
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