Site icon Khoa Phạm BK Blog

Bộ câu hỏi phỏng vấn Embedded Developer chinh phục nhà tuyển dụng

Embedded hay Embedded System được gọi là hệ thống nhúng, là một hệ thống có khả năng tự trị được nhúng vào một môi trường hay hệ thống mẹ. Đó chứa cả phần cứng và phần mềm nhằm phục vụ cho các bài toán chuyên dụng trong nhiều lĩnh vực đặc biệt là công nghiệp tự động hóa. Với sự phát triển của AI, IoT và cuộc cách mạng công nghiệp 4.0 hiện nay; lập trình viên nhúng đang là vị trí được nhiều công ty săn đón. Hôm nay chúng ta cùng nhau tìm hiểu top 10 câu hỏi phỏng vấn cho vị trí Embedded Developer thường gặp nhất nhé. 

Câu 1: Nêu những thành phần cơ bản của hệ thống nhúng

Một hệ thống nhúng thông thường gồm những thành phần cơ bản là:

Câu 2: Liệt kê một số hệ thống nhúng trong các lĩnh vực thực tế

Hệ thống nhúng hiện nay có mặt gần như ở tất cả các lĩnh vực từ trong cuộc sống hàng ngày đến sản xuất công nghiệp và kỹ thuật cao.

Câu 3: So sánh công việc của Embedded hardware và Embedded software

Embedded hardware là những công việc liên quan đến phần cứng như thiết kế board mạch, thiết kế PCB, test board mạch. Những công việc này cần đòi hỏi kiến thức chuyên môn liên quan đến mạch, điện tử cũng như phần cứng của hệ thống, thiết bị,… Ngược lại với Embedded software là những công việc liên quan đến phần mềm, là những lập trình viên thực hiện việc xây dựng và phát triển phần mềm cho các sản phẩm nhúng như driver, hệ điều hành, firmware, phần mềm ứng dụng, …

Một dự án phát triển hệ thống nhúng luôn đòi hỏi sự hợp tác chặt chẽ của 2 phần hardware và software; vì thế các lập trình viên trong ngành này thường cũng có kinh nghiệm về phần cứng nhất định.

Câu 4: Ngôn ngữ nào được sử dụng phổ biến nhất trong lập trình nhúng

Trong lập trình nhúng, C và C++ vẫn là những ngôn ngữ phổ biến và được hỗ trợ rộng rãi nhất. C hay C++ là những ngôn ngữ gần với phần cứng, giúp tối ưu phần mềm, không đòi hỏi nhiều thư viện, vì thế giúp chương trình nhẹ nhàng và phù hợp với các hệ thống nhúng giới hạn về phần cứng. 95% mã nguồn hệ thống nhúng hiện nay đang được viết bằng C/C++.

Ngoài C/C++ thì hiện nay Python cũng đang là ngôn ngữ được nhiều hệ thống nhúng sử dụng; nó đang là ngôn ngữ có tốc độ phát triển người dùng nhanh nhất. Ưu điểm của Python là khả năng ghi, giảm lỗi và dễ đọc, các thư viện mã nguồn mở phong phú giúp các lập trình viên giảm thời gian viết code. Mặc dù vậy Python chỉ được dùng cho những hệ thống mà có cấu hình tốt về phần cứng.

Câu 5: Giải thích từ khóa Volatile trong lập trình nhúng

Trong lập trình nhúng, trình compiler có sẵn tính năng optimization (tối ưu) sẽ thực hiện việc lược bỏ những phần code mà nó nghĩ là không cần thiết (ví dụ như biến không sử dụng). Trong một số trường hợp biến của bạn được khai báo nhưng để sử dụng ở 1 vị trí khác (biến global) hoặc map vào vùng nhớ ngoại vi khác dẫn đến việc thực chất là biến “có ích” và có nhiệm vụ của nó nhưng tính năng tối ưu sẽ vẫn đánh dấu nó là không cần thiết.

Để tránh việc tự động này, từ khóa Volatile đặt trước biến để báo cho trình optimization rằng không cần quan tâm đến nó. Trong thực tế, có 3 trường hợp bạn hay sử dụng từ khóa này:

Câu 6: Phân biệt Little Endian và Big Endian

