Tiếp nối series tổng quan về nhúng ... 1. Phân loại định hướng làm nhúng: + Bare-metal programming: điện áp thấp (3.3V, 5V); can thiệp trực tiếp vào phần cứng, thanh ghi; dùng cho các tác vụ riêng biệt, đáp ứng độ trễ nhất định Ví dụ MCU: Arduino (framework+board), AVR, PIC, STM32 [Source ----> compile --eabi-->.hex/.bin----> Flash mem] + OS-based programming: phần cứng cần khỏe hơn; thiên về tác vụ lập lịch (scheduling); có framework hoặc thư viện hỗ trợ; cần thêm RAM+NVM (non-volatile mem), thường abstract tầng HW (HAL, libs, device driver, etc), đa luồng và đa tiến trình, tác vụ phức tạp (filesystem, graphic, networking, etc) Ví dụ Embedded Linux System: Microprocessor (+ ext mem, RAM, NVM), Real-time kernel, ví dụ Rasp Pi, Orange Pi, Beaglebone, etc [Source---->compile--os api-->exec----> volatile mem (RAM)] 2. Cơ hội nghề nghiệp: + IoT node: Tác vụ đơn dùng MCU (thu thập dữ liệu sensor, đo mưa nắng :v) + IoT gateway, Server + Automotive <-- Đang hot :) + Industrial devices etc 3. Các công ty tuyển dụng mảng nhúng tại Việt Nam: Hiện nay có khá nhiều công ty làm về Embedded, kể cả IoT hay Automotive: Bosch, Renesas, LG, Samsung, banvien, Fsoft, Hitachi, Hella, Vinfast, HCL, etc 4. Quy trình phỏng vấn chung cho fresher mới ra trường hoặc ít kinh nghiệm: Cơ bản mình không nắm rõ 100% nhưng theo các thông tin mình thu thập được (tám nhảm, cafe, phỏng vấn Guru :v) thì cơ bản có thể thấy: + Mở đầu: Giới thiệu bản thân, học ở đâu, kinh nghiệm, không cần thiết phải là project doanh nghiệp, ví dụ mình có 4-6 projects là DIY trong CV lúc mới đi kiếm job, họ sẽ hỏi xoáy vào để xem bạn hiểu đến đâu. Ngoài ra, bạn nên chuẩn bị luôn một số câu trả lời về điểm mạnh và thiếu sót của bản thân về tech, soft skills, teamwork, etc. Nhắc lại 3 lần: Trung thực, Trung thực, Trung thực. + Chuyên môn: - Embedded: khái niệm, phân biệt vi xử lí vs vi điều khiển, chuẩn giao tiếp, ngắt, timer, RTOS, etc - C/C++: static, inline, extern, ...; con trỏ, switch case, if else, memory layout (heap vs stack), union vs static, OOP, đa luồng (multithreading) - Linux cơ bản: các lệnh cơ bản trong Linux - Thuật toán: Quick sort, Binary search, Bubble sort, lòng vòng dễ dễ không quá khủng bố. Hồi đó mình phỏng vấn vừa đọc vô đề là thấy mùi Bubble sort, thay vì phải code lên bảng mình xin trình bày bằng miêng luôn :v - Cấu trúc dữ liệu: heap, stack, queue, linked list, circular linked list, double linked list, map, vector, mấy cái như trie, BST thì ít thấy - SVN, Git, Jira, Gerrit, Github, Gitlab, BitBucket, Docker, Dockerhub, Hypervisor, Virtual machine, ... (lặt vặt) - SDLC (Software Development Life Cycle): [waterfall, iterative, spiral, Agile]; V-model, SCRUM, SAFe (Scale Agile Framework), etc - Một số câu hỏi tình huống trong teamwork ... Reference: Embedded in Vietnam, Wiki, Youtube, Guru