Cách Tổ Chức Một Buổi Phỏng Vấn Thử Cho Kỹ Sư Phần Mềm

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

Cách Tổ Chức Một Buổi Phỏng Vấn Thử Cho Kỹ Sư Phần Mềm
Hãy luyện tập từng vòng một dưới áp lực thời gian thực, trong đúng công cụ mà vòng thật sử dụng, với một người phỏng vấn có ngắt lời bạn. Hãy chấm điểm cấu trúc, giao tiếp và khả năng phục hồi, chứ không phải việc bạn có đạt được giải pháp tối ưu hay không. Một buổi luyện tập không bao giờ trục trặc thì không phải đang luyện phần khó nhất.

Hãy luyện tập từng vòng một dưới áp lực thời gian thực, trong đúng công cụ mà vòng thật sử dụng, với một người phỏng vấn có ngắt lời bạn. Hãy chấm điểm cấu trúc, giao tiếp và khả năng phục hồi, chứ không phải việc bạn có đạt được giải pháp tối ưu hay không. Một buổi luyện tập không bao giờ trục trặc thì không phải đang luyện phần khó nhất.

Một buổi phỏng vấn thử chân thực cho kỹ sư phần mềm gồm những gì?

Bạn có lẽ đã giải rất nhiều bài tập mà vẫn thấy chưa sẵn sàng, và lý do thường là vì tự giải một mình không phải là điều vòng phỏng vấn đo lường. Phần này tách riêng ba vòng mà một quy trình tuyển kỹ sư phần mềm sử dụng, vì mỗi vòng cần một cách luyện khác nhau và gộp chúng lại sẽ lãng phí buổi luyện.

  • Coding. 35 đến 45 phút, một hoặc hai bài, vừa gõ code vừa nói to suy nghĩ. Mục tiêu luyện tập là thuật lại một giải pháp mà bạn vẫn đang hình thành.
  • Thiết kế hệ thống. 45 đến 60 phút, một đề mở, không có làm rõ trừ khi bạn hỏi. Mục tiêu luyện tập là xác định phạm vi bài toán trước khi thiết kế nó.
  • Behavioral. 45 phút kể chuyện dự án với các câu hỏi truy vấn gay gắt. Mục tiêu luyện tập là sống sót qua câu hỏi truy vấn thứ ba về một quyết định bạn hối tiếc.

Mỗi buổi chỉ nên luyện một trong số này. Một vòng lặp đầy đủ ba tiếng đồng hồ có vẻ hiệu quả nhưng gần như không mang lại phản hồi nào hữu ích, vì đến vòng thứ ba bạn đang luyện sự mệt mỏi chứ không phải kỹ năng. Nếu bạn muốn kho câu hỏi thay vì cơ chế luyện tập, đó là một trang riêng trong trung tâm phỏng vấn thử.

Làm thế nào để tự luyện một mình?

Các buổi luyện một mình thường thất bại theo cách dễ đoán: bạn chọn một bài mình có thể giải, dừng đồng hồ khi bị bí, rồi kết thúc với cảm giác ổn. Mỗi điều đó đều ngược lại hoàn toàn với điều kiện thật. Hãy tái tạo đúng những ràng buộc đó.

  • Đừng tự chọn bài của mình. Lấy từ một danh sách bạn chưa đọc, hoặc nhờ người khác chọn. Tự chọn nghĩa là chọn thứ khiến bạn thấy thoải mái.
  • Bấm giờ và đừng bao giờ dừng lại. Thời gian bị bí cũng là dữ liệu. Tạm dừng sẽ xóa đi đúng áp lực mà bạn đang luyện để chịu đựng.
  • Khớp đúng công cụ. Nếu vòng thật dùng trình soạn thảo dùng chung, không gợi ý code, không nút chạy và không bộ kiểm thử, hãy luyện đúng ở đó.
  • Nói với một căn phòng trống. Nghe có vẻ vô lý nhưng đây là phần giá trị nhất. Giải bài trong im lặng luyện một kỹ năng mà không ai chấm điểm.
  • Ghi hình lại. Xem lại chính mình rất khó chịu và nó cho bạn thấy những từ đệm, việc lùi lại sửa, và phút giây bạn im bặt.
  • Lúc đầu hãy thiết kế mà không dùng công cụ vẽ sơ đồ. Nhiều vòng thiết kế chỉ là một cuộc gọi thoại và một tài liệu trống.

Điều duy nhất một buổi luyện một mình không thể cung cấp là sự ngắt lời, và ngắt lời chính là phần lớn lý do khiến vòng thật trở nên khó. Một người phỏng vấn AI có thể lấp đúng khoảng trống đó: nó hỏi câu hỏi truy vấn ngay giữa câu bạn đang nói và không lịch sự chờ bạn nói xong. Chế độ phỏng vấn thử vận hành các vòng theo đúng cách này.

Bạn nên thu thập những phản hồi nào?

