26 điểm bởi GN⁺ 2025-03-06 | 9 bình luận | Chia sẻ qua WhatsApp
  • Quy trình tuyển dụng là thứ mà ai cũng ghét. Quản lý tuyển dụng, người phụ trách tuyển dụng và ứng viên đều như vậy
  • Phỏng vấn kỹ thuật là một trong những bước tai tiếng nhất trong số đó, và phần lớn người đi phỏng vấn đều không thích
  • Trong khi công việc thực tế chủ yếu là kết nối API đơn giản, thì trong phỏng vấn người ta lại thường hỏi về lý thuyết phức tạp và thuật toán
    • Ví dụ như trường hợp tác giả của Homebrew, công cụ được cho là do 90% kỹ sư ở Google sử dụng, bị trượt phỏng vấn vì không thể đảo cây nhị phân trên bảng trắng

Những thay đổi trong vài năm gần đây (các yếu tố làm phỏng vấn mất hiệu lực)

  • Đã xuất hiện các trường hợp tắt camera trong phỏng vấn từ xa rồi thuê người khác làm thay
  • Từng có trường hợp lao động Triều Tiên dùng video deepfake để tìm việc
  • Với sự xuất hiện của các công cụ tự động viết mã như GitHub Co-pilot, Cursor, cùng các LLM như Claude hay OpenAI, các bài toán lập trình cơ bản hoặc phần hỏi đáp giờ có thể được giải quyết rất dễ dàng
  • AI ngày càng có thể can thiệp từ việc viết CV, nộp hồ sơ hàng loạt cho tới phỏng vấn video, nhưng bài viết này tập trung vào chính phỏng vấn kỹ thuật

Cấu trúc cơ bản của phỏng vấn kỹ thuật

Hầu như mọi công ty tuyển dụng lập trình viên đều có một quy trình được biến thể đôi chút như sau

  • Bài kiểm tra trước trên Hackerrank
    • Đóng vai trò bộ lọc để tuyển lập trình viên junior hoặc thực tập sinh
    • Có thể làm bài trực tuyến một cách tự do
  • Kiến thức nền tảng khoa học máy tính (Comp Sci Fundamentals)
    • Hỏi về cấu trúc dữ liệu, thuật toán, Big O, v.v.
    • Thường dành cho lập trình viên junior
  • Phỏng vấn coding
    • Đánh giá khả năng viết và chạy mã thực tế
    • Dùng các ví dụ dự án đơn giản để kiểm tra khả năng sử dụng ngôn ngữ và giải quyết vấn đề ở mức cơ bản
  • Kiến trúc/thiết kế
    • Nhắm tới lập trình viên senior nhiều hơn junior
    • Đánh giá thiết kế hệ thống, khả năng mở rộng, cơ sở dữ liệu và thiết kế API

Việc dùng AI trong phỏng vấn

  • Vì AI, vai trò sàng lọc của các bài kiểm tra trước như Hackerrank đã suy yếu đáng kể
  • Các phần kiến thức nền tảng khoa học máy tính và phỏng vấn coding cũng đang dễ bị giải bởi độ khó của đề bài nằm trong phạm vi trả lời của LLM
  • Phỏng vấn kiến trúc/thiết kế hiện vẫn tương đối an toàn, nhưng về dài hạn nếu AI tiếp tục phát triển thì lĩnh vực này cũng có thể bị đe dọa

