paint-brush
30 câu hỏi phỏng vấn Next.js: Sẵn sàng cho công việc mơ ước của bạntừ tác giả@trulyfurqan
34,815 lượt đọc
34,815 lượt đọc

30 câu hỏi phỏng vấn Next.js: Sẵn sàng cho công việc mơ ước của bạn

từ tác giả Muhammad Furqan Ul Haq8m2023/05/11
Read on Terminal Reader

dài quá đọc không nổi

Next.js là một khung nguồn mở dựa trên React giúp các nhà phát triển xây dựng các ứng dụng React được kết xuất phía máy chủ. Next.js cung cấp một số lợi thế so với React, bao gồm kết xuất phía máy chủ, tách mã tự động, tạo trang tĩnh, nhập động, hiệu suất được tối ưu hóa và triển khai dễ dàng.
featured image - 30 câu hỏi phỏng vấn Next.js: Sẵn sàng cho công việc mơ ước của bạn
Muhammad Furqan Ul Haq HackerNoon profile picture
0-item
1-item
2-item

Với nhu cầu ngày càng tăng đối với các nhà phát triển Next.js, người tìm việc cần chuẩn bị cho các cuộc phỏng vấn Next.js.


Trong bài viết này, tôi đã sắp xếp các câu hỏi và câu trả lời phỏng vấn Next.js thường gặp thành ba phần dựa trên mức độ khó: người mới bắt đầu, trung cấp và chuyên gia.


Bạn đang muốn vượt qua cuộc phỏng vấn Next.js của mình ?


Nếu vậy, hướng dẫn này là dành cho bạn.

Mức độ khó: Mới bắt đầu

1- Next.js là gì và nó khác với React như thế nào?

Next.js là một khung nguồn mở dựa trên React giúp các nhà phát triển xây dựng các ứng dụng React được kết xuất phía máy chủ.


Sự khác biệt chính giữa React và Next.js là cách chúng xử lý định tuyến. React sử dụng định tuyến phía máy khách, nghĩa là quá trình chuyển đổi trang được xử lý hoàn toàn ở phía máy khách bằng JavaScript.


Ngược lại, Next.js cung cấp tính năng định tuyến phía máy chủ, nghĩa là máy chủ xử lý việc định tuyến và gửi các trang được kết xuất trước tới máy khách, giúp tải trang nhanh hơn và SEO tốt hơn.

Next.js cũng cung cấp các tính năng bổ sung như tách mã tự động, tạo trang tĩnh và nhập động.

2- Ưu điểm của việc sử dụng Next.js so với React là gì?

Next.js cung cấp một số lợi thế so với React, bao gồm hiển thị phía máy chủ, tách mã tự động, tạo trang tĩnh, nhập động, hiệu suất được tối ưu hóa và triển khai dễ dàng. Ngoài ra, Next.js hỗ trợ SEO và phân tích tích hợp, giúp tối ưu hóa ứng dụng của bạn cho các công cụ tìm kiếm và theo dõi mức độ tương tác của người dùng dễ dàng hơn.

3- Làm thế nào để bạn tạo một ứng dụng Next.js mới?

Để tạo ứng dụng Next.js mới, bạn có thể sử dụng lệnh create-next-app . Ví dụ: bạn có thể chạy lệnh sau trong thiết bị đầu cuối của mình: npx create-next-app my-app . Điều này sẽ tạo một ứng dụng Next.js mới với tên my-app .

4- Kết xuất phía máy chủ là gì và tại sao nó lại quan trọng?

Kết xuất phía máy chủ (SSR) là quá trình kết xuất một trang web trên máy chủ trước khi gửi nó tới trình duyệt của khách hàng. SSR rất quan trọng vì nó cho phép các công cụ tìm kiếm thu thập dữ liệu và lập chỉ mục nội dung trang web của bạn, điều này có thể cải thiện SEO trang web của bạn. Ngoài ra, SSR có thể cải thiện thời gian tải trang ban đầu và cải thiện trải nghiệm người dùng cho người dùng có kết nối internet hoặc thiết bị chậm.

5- Kết xuất phía máy khách là gì và nó khác với kết xuất phía máy chủ như thế nào?

Kết xuất phía máy khách (CSR) là quá trình hiển thị trang web trên trình duyệt của máy khách bằng JavaScript sau khi nhận được HTML, CSS và JavaScript ban đầu từ máy chủ. Sự khác biệt chính giữa SSR và CSR là SSR gửi một trang HTML được hiển thị đầy đủ tới trình duyệt của khách hàng, trong khi CSR gửi một trang HTML trống được điền bằng JavaScript.

