List câu hỏi phỏng vấn NodeJS Developer hay và khó

15285

NodeJS là một platform được viết bằng JavaScript để viết các ứng dụng Internet có khả năng mở rộng, đặc biệt là ở phía máy chủ web (server). Sự ra đời của NodeJS giúp các lập trình viên Frontend trước đây sử dụng JavaScript có thể dễ dàng học và viết code phía server cho Backend. Nhờ vậy mà nhu cầu tuyển dụng NodeJS hiện nay luôn ở mức cao và nhiều đãi ngộ hấp dẫn. Bài viết hôm nay mình cùng các bạn tìm hiểu qua list câu hỏi dành cho NodeJS Developer để có thể chuẩn bị buổi phỏng vấn một cách tốt nhất nhé.

Câu 1: NodeJS là gì? Nó có thể làm được những gì?

NodeJS là một môi trường để chạy các đoạn code JavaScript được xây dựng dựa trên Engine V8 của Chrome. NodeJS được tạo ra từ những năm 2009, là một mã nguồn mở hỗ trợ đa nền tảng.

Khác với hầu hết các chương trình JavaScript, NodeJS không chạy trên một trình duyệt mà chạy trực tiếp trên Server; điều này có ý nghĩa rất lớn đối với các lập trình viên học ngôn ngữ JavaScript khi giờ đây họ có thể dùng chính ngôn ngữ lập trình của mình để làm cả client và server; hay nói cách khác là trở thành một Fullstack Developer một cách dễ dàng hơn bao giờ hết.

NodeJS lập trình theo hướng sự kiện và mô hình I/O non-blocking; nó được đánh giá là nhẹ và rất hiệu quả; vì thế NodeJS có thể được sử dụng để xây dựng các loại ứng dụng khác nhau như ứng dụng web, ứng dụng thời gian thực (realtime), máy chủ API REST, …

Câu 2: Hãy giải thích về mô hình I/O non-blocking trong NodeJS

Blocking là khái niệm đề cập đến hành động chặn thực thi các hoạt động tiếp theo để chờ 1 hoạt động kết thúc; ngược lại thì non-blocking chỉ việc sẽ không chặn. Trong Node, Non-blocking chủ yếu đề cập đến các hoạt động nhập xuất dữ liệu (I/O – input/output); tất cả các function xử lý I/O trong thư viện chuẩn của NodeJS đều cung cấp phiên bản đồng bộ, bất đồng bộ và chấp nhận các hàm callback. 

Thay vì việc cần chờ các hoạt động nhập xuất dữ liệu thực hiện xong thì các hoạt động tiếp theo vẫn có thể được thực thi ngay lập tức; riêng luồng I/O ở trên sẽ được ủy quyền cho hệ thống để thực hiện riêng song song, khi hoàn tất sẽ thực hiện việc gọi lại function callback để xử lý hành động tiếp theo.

  NodeJS version manager: Quản lý đa phiên bản NodeJS trên máy tính

Câu 3: Lập trình hướng sự kiện là gì?

Trong lập trình, events là các hành động do người dùng hoặc hệ thống tạo ra, ví dụ như click một button, hover chuột lên đoạn văn bản, một lần người dùng upload tệp lên website, … Ứng dụng do chúng ta viết ra luôn phải quan tâm đến các events xảy ra bên trong, do người dùng hoặc từ các nguồn khác tác động đến để xử lý các hành động thực thi tương ứng.

Lập trình hướng sự kiện (event-driven programming) là mô hình lập trình mà trong đó luồng thực thi chương trình được xác định bởi các sự kiện (events). NodeJS xây dựng dựa trên lập trình hướng sự kiện, tức là source code viết ra để đáp ứng với các sự kiện tác động lên ứng dụng, chúng ta cần viết code lấy thông tin của các sự kiện cùng tham số đầu vào, tiếp đến là xử lý thực thi hành động và trả về kết quả tương ứng.

  Một thủ thuật nhỏ để tối ưu code nodejs

Câu 4: NodeJS hỗ trợ đa luồng không?

NodeJS ban đầu chỉ hỗ trợ đơn luồng (single thread) và chỉ xử lý nhiều hoạt động bằng các quy trình không đồng bộ và không hỗ trợ đa luồng. Bắt đầu từ version 13, NodeJS có bổ sung thêm 1 module mới được gọi là worker thread để support xử lý đa luồng.

