จะเป็นอย่างไรถ้าคุณไม่ชอบฝึกคำถามการเขียนโค้ดมากกว่า 100 ข้อก่อนการสัมภาษณ์?
การสัมภาษณ์การเขียนโค้ดเริ่มยากขึ้น ในการเตรียมตัวสำหรับการสัมภาษณ์เขียนโค้ด คุณจะต้องเตรียมตัวเป็นสัปดาห์หรือหลายเดือน
ไม่มีใครชอบที่จะใช้เวลามากขนาดนั้นในการเตรียมตัวสำหรับการสัมภาษณ์การเขียนโค้ด แล้วจะมีวิธีแก้ปัญหาที่ชาญฉลาดกว่านี้ไหม?
ก่อนอื่นเรามาดูปัญหากันก่อน
ใครที่กำลังเตรียมตัวสัมภาษณ์เขียนโค้ดจะรู้จัก LeetCode เป็นอย่างดี นี่อาจเป็นพื้นที่เก็บข้อมูลออนไลน์ที่ใหญ่ที่สุดสำหรับการเขียนโค้ดคำถามสัมภาษณ์ มาดูกันว่าผู้คนประสบปัญหาอะไรบ้างเมื่อใช้ LeetCode
ปัญหากับ LeetCode
LeetCode มีปัญหามากกว่า 2,000 รายการ ความท้าทายที่ใหญ่ที่สุดของ LeetCode คือการขาดความเป็นระบบ มีปัญหาการเขียนโค้ดชุดใหญ่ และไม่แน่ใจว่าจะเริ่มต้นจากจุดไหนหรือจะเน้นไปที่อะไร
สิ่งมหัศจรรย์ประการหนึ่งคือ มีคำถามจำนวนเพียงพอหรือไม่ที่เราควรพิจารณาเพื่อพิจารณาว่าตนเองเตรียมพร้อมสำหรับการสัมภาษณ์การเขียนโค้ดหรือไม่?
ฉันอยากเห็นกระบวนการที่มีประสิทธิภาพซึ่งแนะนำฉันและสอนเทคนิคอัลกอริทึมเพียงพอที่จะรู้สึกมั่นใจในการสัมภาษณ์ ในฐานะที่เป็นคนขี้เกียจ ฉันไม่อยากถามคำถามมากกว่า 500 ข้อ
การแก้ไขปัญหา
เทคนิคหนึ่งที่ผู้คนมักปฏิบัติตามคือการแก้ปัญหาที่เกี่ยวข้องกับโครงสร้างข้อมูลเดียวกัน ตัวอย่างเช่น มุ่งเน้นไปที่คำถามที่เกี่ยวข้องกับ Arrays จากนั้น LinkedList, HashMap, Heap, Tree หรือ Trie เป็นต้น แม้ว่าสิ่งนี้จะทำให้มีองค์กรบางส่วน แต่ก็ยังขาดการเชื่อมโยงกัน ตัวอย่างเช่น คำถามมากมายสามารถแก้ไขได้โดยใช้ HashMaps แต่ยังต้องใช้เทคนิคอัลกอริทึมที่แตกต่างกัน
ฉันอยากเห็นชุดคำถามที่ไม่เพียงแต่เป็นไปตามโครงสร้างข้อมูลเดียวกันเท่านั้น แต่ยังรวมถึงเทคนิคอัลกอริทึมที่คล้ายกันด้วย
สิ่งที่ดีที่สุดที่ฉันเจอคือรูปแบบการแก้ปัญหา เช่น หน้าต่างแบบเลื่อน ตัวชี้แบบเร็วและแบบช้า การเรียงลำดับทอพอโลยี ฯลฯ ตามรูปแบบเหล่านี้ ช่วยให้ฉันพัฒนาความสามารถในการ 'แมปปัญหาใหม่กับปัญหาที่ทราบอยู่แล้ว' สิ่งนี้ไม่เพียงแต่ทำให้กระบวนการเตรียมการเขียนโค้ด สัมภาษณ์ และเตรียมการเขียนโค้ดทั้งหมดเป็นเรื่องสนุก แต่ยังทำให้มีระเบียบมากขึ้นอีกด้วย
รูปแบบการเข้ารหัสช่วยเพิ่ม “ความสามารถในการแมปปัญหาใหม่กับปัญหาที่ทราบแล้ว”
รูปแบบการเข้ารหัส
ฉันได้รวบรวมรูปแบบปัญหาการเขียนโค้ดประมาณ 20 รูปแบบที่ฉันเชื่อว่าสามารถช่วยให้ทุกคนเรียนรู้เทคนิคอัลกอริทึมที่สวยงามเหล่านี้ และสร้างความแตกต่างอย่างแท้จริงในการสัมภาษณ์การเขียนโค้ด
แนวคิดเบื้องหลังรูปแบบเหล่านี้คือเมื่อคุณคุ้นเคยกับรูปแบบแล้ว คุณจะสามารถแก้ไขปัญหาต่างๆ มากมายได้ สำหรับการอภิปรายโดยละเอียดเกี่ยวกับรูปแบบเหล่านี้และปัญหาที่เกี่ยวข้องกับแนวทางแก้ไข โปรดดูที่ Grokking the Coding Interview
ดังนั้น เพื่อเป็นการไม่ให้เสียเวลา ให้ฉันแสดงรายการรูปแบบเหล่านี้ทั้งหมด:
- หน้าต่างบานเลื่อน
- เกาะ (เมทริกซ์ข้าม)
- ตัวชี้สองตัว
- ตัวชี้แบบเร็วและแบบช้า
- รวมช่วง
- การเรียงลำดับแบบวน
- การกลับรายการแบบแทนที่ของ LinkedList
- การค้นหาแบบ Tree Broadth-First
- การค้นหาความลึกของต้นไม้ก่อน
- สองกอง
- ชุดย่อย
- แก้ไขการค้นหาแบบไบนารี
- XOR ระดับบิต
- องค์ประกอบ 'K' ยอดนิยม
- การผสาน K-way
- การเรียงลำดับโทโพโลยี
- 0/1 กระเป๋าเป้สะพายหลัง
- หมายเลขฟีโบนัชชี
- ลำดับต่อมาของพาลินโดรมิก
- สตริงย่อยทั่วไปที่ยาวที่สุด
ต่อไปนี้เป็นคำแนะนำเล็กๆ น้อยๆ ของแต่ละรูปแบบเหล่านี้พร้อมปัญหาตัวอย่าง:
บทสรุป
ชอบหรือไม่ คำถามประเภท LeetCode เป็นส่วนหนึ่งของการสัมภาษณ์การเขียนโปรแกรมเกือบทุกครั้ง ดังนั้นนักพัฒนาซอฟต์แวร์ทุกคนควรฝึกฝนก่อนการสัมภาษณ์ ทางเลือกเดียวของพวกเขาคือเตรียมตัวอย่างชาญฉลาดและเรียนรู้การแก้ปัญหาโดยมุ่งเน้นไปที่รูปแบบปัญหาที่ซ่อนอยู่ เรียนรู้เพิ่มเติมเกี่ยวกับรูปแบบเหล่านี้และตัวอย่างปัญหาใน Grokking the Coding Interview และ Grokking Dynamic Programming for Coding Interviews
ไปที่ กูรูด้านการออกแบบ เพื่อดูหลักสูตรที่น่าสนใจเกี่ยวกับการสัมภาษณ์การเขียนโค้ดและการออกแบบระบบ
ขอบคุณที่อ่าน
- 👏 ฝากปรบมือให้เรื่องและติดตามผมด้วยนะครับ 👉
- 📰 ดูเนื้อหาเพิ่มเติมเกี่ยวกับ การสัมภาษณ์การเขียนโค้ดและการออกแบบระบบ
- 🔔 ติดตามฉัน: LinkedIn | ทวิตเตอร์ | จดหมายข่าว