คำถามสัมภาษณ์ DSA

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

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

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

การสัมภาษณ์ DSA วัดอะไรกันแน่?

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

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

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

ควรรู้รูปแบบไหนบ้าง?

รูปแบบเหล่านี้คือส่วนใหญ่ของสิ่งที่ถูกถาม ให้ฝึกจับสัญญาณที่ชี้ไปยังแต่ละรูปแบบ

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

มีคำถามอะไรบ้างแยกตามหัวข้อ?

ตัวอย่างโจทย์ที่พบบ่อย เขียนในแบบที่ผู้สัมภาษณ์มักใช้จริง

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

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

ฝึกพูดไปพร้อมกับแก้โจทย์อย่างไร?

การแก้โจทย์แบบเงียบ ๆ สร้างปฏิกิริยาที่ผิด การสัมภาษณ์สดต้องการทั้งการเล่าและการเขียนโค้ดพร้อมกัน ซึ่งเป็นทักษะที่แยกจากการทำแต่ละอย่างเพียงลำพัง

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

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

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

ควรแก้โจทย์กี่ข้อก่อนสัมภาษณ์ DSA?

การครอบคลุมรูปแบบสำคัญกว่าจำนวนข้อ คนที่จำและนำแต่ละรูปแบบข้างต้นไปใช้ได้ พร้อมอธิบายออกมาดัง ๆ จะเตรียมพร้อมได้ดีกว่าคนที่แก้โจทย์ได้มากกว่ามากแต่ทำแบบเงียบ ๆ

ไดนามิกโปรแกรมมิงจำเป็นสำหรับการสัมภาษณ์ส่วนใหญ่หรือไม่?

มันปรากฏบ่อยครั้ง แต่ก็เป็นแค่หนึ่งรูปแบบในหลาย ๆ แบบและแทบไม่เคยเป็นทั้งรอบ การคล่องแคล่วกับอาร์เรย์ แฮชชิง ต้นไม้ และกราฟครอบคลุมได้มากกว่าการเน้นไดนามิกโปรแกรมมิงก่อนสิ่งอื่น

ควรบอกความซับซ้อนโดยไม่ต้องมีใครถามหรือไม่?

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

ถ้าหาคำตอบที่เหมาะสมที่สุดไม่ได้ควรทำอย่างไร?

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

ผู้ช่วย AI ช่วยในรอบสัมภาษณ์ DSA ได้หรือไม่?

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

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

← เพิ่มเติมเกี่ยวกับ คำถามสัมภาษณ์ตามตำแหน่งและหัวข้อ