วิกิสัมภาษณ์ — คู่มือสำหรับวิศวกรซอฟต์แวร์
โดยทั่วไปแล้ว การสัมภาษณ์ Software Engineer จะมี 4 รอบ:-
- รอบเทคนิค
- การออกแบบระดับสูง (HLD) รอบ
- การออกแบบระดับต่ำ (LLD) รอบ
- รอบพฤติกรรม
จำนวนรอบสำหรับแต่ละบทบาทจะขึ้นอยู่กับบริษัท ตัวอย่างเช่น Amazon มักจะมี 4 รอบ โดย 2 รอบแรกจะเกี่ยวข้องกับโครงสร้างข้อมูล (DS) และอัลกอริทึม และรอบที่เหลือจะเป็นรอบการออกแบบหากเป็นรอบสำหรับบทบาท SDE2+ สำหรับพวกเขา พวกเขาไม่ได้แยกรอบสำหรับพฤติกรรม แต่จะถามคำถามเกี่ยวกับความเป็นผู้นำ 2-3 ข้อในแต่ละรอบ
ทุกรอบมีความสำคัญและเราควรให้เวลากับแต่ละรอบ โดยปกติแล้ว นักศึกษาจบใหม่ที่ออกจากวิทยาลัยจะไม่ได้รับรอบ HLD และ LLD แต่พวกเขาสามารถคาดหวังรอบ OO (เชิงวัตถุ) แทน ซึ่งพวกเขาจะทดสอบทักษะเชิงวัตถุของคุณ
ในวิกินี้ ฉันจะแบ่งปันเนื้อหาทั้งหมดที่ฉันพบระหว่างการเตรียมการสัมภาษณ์ ฉันจะแบ่งปันหลักสูตร หนังสือ บล็อก และที่เก็บ GitHub ซึ่งมีประโยชน์มากสำหรับฉันระหว่างการเตรียมการสัมภาษณ์ นี่ไม่ได้หมายความว่าคุณจะต้องทำตามแบบเดียวกันในการสัมภาษณ์ เนื่องจากทุกคนมีสไตล์การเรียนรู้ของตัวเอง แต่คุณสามารถใช้วิกินี้เป็นแนวทางหรือข้อมูลอ้างอิงสำหรับการเตรียมการได้ ท้ายที่สุดแล้ว คุณคือผู้ที่เข้าร่วมการสัมภาษณ์
ฉันจะครอบคลุมแต่ละรอบแยกกัน เรามาเริ่มกันที่รอบทางเทคนิค
รอบทางเทคนิค
หนึ่งในรอบที่สำคัญที่สุดสำหรับทั้งน้องใหม่และผู้มีประสบการณ์ ที่นี่พวกเขาจะทดสอบความรู้ของคุณเกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึม รอบเหล่านี้ไม่ได้ทดสอบความรู้ของคุณเกี่ยวกับอัลกอริทึมขั้นสูงที่มีอยู่เพื่อแก้ปัญหาที่ซับซ้อน แต่อย่างน้อยคุณควรรู้จักสิ่งที่พบบ่อยที่สุด ฉันเคยเห็นผู้คนเริ่มมีปัญหาแปลกๆ และขยะแขยงที่สามารถแก้ไขได้ด้วยอัลกอริทึมเฉพาะบางอย่างเท่านั้น แต่นั่นเป็นเรื่องที่หายากมาก ฉันจะไม่แนะนำให้ใช้เวลาที่นั่นเพราะเราควรเชื่อในความน่าจะเป็นพื้นฐานที่จะเผชิญกับมัน หากคุณต้องการดูรูปแบบคำถามสัมภาษณ์ทั่วไป คุณสามารถไปที่เว็บไซต์ต่อไปนี้ (https://algo.monster/problems/stats)
สิ่งที่คุณไม่ควรข้าม:
โครงสร้างข้อมูล,
Array, Linked List, Stack, Queue, Heap, Map, Set, Trie, Tree, BST
อัลกอริทึม
การเรียงลำดับ การเขียนโปรแกรมแบบไดนามิก ความละโมบ การค้นหา การแบ่งและพิชิต และอัลกอริทึมกราฟ
การออกแบบระดับสูง
เป็นการทดสอบความรู้ของคุณในการออกแบบสถาปัตยกรรมโดยรวมของระบบ ประกอบด้วยคำอธิบายของสถาปัตยกรรมระบบ การออกแบบฐานข้อมูล และคำอธิบายโดยย่อของระบบ บริการ แพลตฟอร์ม และความสัมพันธ์ระหว่างโมดูลต่างๆ คำถามที่เคยคลุมเครือมาก เช่น การออกแบบ WhatsApp, การออกแบบ Redbus ฯลฯ ที่นี่คุณต้องออกแบบภายในเวลาน้อยกว่า 30–45 นาที ขึ้นอยู่กับผู้สัมภาษณ์ ผู้สัมภาษณ์ที่นี่ไม่ได้คาดหวังให้คุณเขียนโค้ด แต่คุณควรจะสามารถออกแบบฐานข้อมูล, API และอื่นๆ ได้หากถูกร้องขอ
การออกแบบระดับต่ำ
มันอธิบายคำอธิบายโดยละเอียดของทุกโมดูล ซึ่งหมายความว่ามันรวมตรรกะจริงสำหรับทุกองค์ประกอบของระบบ และลงลึกในข้อกำหนดเฉพาะของแต่ละโมดูล ที่นี่คุณต้องเขียนโค้ดคลาส อินเทอร์เฟซ ฯลฯ นอกจากนี้ คุณควรมีความรู้เป็นอย่างดีเกี่ยวกับรูปแบบการออกแบบ หากคุณรู้ภาษาเชิงวัตถุก็จะเป็นจุดบวก
รอบพฤติกรรม
ฉันเชื่อว่าที่นี่ฉันไม่จำเป็นต้องแนะนำใดๆ นี่เป็นหนึ่งในรอบที่คนเคยข้ามไป แต่ในความคิดของฉัน ใช้เวลาอย่างน้อย 1 วันในการเตรียมตัว ผู้สัมภาษณ์ส่วนใหญ่สนใจสิ่งที่คุณพูดในรอบนี้จริงๆ Amazon, Google และอื่นๆ ให้ความสำคัญกับรอบเหล่านี้อย่างจริงจัง และคุณควรตระหนักถึงคำถามที่ถาม และควรใช้กลยุทธ์ใดในการตอบคำถามเหล่านั้น
ทรัพยากร:
รอบเทคนิค
1.https://www.geeksforgeeks.org/top-algorithms-and-data-structures-for-competitive-programming/(สำคัญที่สุด)
2.https://takeuforward.org/interviews/strivers-sde-sheet-top-coding-interview-problems/(ปัญหา)
3.https://www.youtube.com/user/purpongie(กวดวิชา)
4.https://cses.fi/problemset/list(ปัญหา)
5.https://github.com/donnemartin/interactive-coding-challenges(การเรียนรู้)
6.https://leetcode.com/discuss/interview-question/2001789/Collections-of-Important-String-questions-Pattern(ปัญหา)
7.https://github.com/jwasham/coding-interview-university(การเรียนรู้)
8.https://leetcode.com/discuss/interview-question/2069641/the-only-lists-you-need-for-your-interview-preparation(การเรียนรู้)
HLD รอบ
1.https://www.youtube.com/c/SystemDesignInterview/videos(กวดวิชา)
2.https://www.youtube.com/watch?v=0163cssUxLA&list=PLA8lYuzFlBqAy6dkZHj5VxUAaqr4vwrka(กวดวิชา)
3.https://www.youtube.com/watch?v=xpDnVSmNFX0&list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX(กวดวิชา)
4.https://blog.bytebytego.com/?utm_source=linkedin_post(บล็อก)
5.https://leetcode.com/discuss/general-discussion/125038/system-design-interview-prep(การเรียนรู้)
6.https://www.educative.io/courses/grokking-modern-system-design-interview-for-engineers-managers(จ่ายคอร์ส)
7.https://github.com/donnemartin/system-design-primer(การเรียนรู้)
8.https://github.com/checkcheckzz/system-design-interview(การเรียนรู้)
LLD รอบ
1.https://workat.tech/machine-coding/practice(ปัญหาการเข้ารหัสเครื่อง)
2.https://www.youtube.com/playlist?list=PL564gOx0bCLouDCUMtmj6hMEu1JS7QYEr(กวดวิชา)
3.https://github.com/prasadgujar/low-level-design-primer/blob/master/questions.md(ปัญหา)
4.https://betterprogramming.pub/how-to-ace-the-low-level-design-interview-3f1be6401070(บล็อก)
รอบพฤติกรรม
1.https://www.youtube.com/watch?v=RzlUQCy84rQ(หลักการเป็นผู้นำของอเมซอน)
2.https://leetcode.com/discuss/interview-question/1729926/a-guide-for-behavioral-round(แนะนำ)
3.https://drive.google.com/file/d/1sb6Kll5enH3H70uaNwnjWPkN9pNtSu9-/view(ไฟล์ PDF)
4.https://igotanoffer.com/blogs/product-manager/behavioral-interview-questions-tech-companies#techniques(คำถามเฟสบุ๊ค)
5.https://leetcode.com/discuss/interview-question/437082/Amazon-Behavioral-questions-or-Leadership-Principles-or-LP(คำถาม Amazon LP)
6.https://www.techinterviewhandbook.org/behavioral-interview-questions/(คำถาม)
7.https://www.principle.cards/(ทดสอบตัวเอง)
สำหรับการอัปเดตล่าสุดของวิกิสัมภาษณ์ คุณสามารถติดตาม GitHub repo ของฉันได้https://github.com/aashan007/Interview-wiki