Logo

Tuyển tập 101 câu hỏi phỏng vấn Nodejs thường gặp

Lượt xem: 1115
Ngày đăng: 17/03/2024

Tổng hợp các câu hỏi phỏng vấn Nodejs, Fresher Nodejs, Nodejs Senior thường gặp, những câu hỏi phỏng vấn Nodejs phổ biến, được hỏi nhiều nhất.

Tuyển tập 101 câu hỏi phỏng vấn Nodejs thường gặp

➤➤➤ Xem thêm: 1001 câu hỏi phỏng vấn thường gặp và cách trả lời hay nhất - Kinh nghiệm phỏng vấn ViecLamVui

Câu hỏi phỏng vấn chuyên môn về Nodejs

Sau đây là các câu hỏi phỏng vấn Node.js thường gặp kèm câu trả lời chi tiết

Câu hỏi phỏng vấn Nodejs thường gặp

Câu hỏi phỏng vấn Nodejs thường gặp

NodeJS là gì?

NodeJS là một mã nguồn được xây dựng trên Javascript Engine (V8 Engine). NodeJS cũng được biết đến như một nền tảng (Platform) được phát triển năm 2009 bởi Ryan Dahl. Node.js dựa trên Chrome Javascript runtime phát triển các ứng dụng web, tận dụng kiến trúc hướng sự kiện (event-driven), mô hình non-blocking I/O để tạo ra các ứng dụng nhẹ và hiệu quả. Những ứng dụng Node.js được viết bằng Javascript, chúng có thể chạy trong môi trường Nodejs trên hệ điều hành Window, Linux,...

NodeJs đơn luồng hay đa luồng?

Nodejs đơn luồng thể hiện ở việc nó chỉ có một tác vụ Javascript được xử lý tại một thời điểm nhất định. Nodejs đa luồng thể hiện ở việc nó cung cấp API cluster và child_process để tạo các quy trình con. Trên phiên bản 13 của Node.js có mô-đun “worker thread” để triển khai đa luồng.

Nêu ​​các kiểu dữ liệu trong Node.js

Giống như JavaScript, Node.js có những kiểu dữ liệu sau: 

Kiểu dữ liệu nguyên thủy:

  • String: biểu diễn chữ, văn bản, đoạn văn bản
  • Number: các số bất kỳ
  • Bigint: biểu diễn số nguyên lớn
  • Boolean: true/ false
  • Undefined: các giá trị chưa được gán
  • Null: các giá trị không xác định
  • Symbol: tạo ra các giá trị duy nhất (unique value) và bất biến (immutable)

Kiểu dữ liệu tham chiếu (Objects): tập hợp của các cặp key-value

  • Function
  • Array
  • Buffer

Các tính năng chính của Node.js là gì?

Hiện nay, Node.js đã và đang trở thành lựa chọn hàng đầu của nhiều kỹ sư phần mềm cũng như lập trình viên. Một vài tính năng nổi bật của Node.js phải đề cập đến là: 

Lập trình hướng sự kiện và không đồng bộ: Tất cả các API đều không đồng bộ. Tính năng lập trình hướng sự kiện và không đồng bộ có nghĩa là nếu Node nhận được yêu cầu nào đó, nó sẽ thực hiện ở chế độ nền và tiếp tục xử lý những yêu cầu khác. Chính bởi vậy nên Node sẽ không phải chờ đợi phản hồi từ các yêu cầu trước.

Thực thi mã cực kỳ nhanh chóng: Node.js sử dụng công cụ V8 JavaScript Runtime. Chính điều này giúp cho quá trình thực thi mã trở nên cực kỳ nhanh chóng, việc tiếp nhận cũng như xử lý các yêu cầu cũng nhanh hơn rất nhiều.

Một luồng nhưng có khả năng mở rộng cao: Dù sử dụng mô hình luồng đơn để lặp lại sự kiện nhưng khả năng mở rộng của Nodejs cực kỳ ấn tượng, phản hồi về sự kiện sẽ nhanh chóng được gửi đến máy chủ. Trong khi các loại máy chủ truyền thống sẽ tạo ra luồng giới hạn để xử lý các yêu cầu thì Nodejs chỉ tạo một luồng đơn duy nhất.

Không có buffer: Phần lớn các ứng dụng Node.js không có vùng nhớ tạm hay còn gọi là buffer cho bất kỳ loại dữ liệu nào. Các dữ liệu sẽ được xuất theo khối, ứng dụng Node.js không đệm bất kỳ dữ liệu nào.

