Blog phát triển sự nghiệp & kỹ năng ứng tuyển

Cập nhật kiến thức thực tiễn về phỏng vấn, CV, kỹ năng ứng tuyển và xu hướng nghề nghiệp cùng AI.

Tag: #phỏng vấn kỹ thuật Xóa lọc
Phỏng Vấn Embedded Engineer & IoT: 10 Câu Hỏi Kỹ Thuật Từ Vi Điều Khiển Đến Giao Tiếp Phần Cứng

Bài viết nổi bật

Phỏng Vấn Embedded Engineer & IoT: 10 Câu Hỏi Kỹ Thuật Từ Vi Điều Khiển Đến Giao Tiếp Phần Cứng

02/06/2026

Tác giả: Thanh Huyền

Phỏng Vấn Embedded Engineer & IoT: 10 Câu Hỏi Kỹ Thuật Từ Vi Điều Khiển Đến Giao Tiếp Phần Cứng

1. Tổng quan về ngành Embedded Engineer & IoT Ngành kỹ thuật nhúng (Embedded Engineering) và Internet of Things (IoT) đang phát triển mạnh mẽ trong bối cảnh chuyển đổi số toàn cầu. Từ thiết bị gia đình thông minh, hệ thống công nghiệp tự động cho đến y tế và nông nghiệp, vai trò của Embedded Engineer ngày càng trở nên quan trọng. Một kỹ sư nhúng giỏi cần nắm vững kiến thức về vi điều khiển, hệ điều hành thời gian thực, giao tiếp phần cứng, quản lý năng lượng và bảo mật firmware. Trong bài viết này, chúng ta sẽ đi qua 10 câu hỏi phỏng vấn kỹ thuật phổ biến nhất mà bạn có thể gặp khi apply vào vị trí Embedded Engineer hoặc IoT Developer. 👉 Nếu bạn đang chuẩn bị cho buổi phỏng vấn Embedded, hãy luyện tập thêm tại X Interview với kho câu hỏi phong phú và chi tiết. 2. 10 Câu Hỏi Phỏng Vấn Kỹ Thuật Embedded & IoT 1. Hãy phân biệt kiến trúc ARM Cortex-M0, Cortex-M3 và Cortex-M4. Khi nào bạn nên chọn mỗi loại cho dự án IoT? Đây là câu hỏi nền tảng kiểm tra kiến thức về vi điều khiển mà mọi Embedded Engineer cần nắm rõ. ARM Cortex-M0 là lõi nhỏ gọn nhất, tiêu thụ điện năng rất thấp (vài mA ở chế độ hoạt động), phù hợp cho các ứng dụng ultra-low-power như cảm biến đeo tay, thiết bị beacon Bluetooth. Cortex-M0 không có DSP instruction, không có FPU, xung nhịp thường dưới 50 MHz. ARM Cortex-M3 mạnh hơn đáng kể với kiến trúc Harvard, pipeline 3-stage, hỗ trợ bit-banding và hệ thống ngắt Nested Vectored Interrupt Controller (NVIC) ưu tiên lên đến 256 mức. Cortex-M3 phù hợp cho các ứng dụng cần xử lý trung bình như điều khiển motor, gateway IoT. ARM Cortex-M4 bổ sung thêm DSP instructions (SIMD, MAC) và tùy chọn FPU (đơn chính xác). Đây là lựa chọn lý tưởng cho các ứng dụng xử lý tín hiệu số (DSP), phân tích cảm biến phức tạp, và edge computing đơn giản. Ví dụ: STM32F4 dựa trên Cortex-M4 chạy ở 168 MHz, có thể chạy FFT realtime trên dữ liệu gia tốc kế. Khi chọn vi điều khiển cho IoT, cần cân nhắc: mức tiêu thụ điện (pin hay nguồn lưới), yêu cầu tính toán (có cần DSP không), chi phí BOM, và hệ sinh thái phần mềm (SDK, IDE, thư viện). 👉 Tìm hiểu thêm các câu hỏi về vi điều khiển tại X Interview để chuẩn bị tốt nhất cho buổi phỏng vấn. 2. So sánh ESP32 và STM32 trong phát triển sản phẩm IoT. Ưu nhược điểm của từng loại là gì? ESP32 và STM32 là hai họ vi điều khiển phổ biến nhất trong ngành IoT hiện nay. ESP32 của Espressif tích hợp sẵn WiFi 802.11 b/g/n và Bluetooth 5.0 (bao gồm BLE), với lõi dual-core Xtensa LX6 chạy ở 240 MHz. Ưu điểm lớn nhất là tích hợp kết nối không dây, chi phí thấp (khoảng 2-3 USD cho module), cộng đồng lớn với ESP-IDF framework hỗ trợ FreeRTOS. Tuy nhiên, ESP32 tiêu thụ điện năng khá cao khi bật WiFi (khoảng 160-260 mA), thời gian deep sleep khoảng 10 uA. ESP32 không phù hợp cho các ứng dụng an toàn chức năng (functional safety) do thiếu các chứng nhận cần thiết. STM32 của ST Microelectronics là họ vi điều khiển ARM Cortex-M rất đa dạng, từ STM32L0 (ultra-low-power) đến STM32H7 (high-performance 480 MHz). Ưu điểm: tiêu thụ điện năng cực thấp ở chế độ stop (dưới 1 uA cho STM32L4), hỗ trợ nhiều giao tiếp phần cứng (CAN, USB OTG, Ethernet), công cụ phát triển mạnh (STM32CubeIDE, STM32CubeMX), phù hợp cho ứng dụng công nghiệp và y tế. Nhược điểm: không tích hợp sẵn WiFi/BLE (cần module ngoài), chi phí cao hơn ESP32, quá trình cấu hình phức tạp hơn. Lựa chọn: ESP32 phù hợp cho prototype nhanh, sản phẩm tiêu dùng cần WiFi/BLE. STM32 phù hợp cho sản phẩm công nghiệp, ứng dụng cần độ tin cậy cao và tiêu thụ điện năng thấp. 3. Giải thích cách hoạt động của FreeRTOS và tại sao nó quan trọng trong hệ thống nhúng. FreeRTOS là hệ điều hành thời gian thực (RTOS) mã nguồn mở phổ biến nhất, được sử dụng trên hơn 40 nền tảng vi điều khiển khác nhau, được AWS hỗ trợ và duy trì. FreeRTOS hoạt động dựa trên cơ chế lập lịch ưu tiên preemptive scheduler. Mỗi task được gán một mức ưu tiên, task có ưu tiên cao nhất ở trạng thái Ready sẽ luôn được chạy trước. FreeRTOS sử dụng tick interrupt (thường 1 ms) để kích hoạt bộ lập lịch thời gian thực. Các khái niệm cốt lõi trong FreeRTOS bao gồm: Task (luồng thực thi độc lập với stack riêng), Queue (hàng đợi để truyền dữ liệu giữa các task), Semaphore (tài nguyên đồng bộ hóa), Mutex (khóa loại trừ tương hỗ với ưu tiên ưu tiên inheritance), và Timer (bộ hẹn giờ phần mềm). Ví dụ thực tế: trong hệ thống IoT gateway, bạn có thể có task đọc cảm biến (ưu tiên trung bình), task xử lý MQTT (ưu tiên cao), task quản lý kết nối WiFi (ưu tiên thấp), và task watchdog (ưu tiên cao nhất). Khi task MQTT cần dữ liệu từ cảm biến, nó gửi yêu cầu qua Queue và chờ semaphore. FreeRTOS quan trọng vì nó giúp quản lý đa nhiệm hiệu quả trên vi điều khiển tài nguyên hạn chế, cung cấp cơ chế thời gian thực determinism, và giảm độ phức tạp khi phát triển firmware cho nhiều tác vụ song song. 4. So sánh các giao tiếp UART, SPI và I2C. Khi nào bạn nên chọn mỗi loại? Ba giao tiếp serial này là nền tảng trong mọi hệ thống nhúng, và câu hỏi này thường xuyên xuất hiện trong phỏng vấn. UART (Universal Asynchronous Receiver/Transmitter) là giao tiếp asynchronous point-to-point, sử dụng 2 dây (TX, RX) cộng thêm GND. Tốc độ phổ biến từ 9600 bps đến 115200 bps, một số lên đến 1 Mbps. Ưu điểm: đơn giản, ít dây, dễ debug với terminal nối tiếp. Nhược điểm: chỉ kết nối 1-1, tốc độ thấp. Phù hợp cho: debug console, giao tiếp với module GPS, module GSM, giao tiếp với máy tính. SPI (Serial Peripheral Interface) là giao tiếp synchronous full-duplex master-slave, sử dụng 4 dây: SCK, MOSI, MISO, CS (chip select). Tốc độ có thể lên đến hàng chục MHz (STM32 hỗ trợ đến 50 MHz). Ưu điểm: tốc độ cao, full-duplex, đơn giản về phần cứng. Nhược điểm: nhiều dây (mỗi slave cần thêm 1 chân CS), khoảng cách ngắn. Phù hợp cho: cảm biến tốc độ cao (ADC, DAC), màn hình LCD/OLED, thẻ SD, Flash memory. I2C (Inter-Integrated Circuit) là giao tiếp synchronous half-duplex multi-master multi-slave, sử dụng 2 dây: SDA và SCL. Mỗi thiết bị có địa chỉ 7-bit (hoặc 10-bit). Tốc độ tiêu chuẩn 100 KHz, fast mode 400 KHz, high speed 3.4 MHz. Ưu điểm: ít dây, hỗ trợ nhiều thiết bị trên cùng bus, có cơ chế acknowledgment. Nhược điểm: half-duplex, tốc độ trung bình, cần pull-up resistor. Phù hợp cho: cảm biến nhiệt độ, áp suất, accelerometer, RTC, EEPROM. Trong thực tế, một hệ thống IoT thường sử dụng cả ba: UART để debug, SPI cho Flash và màn hình, I2C cho các cảm biến. 👉 Luyện tập thêm câu hỏi về giao tiếp phần cứng tại X Interview. 5. Giải thích giao thức MQTT và cách triển khai nó trên thiết bị IoT nhúng. MQTT (Message Queuing Telemetry Transport) là giao thức messaging publish-subscribe nhẹ, được thiết kế đặc biệt cho các thiết bị có băng thông hạn chế và mạng không ổn định, là backbone của hầu hết hệ thống IoT hiện đại. MQTT hoạt động theo mô hình broker-client. Thiết bị IoT (client) kết nối đến MQTT broker qua TCP. Client có thể publish message đến một topic hoặc subscribe để nhận message từ topic. Broker chịu trách nhiệm định tuyến message từ publisher đến subscriber. Cấu trúc gói MQTT rất nhỏ gọn, header chỉ 2 byte. MQTT hỗ trợ 3 mức Quality of Service (QoS): QoS 0 (at most once - gửi một lần, không đảm bảo), QoS 1 (at least once - gửi ít nhất một lần, có thể trùng lặp), QoS 2 (exactly once - gửi đúng một lần, overhead cao nhất). Trên ESP32 với ESP-IDF, triển khai MQTT sử dụng thư viện esp_mqtt_client. Ví dụ: cấu hình broker URI, đăng ký callback cho các event (CONNECTED, DATA_RECEIVED, DISCONNECTED), subscribe topic "device/sensor/data", publish dữ liệu cảm biến mỗi 30 giây. Cần xử lý reconnection khi mất kết nối và sử dụng Last Will Testament (LWT) để phát hiện thiết bị offline. Bảo mật MQTT: sử dụng TLS/SSL để mã hóa kết nối, xác thực bằng username/password hoặc certificate. Trong MQTT 5.0, bổ sung thêm cơ chế shared subscription, message expiry, và user properties. 6. Trình bày cách quản lý năng lượng trong thiết bị IoT chạy bằng pin. Quản lý năng lượng là yếu tố quyết định tuổi thọ pin của thiết bị IoT, đặc biệt quan trọng khi thiết bị cần hoạt động nhiều năm mà không cần thay pin. Các chiến lược quản năng lượng chính bao gồm: Dynamic Voltage and Frequency Scaling (DVFS): giảm xung nhịp và điện áp khi tải xử lý thấp. Ví dụ: STM32L4 có thể giảm từ 80 MHz xuống 2 MHz, giảm điện áp từ 1.2V xuống 1.0V, tiết kiệm đáng kể công suất. Sleep modes: hầu hết vi điều khiển hiện đại có nhiều mức sleep. STM32 có Sleep (CPU dừng, ngoại vi hoạt động), Stop (tất cả dừng, SRAM giữ dữ liệu, wakeup nhanh), Standby (gần như tắt hoàn toàn, chỉ RTC và wakeup pin hoạt động). ESP32 có modem sleep (CPU hoạt động, WiFi tắt), light sleep (CPU dừng), deep sleep (chỉ RTC hoạt động, tiêu thụ 10 uA). Peripheral power gating: tắt nguồn các ngoại vi không sử dụng bằng cách điều khiển transistor hoặc sử dụng tính năng on-chip power gating. Ví dụ: tắt cảm biến khi không cần đọc, tắt module GPS khi đã có vị trí. Interrupt-driven architecture: thay vì polling (liên tục kiểm tra), sử dụng ngắt để đánh thức CPU chỉ khi có sự kiện. Giảm thời gian CPU hoạt động không cần thiết. Ví dụ thực tế: thiết bị cảm biến nông nghiệp sử dụng STM32L4, đọc cảm biến mỗi 15 phút, gửi dữ liệu qua LoRaWAN. Phần lớn thời gian ở chế độ Stop (0.4 uA), chỉ thức dậy 2 giây để đọc cảm biến và gửi dữ liệu. Với pin 3000 mAh, thiết bị có thể hoạt động hơn 5 năm. 👉 Đọc thêm các câu hỏi phỏng vấn về quản lý năng lượng tại X Interview. 7. Mô tả quy trình debug firmware trong hệ thống nhúng. Bạn sử dụng những công cụ và kỹ thuật gì? Debug firmware là kỹ năng quan trọng nhất của Embedded Engineer, đòi hỏi sự kết hợp giữa công cụ phần cứng và kỹ năng phân tích. Công cụ debug phần cứng: JTAG/SWD debugger (J-Link, ST-Link, CMSIS-DAP) cho phép đặt breakpoint, single-step, xem và sửa đổi register, memory trong thời gian thực. Logic analyzer (Saleae, DSLogic) để capture và phân tích tín hiệu digital trên các bus SPI, I2C, UART. Oscilloscope để đo timing, kiểm tra tín hiệu analog, phát hiện vấn đề điện. Kỹ thuật debug firmware phổ biến: Printf/UART debug: đơn giản nhất, in thông tin ra terminal qua UART. Nhược điểm: thay đổi timing, có thể che giấu lỗi race condition. Hard Fault handler: cấu hình handler để ghi lại giá trị register (PC, LR, SP) khi xảy ra lỗi. Sử dụng fault status register để xác định nguyên nhân (bus fault, memory fault, usage fault). Stack overflow detection: FreeRTOS cung cấp tính năng stack overflow detection bằng cách kiểm tra watermark pattern cuối stack. Sử dụng MPU (Memory Protection Unit) để phát hiện truy cập trái phép. Watchdog timer: cấu hình watchdog để reset hệ thống khi firmware treo. Kết hợp với persistent storage để ghi lại thông tin reset reason trước khi watchdog reset. Core dump: lưu trạng thái hệ thống (RAM, register) vào Flash khi xảy ra lỗi, phân tích sau bằng công cụ như Segger SystemView hoặc OpenOCD. Tracing với Segger SystemView hoặc Tracealyzer để visualize hoạt động task, thời gian chạy, thời gian chờ, phát hiện priority inversion và deadlock. 8. Giải thích quy trình OTA (Over-The-Air) update cho thiết bị IoT. Những thách thức và giải pháp là gì? OTA update cho phép cập nhật firmware từ xa mà không cần kết nối vật lý, là tính năng bắt buộc cho mọi thiết IoT sản phẩm. Quy trình OTA tiêu chuẩn bao gồm: thiết bị kiểm tra phiên bản firmware mới từ server, tải firmware binary qua HTTP/HTTPS hoặc MQTT, xác minh integrity bằng SHA-256 hash và xác thực bằng RSA/ECDSA signature, ghi firmware mới vào vùng Flash dự phòng, reboot vào firmware mới, và xác nhận cập nhật thành công (nếu thất bại thì rollback về firmware cũ). Kiến trúc dual-bank (A/B partitioning) là giải pháp phổ biến: Flash được chia thành 2 vùng, vùng A chứa firmware đang chạy, vùng B chứa firmware mới. Sau khi ghi firmware mới vào vùng B, bootloader chuyển sang boot từ vùng B. Nếu firmware mới có lỗi, watchdog sẽ reset và bootloader quay lại vùng A. ESP-IDF hỗ trợ tính năng OTA A/B partition out of the box. Các thách thức chính: bảo mật (firmware phải được ký số, kiểm tra certificate chain), băng thông (nén firmware bằng delta update để giảm kích thước tải), mất kết nối giữa chừng (resume download, không tải lại từ đầu), và quản lý phiên bản (version compatibility, rollback policy). Thực hành tốt nhất: sử dụng Mbed TLS cho mã hóa, FreeRTOS OTA Agent cho quản lý update, AWS IoT Jobs hoặc Azure IoT Hub cho orchestration. Luôn xác minh signature trước khi ghi vào Flash, lưu metadata phiên bản trong NVS (Non-Volatile Storage). 9. So sánh các giao tiếp không dây trong IoT: WiFi, BLE, Zigbee, LoRa và NB-IoT. Lựa chọn giao tiếp không dây phù hợp là quyết định kiến trúc quan trọng trong thiết kế sản phẩm IoT. WiFi (802.11): băng thông cao (lên đến hàng trăm Mbps), tầm xa 30-100m trong nhà. Tiêu thụ điện năng cao (100-300 mA khi truyền). Phù hợp cho thiết bị có nguồn điện ổn định như camera IP, smart home hub. ESP32 là lựa chọn phổ biến cho WiFi IoT. Bluetooth Low Energy (BLE): tiêu thụ điện năng rất thấp (dòng truyền vài mA, advertising vài uA), tầm xa 10-30m, băng thông 1-2 Mbps (BLE 5.0). Phù hợp cho wearable, beacon, thiết bị đeo y tế. Hỗ trợ mesh network từ BLE 5.0. Zigbee (802.15.4): mạng mesh tự tổ chức, hỗ trợ hàng nghìn node, tiêu thụ điện năng thấp, băng thông 250 Kbps. Phù hợp cho smart home (đèn, công tắc, cảm biến), tòa nhà thông minh. Nhược điểm: cần coordinator, phức tạp hơn BLE. LoRa/LoRaWAN: tầm xa cực lớn (2-15 km), tiêu thụ điện năng rất thấp, băng thông thấp (0.3-50 Kbps). Phù hợp cho IoT nông nghiệp, smart city, cảm biến môi trường trải rộng. Nhược điểm: bitrate thấp, không phù hợp cho dữ liệu lớn. NB-IoT (Narrowband IoT): hoạt động trên băng tần di động, phủ sóng rộng, tiêu thụ điện năng thấp, băng thông thấp. Phù hợp cho đồng hồ thông minh, thiết bị theo dõi vị trí, ứng dụng cần kết nối ở vùng sâu vùng xa. Tiêu chí lựa chọn: khoảng cách, băng thông, mật độ node, nguồn năng lượng, chi phí module, và infrastructure hiện có. 10. Giải thích khái niệm real-time constraints và edge computing trong hệ thống nhúng IoT. Real-time không có nghĩa là "nhanh", mà là "đúng thời hạn". Hệ thống real-time phải hoàn thành xử lý trong thời gian xác định (deterministic latency). Hard real-time: nếu deadline bị miss, hệ thống thất bại. Ví dụ: hệ thống phanh ABS phải phản ứng trong vài millisecond, thiết bị y tế truyền thuốc phải chính xác liều lượng và thời điểm. Yêu cầu deterministic behavior tuyệt đối, thường sử dụng RTOS với ưu tiên task chặt chẽ. Soft real-time: deadline quan trọng nhưng miss không gây thảm họa. Ví dụ: camera giám sát có thể mất vài frame nhưng không ảnh hưởng nghiêm trọng. Sử dụng RTOS hoặc polling với timeout. Firm real-time: deadline quan trọng, kết quả sau deadline không có giá trị nhưng không gây hư hại. Ví dụ: dữ liệu cảm biến cần được xử lý đúng chu kỳ lấy mẫu. Edge computing trong IoT nghĩa là xử lý dữ liệu ngay tại thiết bị hoặc gateway thay vì gửi toàn bộ lên cloud. Lợi ích: giảm độ trễ (millisecond thay vì hàng trăm millisecond), giảm băng thông mạng, tăng quyền riêng tư (dữ liệu nhạy cảm không cần gửi đi), hoạt động được khi offline. Ví dụ thực tế: camera an ninh AI sử dụng ESP32-S3 hoặc STM32N6 với neural processing unit để chạy mô hình nhận diện khuôn mặt ngay trên thiết bị, chỉ gửi kết quả (không gửi video) lên cloud. Thiết bị công nghiệp sử dụng STM32H7 để phân tích rung động motor realtime, phát hiện bất thường và cảnh báo ngay lập tức mà không cần kết nối mạng. 👉 Chuẩn bị tốt hơn cho các câu hỏi embedded system nâng cao tại X Interview. 3. Lời Khuyên Để Phỏng Vấn Embedded & IoT Thành Công Để vượt qua buổi phỏng vấn Embedded Engineer, bạn cần kết hợp kiến thức lý thuyết vững chắc với kinh nghiệm thực hành. Hãy xây dựng portfolio với các dự án thực tế sử dụng ESP32 hoặc STM32, viết firmware sử dụng FreeRTOS, triển khai MQTT client, và thiết kế mạch quản lý năng lượng. Ngoài kiến thức kỹ thuật, nhà tuyển dụng cũng đánh giá khả năng đọc datasheet, tư duy debug hệ thống, và hiểu biết về quy trình phát triển sản phẩm embedded từ prototype đến mass production. 👉 Luyện tập phỏng vấn ngay tại X Interview với hàng trăm câu hỏi phỏng vấn Embedded & IoT được biên soạn chi tiết. 4. Kết Luận Bài viết đã tổng hợp 10 câu hỏi phỏng vấn kỹ thuật quan trọng nhất cho vị trí Embedded Engineer và IoT Developer, bao gồm kiến trúc vi điều khiển ARM Cortex, so sánh ESP32 và STM32, FreeRTOS, giao tiếp phần cứng UART/SPI/I2C, MQTT, quản lý năng lượng, debug firmware, OTA update, giao tiếp không dây, và real-time constraints. Việc nắm vững các chủ đề này sẽ giúp bạn tự tin hơn trong buổi phỏng vấn và chứng minh năng lực kỹ thuật với nhà tuyển dụng. Hãy tiếp tục học hỏi, thực hành và cập nhật công nghệ mới để phát triển sự nghiệp trong ngành Embedded & IoT. 5. Tài Liệu Tham Khảo ARM Cortex-M Technical Reference Manuals (ARM Holdings) FreeRTOS Reference Manual (Amazon Web Services) ESP-IDF Programming Guide (Espressif Systems) STM32 Reference Manuals và Datasheets (ST Microelectronics) MQTT Version 5.0 Specification (OASIS Standard) Zigbee Cluster Library (Zigbee Alliance) LoRaWAN Specification (LoRa Alliance) NB-IoT Technical Specification (3GPP) Tags: phong-van, embedded, iot, firmware, microcontroller, rtos, mqtt, esp32, stm32, freertos

Đọc bài viết