Hầu hết mọi người kết thúc một buổi luyện thử và ghi lại một kết luận chung chung, thứ vô dụng sau một tuần. Hãy thu thập những quan sát cụ thể gắn với hành vi mà bạn có thể thay đổi.

  • Thời gian đến câu hỏi làm rõ đầu tiên. Nếu quá chín mươi giây, bạn đang giải sai bài toán.
  • Khoảng im lặng dài nhất. Bất cứ điều gì trên hai mươi giây cần một câu giữ chỗ nói ra thành lời thay vào đó.
  • Bạn có nêu cách tiếp cận trước khi gõ code không? Có hoặc không, mỗi lần đều vậy.
  • Bạn phục hồi thế nào khi bị bí? Nhắc lại bài toán, thử một trường hợp nhỏ hơn, hoặc đứng hình.
  • Phần thảo luận độ phức tạp là do được hỏi hay tự nêu ra? Tự nêu ra được chấm điểm cao hơn.
  • Với thiết kế: bạn có xác định phạm vi trước khi vẽ không? Ràng buộc và quy mô trước, các ô hình sau.

Một kỹ sư backend chuẩn bị cho một vòng tuyển senior đã luyện mười hai buổi và vượt qua tất cả, rồi lại trượt vòng coding thật sau khi im lặng bốn phút trước một biến thể lạ. Các buổi luyện của cô chưa bao giờ có một bài mà cô không giải được, nên cô chưa từng luyện đúng điều duy nhất thực sự đã trục trặc. Cô đổi một quy tắc, cho phép các bài trên trình độ của mình, và vấn đề im lặng lộ ra ngay lập tức.

Bao nhiêu buổi luyện thử là đủ, và chúng không thể sửa được điều gì?

Không có con số kỳ diệu nào, và số lượng vượt quá một mức nào đó sẽ không còn đáng công nữa. Một khuôn mẫu hữu ích là hai đến ba buổi luyện cho mỗi loại vòng, trải trong hai tuần, với phần đánh giá giữa các buổi quan trọng hơn chính các buổi luyện. Sáu buổi luyện không có đánh giá còn tệ hơn ba buổi có ghi chú cẩn thận.

Hãy rõ ràng về giới hạn. Một buổi luyện thử không thể cho bạn biết bạn sẽ gặp bài nào, không thể đoán trước phong cách của người phỏng vấn bạn, và không thể thay thế việc thực sự nắm vững kiến thức. Điều nó sửa được là lớp trình bày: vừa nói vừa nghĩ, xác định phạm vi trước khi xây dựng, và phục hồi thành tiếng khi bị bí. Những điều đó chuyển hóa hoàn toàn, và chúng cũng là những điều mà đọc sách không dạy được.

Luyện tập và hỗ trợ trực tiếp là hai câu hỏi khác nhau với hai câu trả lời khác nhau. Việc luyện tập không có gì gây tranh cãi. Hỗ trợ trong một cuộc phỏng vấn thật phụ thuộc vào định dạng và quy định của nhà tuyển dụng, và các vòng coding có chia sẻ màn hình hoặc giám sát sẽ hoàn toàn nằm ngoài phạm vi này. Các giới hạn trung thực được nêu tại trung tâm khả năng bị phát hiện.

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

Một kỹ sư phần mềm nên luyện bao nhiêu buổi phỏng vấn thử?

Hai đến ba buổi cho mỗi loại vòng trong hai tuần, kèm một buổi đánh giá cẩn thận sau mỗi lần. Quá mức đó, các buổi thêm chủ yếu chỉ luyện lại thứ bạn vốn đã làm tốt. Sự cải thiện đến từ đánh giá, không phải từ số lượng.

Tôi có thể tự luyện một buổi phỏng vấn thử hữu ích mà không cần bạn đồng hành không?

Có, nếu bạn tái tạo đúng các ràng buộc: một bài không tự chọn, một đồng hồ không bao giờ dừng, công cụ tương ứng, và nói to suy nghĩ. Khoảng trống mà một buổi luyện một mình không thể lấp là sự ngắt lời, thứ mà một người phỏng vấn AI hoặc một người bạn có thể cung cấp.

Bài luyện thử nên ở trình độ của tôi hay khó hơn?

Hãy cố ý đưa vào vài bài trên trình độ của bạn. Những buổi luyện mà bạn luôn vượt qua không bao giờ luyện khả năng phục hồi, và đứng hình trước một bài lạ là cách phổ biến nhất khiến những kỹ sư giỏi mất điểm vòng coding.

Phỏng vấn thử có giúp ích cho vòng thiết kế hệ thống không?

Chúng giúp ích ở đó nhiều hơn bất cứ đâu khác, vì các vòng thiết kế gần như hoàn toàn là một màn trình bày bằng lời nói. Xác định phạm vi trước khi vẽ và bảo vệ một lựa chọn đánh đổi khi bị phản bác là những thói quen, và thói quen chỉ hình thành qua việc lặp lại thành tiếng.

Phỏng vấn thử có giống với việc luyện LeetCode không?

Không. Luyện bài tập xây dựng kỹ năng giải quyết; buổi luyện thử tập trình bày kỹ năng đó dưới sự quan sát và bị ngắt lời. Những ứng viên chỉ làm điều đầu tiên thường bất ngờ vì cùng một bài toán lại khó hơn hẳn khi có người đang theo dõi.

Câu hỏi liên quan

← Thêm về Phỏng vấn thử và luyện tập