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 (Mobile (Android, iOS, Flutter), AI / Machine Learning). 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.
01Thiết kế tính năng offline-first: app vẫn dùng được khi mất mạng và đồng bộ khi có mạng lại.Mobile (Android, iOS, Flutter) · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →Lấy database cục bộ làm nguồn sự thật cho UI: UI chỉ đọc từ DB local, tầng sync lo việc đồng bộ với server.
- Lưu trữ: Room, SwiftData / Core Data, Drift hoặc Isar (Flutter). UI quan sát dữ liệu qua Flow,
@Queryhoặc Stream. - Ghi khi offline: lưu thay đổi vào hàng đợi (outbox) kèm trạng thái pending; khi có mạng thì gửi lên, nhận phản hồi rồi đánh dấu đã đồng bộ.
- Lập lịch đồng bộ: WorkManager (Android), BGTaskScheduler (iOS), có ràng buộc mạng và backoff khi lỗi.
- Xung đột: chọn chiến lược như last-write-wins theo timestamp server, version number, hoặc cho người dùng chọn với dữ liệu quan trọng.
- Request cần idempotent (gửi kèm id do client sinh) để retry không tạo bản ghi trùng.
Người phỏng vấn muốn nghe: bạn tính tới đồng bộ từng phần (delta sync) và cách hiển thị trạng thái "chưa đồng bộ" cho người dùng.
- Lưu trữ: Room, SwiftData / Core Data, Drift hoặc Isar (Flutter). UI quan sát dữ liệu qua Flow,
02Bảo mật ứng dụng mobile: lưu token, gọi API và chống dịch ngược thế nào?Mobile (Android, iOS, Flutter) · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →Coi app là môi trường không tin cậy: mọi thứ đóng gói trong app đều có thể bị đọc, nên kiểm soát quan trọng nhất phải nằm ở server.
- Lưu token: Keychain (iOS), Keystore kết hợp EncryptedSharedPreferences hoặc DataStore mã hoá (Android),
flutter_secure_storage. Không lưu trong SharedPreferences / UserDefaults thường hay log ra console. - Phiên đăng nhập: access token ngắn hạn, refresh token xoay vòng; đăng nhập OAuth dùng PKCE.
- Mạng: chỉ HTTPS; có thể dùng certificate pinning nhưng cần kế hoạch xoay chứng chỉ.
- Secret: không nhúng API key quan trọng trong app; gọi qua backend.
- Chống can thiệp: obfuscation (R8), Play Integrity API, App Attest để server xác minh app thật.
Hay sai: tin rằng obfuscation là đủ. Nó chỉ làm chậm kẻ tấn công.
- Lưu token: Keychain (iOS), Keystore kết hợp EncryptedSharedPreferences hoặc DataStore mã hoá (Android),
03Chọn native (Kotlin/Swift) hay cross-platform (Flutter, React Native) cho một dự án mới? Bạn cân nhắc gì?Mobile (Android, iOS, Flutter) · Senior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →Không có đáp án chung; quyết định dựa trên yêu cầu sản phẩm, đội ngũ và chi phí dài hạn.
- Cross-platform (Flutter, React Native, hoặc Kotlin Multiplatform để chia sẻ logic): một codebase cho hai nền tảng, ra mắt nhanh, hợp với app nghiệp vụ, thương mại điện tử, nội bộ.
- Native: cần tích hợp sâu với hệ điều hành (widget, camera hoặc Bluetooth phức tạp, xử lý nền), hiệu năng đồ hoạ cao, hoặc muốn dùng tính năng mới của OS ngay khi ra mắt.
Các yếu tố cần cân nhắc:
- Kỹ năng hiện có của team và khả năng tuyển người.
- Mức độ tuỳ biến UI theo từng nền tảng.
- Chi phí viết plugin native khi thư viện không có sẵn.
- Kích thước app và thời gian khởi động.
Người phỏng vấn muốn nghe: bạn đưa ra lập luận gắn với bối cảnh cụ thể và nhắc tới phương án lai, vd. thêm màn hình Flutter vào app native.
04Chatbot RAG trả lời sai dù tài liệu có thông tin đúng. Bạn debug thế nào?AI / Machine Learning · Senior
Gợi ý trả lời
Ôn thêm câu hỏi AI / Machine Learning →Tách lỗi theo từng khâu của pipeline, kiểm tra từ dưới lên.
- Dữ liệu: tài liệu đã được nạp chưa, trích xuất từ PDF/bảng có bị vỡ không, có phiên bản cũ mâu thuẫn không.
- Chunking: thông tin cần thiết có bị cắt đôi giữa hai chunk không.
- Truy xuất: log các chunk lấy về cho câu hỏi đó; đúng chunk có nằm trong top-k không. Thử hybrid search, rerank, viết lại câu hỏi.
- Sinh: chunk đúng đã có trong prompt mà vẫn sai thì xem prompt, thứ tự đặt ngữ cảnh, quá nhiều ngữ cảnh nhiễu.
- Thêm ca này vào bộ eval để tránh tái diễn.
Người phỏng vấn muốn nghe: có tracing để xem từng bước, không đoán mò.
05Xây dựng AI agent có gọi tool (API, database) cần lưu ý gì về độ tin cậy và an toàn?AI / Machine Learning · Senior
Gợi ý trả lời
Ôn thêm câu hỏi AI / Machine Learning →Agent cho LLM tự quyết định gọi tool theo nhiều bước, nên lỗi và rủi ro tăng theo số bước; cần giới hạn quyền và kiểm soát chặt.
- Tool rõ ràng: mô tả và schema tham số chặt, kiểm tra đầu vào bằng code trước khi thực thi.
- Quyền tối thiểu: tool chỉ đọc khi có thể; thao tác ghi, xoá, chuyển tiền cần người xác nhận.
- Prompt injection: nội dung lấy từ web, email, tài liệu là dữ liệu không tin cậy; không để nó điều khiển tool nhạy cảm.
- Giới hạn số bước, timeout, ngân sách token; xử lý lỗi tool và cho phép thử lại có kiểm soát.
- Log và tracing toàn bộ chuỗi hành động để audit.
- Đánh giá theo tỷ lệ hoàn thành tác vụ trên bộ kịch bản.
Người phỏng vấn muốn nghe: workflow cố định thường đủ; chỉ dùng agent tự do khi thật cần.
06Trình bày vòng đời (lifecycle) của Activity trên Android hoặc của app/view trên iOS.Mobile (Android, iOS, Flutter) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →Vòng đời cho biết khi nào hệ điều hành tạo, hiển thị, tạm dừng và huỷ màn hình, để bạn khởi tạo và giải phóng tài nguyên đúng lúc.
- Android Activity:
onCreate→onStart→onResume(đang tương tác) →onPause→onStop→onDestroy. Xoay màn hình mặc định sẽ huỷ và tạo lại Activity. - iOS UIKit:
viewDidLoad(một lần) →viewWillAppear→viewDidAppear→viewWillDisappear→viewDidDisappear. Trạng thái app: active, inactive, background. - SwiftUI / Compose: nghĩ theo state và các hook như
.task,onAppear,LaunchedEffect,DisposableEffect.
Hay sai: đăng ký listener hoặc sensor trong
onResumemà quên huỷ ởonPause, gây rò rỉ và hao pin. Trên Android nên thu thập Flow bằngrepeatOnLifecycle.- Android Activity:
07Làm sao giữ dữ liệu khi xoay màn hình hoặc khi app bị hệ điều hành kill ở background?Mobile (Android, iOS, Flutter) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →Có hai tình huống khác nhau: thay đổi cấu hình (xoay màn hình, đổi ngôn ngữ) và process death (hệ điều hành kill app để lấy RAM).
Android:
ViewModelsống qua thay đổi cấu hình nhưng không sống qua process death.SavedStateHandle(trong ViewModel) hoặcrememberSaveable(Compose) lưu trạng thái nhỏ như id, nội dung form, vị trí cuộn.- Dữ liệu lớn hoặc quan trọng lưu bền vững bằng Room hoặc DataStore.
iOS: SwiftUI có
@SceneStoragecho trạng thái UI nhỏ; UIKit có state restoration; dữ liệu thật lưu bằng SwiftData, Core Data hoặc file.Người phỏng vấn muốn nghe: bạn biết cách kiểm thử process death, vd. bật "Don't keep activities" hoặc dùng
adb shell am killkhi app ở background.08Trong Flutter, StatelessWidget và StatefulWidget khác nhau thế nào? setState hoạt động ra sao?Mobile (Android, iOS, Flutter) · Junior
Gợi ý trả lời
Ôn thêm câu hỏi Mobile (Android, iOS, Flutter) →StatelessWidgetchỉ phụ thuộc tham số đầu vào;StatefulWidgetcó một objectStateriêng, tồn tại qua các lần build, để giữ dữ liệu thay đổi theo thời gian.setStateđánh dấu widget "dirty"; ở frame kế tiếp Flutter gọi lạibuildcho widget đó và cây con.- Widget là cấu hình nhẹ, tạo lại liên tục; Element và RenderObject mới là phần được tái sử dụng.
- Dọn dẹp controller, stream subscription trong
dispose.
void _increment() => setState(() => _count++);Hay sai: gọi
setStatesau khi widget đã bị huỷ (sau mộtawait); hãy kiểm tramounted. ĐặtsetStateở widget quá cao làm build lại cả màn hình, nên tách nhỏ widget và dùngconstconstructor.Khi state dùng chung nhiều màn hình, chuyển sang Provider, Riverpod hoặc Bloc.
09Overfitting và underfitting là gì? Bạn phát hiện và khắc phục thế nào?AI / Machine Learning · Junior
Gợi ý trả lời
Ôn thêm câu hỏi AI / Machine Learning →Overfitting là mô hình học thuộc cả nhiễu của tập train nên kém trên dữ liệu mới; underfitting là mô hình quá đơn giản, kém ngay cả trên tập train.
Phát hiện: so sánh lỗi train và validation. Train tốt mà validation kém là overfit; cả hai đều kém là underfit.
Khắc phục overfitting:
- Thêm dữ liệu, data augmentation.
- Regularization (L1/L2, dropout, weight decay), early stopping.
- Giảm độ phức tạp mô hình, bớt đặc trưng nhiễu.
Khắc phục underfitting: mô hình mạnh hơn, đặc trưng tốt hơn, train lâu hơn, giảm regularization.
Người phỏng vấn muốn nghe: liên hệ với bias-variance trade-off và dùng cross-validation khi dữ liệu ít.
10Điểm mạnh lớn nhất của bạn là gì?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á →Chọn một hai điểm mạnh liên quan tới vị trí, và chứng minh bằng ví dụ thật, không liệt kê tính từ.
Cấu trúc: điểm mạnh, ví dụ ngắn, kết quả, liên hệ với công việc mới.
Câu mẫu: "Điểm mạnh của em là chủ động tìm nguyên nhân gốc. Ở dự án trước, hệ thống thỉnh thoảng bị timeout mà không ai tái hiện được. Em tự đọc log, thêm theo dõi ở các điểm nghi ngờ và tìm ra một truy vấn bị khoá bảng vào giờ cao điểm. Sau khi sửa, lỗi đó không còn xuất hiện. Em nghĩ điều này hữu ích với vị trí bên mình vì hệ thống có lượng truy cập lớn."
Hay sai: "Em chăm chỉ, ham học hỏi, chịu được áp lực" mà không có ví dụ. Ai cũng nói vậy nên không đọng lại gì.
Bạn đã phỏng vấn ở UPLIVE VN?
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