Chúng ta có những lựa chọn nào?

  • 1. Dừng phỏng vấn kỹ thuật từ xa
    • Nếu người phỏng vấn ngồi cạnh quan sát trực tiếp thì sẽ khó dùng AI hơn
      • Giả sử vượt qua tất cả các vòng còn lại, có thể chuyển sang phỏng vấn coding trực tiếp
  • 2. Dùng phần mềm kiểu Pearson Vue
    • Cài phần mềm giám sát và theo dõi qua camera
    • Không hoàn hảo vì đã có nhiều cách lách được chia sẻ rộng rãi qua nhiều kênh khác nhau (thậm chí còn có subreddit riêng về việc này)
  • 3. Làm ngơ vấn đề
    • Dựa vào lời kêu gọi đạo đức kiểu “đừng dùng AI”
    • Kết quả là người dùng AI sẽ có lợi thế, khiến doanh nghiệp khó chọn được ứng viên phù hợp
  • 4. Cho phép dùng AI
    • Đánh giá khả năng viết prompt tốt cho LLM và năng lực refactor thay vì chỉ đánh giá kỹ năng coding thuần túy
    • Đây cũng là giai đoạn chuyển tiếp, nơi vẫn cần năng lực lập trình đủ tốt để tự sửa lỗi trong đầu ra của AI
  • 5. Cách tiếp cận hybrid
    • Trước tiên kiểm tra từ xa khả năng tận dụng AI, sau đó làm vòng xác minh cuối cùng trực tiếp ngoại tuyến

Các giải pháp khả thi

  • Về dài hạn, cách số 4 và số 5 có khả năng thực tế cao hơn
  • Ngay cả khi áp dụng RTO, cũng không thể gọi toàn bộ ứng viên ở xa tới phỏng vấn trực tiếp, nên vẫn cần một phương án hiệu quả
  • Một phương án khác là thay đổi chính định dạng của buổi phỏng vấn
    • Phỏng vấn coding ngày nay nhiều khi chỉ dừng ở các bài nhỏ cỡ FizzBuzz hoặc làm máy tính đơn giản
    • Nếu tận dụng hỗ trợ của AI, có thể tăng độ khó bài tập lên hơn 10 lần để đánh giá cả quá trình xây dựng một ứng dụng hoàn chỉnh
    • Cũng có thể thử hình thức phỏng vấn dài khoảng 2 tiếng, kết hợp cả kiến trúc lẫn coding
  • Với cách này, có thể yêu cầu ứng viên xây dựng ứng dụng, mở rộng nó và triển khai thêm tính năng
    • Khi codebase lớn dần, có thể kiểm tra xem họ có giữ được tính nhất quán hay không, và đánh giá được năng lực ở mức sâu hơn thay vì chỉ dừng ở câu trả lời bề mặt
  • Qua quá trình đó có thể đánh giá
    • Năng lực sử dụng các công cụ cơ bản như git và IDE
    • Khả năng viết prompt hiệu quả cho LLM và “lập trình” để nhận được đầu ra tốt hơn
      • Năng lực hiểu và kết hợp đầu ra từ LLM để hoàn thiện mã theo hướng có thể bảo trì
      • Liệu ứng viên có thể hoàn thành một ứng dụng đạt quy mô và khả năng mở rộng nhất định trong thời gian giới hạn hay không
    • Khả năng duy trì chất lượng và logic một cách nhất quán
  • Cách đánh giá tổng hợp như vậy có thể trở thành phương án thay thế cho phỏng vấn coding trong kỷ nguyên AI

Summary

  • Phỏng vấn kỹ thuật nhiều khả năng sẽ thay đổi rất lớn trong tương lai gần
  • Hiện tại việc dùng AI có thể còn chậm hoặc dễ lộ, nhưng dần dần AI có thể sẽ được che giấu tốt hơn
  • Từ đó có thể xuất hiện các kịch bản như
    • Tỷ lệ đậu tăng lên, nhưng thay vào đó số trường hợp bị loại trong thời gian làm việc thực tế (probation) cũng có thể tăng
    • Áp lực buộc lập trình viên junior phải sớm theo kịp yêu cầu kỹ thuật cao của doanh nghiệp có thể còn lớn hơn
  • Nếu cách dùng AI để vượt qua phỏng vấn FAANG lan rộng, tốc độ thay đổi có thể còn tăng nhanh hơn nữa

9 bình luận

 
scheee 2025-03-07

