× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Các câu hỏi phỏng vấn Node.js thường gặp nhất và câu trả lời.

02/07/2024 01:21

Bạn đang cần tìm việc làm với Node.js. Dưới đây là danh sách các câu hỏi phỏng vấn Node.js thường gặp nhất và câu trả lời. Khám phá ngay

1) Node.js là gì?

Node.js là kịch bản phía máy chủ được sử dụng để xây dựng các chương trình có thể mở rộng. Đây là một khung ứng dụng web được xây dựng trên JavaScript Engine của Google Chrome. Nó chạy trong thời gian chạy Node.js trên Mac OS, Windows và Linux mà không có bất kỳ thay đổi nào. Thời gian chạy này giúp bạn thực thi mã JavaScript trên bất kỳ máy nào bên ngoài trình duyệt.


2) Node.js có miễn phí không?

Có. Nó được phát hành theo giấy phép MIT và miễn phí sử dụng.


3) Node có phải là ứng dụng luồng đơn không?

Có. Node là ứng dụng luồng đơn với vòng lặp sự kiện.


4) Mục đích của Node.js là gì?

Sau đây là các mục đích của Node.js:

  • Ứng dụng web thời gian thực
  • Ứng dụng mạng
  • Hệ thống phân phối
  • Ứng dụng mục đích chung

5) Ưu điểm của Node.js là gì?

Sau đây là những ưu điểm chính của Node.js:

  • Node.js là không đồng bộ và hướng sự kiện. Tất cả các API của thư viện Node.js đều không chặn và máy chủ của nó không đợi API trả về dữ liệu. Nó chuyển sang API tiếp theo sau khi gọi API đó và cơ chế thông báo Sự kiện của Node.js phản hồi máy chủ từ lệnh gọi API trước đó.
  • Node.js rất nhanh vì nó được xây dựng trên công cụ JavaScript V8 của Google Chrome. Thư viện của nó thực thi mã rất nhanh.
  • Node.js là công nghệ đơn luồng nhưng có khả năng mở rộng cao.
  • Node.js cung cấp tiện ích không đệm. Ứng dụng của nó không bao giờ đệm bất kỳ dữ liệu nào. Nó xuất dữ liệu thành từng phần.

6) Giải thích kiến ​​trúc ứng dụng web Node.js?

Một ứng dụng web được phân chia thành 4 lớp:

  • Lớp máy khách: Lớp máy khách bao gồm các trình duyệt web, trình duyệt di động hoặc các ứng dụng có thể gửi yêu cầu HTTP tới máy chủ web.
  • Lớp máy chủ: Lớp máy chủ chứa máy chủ Web có thể chặn yêu cầu do máy khách đưa ra và chuyển phản hồi cho họ.
  • Tầng nghiệp vụ: Tầng nghiệp vụ chứa máy chủ ứng dụng được máy chủ web sử dụng để thực hiện xử lý cần thiết. Tầng này tương tác với tầng dữ liệu thông qua cơ sở dữ liệu hoặc một số chương trình bên ngoài.
  • Lớp dữ liệu: Lớp dữ liệu chứa cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu nào.

7) Bạn hiểu thế nào về thuật ngữ I/O?

Thuật ngữ I/O là viết tắt của input và output. Nó được sử dụng để truy cập bất kỳ thứ gì bên ngoài ứng dụng của bạn. I/O 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 hoặc một phương tiện khác. Phương tiện này có thể là một thiết bị vật lý, mạng hoặc tệp trong một hệ thống.

I/O được tải vào bộ nhớ máy để chạy chương trình khi ứng dụng khởi động.


8) Có bao nhiêu loại hàm API có sẵn trong Node.js?

Có hai loại hàm API trong Node.js:

  • Không đồng bộ, các hàm không chặn
  • Đồng bộ, Chức năng chặn

9) Bạn hiểu thế nào về hàm hạng nhất trong JavaScript?

Khi các hàm được xử lý như bất kỳ biến nào khác, thì các hàm đó được gọi là hàm hạng nhất. Ngoài JavaScript, nhiều ngôn ngữ lập trình khác, chẳng hạn như Scala, Haskell, v.v. đều tuân theo mô hình này. Các hàm hạng nhất có thể được truyền dưới dạng tham số cho một hàm khác (gọi lại) hoặc một hàm có thể trả về một hàm khác (hàm bậc cao hơn). Một số ví dụ về các hàm bậc cao được sử dụng phổ biến là map() và filter().


10) Sự khác biệt giữa JavaScript và Node.js là gì?

Sự khác biệt giữa JavaScript và Node.js

Bảng sau đây chỉ ra những khác biệt quan trọng giữa JavaScript và Node.js:

Tính năng so sánh JavaScript Node.js
Kiểu JavaScript là một ngôn ngữ lập trình. Chính xác hơn, bạn có thể nói rằng đó là một ngôn ngữ kịch bản được sử dụng để viết các kịch bản trên trang web. Node.js là trình thông dịch và môi trường chạy cho JavaScript.
Tính thiết thực JavaScript được sử dụng cho mọi hoạt động phía máy khách của ứng dụng web. Node.js được sử dụng để truy cập hoặc thực hiện bất kỳ hoạt động không chặn nào của bất kỳ hệ điều hành nào.
Động cơ đang chạy Công cụ chạy JavaScript là Spider monkey (Firefox), JavaScript Core (Safari), V8 (Google Chrome), v.v. Công cụ chạy cho Node.js là V8 (Google Chrome).
Tính tương thích của trình duyệt web JavaScript chỉ có thể chạy trên trình duyệt. Mã Node.js có thể chạy bên ngoài trình duyệt.
Phụ thuộc nền tảng JavaScript về cơ bản được sử dụng ở phía máy khách và trong phát triển giao diện người dùng. Node.js chủ yếu được sử dụng ở phía máy chủ và được dùng trong phát triển phía máy chủ.
Khả năng tương thích HTML JavaScript có đủ khả năng để thêm HTML và xử lý DOM. Node.js không đủ tương thích để thêm thẻ HTML.
Ví dụ Một số ví dụ về các framework JavaScript là RamdaJS, TypedJS, v.v. Một số ví dụ về các mô-đun Node.js là Lodash, express, v.v. Chúng ta phải import các mô-đun này từ npm.
Viết vào JavaScript là phiên bản nâng cấp của tập lệnh ECMA sử dụng công cụ V8 của Chrome và được viết bằng C++. Node.js được viết bằng C, C++ và Javascript.

11) Giải thích cách hoạt động của Node.js?

Quy trình làm việc của máy chủ web Node.js thường trông giống như sơ đồ sau. Chúng ta hãy xem luồng hoạt động chi tiết:

  • Theo sơ đồ trên, các máy khách gửi yêu cầu đến máy chủ web để tương tác với ứng dụng web. Các yêu cầu này có thể không chặn hoặc chặn và được sử dụng để truy vấn dữ liệu, xóa dữ liệu hoặc cập nhật dữ liệu.
  • js tiếp nhận các yêu cầu đến và thêm chúng vào Hàng đợi sự kiện.
  • Sau bước này, các yêu cầu được truyền từng cái một qua Event Loop. Nó kiểm tra xem các yêu cầu có đủ đơn giản để không yêu cầu bất kỳ tài nguyên bên ngoài nào không.
  • Vòng lặp sự kiện sau đó xử lý các yêu cầu đơn giản (hoạt động không chặn), chẳng hạn như I/O Polling và trả về phản hồi cho các máy khách tương ứng.
  • Một luồng duy nhất từ ​​Thread Pool được gán cho một yêu cầu phức tạp duy nhất. Luồng này chịu trách nhiệm hoàn thành một yêu cầu chặn cụ thể bằng cách truy cập các tài nguyên bên ngoài, chẳng hạn như tính toán, cơ sở dữ liệu, hệ thống tệp, v.v.
  • Khi nhiệm vụ hoàn tất, phản hồi sẽ được gửi đến Event Loop để gửi phản hồi đó trở lại máy khách.

12) Bạn có thể quản lý các gói trong dự án Node.js của mình như thế nào?

Chúng ta có thể quản lý các gói trong dự án Node.js của mình bằng cách sử dụng một số trình cài đặt gói và tệp cấu hình của chúng theo đó. Hầu hết chúng sử dụng npm hoặc yarn. Cả npm và yarn đều cung cấp hầu hết các thư viện JavaScript với các tính năng mở rộng để kiểm soát các cấu hình cụ thể theo môi trường. Chúng ta có thể sử dụng package.json và package-lock.json để duy trì các phiên bản lib đang được cài đặt trong một dự án. Vì vậy, không có vấn đề gì khi chuyển ứng dụng đó sang một môi trường khác.


13) Tại sao Node.js lại là luồng đơn?

Node.js là một ứng dụng luồng đơn với vòng lặp sự kiện để xử lý bất đồng bộ. Ưu điểm lớn nhất của việc xử lý bất đồng bộ trên một luồng duy nhất dưới tải web thông thường là bạn có thể đạt được hiệu suất và khả năng mở rộng cao hơn so với triển khai dựa trên luồng thông thường.


14) Bạn hiểu thế nào về callback hell trong Node.js?

