Chuẩn bị LeetCode cho phỏng vấn Microsoft

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

Chuẩn bị LeetCode cho phỏng vấn Microsoft
LeetCode giúp bạn nắm kỹ năng cơ bản của vòng lập trình Microsoft, nhưng không luyện được chính vòng phỏng vấn đó. Đa số đề nằm ở mức trung bình, và buổi phỏng vấn đánh giá cách bạn trình bày hướng giải, tiếp nhận các ràng buộc bổ sung và điều chỉnh theo đó — những điều mà việc tự luyện một mình không hề rèn luyện.

LeetCode giúp bạn nắm kỹ năng cơ bản của vòng lập trình Microsoft, nhưng không luyện được chính vòng phỏng vấn đó. Đa số đề nằm ở mức trung bình, và buổi phỏng vấn đánh giá cách bạn trình bày hướng giải, tiếp nhận các ràng buộc bổ sung và điều chỉnh theo đó — những điều mà việc tự luyện một mình không hề rèn luyện.

Luyện LeetCode liên tục có thực sự giúp bạn chuẩn bị tốt?

Bạn có lẽ đã từng nghe lời khuyên nên giải xong vài trăm đề trước khi ứng tuyển, và bạn muốn biết con số đó có thực sự ý nghĩa hay không. Phần này tách bạch những gì LeetCode thực sự rèn luyện được với những gì nó hoàn toàn không chạm tới, để bạn dành thời gian vào chỗ có giá trị. Nói ngắn gọn: nó xây dựng khả năng gợi nhớ bạn cần, nhưng bỏ qua phần thể hiện mà bạn sẽ bị chấm điểm.

Những gì nó rèn luyện tốt là có thật. Nhận ra một đề bài cần cấu trúc dữ liệu nào, viết code đúng mà không có trình biên dịch trước mặt, và biết độ phức tạp của đoạn code vừa viết — tất cả đều là kỹ năng cần thiết, và việc lặp lại chính là cách để chúng trở thành phản xạ tự nhiên.

Điều nó bỏ sót là toàn bộ yếu tố tương tác con người. Không ai ngắt lời bạn để hỏi vì sao bạn chọn hash map. Không ai thêm một ràng buộc giữa chừng để quan sát phản ứng của bạn. Bạn không bao giờ phải nói to một ý tưởng sai rồi sửa lại nó trong khi một người lạ đang lắng nghe. Đó chính xác là phần mà một vòng phỏng vấn Microsoft được thiết kế để quan sát.

Những mẫu nào thường xuất hiện trong vòng lập trình của Microsoft?

Độ bao phủ quan trọng hơn số lượng, và các mẫu lặp lại chỉ gói gọn trong một danh sách ngắn:

  • Two pointer và sliding window. Trên mảng và chuỗi, thường kèm yêu cầu xử lý tại chỗ (in-place).
  • Hash map. Điểm khó là quyết định lấy gì làm khóa, chứ không phải việc tra cứu.
  • Duyệt cây. Duyệt theo chiều sâu và chiều rộng, tổng đường đi, tổ tiên chung gần nhất.
  • Tìm kiếm trên đồ thị. Bài toán lưới, thành phần liên thông, đường đi ngắn nhất trên đồ thị không trọng số.
  • Danh sách liên kết. Đảo ngược, gộp và phát hiện chu trình.
  • Quy hoạch động dễ tiếp cận. Trạng thái một chiều, nhóm bài đổi tiền xu và leo cầu thang.

Một cách kiểm tra hữu ích để biết khi nào nên dừng: chọn ngẫu nhiên một đề đã giải và giải thích to lên vì sao mẫu đó áp dụng được, và cách tiếp cận khác sẽ hỏng ở đâu. Nếu bạn làm được điều này với toàn bộ danh sách trên, giải thêm đề cũng chẳng thêm được bao nhiêu. Quy trình phỏng vấn của các công ty khác được phân tích tại trung tâm chủ đề phỏng vấn theo công ty.

Phỏng vấn khác gì so với một buổi luyện LeetCode?

Có bốn điểm khác biệt sẽ thay đổi cách bạn nên luyện tập. Bạn nói trước khi gõ, vì người phỏng vấn kỳ vọng nghe hướng giải và ước lượng độ phức tạp trước khi code xuất hiện. Các ràng buộc xuất hiện giữa chừng bài toán, và câu hỏi tiếp theo mới thực sự là câu hỏi chính. Không có nút gửi bài, nên bạn phải tự suy luận về các trường hợp biên thay vì đọc thông báo lỗi. Và tất cả diễn ra trên Microsoft Teams, thường trong một trình soạn thảo dùng chung, trong khi có người quan sát.

