เตรียมตัวสัมภาษณ์ Microsoft ด้วย LeetCode
โดย Aaron Cao · อัปเดตเมื่อ

LeetCode ช่วยฝึกกลไกพื้นฐานของรอบเขียนโค้ดที่ Microsoft แต่ไม่ได้ฝึกตัวรอบสัมภาษณ์เอง โจทย์ส่วนใหญ่อยู่ในระดับปานกลาง และการสัมภาษณ์จะให้คะแนนจากวิธีที่คุณเล่าแนวทางแก้ปัญหา รับมือกับเงื่อนไขเพิ่มเติมที่ใส่เข้ามา และปรับตัวตามนั้น ซึ่งไม่มีข้อไหนเลยที่การฝึกคนเดียวจะช่วยได้
การทำโจทย์ LeetCode ซ้ำ ๆ ทำให้คุณพร้อมจริงหรือไม่
คุณอาจเคยเห็นคำแนะนำให้ทำโจทย์หลายร้อยข้อให้เสร็จก่อนสมัครงาน และอยากรู้ว่าตัวเลขนั้นมีความหมายจริงหรือเปล่า ส่วนนี้จะแยกให้เห็นว่า LeetCode ฝึกอะไรได้จริง และมีส่วนไหนที่ไม่แตะเลย เพื่อให้คุณใช้เวลาไปกับสิ่งที่คุ้มค่า สรุปสั้น ๆ คือ มันสร้างความจำที่พร้อมใช้งานตามที่คุณต้องการ แต่ข้ามส่วนของการแสดงออกที่คุณจะถูกให้คะแนนจริง ๆ ไป
สิ่งที่มันฝึกได้ดีนั้นเป็นเรื่องจริง การมองออกว่าโจทย์ต้องการโครงสร้างข้อมูลแบบไหน การเขียนโค้ดให้ถูกต้องโดยไม่มีคอมไพเลอร์อยู่ตรงหน้า และการรู้ความซับซ้อนของโค้ดที่เพิ่งเขียนไป ล้วนเป็นทักษะที่จำเป็น และการทำซ้ำคือวิธีที่ทำให้ทักษะเหล่านี้กลายเป็นอัตโนมัติ
สิ่งที่มันไม่ครอบคลุมคือทุกอย่างที่เป็นเรื่องปฏิสัมพันธ์กับคน ไม่มีใครมาขัดจังหวะคำตอบของคุณเพื่อถามว่าทำไมถึงเลือกแฮชแมป ไม่มีใครเพิ่มเงื่อนไขกลางโจทย์แล้วคอยดูปฏิกิริยาของคุณ คุณไม่เคยต้องพูดไอเดียที่ผิดออกมาดัง ๆ แล้วค่อยแก้ไขต่อหน้าคนแปลกหน้าที่กำลังฟังอยู่ นั่นคือส่วนที่รอบสัมภาษณ์ของ Microsoft ถูกออกแบบมาเพื่อสังเกต
แพทเทิร์นแบบไหนที่พบในรอบเขียนโค้ดของ Microsoft
ความครอบคลุมสำคัญกว่าปริมาณ และแพทเทิร์นที่พบซ้ำ ๆ ก็เป็นรายการสั้น ๆ ดังนี้
- Two pointers และ sliding window ใช้กับอาร์เรย์และสตริง มักมีข้อกำหนดให้ทำแบบ in-place
- แฮชแมป ความยากอยู่ที่การตัดสินใจว่าจะใช้อะไรเป็นคีย์ ไม่ใช่การค้นหาเอง
- การไล่ต้นไม้ แบบ depth-first และ breadth-first ผลรวมของเส้นทาง บรรพบุรุษร่วมที่ต่ำที่สุด
- การค้นหาในกราฟ โจทย์แบบกริด ส่วนประกอบที่เชื่อมต่อกัน เส้นทางที่สั้นที่สุดในกราฟที่ไม่มีน้ำหนัก
- ลิงก์ลิสต์ การกลับด้าน การรวม และการตรวจจับวงรอบ
- ไดนามิกโปรแกรมมิงระดับเข้าถึงง่าย สถานะมิติเดียว กลุ่มโจทย์แบบทอนเหรียญและขึ้นบันได
วิธีทดสอบที่มีประโยชน์ว่าพอหรือยัง คือสุ่มเลือกโจทย์ที่เคยแก้แล้วอธิบายออกมาดัง ๆ ว่าทำไมแพทเทิร์นนั้นถึงใช้ได้ และแนวทางอื่นจะพังตรงไหน ถ้าคุณทำแบบนี้ได้กับทั้งรายการข้างต้น การทำโจทย์เพิ่มจะได้ผลตอบแทนน้อยลง กระบวนการสัมภาษณ์ของบริษัทอื่นถูกวิเคราะห์ไว้ที่ ศูนย์รวมหัวข้อสัมภาษณ์ตามบริษัท
การสัมภาษณ์ต่างจากการทำ LeetCode อย่างไร
มีความแตกต่างสี่อย่างที่ควรเปลี่ยนวิธีที่คุณฝึกซ้อม คุณต้องพูดก่อนพิมพ์ เพราะผู้สัมภาษณ์คาดหวังแนวทางและการประเมินความซับซ้อนก่อนที่โค้ดจะปรากฏ เงื่อนไขจะเข้ามาระหว่างทำโจทย์ และคำถามต่อเนื่องนั่นแหละคือคำถามจริง ๆ ไม่มีปุ่มส่งคำตอบ คุณจึงต้องใช้เหตุผลพิจารณากรณีขอบเขตด้วยตัวเอง แทนที่จะอ่านข้อความแจ้งข้อผิดพลาด และทั้งหมดนี้เกิดขึ้นบน Microsoft Teams มักอยู่ในเอดิเตอร์ที่แชร์ร่วมกัน ขณะที่มีคนคอยดูอยู่
ผู้สมัครคนหนึ่งที่เตรียมตัวสำหรับตำแหน่งระดับกลางทำโจทย์ไปแล้วมากกว่าสองร้อยข้อ แต่ก็ยังติดขัดในกระบวนการสัมภาษณ์ การอัดเสียงเซสชันฝึกซ้อมเผยให้เห็นสาเหตุ นั่นคือความเงียบนานสิบเอ็ดนาทีก่อนที่จะมีโค้ดบรรทัดแรกออกมา ทางแก้ไม่ใช่การทำโจทย์เพิ่ม แต่คือการแก้โจทย์ที่เคยทำแล้วสามข้อซ้ำอีกครั้งพร้อมกับเล่าทุกการตัดสินใจออกมาดัง ๆ
การซ้อมพูดแบบจับเวลาลักษณะนี้กับผู้สัมภาษณ์ AI สามารถทำได้ที่ หน้าสัมภาษณ์จำลอง
ปิดช่องว่างระหว่างการแก้โจทย์กับการอธิบาย
เปลี่ยนช่วงสุดท้ายของการเตรียมตัวให้เป็นการฝึกซ้อมด้านการแสดงออก แก้โจทย์ที่คุ้นเคยออกมาดัง ๆ อีกครั้งโดยจับเวลา บอกแนวทางก่อนพิมพ์ และบังคับตัวเองให้บอกความซับซ้อนโดยไม่ต้องมีใครถาม อัดเสียงเซสชันไว้แล้วฟังช่วงที่เงียบ เพราะนั่นคือสิ่งที่ผู้สัมภาษณ์รู้สึกได้
SubcueAI ถูกสร้างมาสำหรับรอบพูดคุยในกระบวนการสัมภาษณ์ ไม่ใช่สำหรับรอบเขียนโค้ด แอปเนทีฟสำหรับ macOS และ Windows จะจับเสียงระบบพร้อมกับไมโครโฟนของคุณ และแสดงคำแนะนำในโอเวอร์เลย์แบบลอยบนเครื่องของคุณเอง ส่วน Side Panel ของส่วนเสริมเบราว์เซอร์จะช่วยเหลือแบบเรียลไทม์สำหรับแท็บการประชุมบนเบราว์เซอร์ตระกูล Chromium โดยจับเสียงเฉพาะของแท็บนั้นเท่านั้น ไม่มีบอทเข้าร่วมการโทร และไม่มีการฝังอะไรลงในหน้าการประชุม
ข้อจำกัดนี้ควรพูดให้ชัดเจน รอบเขียนโค้ดของ Microsoft โดยปกติหมายถึงการแชร์หน้าจอของคุณ และทุกอย่างที่อยู่บนหน้าจอก็อยู่ในสิ่งที่ถูกแชร์นั้นด้วย จุดที่ผู้ช่วยใช้ได้ผลคือบทสนทนากับผู้สรรหาบุคลากร รอบสัมภาษณ์เชิงพฤติกรรม และการพูดคุยเรื่องการออกแบบ สิ่งที่มันจับและจัดเก็บในรอบเหล่านั้นอยู่ที่ หน้าความปลอดภัย