เตรียมตัวสัมภาษณ์ Microsoft ด้วย LeetCode

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

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

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 โดยปกติหมายถึงการแชร์หน้าจอของคุณ และทุกอย่างที่อยู่บนหน้าจอก็อยู่ในสิ่งที่ถูกแชร์นั้นด้วย จุดที่ผู้ช่วยใช้ได้ผลคือบทสนทนากับผู้สรรหาบุคลากร รอบสัมภาษณ์เชิงพฤติกรรม และการพูดคุยเรื่องการออกแบบ สิ่งที่มันจับและจัดเก็บในรอบเหล่านั้นอยู่ที่ หน้าความปลอดภัย

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

ควรทำโจทย์ LeetCode กี่ข้อสำหรับ Microsoft

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

Microsoft ถามโจทย์ LeetCode ระดับยากหรือไม่

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

ผู้สัมภาษณ์ของ Microsoft นำโจทย์ LeetCode มาใช้ซ้ำโดยตรงหรือไม่

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

ฉันสามารถใช้ผู้ช่วย AI ระหว่างรอบเขียนโค้ดของ Microsoft ได้หรือไม่

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

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

← เพิ่มเติมเกี่ยวกับ กระบวนการสัมภาษณ์ของบริษัทใหญ่