Những câu hỏi phỏng vấn React bạn nên chuẩn bị

Bởi Aaron Cao · Cập nhật

Những câu hỏi phỏng vấn React bạn nên chuẩn bị
Trước tiên hãy chuẩn bị cho các câu hỏi về hooks: useState, mảng dependency của useEffect, và stale closure. Tiếp theo là rendering: reconciliation, vì sao key trong danh sách lại quan trọng, và cách kiểm soát re-render bằng memo, useMemo, và useCallback. Hầu hết các quy trình còn thêm một bài tập lập trình trực tiếp, thường là lấy dữ liệu rồi lọc danh sách, hoặc một ô tìm kiếm có debounce.

Trước tiên hãy chuẩn bị cho các câu hỏi về hooks: useState, mảng dependency của useEffect, và stale closure. Tiếp theo là rendering: reconciliation, vì sao key trong danh sách lại quan trọng, và cách kiểm soát re-render bằng memo, useMemo, và useCallback. Hầu hết các quy trình còn thêm một bài tập lập trình trực tiếp, thường là lấy dữ liệu rồi lọc danh sách, hoặc một ô tìm kiếm có debounce.

Những khái niệm React nào hay được hỏi nhất?

Phạm vi kiến thức của React rất rộng, và các danh sách câu hỏi thường coi mọi ngóc ngách đều có xác suất được hỏi như nhau. Thực tế không phải vậy. Phần này tập trung vào những khái niệm thực sự quyết định kết quả của phần lớn buổi phỏng vấn, để bạn luyện tập theo đúng phân bố thực tế. Bốn nhóm chiếm ưu thế:

  • Cơ chế của hooks: quy tắc của hooks, những gì đưa vào mảng dependency của useEffect, hàm cleanup, và lỗi stale closure khi một effect hoặc callback nhìn thấy một giá trị state cũ.
  • Rendering: điều gì gây ra re-render, reconciliation so sánh các cây như thế nào, và vì sao key ổn định lại quan trọng trong danh sách.
  • Thiết kế state: đẩy state lên (lifting state), input được kiểm soát so với không được kiểm soát, và khi nào context phù hợp hơn một store bên ngoài.
  • Hiệu năng: React.memo, useMemo, useCallback, và khi nào mỗi cái trong số đó là nhiễu chứ không phải hỗ trợ.

Người phỏng vấn sẽ đào sâu vào lý do đằng sau mỗi điểm. Đọc thuộc lòng rằng key phải là duy nhất không được tính điểm; giải thích được React làm gì với một key khi danh sách sắp xếp lại thì có.

Nên chuẩn bị cho những bài live coding nào?

Phần lớn các vòng phỏng vấn React đều có phần dựng một component nhỏ trực tiếp. Các bài tập lặp lại khá ổn định giữa các công ty:

  • Lấy một danh sách từ API, render nó, và thêm bộ lọc theo văn bản.
  • Thêm debounce cho ô tìm kiếm và hủy các request đã cũ.
  • Dựng một form có validation và các input được kiểm soát.
  • Viết một bộ đếm hoặc bộ đếm giờ dọn dẹp effect của nó đúng cách.
  • Tách một custom hook ra từ logic bị lặp lại.

Ví dụ, một kỹ sư front-end phỏng vấn cho vị trí product cấp trung có thể phải dựng danh sách lấy-dữ-liệu-rồi-lọc, sau đó bị hỏi thêm về trạng thái loading, trạng thái lỗi, và điều gì xảy ra khi component bị unmount giữa lúc đang có request. Phần mở rộng mới là thứ quyết định thắng thua; bài tập cơ bản chỉ là điều kiện tối thiểu.

Luyện tập những bài này dưới áp lực thời gian cùng các câu hỏi truy vấn tiếp theo chính là cách khiến chúng trở thành phản xạ; trang phỏng vấn thử nói về cách chạy các phiên có giới hạn thời gian mà người phỏng vấn liên tục truy vấn.

Câu hỏi React ở cấp độ senior trông như thế nào?