Một ứng viên chuẩn bị cho vị trí cấp trung đã giải xong hơn hai trăm đề nhưng vẫn bị mắc kẹt trong quy trình phỏng vấn. Bản ghi âm một buổi luyện tập cho thấy nguyên nhân: mười một phút im lặng trước khi có dòng code đầu tiên. Cách khắc phục không phải là giải thêm đề, mà là giải lại ba đề đã từng làm trong khi nói to từng quyết định.

Bạn có thể luyện kiểu diễn tập nói có tính giờ như vậy trước một AI đóng vai người phỏng vấn tại trang phỏng vấn thử.

Thu hẹp khoảng cách giữa giải được và giải thích được

Hãy biến giai đoạn cuối của quá trình chuẩn bị thành luyện tập thể hiện. Giải lại các đề quen thuộc thành tiếng với đồng hồ bấm giờ, nêu hướng giải trước khi gõ code, và ép bản thân đưa ra độ phức tạp mà không cần ai hỏi. Ghi âm một buổi luyện và lắng nghe những khoảng im lặng, vì đó chính là điều người phỏng vấn cảm nhận được.

SubcueAI được xây dựng cho các vòng phỏng vấn nói trong quy trình tuyển dụng, chứ không phải cho vòng lập trình. Ứng dụng gốc trên macOS và Windows thu âm thanh hệ thống cùng micro của bạn và hiển thị gợi ý trong một lớp phủ (overlay) cục bộ nổi; Side Panel của tiện ích mở rộng trình duyệt hỗ trợ trực tiếp cho một tab cuộc họp trên các trình duyệt Chromium, chỉ thu âm thanh của tab đó. Không có bot nào tham gia cuộc gọi, và không có gì được chèn vào trang cuộc họp.

Giới hạn này đáng được nói rõ. Một vòng lập trình của Microsoft thường có nghĩa là bạn phải chia sẻ màn hình, và mọi thứ trên màn hình đều nằm trong phần chia sẻ đó. Nơi trợ lý phát huy tác dụng là buổi trò chuyện với nhà tuyển dụng, các vòng phỏng vấn hành vi và buổi thảo luận thiết kế. Những gì nó thu thập và lưu trữ trong các vòng đó được nêu tại trang bảo mật.

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

Tôi nên giải bao nhiêu đề LeetCode để chuẩn bị cho Microsoft?

Không có con số nào được kiểm chứng, và việc đếm số lượng vốn là mục tiêu sai. Hãy bao phủ các mẫu lặp lại cho đến khi bạn giải thích được vì sao mỗi mẫu áp dụng, rồi dùng thời gian còn lại để giải thành tiếng với đồng hồ bấm giờ.

Microsoft có hỏi các đề LeetCode mức khó không?

Các đề được ghi nhận chủ yếu tập trung ở mức trung bình. Một đề khó thỉnh thoảng xuất hiện, thường kèm theo gợi ý đáng kể từ người phỏng vấn, vì vòng này đo khả năng phối hợp chứ không phải việc bạn đã từng thấy đúng bài toán đó hay chưa.

Người phỏng vấn Microsoft có dùng lại nguyên đề LeetCode không?

Người phỏng vấn tự chọn đề của riêng họ, và nhiều người dùng biến thể thay vì lấy nguyên văn một đề trong danh sách. Điều thực sự chuyển hóa được là khả năng nhận ra mẫu. Học thuộc một lời giải cụ thể thường sụp đổ ngay ở ràng buộc bổ sung đầu tiên.

Tôi có thể dùng trợ lý AI trong lúc phỏng vấn lập trình với Microsoft không?

Không có tác dụng thực tế. Vòng lập trình diễn ra khi bạn chia sẻ màn hình trên Microsoft Teams, nên một lớp phủ cục bộ cũng nằm trong phần mà người phỏng vấn nhìn thấy. Nó chỉ phát huy tác dụng ở các vòng nói chuyện không chia sẻ gì cả.

Câu hỏi liên quan

← Thêm về Quy trình phỏng vấn ở các công ty lớn