คำถามและคำตอบในการสัมภาษณ์โครงสร้างข้อมูล [สำหรับนักศึกษาใหม่และผู้มีประสบการณ์]
เผยแพร่แล้ว: 2020-11-23จุดประสงค์ของการเขียนโครงสร้างข้อมูลและคำถามสัมภาษณ์อัลกอริทึมคือเพื่อให้คุณทำความคุ้นเคยกับธรรมชาติของคำถามที่มักถูกถามในการสัมภาษณ์เรื่องโครงสร้างข้อมูลและอัลกอริทึม ผู้สัมภาษณ์ที่ดีจะไม่ถามคำถามที่กำหนดไว้ล่วงหน้า โดยปกติ คำถามจะเริ่มต้นจากแนวคิดพื้นฐานของเรื่องและดำเนินต่อไปขึ้นอยู่กับคำตอบและการอภิปรายเพิ่มเติมของคุณ หากคุณต้องการได้รับความเชี่ยวชาญและได้งานด้านวิทยาศาสตร์ข้อมูลในฝันของคุณ ลองดูใบรับรองวิทยาศาสตร์ข้อมูลของเรา
สารบัญ
คำถามและคำตอบในการสัมภาษณ์โครงสร้างข้อมูล
1. โครงสร้างข้อมูลคืออะไร?
คุณสามารถนึกถึงโครงสร้างข้อมูลเป็นวิธีการที่กำหนด จัดเก็บ และดึงข้อมูลอย่างเป็นระบบและเชิงโครงสร้าง โครงสร้างข้อมูลสามารถมีรายการข้อมูลประเภทต่างๆ ได้
2. โครงสร้างข้อมูลต่างๆ มีอะไรบ้าง?
ความพร้อมใช้งานของโครงสร้างข้อมูลอาจแตกต่างกันไปขึ้นอยู่กับภาษาการเขียนโปรแกรม โครงสร้างข้อมูลที่ใช้กันทั่วไปบางส่วน ได้แก่ แผนภูมิ กราฟ คิว รายการ อาร์เรย์ และสแต็ก
อ่านเพิ่มเติม: การเรียงลำดับในโครงสร้างข้อมูล
3. อัลกอริทึมหมายถึงอะไร
คุณสามารถนึกถึงอัลกอริทึมเป็นขั้นตอนแบบเป็นขั้นตอนสำหรับการกำหนดกลุ่มคำสั่งที่มีการดำเนินการในลำดับคงที่ให้ผลลัพธ์ที่ต้องการ
4. การวิเคราะห์อัลกอริธึมมีความจำเป็นอย่างไร?
ปัญหาหนึ่งสามารถแก้ไขได้หลายวิธี ดังนั้นจึงเป็นไปได้ที่จะได้รับอัลกอริธึมการแก้ปัญหาหลายอย่าง จุดประสงค์ของการวิเคราะห์อัลกอริธึมคือการค้นหาและใช้อัลกอริธึมที่เหมาะสมที่สุด
5. เกณฑ์สำหรับการวิเคราะห์อัลกอริทึม
อัลกอริทึมจะวิเคราะห์ตามปัจจัยสองประการ – ช่องว่างและเวลา หมายถึงเวลาดำเนินการและพื้นที่เพิ่มเติมที่จำเป็นสำหรับส่วนของอัลกอริทึม
6. การวิเคราะห์ asymptotic ของอัลกอริทึมหมายความว่าอย่างไร
สำหรับอัลกอริธึมใดๆ มีเวลาดำเนินการสามระดับที่แตกต่างกันตามการเชื่อมโยงทางคณิตศาสตร์:
- การแสดง Best Case ทำได้โดยใช้สัญลักษณ์ Ω(n)
- การแสดงกรณีเลวร้ายที่สุดใช้สัญลักษณ์ Ο(n)
- การแสดงกรณีเฉลี่ยใช้สัญลักษณ์ Θ(n)
7. โครงสร้างข้อมูลเชิงเส้นหมายถึงอะไร
เมื่อรายการข้อมูลถูกจัดเรียงตามลำดับ จะเรียกว่าโครงสร้างข้อมูลเชิงเส้น รายการข้อมูลจะถูกจัดเก็บและเข้าถึงตามลำดับ ตัวอย่างทั่วไปของโครงสร้างข้อมูลเชิงเส้นคือรายการและอาร์เรย์
8. การดำเนินการทั่วไปที่ทำกับโครงสร้างข้อมูลมีอะไรบ้าง?
ต่อไปนี้เป็นการดำเนินการที่สามารถทำได้บนโครงสร้างข้อมูล:
การแทรก – การเพิ่มรายการข้อมูล
การลบ – การกำจัดรายการข้อมูล
Traversal – การเข้าถึงและพิมพ์รายการข้อมูล
ค้นหา – ค้นหารายการข้อมูล
เรียงลำดับ – รายการข้อมูลที่จัดเรียงตามลำดับที่กำหนดไว้ล่วงหน้า
ต้องอ่าน: แนวคิดและหัวข้อโครงการโครงสร้างข้อมูล
9. แนวทางต่างๆ ในการพัฒนาอัลกอริธึมมีอะไรบ้าง?
แนวทางที่ใช้กันทั่วไปในการพัฒนาอัลกอริธึมมีสามวิธี ได้แก่
Greedy Approach: การเลือกตัวเลือกที่ดีที่สุดถัดไปในการค้นหาวิธีแก้ปัญหา
แบ่งแยกและพิชิต: ปัญหาแบ่งออกเป็นปัญหาย่อยที่เป็นไปได้น้อยที่สุด และปัญหาย่อยแต่ละข้อได้รับการแก้ไขอย่างอิสระ
การเขียนโปรแกรมแบบไดนามิก: ปัญหาแบ่งออกเป็นปัญหาย่อยน้อยที่สุด และแก้ไขร่วมกัน ค
9. ตัวอย่างของอัลกอริทึมโลภ:
- ·อัลกอริธึมแบบขยายน้อยที่สุดของ Djikstra, Kruskal และ Prim
- · กราฟ – การระบายสีแผนที่
- ปัญหาปกเวอร์เท็กซ์
- · ปัญหาการจัดตารางงาน
- · ปัญหาของเป้
- · ปัญหาการเดินทางของพนักงานขาย
10. ตัวอย่างอัลกอริทึมการแบ่งและพิชิต
- การคูณเมทริกซ์ของ Stassen
- เรียงลำดับด่วน
- ผสานการเรียงลำดับ
- คู่ที่ใกล้เคียงที่สุด
- ค้นหาไบนารี
11. ตัวอย่างของอัลกอริธึมการเขียนโปรแกรมแบบไดนามิก:
- หอคอยแห่งฮานอย
- เส้นทางที่สั้นที่สุดโดย Dijkstra
- กำหนดการโครงการ
- ปัญหาเป้
- ชุดเลขฟีโบนักชี
- เส้นทางที่สั้นที่สุดคู่ทั้งหมดโดย Floyd-Marshall
12. รายการเชื่อมโยงคืออะไร?
คุณสามารถนึกถึงรายการที่เชื่อมโยงเป็นรายการข้อมูลที่เชื่อมโยงถึงกันด้วยลิงก์ เช่น ข้อมูลอ้างอิงหรือพอยน์เตอร์ ไม่อนุญาตให้เข้าถึงตำแหน่งหน่วยความจำโดยตรงในภาษาระดับสูงร่วมสมัย และไม่รองรับในภาษาเหล่านี้ หากมีอยู่ในรูปของฟังก์ชันในตัว