6- Tạo trang tĩnh là gì và nó khác với kết xuất phía máy chủ như thế nào?

Tạo trang tĩnh (SSG) là quá trình tạo tệp HTML, CSS và JavaScript tĩnh cho mỗi trang trên trang web của bạn tại thời điểm xây dựng. Sự khác biệt chính giữa SSG và SSR là SSG tạo một tệp tĩnh có thể được cung cấp từ mạng phân phối nội dung (CDN), trong khi SSR tạo HTML động trên máy chủ và gửi nó tới trình duyệt của máy khách.

7- Bạn định cấu hình định tuyến trong ứng dụng Next.js như thế nào?

Next.js sử dụng định tuyến dựa trên tệp, nghĩa là bạn có thể tạo một trang bằng cách tạo một tệp mới trong thư mục pages có đường dẫn URL tương ứng. Ví dụ: để tạo một trang có đường dẫn URL /about , bạn sẽ tạo một tệp có tên about.js trong thư mục pages .

8- Mục đích của hàm getStaticProps trong Next.js là gì?

Hàm getStaticProps được sử dụng để tìm nạp dữ liệu tại thời điểm xây dựng để tạo trang web tĩnh. Hàm này được gọi trong quá trình xây dựng và có thể được sử dụng để tìm nạp dữ liệu từ cơ sở dữ liệu hoặc API bên ngoài. Dữ liệu được trả về bởi getStaticProps sau đó được chuyển dưới dạng đạo cụ cho thành phần trang.

9- Làm cách nào để truyền dữ liệu giữa các trang trong ứng dụng Next.js?

Next.js cung cấp một số cách để truyền dữ liệu giữa các trang trong ứng dụng Next.js, bao gồm các tham số truy vấn URL, API Router và các thư viện quản lý trạng thái như Redux hoặc React Context. Bạn cũng có thể sử dụng chức năng getServerSideProps để tìm nạp dữ liệu trên máy chủ và chuyển nó dưới dạng đạo cụ cho thành phần trang.

10- Bạn triển khai ứng dụng Next.js như thế nào?

Các ứng dụng Next.js có thể được triển khai trên nhiều nền tảng khác nhau, bao gồm các dịch vụ đám mây như AWS, Google Cloud Platform và Microsoft Azure, cũng như các nền tảng như Vercel và Netlify. Để triển khai ứng dụng Next.js, bạn có thể sử dụng lệnh next export để xuất tệp tĩnh cho SSG hoặc sử dụng công cụ triển khai dành riêng cho nền tảng như CLI của Vercel hoặc AWS Elastic Beanstalk.


Độ khó: Trung cấp

1- Kiến trúc serverless là gì và nó liên quan như thế nào đến Next.js?

Kiến trúc serverless là mô hình điện toán đám mây trong đó nhà cung cấp đám mây quản lý cơ sở hạ tầng và tự động thay đổi quy mô tài nguyên dựa trên nhu cầu. Next.js có thể được sử dụng với kiến trúc serverless bằng cách triển khai ứng dụng lên nền tảng serverless như AWS Lambda hoặc Google Cloud Function.

2- Sự khác biệt giữa các hàm getServerSidePropsgetStaticProps trong Next.js là gì?

Hàm getServerSideProps được sử dụng để tìm nạp dữ liệu trên máy chủ trong thời gian chạy để hiển thị phía máy chủ, trong khi hàm getStaticProps được sử dụng để tìm nạp dữ liệu tại thời điểm xây dựng để tạo trang web tĩnh.

3- Mục đích của hàm getStaticPaths trong Next.js là gì?

Hàm getStaticPaths được sử dụng để tạo đường dẫn động cho các trang có dữ liệu động. Hàm này được gọi trong quá trình xây dựng và có thể được sử dụng để tạo danh sách các giá trị có thể có cho dữ liệu động. Dữ liệu được trả về bởi getStaticPaths sau đó được sử dụng để tạo các tệp tĩnh cho từng giá trị có thể.

4- Làm cách nào để định cấu hình các tuyến động trong ứng dụng Next.js?

Next.js sử dụng dấu ngoặc vuông [] để biểu thị các phân đoạn động trong đường dẫn URL. Ví dụ: để tạo một tuyến động cho các bài đăng trên blog có đường dẫn URL /blog/[slug] , bạn sẽ tạo một tệp có tên [slug].js trong thư mục pages/blog .

