25 điểm bởi xguru 2022-04-19 | 3 bình luận | Chia sẻ qua WhatsApp
  • Bài tập lập trình liên quan đến DB mà tôi nhận được từ MemSQL (nay là SingleStore) vào năm 2013
    → "Hãy thêm lệnh mult vào Memcached, một kho lưu trữ key-value, theo kiểu tương tự incr / decr. Tôi cho bạn 1 giờ."
  • Đây là một câu hỏi phỏng vấn kỹ thuật rất hay vì nó phân loại ứng viên rất gọn thành 3 kiểu
    • Loại 0: Những người ngạc nhiên khi phải đụng vào mã thực tế. Trên thực tế thì họ cũng khó mà đi được tới đây, nhưng không nên tuyển
      → Khi đó MemSQL được phát triển bằng C++11, nên việc đụng vào Memcached viết bằng C rất phù hợp với mục tiêu.
    • Loại 1: Những người nhìn bài toán và nói rằng "Phép nhân là phép cộng lặp lại, nên chắc có thể lặp lại cái có sẵn! Nhưng phải xử lý lock nữa nên..."
      → Loay hoay một lúc lâu rồi không viết ra được mã chạy được và thất bại. Dĩ nhiên cũng không được tuyển
    • Loại 2: Những người nói rằng "Phép nhân cũng giống phép cộng, ngoài việc ở chỗ làm + thì dùng *" rồi nhanh chóng Copy&Paste và đổi + thành *
      → Những người trong nhóm này có khả năng rất cao sẽ được tuyển
    • Những ứng viên xuất sắc nhất thì... vì còn thừa khá nhiều thời gian, họ có thể trau chuốt đầu ra, kiểm tra tính nhất quán của formatting, thêm unit test, hoặc rà soát lại cả các "quyết định thiết kế"

Kết luận

  • Tôi thích bài tập lập trình này vì nó là một phiên bản thu nhỏ của công việc lập trình thực tế
  • Khi bảo trì một codebase lớn, sẽ luôn có những đoạn mã bạn không thể hiểu hoàn toàn, hoặc những thành ngữ không cần thiết
  • Bài toán này đặc biệt phù hợp cho phỏng vấn vì chỉ có một đáp án đúng là đổi bool incr thành int opcode
  • Hiện có hai lệnh toán học (incr/decr), và cần mở rộng chúng thành ba lệnh
  • Đây là một bài toán được thiết kế tốt để loại bỏ các ứng viên không đủ năng lực và đưa những ứng viên đủ năng lực vào một con đường thuận lợi

3 bình luận

 
minhoryang 2022-04-20

Có lẽ điểm mấu chốt đáng chú ý sẽ là tìm ra đoạn mã tương ứng nhanh đến mức nào.

 
hongminhee 2022-04-19

Có lẽ điều này tốt hơn ở chỗ thay vì viết lại một chương trình từ đầu, bạn bổ sung tính năng vào mã đã có sẵn (hơn nữa lại là một dự án mã nguồn mở đã nổi tiếng và được sử dụng rộng rãi).

 
xguru 2022-04-19

Đúng là HN... Người từng đưa ra câu hỏi phỏng vấn gốc đã xuất hiện và đang làm AMA ở đó.
https://news.ycombinator.com/item?id=31065143