Node.js là một nền tảng máy chủ siêu phổ biến mà ngày càng nhiều tổ chức sử dụng. Nếu bạn đang chuẩn bị bước tiến mới cho sự nghiệp làm Developer của mình và có một cuộc phỏng vấn xin việc Node.js sắp tới, bạn nên chuẩn bị và trau dồi kỹ năng phỏng vấn trước. Dưới đây là một số câu hỏi phỏng vấn Node.js thường gặp trong nhiều loại hình phỏng vấn khác nhau do Kabala Career tổng hợp!
Giải thích các API không đồng bộ và non-blocking trong Node.js
Đây là câu hỏi phỏng vấn Node.js khá phổ biến. Tất cả API trong thư viện Node.js đều không đồng bộ, có nghĩa là chúng cũng không bị chặn (non-blocking).
Máy chủ dựa trên Node.js không bao giờ đợi API trả về dữ liệu. Thay vào đó, nó chuyển sang API tiếp theo sau khi được gọi và cơ chế thông báo từ sự kiện Node.js sẽ phản hồi máy chủ cho lệnh gọi API trước đó
Node.js hoạt động như thế nào?
Câu hỏi phỏng vấn Node.js này kiểm tra kiến thức khái quát của ứng viên về cách Node.js hoạt động. Một máy chủ web sử dụng Node.js thường có quy trình làm việc với các luồng (thread) hoạt động sau đây:
- Khách hàng gửi yêu cầu đến máy chủ web để tương tác với ứng dụng web. Yêu cầu có thể không chặn hoặc chặn:
- Truy vấn dữ liệu
- Xóa dữ liệu
- Cập nhật dữ liệu
- Node.js truy xuất các yêu cầu đến và thêm chúng vào Event Queue
- Các yêu cầu sau đó được chuyể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 cần bất kỳ tài nguyên bên ngoài nào không
- Event Loop xử lý các yêu cầu đơn giản (non-blocking), chẳng hạn như Thăm dò I/O và trả về phản hồi cho các máy khách tương ứng
Một luồng duy nhất (single-thread) từ Nhóm luồng được gán cho một yêu cầu phức tạp duy nhất. Chuỗi này chịu trách nhiệm hoàn thành một yêu cầu chặn (blocking) cụ thể bằng cách truy cập các tài nguyên bên ngoài, chẳng hạn như cơ sở dữ liệu tính toán, hệ thống tệp, v.v.
Khi nhiệm vụ được thực hiện hoàn chỉnh, phản hồi sẽ được gửi đến Event Loop để gửi phản hồi đó trở lại máy khách.
Node.js được sử dụng thường xuyên nhất như thế nào?
Node.js được sử dụng rộng rãi trong các ứng dụng sau:
- Real-time chats
- Internet of Things
- Complex SPAs (Single-Page Applications)
- Real-time collaboration tools
- Streaming applications
- Microservices architecture
Node.js xử lý các child threads như thế nào?
Về bản chất, Node.js là một quy trình xử lý đơn luồng (single-thread). Nó không hiển thị các luồng con và phương thức quản lý luồng cho nhà phát triển. Về mặt kỹ thuật, Node.js sinh ra các luồng con cho một số tác vụ nhất định chẳng hạn như I/O không đồng bộ, nhưng các luồng này chạy ngầm và không thực thi bất kỳ mã JavaScript ứng dụng nào, cũng như chặn Event Loop chính.
Nếu muốn hỗ trợ luồng trong ứng dụng Node.js, thì có sẵn các công cụ để kích hoạt nó, chẳng hạn như mô-đun ChildProcess. Trên thực tế, Node.js 12 có hỗ trợ thử nghiệm cho các luồng.
Một số thư viện được sử dụng phổ biến nhất trong Node.js là gì?
Có hai thư viện thường được sử dụng trong Node.js:
- ExpressJS – Express là một khung ứng dụng web Node.js linh hoạt cung cấp nhiều tính năng để phát triển các ứng dụng web và di động.
- Mongoose – Mongoose cũng là một khung ứng dụng web Node.js giúp dễ dàng kết nối ứng dụng với cơ sở dữ liệu.
REPL trong Node.js là gì?
REPL là viết tắt của Read Eval Print Loop và nó đại diện cho một môi trường máy tính cụ thể. Nó tương tự như một bảng điều khiển Windows hoặc Unix/Linux shell trong đó một lệnh được nhập vào. Sau đó, hệ thống phản hồi với một đầu ra cho máy chủ và máy khách.
Đọc thêm: Câu Hỏi Phỏng Vấn PHP Phổ Biến
Event-loop trong Node JS là gì?
Bất cứ thứ gì không đồng bộ đều được quản lý bởi Event Loop bằng cách sử dụng Queue và trình nghe.
Vì vậy, khi một chức năng không đồng bộ cần được thực thi (hoặc I/O), luồng chính (Main-Thread) sẽ gửi nó đến một luồng khác cho phép v8 tiếp tục thực thi mã chính. Event Loop bao gồm các giai đoạn khác nhau với các tác vụ cụ thể như bộ hẹn giờ, cuộc gọi lại đang chờ xử lý, không hoạt động hoặc chuẩn bị, thăm dò ý kiến, kiểm tra, đóng cuộc gọi lại với các Queue FIFO khác nhau. Ngoài ra, giữa các lần lặp, nó kiểm tra I/O không đồng bộ hoặc bộ hẹn giờ và tắt hoàn toàn nếu không có.
Làm thế nào để Node.js hỗ trợ các nền tảng đa bộ xử lý và nó có sử dụng đầy đủ tất cả các tài nguyên của bộ xử lý không?
Vì Node.js theo mặc định là một ứng dụng đơn luồng (single thread), nên nó sẽ chạy trên một lõi bộ xử lý duy nhất và sẽ không tận dụng hết các tài nguyên đa lõi. Tuy nhiên, Node.js cung cấp hỗ trợ triển khai trên các hệ thống đa lõi để tận dụng lợi thế lớn hơn của phần cứng. Mô-đun Cluster là một trong những mô-đun Node.js cốt lõi và nó cho phép chạy nhiều quy trình Node.js chia sẻ cùng một cổng.
Hãy trình bày cách nâng cao hiệu suất của Node.js thông qua phân cụm
Các ứng dụng Node.js chạy trên một bộ xử lý duy nhất, có nghĩa là theo mặc định, chúng không tận dụng lợi thế của hệ thống đa lõi. Chế độ cụm được sử dụng để khởi động nhiều quy trình của Node.js, do đó có nhiều phiên bản của Event Loop.
Khi chúng ta bắt đầu sử dụng cụm trong ứng dụng Node.js phía sau cảnh, nhiều quy trình Node.js được tạo nhưng cũng có một quy trình gốc được gọi là trình quản lý cụm chịu trách nhiệm theo dõi tình trạng của các phiên bản riêng lẻ trong ứng dụng của người dùng.
Đối với Node.js, tại sao Google sử dụng công cụ V8?
Công cụ V8, do Google phát triển, là mã nguồn mở và được viết bằng C++. Google Chrome sử dụng công cụ này. V8, không giống như các công cụ khác, cũng được sử dụng cho thời gian chạy Node.js phổ biến. V8 ban đầu được dự định để cải thiện tốc độ thực thi JavaScript trong trình duyệt web.
Thay vì sử dụng trình thông dịch, V8 chuyển đổi mã JavaScript thành mã máy hiệu quả hơn để tăng hiệu suất. Nó biến mã JavaScript thành mã máy trong quá trình thực thi bằng cách sử dụng trình biên dịch JIT (Just-In-Time), cũng như nhiều công cụ JavaScript hiện tại như SpiderMonkey hoặc Rhino (Mozilla).
Đọc thêm: Bộ Câu Hỏi Phỏng Vấn JavaScript Phổ Biến
Các loại yêu cầu khác nhau của HTTP là gì?
HTTP được định nghĩa một tập hợp các phương thức yêu cầu được sử dụng để thực hiện các hành động mong muốn. Các phương thức yêu cầu bao gồm:
- GET: Dùng để lấy dữ liệu
- POST: Thường được sử dụng để thay đổi trạng thái hoặc phản ứng trên máy chủ
- HEAD: Tương tự như phương thức GET, nhưng yêu cầu phản hồi mà không có nội dung phản hồi
- DELETE: Được sử dụng để xóa tài nguyên được xác định trước
WASI là gì và nó được ra đời với mục đích gì?
WASI triển khai hệ thống được gọi là API và các phương thức tiện ích bổ sung để tương tác với các ứng dụng dựa trên WASI. Mỗi phiên bản WASI đại diện cho một môi trường duy nhất. Mỗi phiên bản WASI phải chỉ định tham số dòng lệnh, biến môi trường và cấu trúc thư mục vì lý do bảo mật.
Kết
Vậy là Kabala Career đã cùng bạn tìm hiểu top 12 câu hỏi phỏng vấn Node.js phổ biến nhất. Hy vọng những gợi ý trả lời trên sẽ giúp bạn có được sự chuẩn bị tốt nhất cho cuộc phỏng vấn sắp tới. Nếu cảm thấy hứng thú với các chủ đề tương tự, hãy ghé qua Blog của Kabala Career để cập nhật thêm nhiều nội dung hấp dẫn hơn nữa nhé!
12 Câu Hỏi Phỏng Vấn Node.JS Phổ Biến Nhất Và Gợi Ý Trả Lời
Nguồn: glints.com