License: Node.js được phát hành theo giấy phép MIT

Tại sao nên sử dụng Expressjs?

ExpressJS là một framework NodeJS, khi đi phỏng vấn NodeJS bạn sẽ thường được nhà tuyển dụng đặt các câu hỏi liên quan đến ExpressJS. Thông thường, ExpressJS được sử dụng để xây dựng và thiết kế web, mục đích chính là tạo ra những ứng dụng web thông minh hơn. Framework này sẽ mang đến sự đơn giản và linh hoạt. 

Expressjs là khuôn khổ của Node.js nên các mã code đã được viết sẵn. Expressjs sẽ hỗ trợ các lập trình viên có thể nhanh chóng tạo ra ứng dụng web (1 ứng dụng web hoặc nhiều ứng dụng web). Ưu điểm của Expressjs chính là dung lượng nhẹ nên giúp cho quá trình tổ chức các ứng dụng web theo kiến trúc MVC trở nên đơn giản hơn. Nếu như không có Expressjs, lập trình viên sẽ phải thực hiện rất nhiều thao tác phức tạp hơn để có thể xây dựng một API hiệu quả.

Vòng lặp sự kiện trong Node.js là gì?

Vòng lặp sự kiện trong Node.js hay còn gọi là Event Loop cho phép Nodejs thực hiện nhiều thao tác cùng một lúc, Nodejs có thể một lúc xử lý cả ngàn request dù chỉ dùng một thread duy nhất. Vòng lặp sự kiện trong Node.js cho phép Node.js thực hiện những hoạt động I/O không chặn. Về bản chất thì Node.js là một ứng dụng đơn luồng, nhưng Node.js có thể hỗ trợ xử lý đồng thời thông qua định nghĩa về event và callbacks. Mọi API của Node.js là không đồng bộ và là một luồng, chúng sử dụng async function calls để duy trì đồng thời.

EventEmitter trong nodejs là gì?

Người dùng có thể dễ dàng tạo hoặc xử lý các sự kiện thông qua việc sử dụng module event. Thông thường Module event sẽ bao gồm lớp EventEmitter. Tất cả các đối tượng phát ra event đều là thành viên của lớp EventEmitter. Khi EventEmitter phát ra một sự kiện, tất cả các hàm gắn liền với sự kiện được gọi đồng bộ. Tất cả các giá trị được trả về bởi các trình nghe được gọi sẽ bị bỏ qua và bị loại bỏ.

REPL Terminal trong Node.js là gì?

REPL Terminal là viết tắt của Read Eval Print Loop (READ, EVAL, PRINT, LOOP), nó thể hiện một môi trường máy tính tương tự như màn hình console của Shell (Unix / Linux). REPL đặc biệt hữu ích khi bạn muốn viết hoặc gỡ lỗi của các mãi. Cụ thể vai trò cũng như tầm quan trọng của REPL thể hiện qua: 

  • READ (đọc): Đọc thông tin đầu vào và phân tích chúng thành cấu trúc dữ liệu JavaScript, sau đó lưu vào bộ nhớ
  • EVAL (Đánh giá): Tiến hành đánh giá toàn bộ cấu trúc dữ liệu
  • PRINT (In): In kết quả sau khi được đánh giá
  • LOOP (Vòng lặp): Lặp các dòng lệnh, nếu muốn thoát hãy gõ ctrl+C hai lần

RESTful Web Service trong Node là gì?

REST (REpresentational State Transfer) là kiến ​​trúc dựa trên tiêu chuẩn web và sử dụng Giao thức HTTP. Máy chủ REST chỉ đơn giản là cung cấp quyền truy cập vào tài nguyên và máy khách REST truy cập và sửa đổi tài nguyên bằng giao thức HTTP.

  • Phương thức HTTP
  • GET- Cung cấp quyền truy cập chỉ đọc vào một tài nguyên.
  • PUT- Cập nhật tài nguyên hiện có hoặc tạo tài nguyên mới.
  • DELETE- Loại bỏ một tài nguyên.
  • POST- Tạo ra một nguồn tài nguyên mới.
  • PATCH- Cập nhật / sửa đổi tài nguyên
  • Nguyên tắc của REST
  • Giao diện thống nhất
  • Không quốc tịch
  • Có thể lưu vào bộ nhớ đệm
  • Máy khách-Máy chủ
  • Hệ thống phân lớp
  • Mã theo yêu cầu (tùy chọn)

Sự khác nhau giữa ​​Events và Callbacks là gì?

