คำถามสัมภาษณ์เขียนโค้ดด้วย AI: ตัวอย่างและการฝึกฝน

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

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

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

ควรฝึกคำถามสัมภาษณ์เขียนโค้ดข้อใดก่อน?

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

  • Two Sum: คืนค่าดัชนีที่ต่างกันสองตำแหน่งซึ่งค่ารวมกันเท่ากับเป้าหมาย สำหรับ [3, 3] และเป้าหมาย 6 คำตอบต้องใช้ทั้งสองตำแหน่ง ให้ไล่ตรวจด้วยแฮชแมปของค่าที่พบก่อนหน้า โดยตรวจหาค่าส่วนเติมเต็มก่อนเก็บค่าปัจจุบัน วิธีนี้ป้องกันการใช้ดัชนีเดียวซ้ำ เวลาที่คาดหวังคือ O(n) และใช้พื้นที่เพิ่มเติม O(n) ควรถามให้ชัดว่าต้องคืนค่าอะไรหากไม่มีคู่ที่ตรงเงื่อนไข
  • หาสตริงย่อยที่ยาวที่สุดซึ่งไม่มีอักขระซ้ำ สำหรับ 'abba' ความยาวคือ 2 ติดตามตำแหน่งล่าสุดของอักขระแต่ละตัวและรักษาหน้าต่างที่ไม่มีตัวซ้ำ ขอบซ้ายต้องไม่เลื่อนย้อนกลับเมื่ออักขระที่เคยพบอยู่นอกหน้าต่างปัจจุบัน เวลาที่คาดหวังคือ O(n) เมื่อค้นหาด้วยแฮชแมป ควรถามให้ชัดว่าอะไรนับเป็นอักขระหนึ่งตัว
  • รวมช่วงปิดที่ทับซ้อนกัน สำหรับ [1, 3], [3, 5] และ [8, 10] ให้คืนค่า [1, 5] และ [8, 10] เรียงตามจุดเริ่มต้น แล้วขยายช่วงปัจจุบันหรือเริ่มช่วงใหม่ การเรียงลำดับใช้เวลา O(n log n) ช่วงปิดที่มีจุดปลายร่วมกันถือว่าทับซ้อน ควรถามว่าสอดคล้องกับนิยามของโจทย์หรือไม่
  • กลับลำดับลิงก์ลิสต์ทางเดียวที่ไม่มีวงจร เก็บโหนดถัดไปไว้ก่อนเปลี่ยนพอยน์เตอร์ next ของโหนดปัจจุบัน วิธีวนซ้ำใช้เวลา O(n) และพื้นที่เพิ่มเติม O(1) ลองไล่กรณีลิสต์ว่าง หนึ่งโหนด และสองโหนด พร้อมอธิบายว่าส่วนใดของลิสต์ถูกกลับลำดับแล้วหลังการวนซ้ำแต่ละครั้ง
  • คืนค่าของต้นไม้ทวิภาคทีละระดับ ใช้คิวและประมวลผลตามจำนวนโหนดในระดับปัจจุบันก่อนเริ่มระดับถัดไป เวลาเป็น O(n) ส่วนพื้นที่เสริมของคิวเป็น O(w) โดย w คือความกว้างสูงสุดของระดับ ไม่นับเอาต์พุตที่คืนมา ทดสอบต้นไม้ว่างและต้นไม้ที่แต่ละระดับมีลูกเพียงหนึ่งโหนด
  • ตัดสินว่าสามารถเรียนทุกรายวิชาให้จบได้หรือไม่เมื่อมีวิชาบังคับก่อน สร้างแบบจำลองวิชาบังคับก่อนเป็นกราฟแบบมีทิศทางและใช้การเรียงลำดับเชิงทอพอโลยี หากประมวลผลจุดยอดได้น้อยกว่า V แสดงว่ายังมีวงจรแบบมีทิศทาง เวลาเป็น O(V + E) ทดสอบคอมโพเนนต์ที่ไม่เชื่อมต่อ วิชาที่แยกเดี่ยว และวิชาที่พึ่งพาตัวเอง
  • หาจำนวนเหรียญน้อยที่สุดที่รวมได้ตามจำนวนเงิน สมมติว่ามีเหรียญไม่จำกัดและมูลค่าเป็นจำนวนเต็มบวก สำหรับ [1, 3, 4] และจำนวนเงิน 6 การเลือกเหรียญมูลค่าสูงสุดก่อนใช้สามเหรียญ แต่ 3 + 3 ใช้สองเหรียญ กำหนดสถานะของการเขียนโปรแกรมแบบไดนามิกเป็นจำนวนเหรียญต่ำสุดสำหรับแต่ละจำนวนเงิน โดยเริ่มจากศูนย์เหรียญสำหรับจำนวนเงินศูนย์ เมื่อเป้าหมายคือ A และมีมูลค่าเหรียญ c แบบ วิธีมาตรฐานใช้เวลา O(Ac) และพื้นที่ O(A) ต้องจัดการจำนวนเงินที่ไม่สามารถรวมได้อย่างชัดเจน

ดูแบบฝึกที่จัดตามบทบาทและหัวข้อเพิ่มเติมได้ใน คลังคำถามสัมภาษณ์

