เคล็ดลับสัมภาษณ์เขียนโค้ด
โดย Aaron Cao · อัปเดตเมื่อ
ทำความเข้าใจโจทย์และเงื่อนไขก่อนเริ่มเขียนโค้ด อธิบายแนวทางของคุณออกมาดัง ๆ ไปให้ถึงโซลูชันที่ใช้งานได้ก่อนจะปรับให้ดีขึ้น ทดสอบด้วยกรณีขอบ และระบุความซับซ้อนด้านเวลาและพื้นที่ ผู้สัมภาษณ์ให้คะแนนวิธีที่คุณคิดและสื่อสาร ไม่ใช่แค่ว่าโค้ดสุดท้ายรันได้หรือไม่
ก่อนเริ่มเขียนโค้ด: ทำความเข้าใจโจทย์ก่อน แล้วค่อยวางแผน
ถ้าสัญชาตญาณของคุณภายใต้ความกดดันคือเริ่มพิมพ์ทันที ส่วนนี้จะช่วยแก้ไขสัญชาตญาณนั้น ผู้สมัครที่แข็งแกร่งที่สุดมักใช้เวลาไม่กี่นาทีแรกไปกับการไม่เขียนโค้ดเลย และผู้สัมภาษณ์ก็สังเกตเห็นสิ่งนี้
เริ่มต้นด้วยการอธิบายโจทย์ด้วยคำพูดของคุณเองและยืนยันกับผู้สัมภาษณ์ ถามเกี่ยวกับเงื่อนไข: ขนาดของอินพุต ช่วงค่าที่เป็นไปได้ อินพุตถูกเรียงลำดับหรือไม่ จะจัดการกับอินพุตที่ว่างเปล่าหรือผิดรูปแบบอย่างไร จากนั้นระบุแนวทางที่คุณตั้งใจจะใช้และความซับซ้อนของมันก่อนที่จะเขียนอะไรทั้งสิ้น ขั้นตอนการวางแผนสั้น ๆ นี้ช่วยจับความเข้าใจผิดได้ตั้งแต่เนิ่น ๆ และแสดงให้เห็นการคิดอย่างเป็นระบบ ซึ่งเป็นส่วนสำคัญของคะแนน
ระหว่างเขียนโค้ด: คิดออกมาดัง ๆ และสร้างทีละขั้น
ความเงียบคือวิธีที่ทำให้ผู้แก้ปัญหาที่เก่งดูอ่อนแอที่สุด รักษาการอธิบายอย่างต่อเนื่องว่าคุณกำลังเขียนอะไรและทำไม เพื่อให้ผู้สัมภาษณ์ตามตรรกะของคุณทันและช่วยชี้แนะได้หากคุณหลงทาง
ไปให้ถึงคำตอบที่ถูกต้องก่อนคำตอบที่ชาญฉลาด โซลูชันแบบ brute-force ที่รันได้นั้นมีค่ามากกว่าไอเดียที่สวยงามแต่คอมไพล์ไม่ผ่านเลย และคุณสามารถปรับปรุงได้เมื่อบางอย่างใช้งานได้แล้ว เขียนเป็นชิ้นเล็ก ๆ ที่ทดสอบได้ ใช้ชื่อตัวแปรที่ชัดเจน และหากติดขัด ให้พูดสิ่งที่คุณกำลังพิจารณาแทนที่จะเงียบไป ผู้สัมภาษณ์มักให้คำใบ้ แต่เฉพาะเมื่อพวกเขาได้ยินว่าคุณกำลังคิดอะไรอยู่
หลังจากรันได้: การทดสอบ กรณีขอบ และความซับซ้อน
โซลูชันยังไม่เสร็จสมบูรณ์เมื่อมันคอมไพล์ผ่าน แต่จะเสร็จสมบูรณ์เมื่อคุณพยายามทำให้มันพังแล้ว ลองไล่โค้ดของคุณด้วยอินพุตปกติ จากนั้นด้วยอินพุตที่จงใจให้ยาก: อินพุตว่างเปล่า องค์ประกอบเดียว ค่าซ้ำ ตัวเลขติดลบ กรณีที่ใหญ่ที่สุดที่เงื่อนไขอนุญาต
ลองพิจารณาวิศวกร frontend ที่สัมภาษณ์ตำแหน่งระดับกลางซึ่งเขียนโซลูชันแบบ two-pointer ที่ใช้งานได้ จากนั้นโดยไม่มีใครขอ เขาไล่ตรวจอาร์เรย์ว่างเปล่าและอาร์เรย์ที่มีองค์ประกอบเดียวผ่านโค้ดของเขา และระบุ runtime ว่าเป็น O(n) นาทีสุดท้ายของการทดสอบตัวเองและวิเคราะห์ความซับซ้อนนี้มักเป็นสิ่งที่แยกระหว่างการได้รับการจ้างงานกับการอยู่ในสถานะ "อาจจะ" เพราะมันบ่งบอกว่าวิศวกรคนนี้จะจับบั๊กของตัวเองได้ในงานจริง พูดความซับซ้อนด้านเวลาและพื้นที่ออกมาดัง ๆ แม้จะไม่มีใครถาม
เปลี่ยนเคล็ดลับให้เป็นนิสัยก่อนถึงรอบจริง
การอ่านเคล็ดลับนั้นง่าย แต่การปฏิบัติตามขณะที่ประหม่านั้นไม่ง่าย วิธีแก้คือการฝึกซ้อมภายใต้เงื่อนไขที่ใกล้เคียงกับสถานการณ์จริง: มีตัวจับเวลาทำงาน พูดโซลูชันของคุณออกมาดัง ๆ และไม่หยุดเพื่อค้นหาข้อมูล หลังจากแบบฝึกหัดแต่ละข้อ ให้ทบทวนไม่ใช่แค่ว่าคุณแก้โจทย์ได้หรือไม่ แต่รวมถึงว่าคุณได้ทำความเข้าใจโจทย์ อธิบายออกมาดัง ๆ และทดสอบหรือไม่ เพราะสิ่งเหล่านี้คือนิสัยที่ถูกให้คะแนน
รอบพูดแบบจับเวลากับผู้สัมภาษณ์ AI เป็นวิธีหนึ่งในการสร้างปฏิกิริยาตอบสนองนี้ คุณสามารถฝึกได้ที่เครื่องมือ สัมภาษณ์จำลอง ข้อควรระวังที่ควรย้ำ: รอบสัมภาษณ์เขียนโค้ดจริงมักอยู่บนโปรแกรมแก้ไขโค้ดที่ใช้ร่วมกันและถูกจับตาดู หรือถูกบันทึกไว้ ดังนั้นไม่มีผู้ช่วยแบบสดใดที่ปลอดภัยระหว่างรอบเหล่านั้น และเป้าหมายของการฝึกซ้อมคือการไม่ต้องพึ่งพามันเลย คำตอบเพิ่มเติมเกี่ยวกับรอบเขียนโค้ดอยู่ใน ศูนย์รวมหัวข้อประเภทการสัมภาษณ์ และคำแนะนำการฝึกซ้อมอยู่ใน ศูนย์รวมหัวข้อการสัมภาษณ์จำลอง