25 คะแนน โดย xguru 2022-04-19 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • โจทย์เขียนโปรแกรมเกี่ยวกับฐานข้อมูลที่ผมได้รับในปี 2013 จาก MemSQL (ปัจจุบันคือ SingleStore)
    → "จงเพิ่มคำสั่ง mult ที่มีลักษณะคล้าย incr / decr ให้กับ Memcached ซึ่งเป็น key-value store ผมให้เวลา 1 ชั่วโมง"
  • คำถามนี้เป็นโจทย์สัมภาษณ์เทคนิคที่ยอดเยี่ยม เพราะมันแบ่งผู้สมัครออกได้อย่างชัดเจนเป็น 3 ประเภท
    • ประเภท 0 : คนที่ตกใจกับการต้องไปแก้โค้ดจริง ๆ แม้ในความเป็นจริงคงไปไม่ถึงขั้นนี้อยู่แล้ว แต่ก็ไม่ควรจ้าง
      → ตอนนั้น MemSQL พัฒนาด้วย C++11 ดังนั้นการไปแตะ Memcached ที่เขียนด้วย C จึงสอดคล้องกับจุดประสงค์มาก
    • ประเภท 1 : คนที่เห็นโจทย์แล้วพูดว่า "การคูณคือการบวกซ้ำ ๆ งั้นก็น่าจะวนใช้ของเดิมได้! แต่ต้องจัดการ lock ด้วย..."
      → สุดท้ายวกวนอยู่นาน ทำโค้ดที่ใช้งานได้ไม่สำเร็จ และแน่นอนว่าไม่ได้รับการจ้างงาน
    • ประเภท 2 : คนที่พูดว่า "การคูณก็เหมือนการบวก ยกเว้นตรงที่ที่ใช้ + ต้องเปลี่ยนเป็น *" แล้วก็ Copy&Paste และเปลี่ยน + เป็น * ได้อย่างรวดเร็ว
      → คนในกลุ่มนี้มีโอกาสสูงมากที่จะถูกจ้าง
    • ผู้สมัครที่ดีที่สุด... เพราะยังมีเวลาเหลือมาก พวกเขาจึงสามารถขัดเกลาผลงาน ตรวจความสม่ำเสมอของ formatting ใส่ unit test หรือแม้แต่ทบทวน "การตัดสินใจด้านการออกแบบ" ได้

บทสรุป

  • เหตุผลที่ผมชอบโจทย์เขียนโปรแกรมนี้ ก็เพราะมันเป็นภาพย่อส่วนของการเขียนโปรแกรมจริง
  • เวลาต้องดูแลโค้ดเบสขนาดใหญ่ ย่อมมีทั้งโค้ดที่เราเข้าใจไม่หมด หรือสำนวนการเขียนที่ไม่จำเป็นปะปนอยู่
  • ปัญหานี้เหมาะกับการสัมภาษณ์มาก เพราะมีคำตอบที่ถูกต้องอยู่เพียงแบบเดียว คือเปลี่ยน bool incr เป็น int opcode
  • ตอนนี้มีคำสั่งคำนวณเลขคณิตอยู่ 2 คำสั่ง (incr/decr) และต้องขยายมันให้เป็น 3 คำสั่ง
  • โจทย์นี้ถูกออกแบบมาอย่างดีเพื่อคัดกรองผู้สมัครที่ไม่ผ่านคุณสมบัติ และพาผู้สมัครที่มีคุณสมบัติเหมาะสมไปสู่เส้นทางที่สดใส

3 ความคิดเห็น

 
minhoryang 2022-04-20

ประเด็นสำคัญน่าจะอยู่ที่ว่าจะหาชุดโค้ดที่เกี่ยวข้องได้อย่างรวดเร็วแค่ไหน

 
hongminhee 2022-04-19

ฉันคิดว่านี่ดีกว่า เพราะไม่ใช่การเขียนโปรแกรมขึ้นมาใหม่ทั้งหมดตั้งแต่ศูนย์ แต่เป็นการเพิ่มฟีเจอร์ให้กับโค้ดที่มีอยู่แล้วอยู่แล้ว (แถมยังเป็นโปรเจกต์โอเพนซอร์สที่เป็นที่รู้จักดีและถูกใช้อย่างแพร่หลายอยู่แล้วด้วย)

 
xguru 2022-04-19

ใน HN ก็เป็นไปตามคาด.. คนที่เป็นคนตั้งคำถามสัมภาษณ์ต้นฉบับโผล่มาเปิด AMA เองเลยนะ
https://news.ycombinator.com/item?id=31065143