Khóa học
DevOps đã trở thành yếu tố thiết yếu đối với phát triển phần mềm hiện đại. Khi các công ty phát hành tính năng thường xuyên hơn và đáng tin cậy hơn, nhu cầu về các kỹ sư DevOps giỏi ngày càng tăng.
Vậy nên: Cơ hội việc làm ngoài kia là rất nhiều.
Nhưng để trúng tuyển, bạn cần nhiều hơn là biết đúng công cụ. Bạn cần thể hiện cách mình suy nghĩ, hợp tác và giải quyết các vấn đề thực tế như thế nào.
Tôi đã ở cả hai phía. Tôi từng là ứng viên phải trả lời những câu hỏi Kubernetes hóc búa, và cũng từng tham gia phỏng vấn để đánh giá cách ai đó xử lý sự cố trong môi trường sản xuất. Điều tôi rút ra là phỏng vấn DevOps kiểm tra cách bạn tiếp cận sự phức tạp, cách bạn giao tiếp dưới áp lực, và liệu bạn có thực sự hiểu vì sao các công cụ được sử dụng hay không.
Hướng dẫn này giúp bạn chuẩn bị cho phỏng vấn DevOps, bao quát từ cơ bản đến thiết kế hệ thống nâng cao, cùng các câu hỏi kỹ thuật và tình huống hành vi. Dù bạn mới vào nghề hay đang thăng tiến, những câu hỏi này sẽ giúp bạn đào sâu kỹ năng, tự tin diễn đạt và sẵn sàng bước vào phỏng vấn.
Câu hỏi phỏng vấn DevOps cơ bản
Những câu hỏi này đánh giá hiểu biết của bạn về các nguyên tắc cốt lõi của DevOps. Đừng chỉ học thuộc định nghĩa. Hãy chứng minh bạn hiểu cách áp dụng chúng trong thực tế.
1. DevOps là gì và vì sao quan trọng?
DevOps là tập hợp các thực hành gắn kết đội phát triển và vận hành để tinh gọn quy trình phân phối phần mềm.
Mục tiêu? Phát hành nhanh hơn, chất lượng cao hơn và vòng phản hồi chặt chẽ hơn.
Trong thực tiễn, điều này có nghĩa là giảm xung đột giữa việc viết mã và vận hành mã. Không chỉ là công cụ, mà còn là văn hóa, tự động hóa và tinh thần sở hữu.
Trong vai trò trước đây, chúng tôi áp dụng DevOps để tăng tốc triển khai các mô hình ML, từ đó rút ngắn đáng kể thời gian triển khai đồng thời cải thiện tính ổn định.
2. DevOps khác gì so với CNTT truyền thống?
CNTT truyền thống tách rời trách nhiệm: lập trình viên viết mã, đội vận hành triển khai và duy trì.
DevOps kết hợp các vai trò này, thúc đẩy trách nhiệm chung và tự động hóa.
Với DevOps:
- Lập trình viên thường viết cả script triển khai.
- Đội vận hành tham gia sớm hơn trong vòng đời phát triển.
- Phát hành diễn ra liên tục thay vì theo quý.
Hãy coi DevOps là phá bỏ bức tường giữa hai bộ phận vốn chỉ giao tiếp qua ticket.
3. Những nguyên tắc chính của DevOps là gì?
Các nguyên tắc cốt lõi của DevOps gồm:
- Hợp tác: Phá vỡ silo giữa dev, ops, QA và bảo mật.
- Tự động hóa: Tự động hóa kiểm thử, triển khai và giám sát.
- Tích hợp liên tục và phân phối liên tục (CI/CD): Giao những thay đổi nhỏ, an toàn với tần suất cao.
- Giám sát và phản hồi: Liên tục học hỏi và thích ứng từ trải nghiệm.
Những nguyên tắc này không phải tuỳ chọn, vì chúng quyết định một đội đang làm việc theo văn hóa DevOps hay chỉ dùng công cụ DevOps với thói quen cũ.
4. Kể tên các công cụ DevOps phổ biến và trường hợp sử dụng.
Một vài công cụ phổ biến bạn sẽ thường nghe:
- Git: Quản lý phiên bản.
- Jenkins/Gitlab CI: Pipeline CI/CD.
- Docker: Đóng gói container.
- Kubernetes: Điều phối container.
- ArgoCD: GitOps.
- Terraform: Hạ tầng như Mã (IaC).
- Prometheus + Grafana: Giám sát và trực quan hóa.
Xem DevOps Concepts nếu bạn muốn tìm hiểu thêm về DevOps và các công cụ phổ biến.
5. CI/CD là gì?
CI/CD là viết tắt của Tích hợp liên tục và Phân phối (hoặc Triển khai) liên tục.
Đây là xương sống của tự động hóa DevOps.
CI/CD bao gồm:
- CI: Lập trình viên gộp mã vào repo dùng chung nhiều lần mỗi ngày. Mỗi lần gộp kích hoạt build và kiểm thử tự động.
- CD: Khi mã vượt qua kiểm thử, nó được tự động triển khai lên môi trường sản xuất hoặc staging.
CI/CD giảm lỗi do con người và khiến việc phát hành trở nên "nhàm chán", điều này là tốt.
Chúng tôi đã dùng CI/CD rộng rãi để kiểm thử mô hình ML và mã vận hành mô hình sau API. Mỗi lần push lên nhánh tính năng sẽ kích hoạt unit test, còn merge vào nhánh chính sẽ kích hoạt build ảnh container mới và chuyển mô hình đến namespace Kubernetes của khách hàng.
Nếu bạn muốn tìm hiểu CI/CD được dùng trong ML như thế nào, tôi khuyên bạn học khóa CI/CD for Machine Learning và hướng dẫn CI/CD trong machine learning.
6. Lợi ích của tự động hóa trong DevOps là gì?
Tự động hóa giảm công việc thủ công, tăng độ tin cậy và giúp đội ngũ mở rộng vận hành.
Lợi ích gồm:
- Vòng phản hồi nhanh hơn
- Ít lỗi triển khai hơn
- Môi trường có thể lặp lại
- Ít cảnh "nó chạy trên máy tôi" hơn
Quy tắc ngón tay cái: Nếu làm một việc hai lần, hãy tự động hóa.
7. Hạ tầng như Mã (IaC) là gì?
IaC là thực hành quản lý hạ tầng (máy chủ, cơ sở dữ liệu, mạng) bằng mã.
Thay vì cấu hình thủ công trên giao diện cloud, bạn định nghĩa trong các tệp (ví dụ Terraform, CloudFormation).
Điều này giúp thiết lập của bạn:
- Có thể tái tạo
- Được quản lý phiên bản (nếu dùng Git)
- Dễ kiểm toán
IaC cho phép bạn cung cấp toàn bộ môi trường trong vài phút, thay vì nhiều ngày công thủ công.
8. Git và quản lý phiên bản đóng vai trò gì trong DevOps?
Quản lý phiên bản không chỉ áp dụng cho mã, mà hầu như cho mọi thứ.
Trong DevOps:
- Bạn quản lý phiên bản cho mã, hạ tầng, thậm chí cả tài liệu.
- Git cho phép cộng tác, hoàn nguyên và truy vết.
- Công cụ như GitHub Actions hay GitLab CI/CD tích hợp trực tiếp với quy trình Git để tự động hóa liền mạch.
Quản lý phiên bản là trái tim của mọi hạ tầng DevOps.
9. Vai trò của giám sát và ghi log trong DevOps là gì?
Không có giám sát và ghi log, gỡ lỗi sẽ trở thành ác mộng. Bạn không thể biết thay đổi tác động tích cực hay tiêu cực đến ứng dụng nếu thiếu giám sát và ghi log phù hợp. Việc tìm và sửa lỗi cũng gần như bất khả nếu không có giám sát và ghi log đầy đủ.
Chúng giải quyết:
- Giám sát cho biết điều gì đang xảy ra (CPU, thời gian phản hồi, thời gian hoạt động).
- Ghi log cho biết điều gì đã xảy ra (lỗi, stack trace, hành vi bất thường).
Kết hợp lại, chúng cho phép bạn quan sát và cải thiện dễ dàng.
Tôi khuyên thiết lập cảnh báo cho các bất thường, không chỉ cho lỗi. Điều này giúp bạn phát hiện vấn đề trước khi chúng xảy ra.
10. Ví dụ đơn giản của pipeline CI/CD là gì?
Đây là một luồng CI/CD khá điển hình:
- Lập trình viên gộp thay đổi vào nhánh
main. - Pipeline kích hoạt và chạy unit test, lint mã và phân tích tĩnh.
- Nếu kiểm thử đạt:
- Build một ảnh Docker.
- Đẩy ảnh lên registry.
- Triển khai lên staging qua Kubernetes.
- Bước phê duyệt thủ công cho phép triển khai lên sản xuất nếu môi trường staging đạt yêu cầu.
Có thể xây dựng bằng GitLab CI/CD, Jenkins hoặc GitHub Actions.
Câu hỏi phỏng vấn DevOps trung cấp
Những câu hỏi này đánh giá năng lực kỹ thuật của bạn, đặc biệt là làm việc với container, quy trình CI/CD, công cụ hạ tầng và triển khai. Hãy sẵn sàng giải thích quyết định thiết kế và xử lý sự cố dưới áp lực.
11. Chiến lược triển khai là gì? Kể tên một vài loại.
Chiến lược triển khai phác thảo quy trình đưa phiên bản phần mềm mới đến người dùng. Lựa chọn phù hợp phụ thuộc vào độ phức tạp hệ thống, mức chấp nhận rủi ro và khả năng rollback.
Các chiến lược phổ biến gồm:
- Triển khai blue-green: Vận hành hai môi trường (blue = hiện tại, green = mới) và chuyển lưu lượng khi green ổn định. Cho phép rollback nhanh.
- Canary release: Triển khai dần cho một nhóm người dùng nhỏ. Lý tưởng để phát hiện sớm vấn đề mà không làm phiền quá nhiều người dùng.
- Rolling update: Thay thế từng instance một với thời gian chết bằng 0.
- Chiến lược recreate: Tắt hẳn phiên bản cũ rồi khởi động phiên bản mới. Gây downtime, rủi ro hơn và không phổ biến.
Tối thiểu, tôi khuyên dùng rolling update. Nếu đầu tư nhiều hơn và có bộ công cụ DevOps vững, hãy tiến thêm với blue-green hoặc canary.
Tuy nhiên, đôi khi chiến lược recreate cũng hợp lý. Chúng tôi có các mô hình ML dùng GPU lớn, tài nguyên hạn chế. Vì vậy chúng tôi phải tắt mô hình đang chạy để giải phóng GPU, rồi mới có thể scale phiên bản mới.
12. Container và điều phối hoạt động thế nào trong DevOps?
Container (ví dụ Docker) đóng gói ứng dụng cùng phụ thuộc, đảm bảo chạy giống nhau ở mọi nơi.
Công cụ điều phối (như Kubernetes) xử lý:
- Lập lịch container lên node
- Scale ứng dụng theo tải
- Tự phục hồi (ví dụ khởi động lại pod lỗi)
- Mạng, khám phá dịch vụ và cân bằng tải
Kết hợp lại, chúng mang đến tính nhất quán, khả chuyển và tự động hóa cho quy trình DevOps.
Tôi dùng chúng hàng ngày, và chúng đã cải thiện đáng kể cách chúng tôi làm việc, phát triển và triển khai ứng dụng.
Bạn có thể học thêm về Kubernetes trong khóa Introduction to Kubernetes.
Nếu muốn đi sâu hơn vào bộ đôi Docker và Kubernetes, tôi khuyên khóa "Containerization and Virtualization with Docker and Kubernetes".
13. Bạn sẽ triển khai blue-green như thế nào?
Blue-green có nghĩa có hai môi trường sản xuất giống hệt nhau (blue=hiện tại, green=mới). Ứng dụng mới trước tiên được triển khai lên green để kiểm thử. Khi hài lòng, chuyển lưu lượng từ blue sang green.
Cách tiếp cận tổng quan:
- Khởi tạo môi trường green giống hệt blue (prod).
- Triển khai phiên bản mới lên green.
- Chạy kiểm thử và kiểm tra tự động.
- Nếu ổn định, chuyển lưu lượng load balancer sang green.
- Giữ blue chạy thêm một lúc để rollback.
Cách này cho phép rollback trong vài giây, vì bạn chỉ cần điều chỉnh load balancer để gửi lưu lượng lại về blue.
14. Rolling update khác gì canary release?
Rolling update thay thế các instance từng cái một, không gây downtime. Dùng khi bạn tự tin về bản phát hành và muốn cung cấp ngay cho tất cả người dùng.
Với canary, phiên bản mới chỉ được triển khai cho một nhóm người dùng nhỏ (ví dụ 5%). Trước tiên giám sát và đảm bảo mọi thứ ổn rồi mới mở rộng phạm vi. Tăng dần cho đến khi triển khai cho toàn bộ người dùng.
Canary cho phép thử nghiệm trên sản xuất mà không ảnh hưởng đến số đông người dùng.
15. Làm thế nào để bảo mật một pipeline CI/CD?
Bảo mật thường bị xem nhẹ, nhưng cực kỳ quan trọng.
Một số thực hành tốt gồm:
- Dùng công cụ quản lý secret (ví dụ Vault, AWS Secrets Manager)
- Chạy build trên runner biệt lập
- Xác thực đầu vào để tránh tấn công injection
- Dùng container đã ký và xác minh nguồn gốc ảnh
- Tích hợp công cụ phân tích tĩnh và động (SAST/DAST)
Đừng ngần ngại để pipeline thất bại vì lo ngại bảo mật.
16. Khác biệt giữa Docker và máy ảo (VM) là gì?
Câu hỏi này khá phổ biến để đánh giá hiểu biết cơ bản về container.
|
Đặc điểm |
Docker |
Máy ảo |
|
Sử dụng tài nguyên |
Nhẹ (chia sẻ kernel HĐH) |
Nặng (mỗi VM là một HĐH đầy đủ) |
|
Thời gian khởi động |
Vài giây |
Vài phút |
|
Mức độ cô lập |
Cấp tiến trình |
Cấp hệ điều hành |
|
Trường hợp sử dụng |
Microservice, pipeline CI/CD |
Mô phỏng toàn hệ thống, cô lập cao |
Docker nhanh, linh động và phù hợp với quy trình ứng dụng hiện đại. VM vẫn hữu ích cho cô lập nghiêm ngặt và hệ thống cũ.
Nếu muốn chuẩn bị thêm cho câu hỏi về Docker, tôi khuyên đọc 26 câu hỏi và đáp án phỏng vấn Docker hàng đầu cho 2026.
17. Kubernetes hỗ trợ gì cho quy trình DevOps?
Kubernetes tự động hóa các phần phức tạp khi vận hành container ở quy mô lớn:
- Tự động scale dựa trên CPU/bộ nhớ
- Rolling update và rollback
- Khám phá dịch vụ và cân bằng tải
- Hạn ngạch tài nguyên và ưu tiên pod
Trong DevOps, Kubernetes trở thành xương sống cho CI/CD, giám sát và hạ tầng tự phục hồi.
18. Helm chart là gì và vì sao dùng chúng?
Helm là trình quản lý gói cho Kubernetes. Helm chart định nghĩa, cài đặt và nâng cấp ứng dụng K8s bằng YAML có template.
Tính năng gồm:
- Đơn giản hóa triển khai
- Hỗ trợ quản lý phiên bản và tái sử dụng
- Giúp nhất quán giữa môi trường (dev/staging/prod)
Nếu bạn từng phải sửa hàng đống YAML thủ công lặp đi lặp lại, Helm là lựa chọn đúng.
Tôi dùng cho mọi dịch vụ cung cấp cho khách hàng, nơi họ cài cùng bộ YAML với cấu hình khác nhau hết lần này đến lần khác.
19. Bạn xử lý secret trong DevOps như thế nào?
Không bao giờ hardcode secret trong mã hay file cấu hình.
Các lựa chọn tốt hơn:
- Dùng công cụ quản lý secret (ví dụ HashiCorp Vault, AWS Secrets Manager)
- Dùng sealed secret hoặc K8s secret mã hóa
- Hạn chế truy cập qua RBAC
- Xoay vòng thông tin xác thực định kỳ
Đôi khi chúng tôi thấy khách hàng lưu thông tin nhạy cảm trong repo Git, có thể dẫn đến rủi ro bảo mật nghiêm trọng.
20. Bạn khắc phục build thất bại như thế nào?
Đây là phần thiết yếu của kỹ sư DevOps, vì lỗi và build thất bại là chuyện thường xuyên.
Cách tiếp cận có hệ thống:
- Kiểm tra log build trước tiên.
- Cố gắng tái hiện lỗi cục bộ bằng cách chạy các bước giống CI.
- Kiểm tra có khác biệt môi trường không (ví dụ thiếu phụ thuộc, biến môi trường, đường dẫn tệp).
- Rollback các thay đổi gần đây từng bước.
Lỗi thường gặp nhất trong lịch sử của tôi là thiếu biến môi trường: tôi có khi build/kiểm thử cục bộ, nhưng lại chưa thêm vào thiết lập CI.
Câu hỏi phỏng vấn DevOps nâng cao
Những câu hỏi này đi sâu vào kiến trúc, khả năng mở rộng, bảo mật và khả năng lãnh đạo. Hãy sẵn sàng bàn về đánh đổi, quyết định thiết kế và cách bạn tiếp cận DevOps ở quy mô lớn.
21. GitOps là gì và khác gì DevOps?
GitOps là một nhánh của DevOps sử dụng Git làm nguồn chân lý duy nhất cho hạ tầng và phân phối ứng dụng.
Trong GitOps, mọi thay đổi với ứng dụng hoặc hạ tầng đều được thực hiện qua pull request vào các kho Git.
Một trình điều khiển GitOps (ví dụ ArgoCD, Flux) giám sát thay đổi và đồng bộ chúng vào cluster, duy trì mối quan hệ một-một giữa repo Git và cluster.
Vì vậy, GitOps mang quản lý phiên bản, khả năng kiểm toán và rollback vào quy trình hạ tầng.
22. Giải thích policy-as-code kèm ví dụ.
Policy-as-code là việc viết các chính sách bảo mật, tuân thủ và vận hành dưới dạng mã có thể thực thi, được tự động hóa và áp dụng trên toàn hệ thống.
Ví dụ gồm:
- Dùng OPA (Open Policy Agent) để chặn triển khai Kubernetes phơi bày dịch vụ công khai
- Ép buộc tất cả tài nguyên Terraform phải gắn thẻ chủ sở hữu và môi trường
- Ngăn pipeline CI/CD triển khai lên prod khi chưa được phê duyệt
Tôi từng dùng Gatekeeper (tích hợp K8s của OPA) để chặn ảnh container chưa quét, cải thiện bảo mật.
23. Bạn sẽ thiết kế hệ thống CI/CD có khả năng mở rộng thế nào?
Thiết kế hệ thống CI/CD có khả năng mở rộng là thiết yếu, và dạng câu hỏi thiết kế rất phổ biến, vì người phỏng vấn có thể thấy cách bạn suy nghĩ và lập luận.
Một vài thành phần chính trong thiết kế của bạn:
- Tách rời các giai đoạn (build, test, deploy) với trách nhiệm rõ ràng
- Song song hóa để tăng tốc (ví dụ chạy test trên nhiều node)
- Runner động trên Kubernetes để co giãn
- Bộ nhớ đệm cho phụ thuộc và artifact
- Bí mật & cách ly truy cập giữa các dự án
Ở quy mô lớn, cân nhắc dùng Tekton hoặc GitLab CI với Kubernetes runner.
24. Cách bạn ứng phó sự cố (incident response)?
Đây là phần quan trọng, vì người phỏng vấn muốn thấy bạn tương tác với khách hàng thế nào, khi họ thường bực vì có lỗi. Xử lý sự cố là công việc thường ngày của kỹ sư DevOps.
Nguyên tắc chính gồm:
- Giữ bình tĩnh
- Chẩn đoán nhanh (Vấn đề mạng? Ứng dụng? Hạ tầng?)
- Giao tiếp rõ ràng
- Ghi chép mọi thứ
- Hậu kiểm (xác định nguyên nhân gốc rễ và rút kinh nghiệm)
Nhớ một điều quan trọng: Đừng đổ lỗi cá nhân.
Hãy tập trung vào hệ thống, quy trình và cải tiến.
25. Bạn quản trị khả quan sát (observability) trên microservice như thế nào?
Microservice đóng vai trò thiết yếu trong bối cảnh DevOps ngày nay. Do đó, bạn nên có thể trả lời những câu hỏi cơ bản về chúng, thể hiện hiểu biết chung về DevOps.
Để có observability, bạn cần ba thành phần:
- Logging: Tập trung, có cấu trúc, tìm kiếm được (ví dụ ELK, Loki)
- Metrics: Chuỗi thời gian kiểu Prometheus + dashboard (ví dụ Grafana)
- Tracing: Truy vết phân tán như Jaeger hoặc OpenTelemetry
Kết nối tất cả bằng correlation ID để theo dõi yêu cầu qua các dịch vụ.
26. Bạn tối ưu pipeline chậm như thế nào?
Điều này xảy ra khá thường xuyên, và có một số bước điển hình nên theo:
- Đo lường trước: Dùng số liệu pipeline và thời gian từng bước để tối ưu quy trình.
- Cache thông minh: Phụ thuộc, lớp Docker, kết quả kiểm thử.
- Chia nhỏ kiểm thử: Chạy song song theo loại hoặc module.
- Dùng pre-commit hook: Bắt lỗi sớm.
- Bỏ qua bước không cần thiết: Dùng logic điều kiện (ví dụ chỉ build Docker nếu mã trong vị trí tương ứng thay đổi).
Đôi khi chỉ thêm phần cứng nhanh hơn không giải quyết được, mà cần triển khai pipeline hiệu quả hơn.
27. Bạn tiếp cận tuân thủ (compliance) trong quy trình DevOps thế nào?
Tuân thủ nên được tích hợp chủ động ngay từ đầu vòng đời phát triển phần mềm.
Các bước cần theo:
- Quản lý phiên bản mọi thứ (mã, hạ tầng, chính sách)
- Vết kiểm toán qua Git, log CI/CD và công cụ giám sát
- Kiểm tra tuân thủ tự động (ví dụ CIS benchmark, trình quét bảo mật)
- Kiểm soát truy cập qua RBAC và nguyên tắc tối thiểu
- Quản lý secret với chính sách xoay vòng
28. Bạn có thể giải thích service mesh trong bối cảnh DevOps?
Service mesh (ví dụ Istio, Linkerd) quản lý giao tiếp giữa các dịch vụ với các tính năng như:
- Điều khiển lưu lượng (ví dụ retry, timeout, định tuyến)
- Bảo mật (mTLS giữa các dịch vụ)
- Quan sát (telemetry theo dịch vụ)
Thay vì nhúng logic này vào từng ứng dụng, mesh xử lý qua các proxy sidecar.
29. Bạn kiến trúc triển khai không downtime như thế nào?
Triển khai không downtime là thiết yếu, vì cho phép bạn phát hành thay đổi mà không gián đoạn trải nghiệm người dùng.
Chiến lược cho triển khai không downtime gồm:
- Blue-green hoặc canary để chuyển lưu lượng an toàn
- Di trú cơ sở dữ liệu theo hướng tương thích ngược
- Kiểm tra sức khỏe của load balancer trước khi thêm instance mới
- Tắt dần (graceful shutdown) để yêu cầu đang xử lý hoàn tất
30. Chaos engineering là gì, bạn đã dùng chưa?
Chaos engineering là chủ động đưa lỗi vào hệ thống để kiểm tra khả năng chịu lỗi.
Công cụ ví dụ:
- Gremlin
- Chaos Monkey
- Litmus
Các kịch bản mô phỏng để kiểm tra độ ổn định gồm:
- Diệt ngẫu nhiên pod
- Mô phỏng độ trễ mạng
- Ngắt kết nối DB
Chaos engineering cũng được Netflix dùng rất nhiều.
Nó giúp mô phỏng các kịch bản khác nhau và xem hệ thống của bạn phản ứng ra sao.
Câu hỏi phỏng vấn DevOps theo hành vi và tình huống
Những câu hỏi này đánh giá khả năng phản ứng hiệu quả trong các tình huống thực. Người phỏng vấn muốn thấy bạn xử lý tình huống đời thực và kiểm tra xem bạn chỉ học vẹt hay thực sự hiểu DevOps.
Hãy chờ đợi các câu hỏi đào sâu vào trải nghiệm, phán đoán và khả năng làm việc dưới áp lực hoặc hợp tác liên phòng ban.
31. Hãy kể về lần bạn sửa một đợt triển khai bị hỏng.
Đây là cơ hội để bạn mô tả một sự cố thực tế.
Người phỏng vấn muốn biết:
- Tình huống: Hỏng ở đâu?
- Tác động: Mức độ nghiêm trọng?
- Cách tiếp cận: Bạn đã làm gì?
- Bài học: Lần sau bạn sẽ làm khác đi thế nào?
Ví dụ:
Tôi từng gặp một lần triển khai thất bại âm thầm ghi đè tệp cấu hình quan trọng trên production. Ứng dụng ngừng hoạt động 1 giờ cho đến khi tôi hoàn nguyên thủ công về phiên bản cũ. Tổng cộng 30 người dùng bị chặn trong 1 giờ. Tôi chẩn đoán bằng Git diff, thêm bước xác thực vào CI và triển khai hỗ trợ rollback. Sự cố không tái diễn nữa.
32. Mô tả một xung đột với lập trình viên. Bạn xử lý ra sao?
DevOps nằm ở giao điểm của nhiều đội, xung đột là chuyện xảy ra. Ở đây, người phỏng vấn muốn thấy bạn có trí tuệ cảm xúc.
Định khung như sau:
- Gốc rễ xung đột (ví dụ phát hành vội, sở hữu không rõ ràng)
- Cách bạn tiếp cận cuộc trao đổi (thấu hiểu + dữ liệu)
- Giải pháp (ví dụ cập nhật quy trình, làm rõ trách nhiệm)
Hãy thành thật và tránh chỉ trích cá nhân lập trình viên. Luôn nhấn mạnh bạn hướng đến hợp tác hiệu quả.
Và luôn ghi nhớ: Lập trình viên và kỹ sư DevOps thường có ưu tiên khác nhau. Lập trình viên muốn ra tính năng nhanh, còn bạn chú trọng bảo mật, ổn định và khả năng bảo trì dài hạn. Sự căng thẳng đó là bình thường; hiểu góc nhìn của họ giúp xử lý xung đột xây dựng hơn.
33. Bạn cân bằng tốc độ và ổn định trong chu kỳ phát hành như thế nào?
Đây là mâu thuẫn muôn thuở của DevOps.
Bạn có thể tập trung vào:
- Cờ tính năng (feature flag): Bật/tắt tính năng trên production.
- Chiến lược triển khai: Canary hoặc blue-green
- Phương pháp Agile: Lặp nhanh.
- Giám sát: Observability mạnh, cho phép phản ứng nhanh khi có sự cố.
- Giao tiếp: Văn hóa phản hồi mở và học hỏi liên tục từ sai lầm.
- Tự động hóa: Tự động hóa tối đa nơi phù hợp để đạt tốc độ và độ ổn định cao hơn.
Bạn không phải chọn giữa tốc độ và an toàn, vì có thể thiết kế hệ thống DevOps để cải thiện cả hai.
34. Hãy mô tả quy trình của bạn sau một sự cố production.
Hệ thống đôi khi sẽ hỏng. Do đó, khả năng đưa chúng trở lại bình thường nhanh nhất có thể là tối quan trọng.
Vì vậy, bạn có thể theo các bước sau để khôi phục hệ thống:
- Ghi nhận và cô lập: Cảnh báo bên liên quan và truyền thông kịp thời.
- Chẩn đoán nhanh: Kiểm tra log, metric và dashboard để xác định vấn đề.
- Khắc phục: Áp bản vá, rollback ứng dụng hoặc cấu hình lại để đưa hệ thống hoạt động trở lại.
- Hậu kiểm: Ghi lại thời gian tìm và sửa lỗi, nguyên nhân gốc rễ và các đầu việc phòng tránh tái diễn.
Nếu bạn chưa từng dẫn dắt cuộc gọi xử lý sự cố, hãy luyện tập. Đây là kỹ năng được kỳ vọng ở kỹ sư cấp cao.
35. Hãy mô tả kinh nghiệm làm việc với các đội liên chức năng.
Là kỹ sư DevOps, bạn sẽ làm việc với rất nhiều đội liên chức năng. Hợp tác tốt là thiết yếu, và người phỏng vấn sẽ xem xét kỹ kỹ năng cộng tác của bạn.
Bạn có thể nói về:
- Cách bạn kết nối dev và ops
- Cách bạn hỗ trợ nhà khoa học dữ liệu áp dụng CI/CD
- Cách bạn giải quyết mâu thuẫn giữa đội bảo mật và sản phẩm (họ cãi nhau khá nhiều, tin tôi đi)
Nếu bạn từng tạo tài liệu hay công cụ nội bộ giúp người khác làm việc hiệu quả hơn, hãy nhắc đến, vì thể hiện tinh thần chủ động.
36. Bạn đã từng tự động hóa để loại bỏ công việc của chính mình chưa?
Đây là câu tôi thích nhất.
Thực tế: một mục tiêu cốt lõi của DevOps là tự động hóa quy trình lặp lại. Nhưng khi tự động hóa hết, còn gì để làm? Không hiếm kỹ sư DevOps tự động hóa đến mức không còn việc thủ công.
Dù vậy, tự động hóa chính là mục tiêu. Hãy thể hiện nó đã thấm vào tư duy của bạn. Công việc thủ công nên là cờ đỏ, thứ cần loại bỏ chứ không dung thứ.
Ví dụ:
"Tôi từng triển khai môi trường staging thủ công mỗi sáng thứ Hai. Tôi viết một script để xử lý chỉ với một lệnh, rồi gói nó vào GitHub Action để cả đội có thể kích hoạt bất cứ lúc nào."
Mục tiêu là chứng minh bạn suy nghĩ như một kỹ sư DevOps: giảm ma sát, loại bỏ nút thắt cổ chai, giải phóng con người cho các vấn đề phức tạp hơn.
37. Bạn giúp kỹ sư junior làm quen với thực hành DevOps như thế nào?
Câu hỏi này kiểm tra kỹ năng lãnh đạo và hợp tác nhóm của bạn.
Một số ý tưởng để onboarding kỹ sư junior:
- Tạo trang tài liệu “Bắt đầu” với tất cả thông tin và liên kết liên quan
- Lập trình cặp hoặc cùng gỡ lỗi
- Ghi chép runbook và quy trình công việc
- Tạo môi trường sandbox để thử nghiệm an toàn
- Tổ chức workshop nội bộ về Docker/Kubernetes cơ bản
Khác biệt giữa kỹ sư giỏi và xuất sắc nằm ở kỹ năng truyền đạt.
38. Hãy mô tả một dự án DevOps mà bạn tự hào.
Đây là lúc bạn nói về một thành công sáng tạo của mình. Chọn thứ bạn đã tạo ra đáng kể và có thể nói chi tiết.
Bạn có thể nói về:
- Vấn đề bạn giải quyết
- Tác động (ví dụ tăng tốc phát hành, giảm MTTR)
- Công cụ và kiến trúc bạn dùng
- Điều bạn học được
Tôi từng là một phần của đội xây dựng một nền tảng MLOps nhỏ. Nền tảng này được phát hành dưới dạng Helm chart. Ban đầu, chúng tôi triển khai vào các namespace Kubernetes bằng bash script, phải kiểm tra thủ công xem Helm chart có được cập nhật thành công không, và mỗi lần phát hành mất gần một ngày. Sau đó, tôi triển khai GitOps với ArgoCD để phát hành chart nền tảng đến tất cả namespace chỉ với một cú nhấp, giảm thời gian phát hành xuống vài phút.
39. Bạn sẽ cải thiện điều gì trong pipeline DevOps hiện tại của mình?
Câu hỏi này thể hiện tinh thần tự phản biện và tầm nhìn của bạn.
Tránh nói “không có gì”. Thay vào đó, bạn có thể:
- Nêu nút thắt cổ chai (ví dụ bộ test chậm)
- Một nâng cấp công cụ đang dự định (ví dụ chuyển từ Jenkins sang Tekton)
- Khoảng trống observability bạn đang khắc phục
- Hoặc thậm chí điều chỉnh văn hóa (ví dụ tài liệu tốt hơn)
Bạn được đánh giá không chỉ bởi những gì bạn biết, mà còn bởi cách bạn suy nghĩ.
40. Hãy kể về lần bạn giới thiệu công cụ hoặc thực hành mới. Bạn đã thuyết phục mọi người như thế nào?
Là kỹ sư DevOps, bạn cải thiện quy trình và tự động hóa công việc. Điều này có nghĩa là bạn thay đổi hiện trạng, thường khiến mọi người do dự vì không muốn thay đổi.
Bạn cần thể hiện rằng mình có thể xử lý những tình huống như vậy một cách bình tĩnh và chuyên nghiệp.
Bạn có thể đưa vào câu trả lời:
- Vì sao bạn đề xuất công cụ/thực hành đó?
- Bạn đã trình bày với đội như thế nào?
- Bạn đối mặt với sự phản kháng ra sao?
- Kết quả thế nào?
Ví dụ: “Tôi đề xuất áp dụng Terraform thay thế việc cấu hình AWS thủ công. Một vài đồng đội do dự, nên tôi demo quy trình có thể lặp lại, bổ sung tài liệu và hỗ trợ onboarding.”
Chiến lược chuẩn bị phỏng vấn
Phỏng vấn DevOps kiểm tra nhiều hơn là kiến thức kỹ thuật. Họ kiểm tra khả năng giải quyết vấn đề, hợp tác và tư duy phản biện dưới áp lực.
Các phần sau đưa ra cách thực tế để mài giũa kỹ năng và nổi bật.
Đào sâu kỹ thuật
Chỉ hiểu bề mặt không đủ ở cấp mid hay senior. Bạn cần hiểu cách hệ thống vận hành bên trong.
Bạn nên đào sâu vào:
- Kubernetes: Học cách triển khai, scale và gỡ lỗi cluster. Tập trung vào mạng, volume bền vững và Helm.
- Terraform: Hiểu quản lý state, module và sử dụng remote backend.
- Mẫu hình CI/CD: Học cách tách rời giai đoạn, cache build và bảo mật pipeline.
Nếu bạn xây kỹ năng từ đầu, hãy bắt đầu với Introduction to Kubernetes và DevOps Concepts của DataCamp.
Tôi cũng luôn khuyên làm dự án thực hành, vì đó là nơi bạn học được nhiều nhất. Bạn có thể xây một ứng dụng, đóng gói container và triển khai bằng Terraform và Kubernetes với pipeline tự động.
Gợi ý tài nguyên
Bạn không cần tự học một mình. Có rất nhiều tài nguyên trực tuyến giúp tối ưu hành trình học của bạn.
Một số tài nguyên hữu ích:
- Phỏng vấn thử: Thử các dịch vụ như Pramp, Interviewing.io, hoặc phỏng vấn ngang hàng với bạn bè/đồng nghiệp.
- Sách:
- The Phoenix Project (về văn hóa và câu chuyện DevOps giúp doanh nghiệp cải thiện)
- Site Reliability Engineering của Google (đào sâu)
- Terraform Up & Running của Yevgeniy Brikman (làm chủ IaC)
- Cheat sheet: In tham chiếu CLI Kubernetes, quy trình Git hoặc lệnh Linux bạn dùng hàng ngày.
- Cộng đồng:
- Các nhóm DevOps trên Discord
- r/devops trên Reddit
- Dev.to, Medium và blog DataCamp
- Khóa học:
- DevOps Concepts: Nền tảng cho pipeline phân phối và độ tin cậy hệ thống.
- Containerization and Virtualization with Docker and Kubernetes: Thiết yếu cho câu hỏi tập trung vào triển khai
- CI/CD for Machine Learning và Fully Automated MLOps: Nếu bạn ở vai trò kết hợp ML+DevOps.
- Bài viết chuẩn bị phỏng vấn khác:
- Đôi khi, hợp lý khi đào sâu vào các bài viết chuẩn bị phỏng vấn ở lĩnh vực liên quan. Ví dụ:
Nếu muốn nổi bật, bạn cần vượt xa việc học thuộc. Hãy xây dựng, cố tình làm hỏng và cải thiện.
Chuẩn bị cho câu hỏi theo tình huống và thực tế
Đây là nơi nhiều người vấp ngã. Nói CI/CD là gì thì dễ. Bình tĩnh nói về một sự cố production lúc 2 giờ sáng bạn đã xử lý (hoặc sẽ xử lý) thì khác.
Cách chuẩn bị:
- Xem lại các sự cố cũ: Điều gì sai? Cách khắc phục? Bây giờ bạn sẽ thay đổi gì?
- Làm hậu kiểm: Cả cho dự án cá nhân. Luyện viết theo cấu trúc STAR.
- Nghĩ như bên liên quan: Nếu phải giải thích bản phát hành thất bại cho product owner, bạn sẽ nói rõ ràng và không đổ lỗi thế nào?
- Luyện tư duy đánh đổi: Blue-green hay canary? Terraform hay Pulumi? Jenkins hay GitHub Actions? Đánh đổi là gì?
Chuẩn bị tốt nhất là kinh nghiệm, nhưng kịch bản mô phỏng cũng gần tương đương. Suy ngẫm về câu chuyện của bạn, và nếu chưa có nhiều, hãy tham khảo dự án mã nguồn mở, case study hoặc bài lab.
Kết luận
DevOps không chỉ là một chức danh hào nhoáng. Đó là một tư duy.
Không phải chuyện học thuộc lệnh hay liệt kê công cụ trong CV. Mà là thể hiện cách bạn suy nghĩ, hợp tác và xây dựng hệ thống không sụp đổ khi đối mặt thực tế.
Trong hướng dẫn này, chúng ta đã đi từ câu hỏi nền tảng đến kiến trúc nâng cao, từ kiến thức công cụ đến góc nhìn hành vi. Nếu bạn đọc đến đây, bạn đã đi trước vì đa số ứng viên không chuẩn bị có cấu trúc đến vậy.
Nhưng đừng dừng lại ở đây:
- Hãy xây dựng thứ gì đó.
- Cố tình làm hỏng thứ gì đó.
- Viết về nó.
- Chia sẻ với người khác.
- Suy ngẫm về điều đã sai — và bạn sẽ sửa thế nào lần tới.
DevOps thiên về thực hành hơn là lý thuyết. Hãy nhớ điều đó khi phỏng vấn. Luôn giải thích quy trình suy nghĩ và tập trung vào trải nghiệm của chính bạn.
Nếu bạn muốn các hướng dẫn thực hành, đừng bỏ lỡ Azure DevOps Tutorial.
Chúc bạn may mắn trong các buổi phỏng vấn, hy vọng hướng dẫn này hữu ích cho bạn.
Câu hỏi thường gặp về phỏng vấn DevOps
Những thách thức phổ biến nhất khi phỏng vấn DevOps là gì?
Ứng viên thường gặp các câu hỏi thực tế, đặc biệt liên quan đến khắc phục sự cố CI/CD, mạng Kubernetes, hoặc ứng phó và khôi phục sự cố. Lý thuyết đơn thuần là không đủ.
Làm sao để chuẩn bị hiệu quả cho câu hỏi hành vi trong phỏng vấn DevOps?
Hồi tưởng các sự cố, xung đột hoặc đợt phát hành lớn trong quá khứ đã ảnh hưởng đến tổ chức. Dùng cấu trúc STAR (Tình huống, Nhiệm vụ, Hành động, Kết quả), và thành thật tuyệt đối, vì nhà tuyển dụng coi trọng sự tự nhận thức hơn là hoàn hảo.
Kinh nghiệm thực hành với các công cụ như Docker và Kubernetes có cần thiết không?
Cực kỳ quan trọng. Hầu hết vai trò DevOps đòi hỏi thành thạo thực tế, không chỉ ở mức chứng chỉ. Bạn nên có khả năng xây, phá và gỡ lỗi container và cluster một cách tự tin.
Những chủ đề DevOps nâng cao nào giúp CV của tôi nổi bật?
GitOps, policy-as-code, mở rộng CI/CD trên Kubernetes, observability và tự động hóa bảo mật.
Tôi có nên học các công cụ DevOps đặc thù đám mây, như Azure DevOps hoặc AWS CodePipeline không?
Có. Công cụ cloud-native có thể tác động lớn đến cơ hội của bạn trong phỏng vấn. Thành thạo bộ DevOps của ít nhất một nền tảng giúp bạn thích ứng và cạnh tranh hơn.
Tôi là Kỹ sư Cloud với nền tảng vững chắc về Kỹ thuật Điện, học máy và lập trình. Sự nghiệp của tôi bắt đầu từ lĩnh vực thị giác máy tính, tập trung vào phân loại ảnh, trước khi chuyển sang MLOps và DataOps. Tôi chuyên xây dựng nền tảng MLOps, hỗ trợ các nhà khoa học dữ liệu và triển khai các giải pháp dựa trên Kubernetes để tinh gọn quy trình làm việc của học máy.
