จะเป็นอย่างไรถ้าคุณไม่ชอบฝึกคำถามการเขียนโค้ดมากกว่า 100 ข้อก่อนการสัมภาษณ์?

การสัมภาษณ์การเขียนโค้ดเริ่มยากขึ้น ในการเตรียมตัวสำหรับการสัมภาษณ์เขียนโค้ด คุณจะต้องเตรียมตัวเป็นสัปดาห์หรือหลายเดือน

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

ก่อนอื่นเรามาดูปัญหากันก่อน

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

ปัญหากับ LeetCode

LeetCode มีปัญหามากกว่า 2,000 รายการ ความท้าทายที่ใหญ่ที่สุดของ LeetCode คือการขาดความเป็นระบบ มีปัญหาการเขียนโค้ดชุดใหญ่ และไม่แน่ใจว่าจะเริ่มต้นจากจุดไหนหรือจะเน้นไปที่อะไร

สิ่งมหัศจรรย์ประการหนึ่งคือ มีคำถามจำนวนเพียงพอหรือไม่ที่เราควรพิจารณาเพื่อพิจารณาว่าตนเองเตรียมพร้อมสำหรับการสัมภาษณ์การเขียนโค้ดหรือไม่?

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

การแก้ไขปัญหา

เทคนิคหนึ่งที่ผู้คนมักปฏิบัติตามคือการแก้ปัญหาที่เกี่ยวข้องกับโครงสร้างข้อมูลเดียวกัน ตัวอย่างเช่น มุ่งเน้นไปที่คำถามที่เกี่ยวข้องกับ Arrays จากนั้น LinkedList, HashMap, Heap, Tree หรือ Trie เป็นต้น แม้ว่าสิ่งนี้จะทำให้มีองค์กรบางส่วน แต่ก็ยังขาดการเชื่อมโยงกัน ตัวอย่างเช่น คำถามมากมายสามารถแก้ไขได้โดยใช้ HashMaps แต่ยังต้องใช้เทคนิคอัลกอริทึมที่แตกต่างกัน

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

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

รูปแบบการเข้ารหัสช่วยเพิ่ม “ความสามารถในการแมปปัญหาใหม่กับปัญหาที่ทราบแล้ว

รูปแบบการเข้ารหัส

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

แนวคิดเบื้องหลังรูปแบบเหล่านี้คือเมื่อคุณคุ้นเคยกับรูปแบบแล้ว คุณจะสามารถแก้ไขปัญหาต่างๆ มากมายได้ สำหรับการอภิปรายโดยละเอียดเกี่ยวกับรูปแบบเหล่านี้และปัญหาที่เกี่ยวข้องกับแนวทางแก้ไข โปรดดูที่ Grokking the Coding Interview

ดังนั้น เพื่อเป็นการไม่ให้เสียเวลา ให้ฉันแสดงรายการรูปแบบเหล่านี้ทั้งหมด:

  1. หน้าต่างบานเลื่อน
  2. เกาะ (เมทริกซ์ข้าม)
  3. ตัวชี้สองตัว
  4. ตัวชี้แบบเร็วและแบบช้า
  5. รวมช่วง
  6. การเรียงลำดับแบบวน
  7. การกลับรายการแบบแทนที่ของ LinkedList
  8. การค้นหาแบบ Tree Broadth-First
  9. การค้นหาความลึกของต้นไม้ก่อน
  10. สองกอง
  11. ชุดย่อย
  12. แก้ไขการค้นหาแบบไบนารี
  13. XOR ระดับบิต
  14. องค์ประกอบ 'K' ยอดนิยม
  15. การผสาน K-way
  16. การเรียงลำดับโทโพโลยี
  17. 0/1 กระเป๋าเป้สะพายหลัง
  18. หมายเลขฟีโบนัชชี
  19. ลำดับต่อมาของพาลินโดรมิก
  20. สตริงย่อยทั่วไปที่ยาวที่สุด

ต่อไปนี้เป็นคำแนะนำเล็กๆ น้อยๆ ของแต่ละรูปแบบเหล่านี้พร้อมปัญหาตัวอย่าง:

บทสรุป

ชอบหรือไม่ คำถามประเภท LeetCode เป็นส่วนหนึ่งของการสัมภาษณ์การเขียนโปรแกรมเกือบทุกครั้ง ดังนั้นนักพัฒนาซอฟต์แวร์ทุกคนควรฝึกฝนก่อนการสัมภาษณ์ ทางเลือกเดียวของพวกเขาคือเตรียมตัวอย่างชาญฉลาดและเรียนรู้การแก้ปัญหาโดยมุ่งเน้นไปที่รูปแบบปัญหาที่ซ่อนอยู่ เรียนรู้เพิ่มเติมเกี่ยวกับรูปแบบเหล่านี้และตัวอย่างปัญหาใน Grokking the Coding Interview และ Grokking Dynamic Programming for Coding Interviews

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







ขอบคุณที่อ่าน