Notes & software courses · Free to learn
Aph's Blog
On this page

เทคนิคระหว่างสัมภาษณ์

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

วิธีตอบโจทย์ coding ให้ได้คะแนนเต็ม แม้แก้โจทย์ไม่จบ

ผู้สัมภาษณ์ไม่ได้ดูแค่ว่าคุณแก้โจทย์ได้หรือไม่ แต่ดูวิธีคิด การสื่อสาร และการเขียนโค้ดด้วย หลายครั้งคนที่แก้ไม่จบแต่สื่อสารดียังได้ผ่าน ขณะที่คนเงียบ ๆ แล้วเขียนเสร็จกลับตก

ขั้นตอน UMPIRE สำหรับตอบโจทย์

  1. Understand — ทวนโจทย์ ถามให้ชัดเรื่อง input/output, edge case, ข้อจำกัด
  2. Match — โจทย์นี้คล้าย pattern ไหนที่เคยเจอ
  3. Plan — อธิบายแนวทางก่อนเขียน บอก approach และ data structure ที่จะใช้
  4. Implement — เขียนโค้ดพร้อมพูดอธิบายไปด้วย
  5. Review — ไล่ตรวจโค้ดด้วยตัวอย่าง input
  6. Evaluate — วิเคราะห์ time/space complexity และคุยเรื่องการปรับปรุง
อย่าเงียบ!

สิ่งที่แย่ที่สุดคือนั่งคิดเงียบ ๆ เป็นนาที ๆ ให้พูดความคิดออกมาดัง ๆ ตลอด แม้จะยังไม่เจอคำตอบ ผู้สัมภาษณ์จะได้เห็นกระบวนการคิดและช่วยใบ้ได้

Do

  • ถามให้ชัดเจนก่อนเริ่มเขียน อย่าด่วนสรุปสมมติฐานเอง
  • เริ่มจาก brute force ก่อนได้ แล้วค่อยบอกว่าจะ optimize อย่างไร
  • ตั้งชื่อตัวแปรให้สื่อความหมาย เขียนโค้ดให้อ่านง่าย
  • ทดสอบโค้ดด้วยตัวอย่างและ edge case เอง

Don't

  • อย่ารีบเขียนโค้ดทันทีโดยยังไม่วางแผน
  • อย่าแกล้งทำเป็นรู้คำตอบที่เคยเห็นมา — ผู้สัมภาษณ์ดูออก
  • อย่ารับ hint แบบเฉย ๆ ให้ต่อยอดความคิดจาก hint นั้น
  • อย่าลืมเช็ค edge case: array ว่าง, ค่า null, ตัวเลขติดลบ

เมื่อคิดไม่ออก (When Stuck)

ติดเป็นเรื่องปกติ สิ่งที่ผู้สัมภาษณ์ดูคือวิธีรับมือ ไม่ใช่ว่าติดหรือไม่ ลองตามลำดับนี้

  1. พูดออกมาว่าตอนนี้ติดตรงไหน และกำลังคิดอะไรอยู่
  2. ลองตัวอย่างเล็ก ๆ ด้วยมือ เพื่อหา pattern
  3. เริ่มจาก brute force ให้ได้คำตอบก่อน แล้วค่อยหา optimize
  4. นึกถึง data structure ที่เกี่ยวข้อง (hash map ช่วยไหม? sort ก่อนช่วยไหม?)
  5. ถ้าผู้สัมภาษณ์ให้ hint ให้รับมาต่อยอด อย่าปฏิเสธ

Complexity ที่ควรจำได้ทันที

รูปแบบComplexity ทั่วไป
วน loop เดียวผ่าน nO(n)
loop ซ้อน loopO(n²)
แบ่งครึ่งไปเรื่อย ๆ (binary search)O(log n)
sortO(n log n)
ลองทุก subsetO(2ⁿ)