Khi tiếp cận với Node.js, bạn hẳn sẽ không xa lạ với hai khái niệm event và Callbacks. Đâu là sự khác biệt giữa event và Callbacks? Đầu tiên, bạn cần hiểu rõ về hai khái niệm này. 

Callback là hàm gọi lại, đây là hàm được truyền vào hàm khác dưới dạng đối số. Thông thường, hàm này sẽ được thực thi sau khi một hàm khác đã được thực thi xong, chính vậy nên nó được đặt tên là hàm gọi lại. 

Event: Mỗi một hành động đều là một sự kiện, Node.js cho phép tạo và tiến hành xử lý các sự kiện bằng cách sử dụng các mô-đun sự kiện. 

Hàm Callback được gọi khi một hàm không đồng bộ được thực thi và trả về kết quả khi có event xảy ra. Khi event được kích hoạt, các hàm lắng nghe sẽ được thực thi.

Các câu hỏi phỏng vấn Nodejs cơ bản

Sau đây là các câu hỏi phỏng vấn Node.js cơ bản

Các câu hỏi phỏng vấn Nodejs cơ bản

Các câu hỏi phỏng vấn Nodejs cơ bản

Kể tên những tính năng của Node JS?

Node JS là một hệ thống đơn luồng nhưng có khả năng mở rộng cao, sử dụng JavaScript làm ngôn ngữ kịch bản. Nó sử dụng đầu vào/đầu ra theo sự kiện không đồng bộ và có thể đạt được đầu ra cao thông qua vòng lặp sự kiện đơn luồng và I/O không bị chặn.

Tại sao mọi người nên sử dụng Node JS?

Node JS được sử dụng nhiều bởi nó có rất nhiều ưu điểm nổi trội như nhanh, cung cấp một ngôn ngữ lập trình và kiểu dữ liệu thống nhất, không đồng bộ, hiếm khi bị chặn,..

Sự khác nhau giữa phát triển “front-end” và “back-end” là gì?

Đây là một câu hỏi có thể khiến bạn mất cảnh giác vì nó không liên quan trực tiếp đến Node JS. Tuy nhiên, nếu bạn là một nhà phát triển thì nó cũng là một câu hỏi không quá khó khăn.

Front-end quan tâm đến phía khách hàng (người dùng) của trang web. Họ làm việc, phát triển và duy trì mọi thứ mà khách hàng nhìn thấy, hay có thể hiểu lại họ chịu trách nhiệm về các phần trực quan (thiết kế) và chức năng (như các nút, biểu ngữ,...) của trang. 

Ngược lại, back-end tập trung vào những thứ mà khách hàng không nhìn thấy - các quy trình diễ ra phía sau trang web. Back-end cũng chịu trách nhiệm về chức năng của trang web, chỉ từ góc độ rộng hơn, gần với cốt lõi hơn.

Node.js có phải là đa luồng không?

Hầu hết các nhà phát triển JavaScript trước nay vẫn cho rằng Node.js là luồng đơn - single thread, 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.

Thuật ngữ “callback” là gì trong Node.js?

“Callback” là một hàm gọi lại được gọi sau một tác vụ nhất định. Nó cho phép mã khác được chạy trong thời gian chờ đợi và ngăn chặn bất kỳ sự chặn nào. Node.js là một nền tảng không đồng bộ nên nó chủ yếu dựa vào callback, tất cả các API của Node đều được viết để hỗ trợ các lệnh gọi lại.

Định nghĩa thuật ngữ I/O như thế nào?

I/O là thuật ngữ dùng để mô tả bất kỳ chương trình, hoạt động hoặc thiết bị nào truyền dữ liệu đến hoặc từ một phương tiện và đến một phương tiện khác.

Mọi chuyển giao là một đầu ra từ một phương tiện này và một đầu vào cho một phương tiện khác. Phương tiện có thể là thiết bị vật lý, mạng hoặc các tệp trong hệ thống. 

Mô tả “callback hell” trong Node.js?

“Callback hell” là một thuật ngữ rất thú vị của Node.js. “Callback hell” xảy ra khi một lượng lớn các callback lồng vào nhau ở một vị trí cụ thể, do đó không thể đọc và nhìn chung không thể làm việc được với chúng.

Với câu hỏi này, bạn có thể thể hiện năng lực của mình khi tiếp tục trả lời và đề cập rằng callback hell có thể được giải quyết. Điều này được thực hiện với sự trợ giúp của cái được gọi là quá trình mô đun hóa, chia các callback thành các chức năng riêng biệt, độc lập với nhau.