Module worker thread giúp cô lập chức năng sử dụng CPU dung lượng cao thành một luồng xử lý riêng biệt và chạy trong chế độ nền (background mode) và sẽ không làm nghẽn bất kỳ các quy trình nào khác. 

Tuyển dụng NodeJS lương cao hấp dẫn cho bạn

Câu 5: NPM là gì?

NPM hay Node Package Manager là chương trình quản lý thư viện ngầm định trong môi trường NodeJS; nó bao gồm một command line từ client (npm) và cơ sở dữ liệu trực tuyến chứa các gói public và private còn được gọi là npm registry.

NPM mang đến cho lập trình viên NodeJS một kho thư viện mở được đóng gói dưới dạng các package. Các lập trình viên từ khắp mọi nơi trên thế giới có thể đóng góp các package, chia sẻ miễn phí và sẽ được sử dụng lại ở các dự án khác nhau bằng cách khai báo trong file package.json.

Câu 6: REPL trong NodeJS là gì?

REPL là viết tắt của Read, Eval, Print và Loop là một đặc tính của NodeJS cho phép lập trình viên viết code và chạy trực tiếp trên màn hình shell/console/terminal để debug, kiểm tra code mà không cần tạo ra bất cứ file hay folder nào.

Khi gõ code JavaScript lên màn hình shell, NodeJS sẽ thực hiện việc đọc thông tin (Read) và tự động lưu trữ trong bộ nhớ; tự động đánh giá cấu trúc dữ liệu và sự hợp lệ của các dòng lệnh (Eval); xử lý thực thi code sau đó in ra kết quả nếu có (Print) và hỗ trợ lặp lại các dòng lệnh trên để thực thi chương trình (Loop).

Câu 7: Các framework nổi tiếng chạy trên NodeJS

Với những ưu điểm của mình, có nhiều framework được tạo ra chạy trên nền NodeJS chủ yếu là hỗ trợ xây dựng ứng dụng phía server bằng JavaScript. Có thể kể ra một số framework như dưới đây:

  • ExpressJS: thiết kế để xây dựng các ứng dụng một trang (single page application), đồng thời cung cấp bộ tính năng phong phú hỗ trợ các ứng dụng web và di động. ExpressJS cũng thường được sử dụng để xây dựng các APIs một cách tối giản và nhanh chóng
  • KoaJS: đây cũng là một web framework và được phát triển bởi chính team phát triển Express. Koa nổi bật hơn ở khả năng sử dụng middleware theo từng tầng và kiểm soát lỗi tốt hơn. Ngoài ra phong cách code của Koa sáng sủa và dễ kiểm soát hơn so với Express.
  • Sails: là một MVC framework cho NodeJS giúp đơn giản hóa việc xây dựng ứng dụng, khả năng mở rộng mạnh mẽ.
  • Meteor: đây là một nền tảng cho phép xây dựng các ứng dụng kết hợp NodeJS với một frontend framework như Angular, React, … sử dụng MongoDB làm cơ sở dữ liệu mặc định

Câu 8: Stream trong NodeJS là gì?

Stream là các đối tượng cho phép bạn đọc dữ liệu từ một nguồn và ghi dữ liệu đến một đích. Trong NodeJS, Steam có 4 loại:

  • Readable: sử dụng cho hoạt động đọc
  • Writable: sử dụng cho hoạt động ghi
  • Duplex: sử dụng cho cả 2 mục địch đọc và ghi
  • Transform: là một kiểu Duplex Stream, hỗ trợ tính toán kết quả đầu ra dựa trên dữ liệu đầu vào

Kết bài

Trên đây là danh sách những câu hỏi phỏng vấn mà bạn thường gặp nhất cho vị trí NodeJS Developer. NodeJS thường sẽ được hỏi cùng các kiến thức liên quan đến JavaScript, vì thế bạn cũng nên chuẩn bị thêm các câu hỏi về ngôn ngữ lập trình này. Hy vọng bài viết đã mang lại những kiến thức hữu ích dành cho bạn.

Tác giả: Phạm Minh Khoa

Có thể bạn quan tâm:

Xem thêm việc làm Developer trên TopDev