5- Next.js xử lý việc tách mã như thế nào và tại sao nó lại quan trọng?

Next.js tự động chia mã của bạn thành các phần nhỏ hơn để có thể tải theo yêu cầu khi người dùng điều hướng đến một trang mới. Điều này giúp giảm thời gian tải trang ban đầu và cải thiện hiệu suất ứng dụng của bạn.

6- Mục đích của tệp _app.js trong Next.js là gì?

Tệp _app.js được sử dụng để bọc toàn bộ ứng dụng và cung cấp kiểu toàn cầu, thành phần bố cục và nhà cung cấp ngữ cảnh. Tệp này được gọi trên mọi yêu cầu trang và có thể được sử dụng để thêm chức năng chung cho ứng dụng của bạn.

7- Làm cách nào để triển khai xác thực trong ứng dụng Next.js?

Next.js cung cấp một số tùy chọn để triển khai xác thực, bao gồm Mã thông báo Web JSON (JWT), OAuth và các thư viện của bên thứ ba như NextAuth.js. Bạn cũng có thể sử dụng kết xuất phía máy chủ và quản lý phiên để triển khai xác thực phía máy chủ.

8- Sự khác biệt giữa thành phần chứa và thành phần trình bày là gì?

Thành phần vùng chứa chịu trách nhiệm quản lý trạng thái và logic của thành phần, trong khi thành phần trình bày chịu trách nhiệm hiển thị giao diện người dùng dựa trên các đạo cụ được truyền từ thành phần vùng chứa.

9- Mục đích của useEffect hook trong React là gì và nó liên quan như thế nào đến Next.js?

Móc useEffect được sử dụng để thực hiện các tác dụng phụ trong một thành phần chức năng, chẳng hạn như tìm nạp dữ liệu từ API hoặc cập nhật tiêu đề tài liệu. Trong Next.js, hook useEffect có thể được sử dụng để

thực hiện tìm nạp dữ liệu phía máy khách bằng cách sử dụng API fetch hoặc thư viện của bên thứ ba như Axios hoặc SWR.

10- Bạn xử lý lỗi trong ứng dụng Next.js như thế nào?

Next.js cung cấp một số tùy chọn để xử lý lỗi, bao gồm các trang lỗi tùy chỉnh, xử lý lỗi phía máy chủ với getInitialProps và xử lý lỗi phía máy khách với ranh giới lỗi React. Bạn cũng có thể sử dụng các thư viện của bên thứ ba như Sentry hoặc Rollbar để theo dõi và báo cáo lỗi.


Độ khó: Chuyên gia

1- Làm cách nào để triển khai quốc tế hóa (i18n) trong ứng dụng Next.js?

Next.js cung cấp hỗ trợ tích hợp cho i18n thông qua thư viện next-i18next . Bạn có thể sử dụng thư viện này để tạo bản dịch cho ứng dụng của mình và chuyển đổi giữa các ngôn ngữ dựa trên tùy chọn của người dùng hoặc cài đặt trình duyệt.

2- Mục đích của hàm getServerSideProps trong Next.js là gì và nó liên quan như thế nào đến hàm getInitialProps ?

Hàm getServerSideProps được sử dụng để tìm nạp dữ liệu trên máy chủ trong thời gian chạy để hiển thị phía máy chủ, trong khi hàm getInitialProps được sử dụng để tìm nạp dữ liệu trên máy khách hoặc máy chủ trong thời gian chạy. Trong Next.js 9.3 trở lên, chức năng getInitialProps không được dùng nữa để thay thế cho getServerSideProps .

3- Bạn triển khai bộ nhớ đệm phía máy chủ trong ứng dụng Next.js như thế nào?

Next.js cung cấp hỗ trợ tích hợp cho bộ nhớ đệm phía máy chủ thông qua tiêu đề Cache-Control . Bạn có thể đặt thời lượng bộ đệm cho mỗi trang bằng chức năng getServerSideProps hoặc bằng cách đặt thuộc tính cacheControl trong thành phần trang.


Chúng tôi cũng có thể sử dụng các thư viện bộ nhớ đệm như Redis hoặc Memcached để lưu trữ các phản hồi API hoặc truy vấn cơ sở dữ liệu. Các tùy chọn như bộ nhớ đệm CDN hoặc bộ đệm biên cũng có thể được triển khai để cải thiện hiệu suất của nội dung tĩnh và giảm tải cho máy chủ.