Tôi lo rằng thay vì thu hẹp sự lệch pha giữa phỏng vấn kỹ thuật và công việc thực tế, người ta lại đổ lỗi oan cho AI.

 
whitelips 2025-03-07

Không biết có phải vì sự thay đổi này không, nhưng công ty tôi đang làm hiện phỏng vấn bằng live coding mà không có bài tập làm trước.

 
cnaa97 2025-03-06

Bên chỗ tôi hiện đang chuyển sang chính sách cho phép dùng AI để trả lời trong phỏng vấn kỹ thuật.. Vì đầu vào quyết định đầu ra, nên ngược lại còn có thể đánh giá năng lực đặt câu hỏi..

 
cronex 2025-03-06

Tôi nghĩ dùng AI cũng được.
Nhưng kết quả tạo ra theo cách đó phải được biến thành 100% của chính mình.
Nếu tôi là người phỏng vấn, tôi sẽ giao bài tập lập trình online rồi trong buổi phỏng vấn trực tiếp yêu cầu ứng viên giải thích về đoạn mã đó. Tất nhiên cũng sẽ có thêm các câu hỏi bổ sung.
Dù là tự viết hay AI viết, nếu ở mức độ không thể giải thích đoạn mã đã nộp và cũng không trả lời được các câu hỏi liên quan thì nên bị loại.

 
bbulbum 2025-03-06

> Thay vì kỹ năng lập trình, hình thức đánh giá sẽ chuyển sang khả năng viết prompt tốt cho LLM và năng lực refactoring

Tôi nghĩ những năng lực này sẽ trở nên quan trọng hơn.

 
alucard 2025-03-06

Vấn đề không phải do AI, mà chẳng phải là do trước đây các bài tập phỏng vấn vốn đã có định dạng sơ sài kiểu “hãy tìm ra optimal answer, vậy là mọi thứ đều OK”, và giờ vấn đề đó chỉ mới lộ ra thôi sao? Trong công việc thực tế cũng đâu phải là sẽ không dùng AI, vậy thì tại sao lại đặt ra hạn chế? haha Dù dùng phương tiện nào đi nữa, miễn tạo ra được output là được. Tuy vậy, vẫn cần đánh giá một cách minh bạch xem họ đã tận dụng phương tiện đó như thế nào.

 
jamsya 2025-03-06

Tôi đồng ý. Khi AI xuất hiện, những bài kiểm tra coding tào lao xa rời công việc thực tế sẽ tự nhiên bị thị trường đào thải, và những công ty dùng phương thức tuyển dụng tốt hơn sẽ thu hút được nhân tài giỏi.
Đây đúng là một cuộc chiến thú vị giữa giáo và khiên.

 
xguru 2025-03-06