Little Endian và Big Endian là hai cơ chế lưu trữ dữ liệu theo việc sắp xếp các byte dữ liệu. Little endian xuất phát từ little-end nghĩa là kết thúc nhỏ – tức là byte cuối cùng trong biểu diễn nhị phân sẽ được ghi trước; và ngược lại Big endian hay big-end là cơ chế ghi dữ liệu mà byte đầu tiên sẽ ghi đầu tiên. Lưu ý là BE hay LE chỉ khác ở thứ tự các byte chứ không ảnh hưởng đến thứ tự các bit trong byte.

Big Endian sẽ phổ biến và thuận tự nhiên cho chúng ta đọc hơn. Đối với máy tính, không có sự khác biệt nào về tốc độ trong việc đọc ghi thứ tự các byte theo 2 cách trên. Dù vậy có 1 số trường hợp mà BE và LE thể hiện sự khác biệt, ví dụ:

Câu 7: Sự khác nhau giữa Inline Function và Macro

Macro là những hàm được viết ở phần Preprocessor, một loại lệnh mở rộng tại thời điểm gọi của nó. Inline Function (hàm nội tuyến) cũng là một loại lệnh mở rộng tại thời điểm gọi của nó, nhưng nó được mở rộng trong quá trình biên dịch.

Hàm nội tuyến sử dụng từ khóa inline để đề nghị trình biên dịch (compiler) thực hiện inline expansion (khai triển nội tuyến) – chèn code của hàm đó tại địa chỉ mà nó được gọi. Sử dụng inline functions không khác nhiều so với hàm thông thường, tuy vậy khi thực thi nó sẽ chạy nhanh hơn, tiết kiệm chi phí gọi hàm.

Macro định nghĩa một cách chuyển văn bản code đầu vào nào đó thành văn bản code đầu ra theo ý mình muốn sử dụng từ khóa define. Macro giúp chúng ta tiết kiệm thời gian viết những đoạn code lặp lại trong chương trình.

Câu 8: So sánh các giao thức UART, SPI và I2C

UART, SPI và I2C là 3 chuẩn truyền thông nối tiếp cơ bản nhất với MCU, trong đó:

Câu 9: Hãy giải thích về Interrupt (ngắt) và trình phục vụ ngắt ISR

Ngắt (Interrupt) là một sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu. Quá trình ngắt xảy ra như sau:

Chương trình ngắt trên được gọi là trình phục vụ ngắt ISR viết tắt của Interrupt Service Routine

Câu 10: Bạn nghĩ sao về triển vọng của ngành hệ thống nhúng và IoT

IoT hay Internet of Things là một trong 4 trụ cột của cách mạng công nghiệp 4.0, có tính ứng dụng cao, đóng vai trò quan trọng trong sự phát triển của nền kinh tế, vì vậy chuyên ngành này hứa hẹn sẽ có tốc độ phát triển rất mạnh ở cả trên thế giới lẫn Việt Nam.

IoT sẽ cần phải xây dựng, thiết kế và tạo ra các thiết bị, cỗ máy thông minh có kết nối với Internet phục vụ cho nhiều lĩnh vực khác nhau; và để làm được điều này thì cũng đồng nghĩa với việc xây dựng nhiều các hệ thống nhúng gồm cả phần cứng và phần mềm. Nói cách khác thì 2 ngành này đi liền với nhau, muốn làm IoT thì phải có các hệ thống nhúng. Vì thế trong tương lai, nhu cầu về tuyển dụng ngành hệ thống nhúng sẽ ngày càng lớn hơn.

Kết bài

Trên đây là list 10 câu hỏi bạn sẽ thường gặp phải nhất khi đi phỏng vấn vị trí lập trình viên Nhúng – Embedded System Developer. Hy vọng bài viết này sẽ giúp bạn phần nào đó hoàn thành tốt những câu hỏi đến từ nhà tuyển dụng. Cảm ơn các bạn đã đọc bài và hẹn gặp lại các bạn trong các bài viết tiếp theo của mình.

Bài viết đăng trên blog TopDev: https://topdev.vn/blog/bo-cau-hoi-phong-van-embedded-developer-chinh-phuc-nha-tuyen-dung/

Exit mobile version