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 (Cloud (AWS, Azure, GCP), Node.js, C# & .NET). 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.
01IaaS, PaaS và SaaS khác nhau thế nào? Cho ví dụ dịch vụ thuộc từng loại.Cloud (AWS, Azure, GCP) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →Khác nhau ở chỗ bạn tự quản lý tới tầng nào: IaaS bạn lo từ hệ điều hành trở lên, PaaS bạn chỉ lo code và dữ liệu, SaaS bạn chỉ dùng phần mềm.
- IaaS: máy ảo EC2, Azure Virtual Machines, Compute Engine.
- PaaS: Elastic Beanstalk, Azure App Service, Cloud Run, các DB quản lý sẵn như RDS, Cloud SQL.
- SaaS: email, bộ văn phòng, CRM dùng qua trình duyệt.
Người phỏng vấn muốn nghe: mô hình trách nhiệm chung (shared responsibility). Nhà cung cấp lo hạ tầng vật lý; cấu hình bảo mật, quyền truy cập và dữ liệu vẫn là việc của bạn ở mọi mô hình.
02Region và Availability Zone là gì? Thiết kế thế nào để ứng dụng không chết khi một AZ gặp sự cố?Cloud (AWS, Azure, GCP) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →Region là một vùng địa lý; mỗi region có nhiều Availability Zone, là các trung tâm dữ liệu tách biệt về điện, mạng, làm mát nhưng nối với nhau độ trễ thấp.
Để chịu được mất một AZ:
- Chạy ứng dụng ở ít nhất 2 AZ, đứng sau load balancer.
- Dùng Auto Scaling group/managed instance group trải trên nhiều AZ.
- Database bật chế độ Multi-AZ (bản standby ở AZ khác, failover tự động).
- Ứng dụng stateless, session để ở Redis hoặc DB.
Hay sai: đặt NAT Gateway hoặc một thành phần duy nhất ở một AZ, tạo điểm lỗi đơn mà không để ý.
03Giải thích VPC, public subnet, private subnet, Internet Gateway và NAT Gateway.Cloud (AWS, Azure, GCP) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →VPC là mạng riêng ảo của bạn trên cloud; subnet chia nhỏ dải IP; tính "public" hay "private" của subnet do route table quyết định.
- Public subnet: route
0.0.0.0/0tới Internet Gateway; đặt load balancer, bastion. - Private subnet: không có route trực tiếp ra Internet; đặt app server, database.
- NAT Gateway: nằm ở public subnet, cho máy trong private subnet đi ra Internet (tải package, gọi API) nhưng không cho kết nối từ ngoài vào.
- Security group lọc ở mức instance (stateful); Network ACL lọc ở mức subnet (stateless).
Người phỏng vấn muốn nghe: database không bao giờ đặt ở public subnet, và truy cập quản trị nên đi qua bastion hoặc dịch vụ kiểu Session Manager.
- Public subnet: route
04CommonJS và ES Modules khác nhau thế nào? Dự án mới nên dùng loại nào?Node.js · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Node.js →CommonJS dùng
require/module.exports, nạp đồng bộ lúc chạy. ES Modules dùngimport/export, là chuẩn của ngôn ngữ, được phân tích tĩnh nên hỗ trợ tree-shaking và top-levelawait.- Bật ESM bằng
"type": "module"trongpackage.jsonhoặc đuôi.mjs. - Trong ESM không có sẵn
__dirname; dùngimport.meta.dirname(Node mới) hoặc tính từimport.meta.url. - ESM import được CommonJS. Chiều ngược lại trước đây phải dùng
import()động; các bản Node gần đây đã chorequire()module ESM đồng bộ (trừ module có top-levelawait).
Dự án mới nên dùng ESM, vì cả hệ sinh thái đang chuyển dần sang đó.
Hay sai: khi viết ESM thuần, quên ghi đuôi file trong đường dẫn import tương đối (
./utils.js), dẫn đến lỗi không tìm thấy module.- Bật ESM bằng
05Middleware trong Express là gì? Viết error-handling middleware thế nào?Node.js · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Node.js →Middleware là hàm
(req, res, next)chạy theo thứ tự đăng ký. Mỗi middleware có thể sửareq/res, trả response luôn, hoặc gọinext()để chuyển tiếp. Ví dụ: parse JSON, log, xác thực, giới hạn tần suất.Error-handling middleware có bốn tham số và đặt sau các route:
app.use((err, req, res, next) => { logger.error(err); const status = err.status ?? 500; res.status(status).json({ message: status < 500 ? err.message : "Internal error" }); });- Gọi
next(err)để nhảy thẳng tới error handler. - Express 5 tự chuyển Promise bị reject trong handler
asyncsang error handler; Express 4 thì phải tựtry/catchrồi gọinext(err).
Hay sai: quên gọi
next()và cũng không trả response, khiến request treo đến khi timeout. Hoặc gửi response hai lần, gây lỗi "headers already sent".- Gọi
06Interface và abstract class khác nhau thế nào? Khi nào dùng cái nào?C# & .NET · Junior
Gợi ý trả lời
Ôn thêm câu hỏi C# & .NET →Interface mô tả khả năng (hợp đồng) mà nhiều kiểu không liên quan có thể cùng thực hiện; abstract class là lớp cha dùng chung code và trạng thái cho một họ lớp gần nhau.
- Một class implement nhiều interface nhưng chỉ kế thừa một class.
- Abstract class có field, constructor, method có sẵn thân.
- Từ C# 8 interface có default implementation, nhưng vẫn không có field trạng thái.
Dùng interface cho các phụ thuộc cần thay thế hoặc mock trong test (
IEmailSender,IOrderRepository). Dùng abstract class khi các lớp con thật sự chia sẻ logic, vd.BaseHandlerxử lý log và retry chung.Người phỏng vấn muốn nghe: bạn ưu tiên composition và interface, chỉ dùng kế thừa khi có quan hệ "là một" rõ ràng.
07Object storage (S3, Blob Storage, Cloud Storage) khác block storage và file storage thế nào?Cloud (AWS, Azure, GCP) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →Object storage lưu file dạng đối tượng truy cập qua HTTP API, dung lượng gần như không giới hạn và rẻ; block storage là ổ đĩa gắn vào máy ảo; file storage là ổ mạng dùng chung qua NFS/SMB.
- Object: ảnh, video, backup, data lake, static website. Không sửa một phần file được, phải ghi đè cả object.
- Block (EBS, Managed Disk, Persistent Disk): ổ hệ điều hành, database tự quản; độ trễ thấp.
- File (EFS, Azure Files, Filestore): nhiều máy cùng đọc ghi một thư mục.
Hay sai: để bucket public để tiện chia sẻ. Nên giữ bucket private, chia sẻ bằng presigned URL hoặc CDN có kiểm soát.
08IAM role khác IAM user thế nào? Vì sao không nên để access key trong code?Cloud (AWS, Azure, GCP)
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →User đại diện cho một người hoặc ứng dụng với credential dài hạn; role là tập quyền được "đội" tạm thời và cấp credential ngắn hạn tự hết hạn.
- Ứng dụng chạy trên cloud nên dùng role gắn vào máy ảo, container, function (instance profile, managed identity, service account).
- CI/CD ngoài cloud dùng OIDC federation để lấy token ngắn hạn, không cần key cố định.
- Áp dụng least privilege: chỉ cấp đúng action trên đúng resource.
- Bật MFA cho người dùng, hạn chế dùng tài khoản root.
Access key trong code dễ lộ qua Git, log, image; một khi lộ thì dùng được tới khi bị thu hồi.
Người phỏng vấn muốn nghe: policy cụ thể, tránh
"Action": "*".09Khi nào bạn chọn serverless (Lambda, Azure Functions, Cloud Run) thay vì container hay VM?Cloud (AWS, Azure, GCP)
Gợi ý trả lời
Ôn thêm câu hỏi Cloud (AWS, Azure, GCP) →Serverless hợp với tải không đều, xử lý theo sự kiện, đội nhỏ không muốn vận hành server; trả tiền theo lượng dùng.
Hợp:
- Xử lý file khi upload, webhook, cron job, API lưu lượng thấp hoặc thất thường.
Cân nhắc:
- Cold start làm tăng độ trễ request đầu.
- Giới hạn thời gian chạy, bộ nhớ, kích thước gói.
- Tải cao và đều thì container/VM thường rẻ hơn.
- Kết nối DB: nhiều instance mở nhiều connection, cần connection pooler hoặc proxy.
- Khó debug và test cục bộ hơn.
Người phỏng vấn muốn nghe: quyết định dựa trên đặc điểm tải và chi phí, không chọn vì "đang hot".
10Bạn phản ứng thế nào khi nhận góp ý tiêu cực về công việc của mình?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á →Cho thấy bạn tách góp ý khỏi cảm xúc cá nhân và biến nó thành hành động.
- Lắng nghe hết, hỏi lại để hiểu ví dụ cụ thể và kỳ vọng.
- Cảm ơn, kể cả khi chưa đồng ý hoàn toàn; nếu có góc nhìn khác, trao đổi bằng thông tin, không phòng thủ.
- Lên kế hoạch cải thiện và chủ động xin phản hồi lại sau một thời gian.
Câu mẫu: "Có lần lead góp ý code review của em quá dài, khó review. Lúc đầu em hơi chột dạ, nhưng em hỏi anh muốn chia thế nào cho dễ. Từ đó em tách pull request nhỏ theo từng thay đổi, thời gian review của team giảm hẳn và em cũng ít bị yêu cầu sửa lại hơn."
Hay sai: nói "em luôn vui vẻ đón nhận mọi góp ý" mà không có ví dụ.
Bạn đã phỏng vấn ở Công ty TNHH SKYDEV?
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