Địa ngục gọi lại là một hiện tượng tạo ra rất nhiều vấn đề cho nhà phát triển JavaScript khi anh ta cố gắng thực hiện nhiều hoạt động bất đồng bộ liên tiếp nhau. Một hàm được gọi là hàm bất đồng bộ khi một số hoạt động bên ngoài phải hoàn tất trước khi xử lý kết quả. Nó được gọi là bất đồng bộ vì có một khoảng thời gian không thể đoán trước trước khi kết quả khả dụng. Các hàm này yêu cầu một hàm gọi lại để xử lý lỗi và xử lý kết quả.

15) Node.js tốt hơn các nền tảng phổ biến khác như thế nào?

Dựa trên các tiêu chí sau, chúng ta có thể nói rằng Node.js tốt hơn các nền tảng phổ biến khác:

  • js giúp phát triển đơn giản vì mô hình I/O không chặn và mô hình dựa trên chẵn. Sự đơn giản này dẫn đến thời gian phản hồi ngắn và xử lý đồng thời, không giống như các khuôn khổ khác mà các nhà phát triển sử dụng quản lý luồng.
  • js chạy trên engine Chrome V8 được viết bằng C++. Nó cải thiện hiệu suất đáng kể với sự cải tiến liên tục.
  • Với Node.js, chúng ta sẽ sử dụng JavaScript trong cả quá trình phát triển frontend và backend, giúp tốc độ nhanh hơn nhiều.
  • js cung cấp nhiều thư viện để chúng ta không cần phải phát minh lại bánh xe.

16) Node.js được sử dụng thường xuyên nhất trong những loại ứng dụng nào?

Node.js được sử dụng thường xuyên và rộng rãi nhất trong các ứng dụng sau:

  • Internet vạn vật
  • Công cụ cộng tác thời gian thực
  • Trò chuyện thời gian thực
  • SPA phức hợp (Ứng dụng trang đơn)
  • Ứng dụng phát trực tuyến
  • Kiến trúc vi dịch vụ, v.v.

17) Một số tính năng thời gian thường dùng của Node.js là gì?

Sau đây là danh sách một số tính năng thời gian thường dùng của Node.js:

  • setTimeout/clearTimeout: Tính năng thời gian này của Node.js được sử dụng để thực hiện độ trễ trong quá trình thực thi mã.
  • setInterval/clearInterval: Tính năng thời gian setInterval hoặc clearInterval được sử dụng để chạy khối mã nhiều lần trong ứng dụng.
  • setImmediate/clearImmediate: Tính năng thời gian này của Node.js được sử dụng để thiết lập thời điểm thực thi mã vào cuối chu kỳ vòng lặp sự kiện.
  • nextTick: Tính năng thời gian này thiết lập thời điểm thực thi mã vào đầu chu kỳ vòng lặp sự kiện tiếp theo.

18) Bạn hiểu thế nào về thuật ngữ fork trong Node.js?

Nói chung, fork được sử dụng để tạo ra các tiến trình con. Trong Node.js, fork được sử dụng để tạo một phiên bản mới của V8 engine để chạy nhiều worker nhằm thực thi mã.

19) Công cụ nào là tốt nhất chúng ta có thể sử dụng để đảm bảo phong cách mã nhất quán trong Node.js?

Công cụ ESLint là một trong những công cụ tốt nhất mà chúng ta có thể sử dụng với bất kỳ IDE nào để đảm bảo phong cách mã hóa nhất quán. Nó cũng giúp duy trì cơ sở mã.


20) Sự khác biệt chính giữa phát triển front-end và back-end là gì?

Bảng sau đây chỉ rõ những khác biệt chính giữa phát triển front-end và back-end:

Phát triển Front-end Phát triển Back-end
Phát triển front-end trong một ứng dụng đề cập đến phía máy khách của ứng dụng. Phát triển phần back-end trong một ứng dụng đề cập đến phía máy chủ của ứng dụng.
Đúng như tên gọi, phát triển front-end là phần của ứng dụng web mà người dùng có thể nhìn thấy và tương tác. Như tên gọi của nó, phát triển back-end bao gồm mọi thứ diễn ra ở hậu trường mà người dùng không thể nhìn thấy và tương tác.
Phát triển front-end bao gồm mọi thứ liên quan đến khía cạnh trực quan của ứng dụng web. Quá trình phát triển phần cuối thường bao gồm một máy chủ web giao tiếp với cơ sở dữ liệu để phục vụ các yêu cầu của người dùng.
HTML, CSS, Bootstrap, jQuery, JavaScript, AngularJS và React.js là những công nghệ phát triển front-end thiết yếu. Java, PHP, Python, C++, Node.js, v.v. là những công nghệ cần thiết cho phát triển back-end.
Ví dụ về một số framework front-end là AngularJS, React.js, jQuery, Sass, v.v. Ví dụ về một số framework back-end là Express, Django, Rails, Laravel, Spring, v.v.