Chương trình gian lận phỏng vấn Leetcode
Đây là một ví dụ phù hợp về việc gian lận bằng AI trong các buổi phỏng vấn kỹ thuật mà bài viết này đề cập.

 
GN⁺ 2025-03-06
Ý kiến Hacker News
  • Quy trình phỏng vấn tốt nhất bao gồm lập trình cặp với thành viên trong nhóm và phỏng vấn qua điện thoại. Chỉ trong vài phút là có thể biết ứng viên có làm việc tốt hay không, và quy trình này đã tạo ra đội ngũ hiệu quả nhất trong hơn 20 năm sự nghiệp

    • Vấn đề là nhu cầu về quy trình có thể mở rộng và thông lượng cao đã làm hỏng nhiều phần của văn hóa phần mềm
    • Cách nghĩ kiểu "chúng tôi phải xử lý hàng trăm ứng viên, và các chỉ số của quy trình quan trọng hơn kết quả" mới là vấn đề
  • Review code rất hữu ích như một công cụ đánh giá

    • Điều quan trọng là để ứng viên tự review code
    • Junior, mid, senior và staff sẽ nhìn thấy những điểm rất khác nhau trên cùng một codebase
    • Khi code do AI tạo ra ngày càng phổ biến, việc chọn những lập trình viên có thể đánh giá hiệu quả chất lượng và độ chính xác của code trở nên quan trọng
    • Đã từng trải qua một buổi phỏng vấn ở công ty YC, nơi code review là vòng đầu tiên, và nhờ đó đã bắt đầu tạo một ứng dụng mã nguồn mở
  • Khoảng năm 2005, tại một SME đã được yêu cầu code trên bảng trắng nhưng không được dùng máy tính

    • Khi hỏi lý do dùng bảng trắng, câu trả lời là họ đang bắt chước best practice của Google
    • Cuối cùng vẫn code trên bảng trắng, nhưng nói rằng sẽ sẵn sàng làm lại nếu họ cung cấp máy tính
    • Rồi cuối cùng đã sang nơi khác
  • Nếu AI có thể giải hết mọi câu hỏi phỏng vấn kỹ thuật, thì công ty A nên tự hỏi vì sao họ lại không tuyển chính AI

    • Có thể cần để kỹ sư đánh giá liệu một tính năng có thể được triển khai hay không, và trong buổi phỏng vấn có thể yêu cầu ứng viên suy nghĩ về một yêu cầu tính năng mẫu
    • Nhiều khi công ty không hiểu rõ giá trị của kỹ sư nên cũng khó đánh giá giá trị của ứng viên
  • Một kỹ thuật tuyển dụng để tránh AI là yêu cầu lập trình viên junior mang code của họ đến và giải thích nó

    • Thảo luận xem họ sẽ thay đổi gì, thay đổi như thế nào, có dùng pattern nào không, v.v.
    • Với lập trình viên senior thì đưa đoạn code phức tạp và yêu cầu phân tích theo thời gian thực
    • Dùng AI để rút ngắn các công việc thường ngày là ổn, nhưng phải có khả năng suy nghĩ phản biện về kết quả
  • Với tư cách người phỏng vấn, ở các công ty không phải FAANG thì dùng quy trình phỏng vấn đơn giản

    • Hỏi về CV, kỳ vọng và năng lực của ứng viên, rồi yêu cầu họ cho xem code mà họ đã viết
    • Quy trình này nhanh và hiệu quả
  • Thị trường việc làm hiện tại đang hỗn loạn, nên có vẻ sẽ khó kiếm việc cho đến khi mọi thứ thực sự đụng trần

    • Có 26 năm kinh nghiệm nhưng vẫn không hoàn hảo, và gian dối thường không hiệu quả
  • Việc dùng các bài Leetcode mức trung bình/cao trong 30-45 phút phỏng vấn chỉ có thể làm lộ ra hai kiểu người

    • Người tiếp cận bài toán từ đầu và người đã biết sẵn lời giải
    • Nếu không biết thuật toán Kadane thì cũng giống như đang tiếp cận bài toán từ đầu
    • Không biết đâu là cách phỏng vấn tối ưu, nhưng có một phong cách cá nhân yêu thích
    • Câu hỏi phỏng vấn nên có test case, tăng dần độ phức tạp, tập trung vào cấu trúc dữ liệu, và cho ứng viên cơ hội đánh đổi cũng như ra quyết định
  • Vấn đề không phải là AI, mà là công ty không biết cách lựa chọn ứng viên cho đúng

    • Họ thậm chí còn không áp dụng cả những điều cơ bản của tâm trắc học
    • Quy trình tuyển chọn tốt nhất là để người mới thực sự làm việc trong vài tuần
  • Ở buổi phỏng vấn gần nhất, đã được yêu cầu dùng công cụ, bao gồm cả AI, để hoàn thành bài tập

    • Trong phỏng vấn live coding cũng trải qua quy trình tương tự
    • Dùng công cụ để kiểm tra kỹ năng và các thực hành tốt là lựa chọn hiển nhiên