4- Làm cách nào để bạn tối ưu hóa hiệu suất của ứng dụng Next.js?

Có một số chiến lược để tối ưu hóa hiệu suất của ứng dụng Next.js, bao gồm tách mã, tải từng phần, tối ưu hóa hình ảnh, bộ nhớ đệm phía máy chủ và bộ nhớ đệm CDN. Bạn cũng có thể sử dụng các công cụ giám sát hiệu suất như Lighthouse hoặc WebPageTest để xác định các khu vực cần cải thiện.

5- Làm cách nào để triển khai các chức năng serverless trong ứng dụng Next.js?

Next.js cung cấp hỗ trợ tích hợp cho các chức năng serverless thông qua tính năng API Routes . Bạn có thể tạo một hàm serverless bằng cách tạo một tệp trong thư mục pages/api với tên điểm cuối mong muốn và triển khai logic phía máy chủ.

6- Làm cách nào để bạn triển khai CMS không đầu với Next.js?

Bạn có thể triển khai CMS không đầu với Next.js bằng cách sử dụng CMS của bên thứ ba như Contentful, Strapi hoặc Sanity. Các nền tảng CMS này cung cấp API để tìm nạp và cập nhật nội dung, có thể được tích hợp với Next.js bằng cách sử dụng các hàm getStaticProps hoặc getServerSideProps .

7- Làm cách nào để bạn xử lý SSR cho các mô hình dữ liệu phức tạp hoặc cấu trúc dữ liệu lồng nhau?

Chúng ta có thể sử dụng API GraphQL hoặc REST để tìm nạp dữ liệu từ máy chủ và chuyển dữ liệu đó đến thành phần dưới dạng đạo cụ. Các thư viện như swr hoặc react-query cũng có thể được sử dụng để xử lý tìm nạp và lưu trữ dữ liệu.

8- Bạn triển khai thử nghiệm A/B trong ứng dụng Next.js như thế nào?

Chúng tôi có thể sử dụng các công cụ của bên thứ ba như Google Optimize hoặc Optimizely để tạo thử nghiệm và theo dõi hành vi của người dùng. Chúng tôi cũng có thể sử dụng các giải pháp tùy chỉnh như cờ tính năng hoặc kết xuất có điều kiện để kiểm tra các biến thể khác nhau của ứng dụng.

9- Làm cách nào để bạn xử lý các bản cập nhật theo thời gian thực trong ứng dụng Next.js?

Để xử lý các bản cập nhật theo thời gian thực trong ứng dụng Next.js, bạn có thể sử dụng các sự kiện do máy chủ gửi, ổ cắm web hoặc thư viện của bên thứ ba như Socket.io để thiết lập kết nối thời gian thực giữa máy khách và máy chủ. Bạn cũng có thể sử dụng các thư viện như react-use hoặc redux để xử lý cập nhật dữ liệu theo thời gian thực trong ứng dụng.

10- Bạn triển khai thử nghiệm và tích hợp liên tục trong ứng dụng Next.js như thế nào?

Để triển khai thử nghiệm và tích hợp liên tục trong ứng dụng Next.js, bạn có thể sử dụng các khung thử nghiệm như Jest hoặc Cypress để viết và chạy thử nghiệm. Bạn cũng có thể sử dụng các dịch vụ tích hợp liên tục như CircleCI hoặc Travis CI để tự động hóa quá trình thử nghiệm và triển khai. Ngoài ra, bạn có thể sử dụng các công cụ chất lượng mã như ESLint hoặc Prettier để đảm bảo tính nhất quán và khả năng bảo trì của mã.


Phần kết luận

Tôi đã đặt các câu hỏi và câu trả lời phỏng vấn Next.js này ngắn gọn và đi thẳng vào vấn đề. Bài viết này sẽ hoạt động như một bảng mẹo nhanh cho bất kỳ ai đang chuẩn bị cho cuộc phỏng vấn Next.js.


Tuy nhiên, hãy nhớ rằng bạn phải có kinh nghiệm làm việc tốt với Next.js để phù hợp với công việc.


Chúc may mắn!

L O A D I N G
. . . comments & more!

About Author

Muhammad Furqan Ul Haq HackerNoon profile picture
Muhammad Furqan Ul Haq@trulyfurqan
I’m a freelance Web Developer, SEO Expert, and Author. I built tons of websites and wrote 1500+ programming articles.

chuyên mục

BÀI VIẾT NÀY CŨNG CÓ MẶT TẠI...