Thuật ngữ “stubs” là gì trong Node.js?

Khi được hỏi câu hỏi này, bạn có thể giải thích “stubs” là các chức năng nhất định bắt chước hành vi của các mô-đun cụ thể. Stubs thường được sử dụng trong các trường hợp thử nghiệm vì chúng có thể cung cấp các câu trả lời cần thiết để giải quyết một số vấn đề có thể phát sinh trong các mô-đun.

Lập trình “event-driven” là gì trong Node.js?

Khi đã có được câu trả lời về “event” và “callback” thì đây sẽ là một câu hỏi không quá khó khăn. Giống như tên gọi của mình, “event-driven programming” là lập trình hướng sự kiện, đây là một hình thức lập trình được quan tâm và dựa trên các sự kiện. Bất cứ khi nào một sự kiện xảy ra, sẽ có các callback được cấp cho máy chủ chính, lần lượt lấy thông tin cần thiết cho sự kiện cụ thể đó.

Giải thích “event” là gì trong Node.js?

“Event” có nghĩa là “sự kiện”, là một trong những chức năng chính của Node.js. Chúng tượng trưng cho một số loại hành động được thực hiện hoặc di chuyển được trong trang web.

Giải thích “worker processes” là gì?

“Worker processes” là một thuật ngữ đơn giản hơn, chúng là các quy trình đang chạy trên nền trong khi bạn đang làm một cái khác. Chúng có thể gửi email, đặt biến và rất hữu ích vì tiết kiệm cho các nhà phát triển web rất nhiều thời gian và năng lượng.

Vấn đề của Node JS vốn là “single-threaded” nghĩa là gì?

Đây lại là một câu hỏi khó trong phỏng vấn Node JS. “Single-threading” cho phép Node JS thực hiện xử lý async. Nếu bạn làm việc trên một tải web mặc định thì single-threading cho phép một quy trình làm việc mượt mà và nhanh hơn, đây cũng chính là điều mà các web developer tìm kiếm.

Chức năng của Node Package Manager trong Node JS là gì?

Khi được hỏi về vấn đề này, bạn hãy trả lời Node Package Manager (NPM) là một công cụ dùng để quản lý trong Node JS. NMP cung cấp hai chức năng chính, một kho lưu trữ trực tuyến cho các gói Node JS, và hai là tiện ích dòng lệnh để cài đặt các gói, phiên bản và quản lý phụ thuộc cho các gói Node JS.

Giải thích “stream” là gì và phân loại của nó?

Stream (Dòng) là một đối tượng cho phép đọc dữ liệu từ nguồn và ghi dữ liệu đến đích dưới dạng một quá trình liên tục.

Stream được phân thành 4 loại khác nhau:

  • Có thể viết - để tạo điều kiện cho hoạt động viết.
  • Có thể đọc - để tạo điều kiện cho hoạt động đọc.
  • Song song - để tạo điều kiện cho các hoạt động viết và đọc.
  • Chuyển đổi - đó là một dạng của dòng song song thực hiện các tính toán dựa trên đầu vào có sẵn.

Giải thích Express.js là gì?

Câu hỏi này khá đặc biệt vì nó không liên quan trực tiếp đến bất kỳ chức năng Node nào. Tuy nhiên, các ứng viên vẫn cần phải biết “Express.js “là gì vì nó được thiết kế rõ ràng cho Node JS. Có thể hiểu “Express.js” là một khung framework nhẹ được tạo ra để giúp Node giải quyết một số nhiệm vụ trong phát triển web, được dùng để hỗ trợ phát triển cả trang web và ứng dụng di động.

Chaining là gì trong Node.js?

Với câu hỏi này bạn không cần giải thích quá dài dòng, “Chaining” đơn giản là một cơ chế theo đó đầu ra của một dòng được kết nối với dòng khác tạo ra một chuỗi các dòng hoạt động.

Có thể tạo kết nối thời gian thực 2 chiều với client qua HTTP không?

Câu trả lời là có. Có thể sử dụng WebSocket, các thư viện như socket.io và SignalR hỗ trợ kết nối 2 chiều. Nó cung cấp cho các client khả năng bắt lỗi và thay thế nếu WebSocket không phù hợp với trình duyệt.

Dùng worker thread với một child process có ưu điểm gì?

