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 (C/C++ & Embedded, Bảo mật (Security), 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.
01Move semantics và rvalue reference giải quyết vấn đề gì? Rule of 3/5/0 là gì?C/C++ & Embedded
Gợi ý trả lời
Ôn thêm câu hỏi C/C++ & Embedded →Move semantics cho phép chuyển tài nguyên (buffer, handle) từ một object tạm hoặc sắp bị bỏ đi sang object khác thay vì sao chép sâu. Rvalue reference
T&&nhận các object như vậy;std::movechỉ là phép ép kiểu để cho phép move.std::vector<int> a(1'000'000); std::vector<int> b = std::move(a); // chuyển con trỏ, không chép 1 triệu phần tử- Rule of 3: nếu tự viết destructor, copy constructor hoặc copy assignment thì gần như phải viết đủ cả ba.
- Rule of 5: thêm move constructor và move assignment.
- Rule of 0: tốt nhất là không tự viết hàm nào, để các thành viên RAII (
vector,unique_ptr) lo.
Hay sai: dùng lại object sau khi đã move. Object vẫn hợp lệ nhưng ở trạng thái không xác định.
02Viết hàm phục vụ ngắt (ISR) cần lưu ý những gì?C/C++ & Embedded
Gợi ý trả lời
Ôn thêm câu hỏi C/C++ & Embedded →ISR phải ngắn và nhanh: ghi nhận sự kiện, lấy dữ liệu tối thiểu, rồi để phần xử lý nặng cho task hoặc vòng lặp chính.
- Không gọi hàm có thể block (delay, chờ mutex), không
printf, tránh cấp phát động. - Biến dùng chung với code chính khai báo
volatilevà truy cập atomic, hoặc tắt ngắt ngắn khi đọc dữ liệu nhiều byte. - Xoá cờ ngắt đúng cách để không bị gọi lại liên tục.
- Với RTOS, chỉ dùng API dành cho ngắt (vd. hàm có hậu tố
FromISRtrong FreeRTOS) để báo task qua semaphore, queue hoặc task notification. - Dùng ring buffer cho dữ liệu đến liên tục như UART.
Người phỏng vấn muốn nghe: bạn biết về độ ưu tiên ngắt, ngắt lồng nhau, và cách đo thời gian chạy ISR bằng cách bật tắt một chân GPIO rồi xem trên oscilloscope.
- Không gọi hàm có thể block (delay, chờ mutex), không
03RTOS khác vòng lặp super-loop thế nào? Mutex khác semaphore ra sao?C/C++ & Embedded
Gợi ý trả lời
Ôn thêm câu hỏi C/C++ & Embedded →Super-loop chạy tuần tự các việc trong một vòng
while(1), đơn giản nhưng một việc chậm sẽ làm trễ mọi việc khác. RTOS có scheduler preemptive theo độ ưu tiên, giúp các việc cần thời gian thực được đáp ứng đúng hạn.- Mutex: khoá loại trừ cho tài nguyên dùng chung, có khái niệm sở hữu (ai khoá thì người đó mở) và thường có priority inheritance để giảm đảo ưu tiên.
- Binary semaphore: dùng để báo hiệu giữa ISR và task hoặc giữa các task, không có sở hữu.
- Counting semaphore: quản lý N tài nguyên giống nhau.
Hay sai: dùng semaphore thay mutex để bảo vệ tài nguyên, gặp priority inversion: task ưu tiên cao chờ task thấp đang giữ khoá, trong khi task trung bình chiếm CPU.
Người phỏng vấn muốn nghe: bạn biết đặt độ ưu tiên task và kích thước stack hợp lý, và từng phát hiện stack overflow.
04SIEM là gì? Trong SOC, bạn xử lý một alert như thế nào?Bảo mật (Security)
Gợi ý trả lời
Ôn thêm câu hỏi Bảo mật (Security) →SIEM thu thập log từ nhiều nguồn (firewall, endpoint, server, cloud, AD), chuẩn hoá, tương quan và sinh alert theo rule hoặc phát hiện bất thường.
Quy trình xử lý alert:
- Triage: đọc alert, xác định tài sản và người dùng liên quan, mức độ quan trọng.
- Điều tra: đối chiếu log xung quanh thời điểm, tra IOC (IP, hash, domain) với threat intel.
- Kết luận: dương tính thật hay giả; ghi lại bằng chứng.
- Leo thang theo playbook nếu là sự cố thật.
- Tinh chỉnh rule nếu là báo động giả lặp lại.
Người phỏng vấn muốn nghe: ghi chép đầy đủ và biết khi nào cần leo thang thay vì tự xử lý.
05Bạn đưa bảo mật vào quy trình phát triển phần mềm (DevSecOps) thế nào?Bảo mật (Security)
Gợi ý trả lời
Ôn thêm câu hỏi Bảo mật (Security) →Ý chính là "shift left": phát hiện lỗi sớm, tự động trong pipeline, nhưng không làm chậm team quá mức.
- Thiết kế: threat modeling cho tính năng nhạy cảm (thanh toán, đăng nhập).
- Code: SAST, quét secret ở pre-commit và CI.
- Phụ thuộc: SCA quét thư viện có lỗ hổng, cập nhật tự động; tạo SBOM.
- Build: quét image container, ký artifact.
- Chạy thử: DAST trên staging.
- Hạ tầng: quét IaC tìm cấu hình sai.
Chặn build chỉ với lỗi mức cao có thể khai thác; lỗi khác đưa vào backlog có hạn xử lý.
Hay sai: bật mọi công cụ với ngưỡng gắt, dev ngập báo động giả và tìm cách tắt.
06Active Directory là gì? Bạn quản lý người dùng và chính sách trong domain thế nào?Network & System Admin
Gợi ý trả lời
Ôn thêm câu hỏi Network & System Admin →Active Directory là dịch vụ thư mục của Windows Server, quản lý tập trung người dùng, máy tính, nhóm và xác thực (Kerberos) trong một domain.
- Tổ chức đối tượng theo OU (phòng ban, chi nhánh) để áp chính sách riêng.
- Cấp quyền qua group, không cấp trực tiếp cho từng user.
- Group Policy (GPO): chính sách mật khẩu, khoá màn hình, map ổ mạng, cài phần mềm.
- Có ít nhất 2 domain controller để dự phòng; AD phụ thuộc DNS nên DNS phải đúng.
- Tài khoản admin domain tách riêng khỏi tài khoản dùng hằng ngày.
Hay sai: đồng hồ lệch giữa máy và domain controller khiến Kerberos xác thực lỗi; cần đồng bộ NTP.
07Undefined behavior trong C/C++ là gì? Cho ví dụ và cách phát hiện.C/C++ & Embedded · Senior
Gợi ý trả lời
Ôn thêm câu hỏi C/C++ & Embedded →Undefined behavior (UB) là những thao tác mà chuẩn ngôn ngữ không quy định kết quả. Compiler được phép giả định UB không bao giờ xảy ra và tối ưu theo giả định đó, nên lỗi có thể chỉ lộ ra ở bản build
-O2hoặc trên một compiler khác.Ví dụ hay gặp:
- Tràn số nguyên có dấu (tràn số không dấu thì được định nghĩa là quay vòng).
- Truy cập mảng ngoài phạm vi, dereference con trỏ null hoặc dangling.
- Đọc biến chưa khởi tạo, data race giữa các thread.
- Vi phạm strict aliasing, vd. ép
float*sangint*rồi đọc (nên dùngmemcpyhoặcstd::bit_casttừ C++20).
Phát hiện: bật cảnh báo
-Wall -Wextra, chạy test với-fsanitize=address,undefined, dùng static analysis (clang-tidy, cppcheck, MISRA checker).Người phỏng vấn muốn nghe: "chạy đúng trên máy tôi" không chứng minh code không có UB.
08Thiết bị nhúng thỉnh thoảng bị treo hoặc reset ngoài hiện trường. Bạn debug thế nào?C/C++ & Embedded · Senior
Gợi ý trả lời
Ôn thêm câu hỏi C/C++ & Embedded →Cần thu thập dấu vết từ thiết bị trước, sau đó tái hiện trong phòng lab.
- Lưu nguyên nhân reset: đọc thanh ghi reset cause (watchdog, brown-out, hard fault) khi khởi động và ghi vào flash hoặc gửi log lên.
- Hard fault handler: lưu các thanh ghi PC, LR và stack frame để biết lệnh gây lỗi, sau đó tra file
.maphoặcaddr2line. - Stack overflow: bật kiểm tra stack của RTOS, tô mẫu (stack painting) để đo mức dùng tối đa.
- Watchdog: chỉ "đá" watchdog khi mọi task quan trọng còn sống, không đá trong ISR timer.
- Kiểm tra phần cứng: nguồn sụt áp, nhiễu, nhiệt độ.
Trong lab dùng JTAG/SWD với GDB, logic analyzer và chạy stress test dài.
Người phỏng vấn muốn nghe: một ca thật bạn đã xử lý, cách khoanh vùng và cách chứng minh đã sửa đúng.
09How would you explain a bug to a non-technical person, like a client or a business user?Phỏng vấn tiếng Anh
Gợi ý trả lời
Ôn thêm câu hỏi Phỏng vấn tiếng Anh →"I'd focus on the impact and what we're doing about it, not the technical details. For example: 'Some customers saw the wrong total in their cart when they applied two discount codes at once. No payments were affected. We've found the cause, the fix is being tested now, and it should be live tomorrow morning. Until then, we've limited orders to one code each.'"
Mẹo: cấu trúc ảnh hưởng – nguyên nhân (một câu đơn giản) – đã làm gì – khi nào xong. Tránh thuật ngữ như "null pointer", "race condition". Cụm hữu ích: "The good news is…", "To be safe, we have…".
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 ở Bosch Global Software Technologies?
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