Các vòng phỏng vấn senior chuyển trọng tâm từ cơ chế sang khả năng phán đoán. Hãy chuẩn bị cho các câu hỏi về kiến trúc state: cái gì nằm trong state của component, cái gì thuộc về store, state của server khác state của UI ra sao, và cache nên đặt ở lớp nào. Câu hỏi về hiệu năng rendering trở nên cụ thể hơn: tìm nguồn gốc của một tương tác chậm, quyết định giữa memoization và tái cấu trúc, và đọc flame graph của profiler.

Server-side rendering và hydration xuất hiện khi đội ngũ chạy một framework trên nền React: hydration là gì, vì sao xảy ra sai lệch (mismatch), và việc chuyển công việc sang server mang lại lợi ích gì. Câu hỏi về testing tập trung vào chiến lược, tức là nên test gì ở cấp component so với end to end, hơn là API của một thư viện cụ thể.

Các hình thức phỏng vấn và cách một quy trình front-end thường sắp xếp những vòng này được trình bày trong trang tổng hợp các loại phỏng vấn.

Luyện tập thế nào để áp dụng được vào buổi phỏng vấn thật?

Xem hướng dẫn chỉ tạo ra sự nhận diện quen mắt, không tạo ra khả năng nhớ lại, trong khi buổi phỏng vấn lại kiểm tra khả năng nhớ lại khi đang bị quan sát. Cách khắc phục là luyện tập lặp lại đúng hình thức thật của buổi phỏng vấn: dựng các bài tập tiêu chuẩn từ một file trống, vừa gõ vừa thuyết minh, và trả lời các câu hỏi ngắt ngang mà không mất mạch suy nghĩ. Bộ câu hỏi cho các stack liền kề, kể cả kiến thức nền JavaScript thuần mà các vòng phỏng vấn React vẫn thường mở đầu bằng, có ở trang tổng hợp ngân hàng câu hỏi.

Một lưu ý thẳng thắn: các buổi phỏng vấn React gần như luôn diễn ra trong một trình soạn thảo dùng chung hoặc với màn hình của bạn hiển thị, và bất cứ thứ gì trên màn hình đó đều lộ ra với người phỏng vấn. Một trợ lý nên có chỗ đứng trong lúc chuẩn bị và luyện tập, chứ không phải trong chính buổi phỏng vấn chia sẻ màn hình. Với việc sử dụng trực tiếp hợp lệ, lớp phủ của SubcueAI luôn ở cục bộ trên máy của bạn và không có bot nào tham gia cuộc gọi; cách thiết lập cho các phiên luyện tập có ở trang hướng dẫn.

Câu hỏi thường gặp

Tôi có còn cần biết về class component không?

Ở mức đọc hiểu thì có. Vẫn còn rất nhiều code production dùng class, nên nhiều nhất bạn có thể bị hỏi về các phương thức lifecycle và cách chúng tương ứng với hooks. Các câu hỏi về code mới thì hầu như ở đâu cũng dùng function component.

Câu hỏi về hooks thực sự đi sâu đến đâu?

Sâu hơn nhiều so với chữ ký hàm. Người phỏng vấn hỏi vì sao mảng dependency tồn tại, stale closure là gì và cách sửa nó, cleanup chạy khi nào, và vì sao các cập nhật state được gộp theo batch. Một câu chuyện thật về lần bạn tự debug một stale closure có giá trị hơn việc học thuộc mọi hook có sẵn.

Câu hỏi về Next.js có nằm trong phỏng vấn React không?

Nếu đội ngũ dùng Next.js thì có: routing, lấy dữ liệu phía server, và kiến thức cơ bản về hydration. Các đội chỉ dùng React thuần hiếm khi yêu cầu điều này, và dù thế nào thì các câu hỏi React cốt lõi vẫn là thứ quyết định kết quả.

Redux có còn được hỏi trong phỏng vấn không?

Thường là một cuộc trao đổi về quản lý state hơn là một bài kiểm tra API. Hãy chuẩn bị so sánh state của component, context, và một store bên ngoài, và giải thích khi nào mỗi cách phù hợp. Nêu được sự đánh đổi quan trọng hơn việc biết một thư viện cụ thể.

Câu hỏi liên quan

← Thêm về Câu hỏi phỏng vấn theo vai trò & chủ đề