วิธีจัดสัมภาษณ์จำลองสำหรับวิศวกรซอฟต์แวร์

โดย Aaron Cao · อัปเดตเมื่อ

วิธีจัดสัมภาษณ์จำลองสำหรับวิศวกรซอฟต์แวร์
ซ้อมทีละรอบภายใต้เวลาจริง ด้วยเครื่องมือแบบเดียวกับที่รอบจริงใช้ พร้อมผู้สัมภาษณ์ที่ขัดจังหวะ ให้คะแนนที่โครงสร้าง การสื่อสาร และการฟื้นตัว มากกว่าจะดูว่าไปถึงคำตอบที่ดีที่สุดหรือไม่ การซ้อมที่ไม่เคยพลาดเลยคือการซ้อมที่ไม่ได้ฝึกส่วนที่ยากที่สุด

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

สัมภาษณ์จำลองวิศวกรซอฟต์แวร์ที่สมจริงครอบคลุมอะไรบ้าง?

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

  • Coding. 35 ถึง 45 นาที หนึ่งหรือสองโจทย์ พูดความคิดออกมาดังๆ ระหว่างพิมพ์โค้ด เป้าหมายของการซ้อมคือการเล่าคำตอบที่คุณกำลังคิดอยู่ให้ฟัง
  • System design. 45 ถึง 60 นาที โจทย์เปิดกว้าง ไม่มีการอธิบายเพิ่มเว้นแต่คุณจะถาม เป้าหมายของการซ้อมคือกำหนดขอบเขตโจทย์ก่อนเริ่มออกแบบ
  • Behavioral. 45 นาทีของเรื่องราวโปรเจกต์พร้อมคำถามตามที่ดุดัน เป้าหมายของการซ้อมคือรอดจากคำถามตามครั้งที่สามเกี่ยวกับการตัดสินใจที่คุณเสียใจ

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

จะซ้อมคนเดียวได้อย่างไร?

การซ้อมคนเดียวมักล้มเหลวในแบบที่คาดเดาได้ คุณเลือกโจทย์ที่แก้ได้ หยุดจับเวลาตอนติดขัด แล้วจบด้วยความรู้สึกว่าโอเค ทุกอย่างที่ว่ามาคือตรงข้ามกับสถานการณ์จริงโดยสิ้นเชิง ให้จำลองข้อจำกัดเหล่านั้นแทน

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

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

ควรเก็บฟีดแบ็กอะไรบ้าง?

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

  • เวลาก่อนถามคำถามชี้แจงข้อแรก ถ้าเกินเก้าสิบวินาทีแปลว่าคุณกำลังแก้โจทย์ผิดข้อ
  • ช่วงเงียบที่นานที่สุด อะไรก็ตามที่เกินยี่สิบวินาทีต้องมีคำพูดคั่นแทนความเงียบ
  • คุณบอกแนวทางก่อนพิมพ์โค้ดหรือเปล่า? ใช่หรือไม่ ทุกครั้งไป
  • คุณฟื้นตัวอย่างไรตอนติดขัด? พูดโจทย์ใหม่ ลองเคสที่เล็กลง หรือแข็งค้าง
  • การพูดถึงความซับซ้อนถูกถามหรือคุณพูดเอง? พูดเองได้คะแนนดีกว่า
  • สำหรับดีไซน์ คุณกำหนดขอบเขตก่อนวาดหรือเปล่า? ข้อจำกัดกับสเกลก่อน กล่องทีหลัง

วิศวกรแบ็กเอนด์คนหนึ่งที่เตรียมตัวสำหรับรอบซีเนียร์ซ้อมไปสิบสองครั้งและผ่านทุกครั้ง แต่กลับสอบตกรอบโค้ดดิ้งจริงหลังจากเงียบไปสี่นาทีกับโจทย์แบบที่ไม่คุ้นเคย การซ้อมของเธอไม่เคยมีโจทย์ที่เธอแก้ไม่ได้เลย เธอจึงไม่เคยซ้อมสิ่งเดียวที่พลาดจริงๆ เธอเปลี่ยนกฎข้อหนึ่ง คือยอมให้มีโจทย์ที่ยากเกินระดับตัวเอง แล้วปัญหาความเงียบก็ปรากฏขึ้นทันที

ซ้อมกี่ครั้งถึงจะพอ และแก้อะไรไม่ได้บ้าง?

ไม่มีตัวเลขวิเศษ และปริมาณที่มากเกินจุดหนึ่งจะหยุดคุ้มค่า รูปแบบที่มีประโยชน์คือซ้อมสองถึงสามครั้งต่อประเภทรอบ กระจายไปในสองสัปดาห์ โดยการทบทวนระหว่างครั้งสำคัญกว่าตัวเซสชันเอง ซ้อมหกครั้งโดยไม่ทบทวนแย่กว่าซ้อมสามครั้งพร้อมโน้ตที่ใส่ใจ

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

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

คำถามที่พบบ่อย

วิศวกรซอฟต์แวร์ควรสัมภาษณ์จำลองกี่ครั้ง?

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

ซ้อมสัมภาษณ์คนเดียวโดยไม่มีคู่ซ้อมได้ประโยชน์ไหม?

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

โจทย์ซ้อมควรอยู่ในระดับของฉันหรือยากกว่า?

ให้ตั้งใจใส่โจทย์ที่ยากเกินระดับตัวเองบ้าง การซ้อมที่คุณผ่านทุกครั้งจะไม่เคยฝึกการฟื้นตัวเลย และการแข็งค้างกับโจทย์ที่ไม่คุ้นเคยเป็นสาเหตุที่พบบ่อยที่สุดที่ทำให้วิศวกรฝีมือดีเสียคะแนนในรอบโค้ดดิ้ง

สัมภาษณ์จำลองช่วยเรื่องรอบ system design ไหม?

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

สัมภาษณ์จำลองเหมือนกับการฝึก LeetCode หรือเปล่า?

ไม่เหมือน การฝึกโจทย์สร้างทักษะการแก้ปัญหา ส่วนการซ้อมฝึกการนำเสนอทักษะนั้นภายใต้การสังเกตและการถูกขัดจังหวะ ผู้สมัครที่ทำแค่อย่างแรกมักแปลกใจว่าโจทย์เดียวกันยากขึ้นแค่ไหนเมื่อมีคนเฝ้าดูอยู่

คำถามที่เกี่ยวข้อง

← เพิ่มเติมเกี่ยวกับ สัมภาษณ์จำลองและการฝึกซ้อม