Đây là một câu trả lời khó và phức tạp, nếu bạn là một lập trình viên đã có kinh nghiệm xử lý những tình huống tương tự thì có thể trả lời phương pháp của mình, còn nếu bạn chưa từng tiếp xúc với vấn đề trên thì hãy khéo léo chuyển hướng câu hỏi sang hướng khác.

Những câu hỏi phỏng vấn Nodejs nâng cao

Sau đây là các câu hỏi phỏng vấn Nodejs nâng cao

Giải thích “demultiplexer” là gì?

Đây là một thuật ngữ nâng cao dành cho các nhà phát triển web đã có kinh nghiệm trong Node.js. “Demultiplexer” là giao diện phát hành thông báo trong Node.js được sử dụng để thu thập thông tin từ các sự kiện và mẫu ques, từ đó cung cấp Event Que.

Sự khác nhau giữa chức năng “blocking” và “non-blocking” là gì?

Đây là một câu hỏi đòi hỏi ứng viên cần so sánh được hai chức năng này. Khi bạn phát hành một chức năng blocking function, mọi đoạn mã code khác sẽ ngừng chạy và được giữ lại cho đến khi sự kiện I/O được chỉ định cụ thể hoàn thành. Ngược lại với blocking, các chức năng non-blocking functions cho phép các nhà phát triển thực hiện nhiều nhiệm vụ (giữ cho nhiều mã khác nhau hoạt động) đồng thời thực hiện cùng lúc một số sự kiện I/O.

Node JS có sở hữu “child threads” không?

Đây là một câu hỏi có thể đánh lừa nếu bạn không cẩn thận. Mặc dù Node JS là một dịch vụ sigle-thread, nó vẫn có các luồng con child thread - đơn giản vì những child thread này không được hiển thị cho các developer. Vì vậy, nếu trả lời là “không” thì bạn đã nhầm rồi đấy!

Các triển khai bảo mật chính trong Node.js là gì?

Có hai triển khai bảo mật thật trong Node.js là authentications (Xác thực) và error handling (Xử lý lỗi). Đây là hai phương thức phổ biến nhất và hoạt động khá tốt liên quan đến quản lý bảo mật trong Node.js.

Giải thích “REPL” là gì và nó làm nhiệm vụ gì?

REPL là viết tắt của “Read, Evaluate, Print, Loop”, được sử dụng để thực hiện các câu lệnh JavaScript cụ thể.

Câu hỏi phỏng vấn Nodejs mới nhất

Sau đây là những câu hỏi phỏng vấn Nodejs phổ biến

Các triển khai bảo mật chính trong Node JS là gì?

Những cái chính bao gồm (nhưng không giới hạn) là authentications (Xác thực) và error handling (Xử lý lỗi). Đây là hai phương thức phổ biến nhất liên quan đến quản lý bảo mật trong Node JS - và chúng hoạt động khá tốt!

Cách xây dựng ứng dụng Nodejs ngay từ ban đầu là gì?

Đầu tiên chúng ta sẽ tạo một project mới rồi di chuyển đến folder trong dòng lệnh và chạy npm init. Tiếp tục làm các bước để nhập đủ các thông tin cần thiết.

Cài đặt một thư viện trong Nodejs bằng cách nào?

Để cài đặt được thư viện trong nodejs chúng ta sẽ sử dụng npm install name-of-the-library. Sau đó thêm nó vào như môt phụ thuộc dependency. Ta có thể thêm thêm tham số --save-dev vào để nó nằm trong dev Dependency.

Npm nghĩa là gì? Dùng để làm gì?

Npm là viết tắt của Node.js Package Manager. Bao gồm giao diện dòng lệnh cho phép chúng ta truy cập gói đã được đăng ký public và private online. Nó dùng để cài đặt các thư viện phụ thuộc trong file package.json

1001 CÂU HỎI PHỎNG VẤN

Tổng hợp các câu hỏi phỏng vấn Nodejs, Fresher Nodejs, Nodejs Senior thường gặp, những câu hỏi phỏng vấn Nodejs phổ biến, được hỏi nhiều nhất

Trên đây là câu hỏi phỏng vấn Nodejs thường gặp, ViecLamVui - chuyên trang tìm việc nhanh miễn phí - gửi đến bạn. Hy vọng tài liệu trên có thể hỗ trợ việc học tập và nghiên cứu của các bạn thật hiệu quả.

#ViecLamVui

Bạn có thể đăng tin tuyển dụng miễn phí, tìm việc làm miễn phí các vị trí công việcViệc Làm IT. Bài viết thuộc danh mụcBlog Việc Làm IT trên ViecLamVui