13. สแต็คคืออะไร?
เป็นประเภทข้อมูลนามธรรมชนิดหนึ่งที่ใช้สำหรับจัดเก็บและดึงค่าในรูปแบบ Last In First Out
14. ทำไมเราใช้สแต็ค?
สแต็คใช้วิธีการ LIFO ในการเพิ่มและดึงข้อมูลรายการข้อมูลที่ใช้เวลา O(n) เท่านั้น หากคุณต้องการเข้าถึงรายการข้อมูลในลำดับย้อนกลับของการมาถึง คุณสามารถใช้สแต็คได้ สแต็กมักใช้ในการแยกวิเคราะห์นิพจน์ การเรียกฟังก์ชันแบบเรียกซ้ำ และการสำรวจกราฟเชิงลึกก่อน
การดำเนินการทั่วไปที่คุณสามารถทำได้บนสแต็ก:
push(): การเพิ่มรายการไปยัง stack top
pop(): การลบรายการออกจาก stack top
peek(): แสดงค่าของรายการบนสุดโดยไม่ต้องลบออก
is empty(): ตรวจสอบว่าคุณมี stack . ว่างหรือไม่
is full(): ตรวจสอบว่าคุณมี full-stack หรือไม่
15. คิวในโครงสร้างข้อมูลหมายถึงอะไร?
เช่นเดียวกับสแต็ก คิวยังเป็นโครงสร้างข้อมูลที่เป็นนามธรรม อย่างไรก็ตามคิวเปิดทั้งสองด้าน หมายความว่าปลายด้านหนึ่งใช้สำหรับแทรกข้อมูล (enqueue) และปลายอีกด้านหนึ่งใช้สำหรับลบรายการ (dequeue) คิวเป็นไปตามวิธีการเข้าก่อนออกก่อน กล่าวคือ รายการข้อมูลที่เก็บไว้ก่อนจะเข้าถึงได้ก่อน
16. การใช้คิวคืออะไร?
เนื่องจากคิวเป็นไปตามวิธีเข้าก่อนออกก่อน โครงสร้างข้อมูลนี้สามารถใช้สำหรับการทำงานกับรายการข้อมูลในลำดับที่แน่นอนของการมาถึง คิวใช้กันอย่างแพร่หลายในระบบปฏิบัติการสำหรับกระบวนการต่างๆ แนวขวางก่อนข้ามของกราฟและคิวลำดับความสำคัญเป็นตัวอย่างบางส่วนของคิว
17. การดำเนินการที่สามารถทำได้ในคิว:
enqueue(): การเพิ่มรายการไปยังส่วนท้ายของคิว
dequeue(): ลบรายการออกจากส่วนหน้าของคิว
peek (): แสดงรายการด้านหน้าโดยไม่ต้องลบออก
is empty(): ตรวจสอบว่า stack ว่างหรือไม่
is full(): ตรวจสอบว่า stack เต็มหรือไม่
18. การค้นหาแบบไบนารีคืออะไร?
การค้นหาแบบไบนารีเป็นเทคนิคการค้นหาที่ใช้กับรายการที่เรียงลำดับหรืออาร์เรย์ การค้นหาจะเลือกหน่วยกลางที่สามารถแยกรายการทั้งหมดออกเป็นสองส่วน อันดับแรก หน่วยกลางจะถูกเปรียบเทียบกับรายการค้นหา
หากเป็นการจับคู่ อัลกอริธึมจะยุติลงได้สำเร็จ มิฉะนั้น จะพยายามตรวจสอบว่ารายการค้นหามีขนาดเล็กกว่าหรือใหญ่กว่าหน่วยกลาง หากรายการค้นหามีขนาดเล็ก รายการตรงกลางจะกลายเป็นรายการสุดท้ายของอาร์เรย์หรือรายการ หากรายการค้นหามีขนาดใหญ่ รายการตรงกลางจะกลายเป็นรายการบนสุดของรายการ
ความคิดสุดท้าย
เราหวังว่า คำถามสัมภาษณ์เกี่ยวกับโครงสร้างข้อมูลและคำแนะนำคำตอบ จะเป็นประโยชน์ เราจะอัปเดตคู่มืออย่างสม่ำเสมอเพื่อให้คุณอัปเดต
หากคุณอยากเรียนรู้เกี่ยวกับวิทยาศาสตร์ข้อมูล ลองดูโปรแกรม Executive PG ของ IIIT-B & upGrad ใน Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 รายการ เวิร์กช็อปภาคปฏิบัติจริง การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม 1 -on-1 พร้อมที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
โครงสร้างข้อมูลนามธรรมหมายถึงอะไร
โครงสร้างข้อมูลนามธรรมหรือประเภทข้อมูลนามธรรม (ADT) เป็นแบบจำลองทางคณิตศาสตร์ของโครงสร้างข้อมูลที่แสดงประเภทของข้อมูลที่จัดเก็บ การดำเนินการที่สนับสนุนโดยข้อมูล และประเภทของพารามิเตอร์การดำเนินการ ด้วยความช่วยเหลือของ ADT ผู้ใช้สามารถค้นหาว่าการดำเนินการแต่ละครั้งทำอะไร ไม่สามารถช่วยในการค้นหาการทำงานของการดำเนินงานแม้ว่า โครงสร้างข้อมูลต่างๆ สามารถใช้เพื่อดำเนินการโครงสร้างข้อมูลที่เป็นนามธรรมได้ การระบุ ADT สำหรับโปรแกรมเป็นขั้นตอนเริ่มต้นที่ยอดเยี่ยมในการกำหนดโครงสร้างข้อมูลที่จะใช้ในโปรแกรม
โครงสร้างข้อมูลประเภทต่าง ๆ มีอะไรบ้าง?
โครงสร้างข้อมูลแบ่งออกเป็นสองประเภท: โครงสร้างข้อมูลเชิงเส้นและไม่เป็นเชิงเส้น องค์ประกอบของโครงสร้างข้อมูลเชิงเส้นเรียงตามลำดับ ง่ายต่อการดำเนินการเนื่องจากชิ้นส่วนต่างๆ ถูกจัดเรียงตามลำดับเฉพาะ อย่างไรก็ตาม เมื่อความซับซ้อนของโปรแกรมเพิ่มขึ้น โครงสร้างข้อมูลเชิงเส้นอาจไม่ใช่วิธีแก้ปัญหาในอุดมคติเนื่องจากปัญหาในการปฏิบัติงาน โครงสร้างข้อมูลที่ไม่ใช่เชิงเส้นไม่มีองค์ประกอบในลำดับทั่วไป แต่จะจัดระเบียบตามลำดับชั้น โดยมีองค์ประกอบหนึ่งเชื่อมโยงกับองค์ประกอบอื่นอย่างน้อยหนึ่งรายการ
คุณลักษณะใดของโครงสร้างข้อมูลจะยังคงมีความเกี่ยวข้องในอนาคต
คุณลักษณะเกือบทั้งหมดของโครงสร้างข้อมูลมีแนวโน้มที่จะยังคงมีความเกี่ยวข้องในอนาคตเนื่องจากโครงสร้างข้อมูลเป็นหัวใจสำคัญของวิทยาการคอมพิวเตอร์ ตั้งแต่อาร์เรย์พื้นฐานไปจนถึงแผนผังการค้นหาแบบไบนารีและอื่น ๆ พวกเขามีบทบาทสำคัญในการพัฒนาอัลกอริธึมที่ฝังแน่นในชีวิตประจำวัน เนื่องจากโครงสร้างข้อมูล โลกเทคโนโลยีในปัจจุบันจึงรวดเร็ว มีประสิทธิภาพ และแม่นยำ กลยุทธ์ที่ใช้ในการปรับเปลี่ยนโครงสร้างข้อมูลจะมีความชัดเจนมากขึ้น