คำตอบที่อธิบายได้ดีมีลักษณะอย่างไร?

พิจารณาโจทย์นี้: นับ subarray ต่อเนื่องที่ไม่ว่างและมีผลรวมเท่ากับเป้าหมาย โดยอนุญาตให้มีค่าติดลบ สำหรับ [1, -1, 1] และเป้าหมาย 1 คำตอบคือ 3 ได้แก่ subarray [1] แบบสมาชิกเดียวแต่ละชุด หรือทั้งอาร์เรย์

เริ่มด้วยวิธีพื้นฐาน: เลือกตำแหน่งเริ่มต้นแต่ละตำแหน่ง แล้วขยายตำแหน่งสิ้นสุดพร้อมรักษาผลรวมสะสม วิธีนี้ใช้เวลา O(n²) และพื้นที่เพิ่มเติม O(1) วิธีหน้าต่างแบบหดขนาดทั่วไปไม่น่าเชื่อถือในกรณีนี้ เพราะค่าติดลบทำให้สมมติฐานที่ว่าการขยายหน้าต่างจะเพิ่มผลรวมใช้ไม่ได้

วิธีที่เร็วกว่าจะใช้ prefix sum และแมปความถี่ หาก prefix sum ปัจจุบันคือ s ทุก prefix ก่อนหน้าที่เท่ากับ s - target จะระบุ subarray ที่มีผลรวมตามต้องการ เริ่มต้นแมปด้วย prefix sum ศูนย์หนึ่งครั้ง ซึ่งแทน prefix ว่างก่อนอาร์เรย์เริ่มต้น

  • ลำดับการประมวลผล: เพิ่มค่าปัจจุบันใน prefix sum นับ prefix ก่อนหน้าที่ตรงกัน แล้วจึงบันทึก prefix ปัจจุบัน หากบันทึกก่อนจะนับ subarray ว่างอย่างไม่ถูกต้องเมื่อเป้าหมายเป็นศูนย์
  • ค่าคงสภาพ: ก่อนบันทึก prefix ปัจจุบัน แมปจะเก็บความถี่ของ prefix ทั้งหมดที่สิ้นสุดก่อนตำแหน่งปัจจุบัน
  • ความซับซ้อน: แต่ละสมาชิกดำเนินการกับแมปเป็นจำนวนคงที่ เวลาที่คาดหวังคือ O(n) โดยสมมติว่าการดำเนินการแฮชใช้เวลาคงที่โดยเฉลี่ย ส่วนพื้นที่เพิ่มเติมคือ O(n)
  • การตรวจสอบ: อาร์เรย์ว่างคืนค่า 0 สำหรับ [0, 0] และเป้าหมาย 0 ให้คืนค่า 3 หากใช้ชนิดจำนวนเต็มที่มีความกว้างคงที่ ให้คำนึงถึงการล้นทั้งในผลรวมสะสมและจำนวนคำตอบ

คำถามต่อยอดที่มีประโยชน์คือ โจทย์ต้องการเพียงจำนวนหรือต้องการ subarray จริงทั้งหมด การคืนค่า subarray ที่ตรงกันทุกชุดทำให้มีต้นทุนด้านเอาต์พุต โดยอาร์เรย์ที่มีแต่ศูนย์จะมี subarray ไม่ว่างที่ตรงกัน n(n + 1)/2 ชุดเมื่อเป้าหมายเป็นศูนย์

ควรใช้ AI ฝึกคำถามเขียนโค้ดอย่างไร?

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

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

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

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

หากต้องการซ้อมอธิบายเหตุผลผ่านบทสนทนา โปรดไปที่ หน้าสัมภาษณ์จำลอง

SubcueAI เหมาะกับการสัมภาษณ์เขียนโค้ดแบบสดที่ได้รับอนุญาตอย่างไร?

SubcueAI มีช่องทางช่วยเหลือแบบสดสองรูปแบบ แอปเนทีฟหลักสำหรับ macOS และ Windows รับเสียงระบบและไมโครโฟนของคุณ พร้อมแสดงความช่วยเหลือในโอเวอร์เลย์ลอยบนเครื่อง ใช้งานกับไคลเอนต์ประชุมบนเดสก์ท็อปได้ รวมถึง Zoom และ Microsoft Teams

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

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

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

ดูคำแนะนำการตั้งค่าสำหรับช่องทางที่มีได้ใน บทแนะนำ SubcueAI

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

คำถามสัมภาษณ์เขียนโค้ดด้วย AI เหมือนกับคำถามสัมภาษณ์แมชชีนเลิร์นนิงหรือไม่?

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

ควรถามอะไรให้ชัดเจนก่อนเขียนวิธีแก้ปัญหาด้วยโค้ด?

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

ระหว่างฝึกควรขอวิธีแก้ฉบับสมบูรณ์จาก AI หรือไม่?

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

ควรทำอย่างไรเมื่อวิธีแก้ที่ AI สร้างขึ้นไม่ผ่านการทดสอบ?

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

SubcueAI ได้ยินผู้พูดทั้งสองฝ่ายระหว่างการสัมภาษณ์เขียนโค้ดหรือไม่?

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

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

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