Câu hỏi phỏng vấn Angular cần chuẩn bị
Bởi Aaron Cao · Cập nhật

Trước tiên hãy chuẩn bị cho change detection: điều gì kích hoạt một lần kiểm tra, OnPush thay đổi điều gì, và signals phù hợp ở đâu. Tiếp theo là dependency injection, chọn operator RxJS, và dọn dẹp subscription. Hầu hết các vòng phỏng vấn còn thêm một bài tập trực tiếp, thường là tìm kiếm gợi ý tự động được xây dựng bằng service, debounceTime, và switchMap.
Những khái niệm Angular nào hay bị hỏi nhất?
Bề mặt API của Angular rất rộng, và các danh sách câu hỏi được công bố coi mọi decorator có khả năng xuất hiện như nhau. Thực tế không phải vậy. Phần này bao quát những mảng thực sự quyết định phần lớn các vòng phỏng vấn, để việc luyện tập của bạn khớp với phân bố thực tế. Bốn nhóm chiếm ưu thế:
- Change detection: điều gì kích hoạt kiểm tra, Zone.js vá các API bất đồng bộ như thế nào,
OnPushthay đổi điều gì, và signals giúp Angular bỏ qua công việc ra sao. - Dependency injection: injector phân cấp,
providedIn, injection token, và hàminject()so với tham số constructor. - RxJS: observable so với promise, chọn đúng operator, và dọn dẹp subscription trước khi component bị hủy.
- Kiến trúc component: standalone component, input và output, content projection, và lifecycle hook.
Ý thức về phiên bản ở đây quan trọng hơn hầu hết các vòng phỏng vấn framework khác, vì Angular đã đổi hướng. Standalone component, các khối control flow tích hợp @if và @for, deferrable view, và signals đều xuất hiện trong các phiên bản lớn gần đây, nên người phỏng vấn thường hỏi bạn sẽ viết thế nào ngày nay so với cách một codebase cũ dùng. Biết cả hai, và giải thích được vì sao framework thay đổi, tạo ấn tượng tốt hơn là chọn một phía.
Câu hỏi RxJS và signals đi sâu đến mức nào?
Sâu hơn nhiều so với tên các operator. Câu hỏi RxJS phân biệt trình độ là chọn operator làm phẳng nào phù hợp: switchMap hủy request nội bộ trước đó nên hợp với gợi ý tự động, mergeMap chạy tất cả song song, concatMap giữ nguyên thứ tự, và exhaustMap bỏ qua sự kiện mới khi một sự kiện vẫn đang xử lý, đó là lý do nó hợp với nút submit. Sau đó người phỏng vấn hỏi về rò rỉ: điều gì xảy ra với một subscription thủ công khi component bị hủy, và vì sao async pipe hay takeUntilDestroyed loại bỏ vấn đề này.
Câu hỏi về signals mới hơn và thường bắt đầu từ động lực thay vì API. Hãy chuẩn bị giải thích signal là gì, computed suy ra giá trị từ đó như thế nào, effect dùng để làm gì, và vì sao signals cho Angular một cách biết điều gì đã thay đổi chi tiết hơn so với việc kiểm tra lại cả cây component. Một câu trả lời tốt sẽ kết nối hai chủ đề: signals và OnPush đều giảm khối lượng công việc của change detection, nhưng signals làm điều đó bằng cách theo dõi các lượt đọc thay vì thu hẹp thời điểm chạy kiểm tra.
Người phỏng vấn không mong bạn đã đưa mọi tính năng mới nhất vào sản phẩm thực tế. Họ mong bạn nói rõ mình làm việc gần nhất với phiên bản nào, và lập luận rõ ràng về phần còn lại.
Nên chuẩn bị cho những bài tập lập trình trực tiếp nào?
Hầu hết các vòng phỏng vấn Angular đều có phần xây dựng thứ gì đó nhỏ trong khi người phỏng vấn quan sát. Các bài tập lặp lại khá ổn định giữa các công ty:
- Gọi một API từ service và hiển thị kết quả bằng async pipe.
- Xây dựng tìm kiếm gợi ý tự động với
debounceTime,distinctUntilChanged, vàswitchMap. - Viết một reactive form với custom validator và trạng thái lỗi hiển thị được.
- Truyền dữ liệu giữa component cha và con, sau đó đưa nó lên một service.
- Thêm một route với component tải chậm (lazy loaded) và một guard.
Ví dụ, một kỹ sư front-end phỏng vấn cho vị trí sản phẩm cấp trung có thể xây dựng phần gợi ý tự động, rồi bị hỏi tiếp điều gì xảy ra khi các phản hồi đến không đúng thứ tự, cách hiển thị trạng thái loading, và điều gì nên xảy ra khi người dùng xóa input. Những câu hỏi mở rộng đó mới là điểm quyết định vòng phỏng vấn, vì vậy hãy luyện các câu hỏi tiếp theo thay vì chỉ luyện con đường suôn sẻ. Các bộ chủ đề liền kề mà vòng phỏng vấn Angular vẫn thường mở đầu, bao gồm nền tảng JavaScript và TypeScript thuần, nằm trong trung tâm ngân hàng câu hỏi.
Luyện tập thế nào để áp dụng được vào vòng phỏng vấn thật?
Đọc một danh sách câu hỏi giúp xây dựng khả năng nhận diện, không phải khả năng nhớ lại, trong khi vòng phỏng vấn kiểm tra khả năng nhớ lại khi có người quan sát. Cách khắc phục là luyện tập lặp lại đúng hình thức của vòng phỏng vấn: xây dựng các bài tập tiêu chuẩn từ một dự án trống, vừa gõ vừa nói to các quyết định về change detection và subscription, và hấp thụ các lần bị ngắt lời mà không mất mạch suy nghĩ. Thực hiện cả bộ câu hỏi như một buổi diễn tập nói, từng câu một kèm câu hỏi tiếp theo, đó chính là mục đích của luyện tập phỏng vấn giả lập.
Có một giới hạn đáng nói rõ: các vòng phỏng vấn trực tiếp của Angular gần như luôn diễn ra trong một trình soạn thảo chia sẻ hoặc với màn hình của bạn hiển thị, và mọi thứ trên màn hình đó đều được người phỏng vấn nhìn thấy. Trợ lý phù hợp trong lúc chuẩn bị và trong các vòng phỏng vấn dựa trên hội thoại, không phải trên màn hình chia sẻ. Định dạng nào cho phép điều gì được nêu trong các loại phỏng vấn.
Câu hỏi thường gặp
Tôi có còn cần biết NgModules không?
AngularJS có giống Angular không?
Tôi cần bao nhiêu RxJS nếu nhóm dùng signals?
Người phỏng vấn có hỏi về testing không?
Tôi nên có khả năng thảo luận về bao nhiêu phiên bản Angular?
Câu hỏi liên quan
- Tôi nên chuẩn bị những câu hỏi phỏng vấn Databricks nào?
- Tôi nên chuẩn bị những câu hỏi phỏng vấn .NET nào?
- Tôi nên chuẩn bị những câu hỏi phỏng vấn kỹ sư chất lượng nào?
- Tôi nên dự kiến những câu hỏi nào trong phỏng vấn định lượng?
- Tôi nên chuẩn bị những câu hỏi phỏng vấn Snowflake nào?
- Tôi nên chuẩn bị cho những câu hỏi phỏng vấn giáo viên nào?