คำถามและคำตอบในการสัมภาษณ์โครงสร้างข้อมูล [สำหรับนักศึกษาใหม่และผู้มีประสบการณ์]

เผยแพร่แล้ว: 2020-11-23

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

สารบัญ

คำถามและคำตอบในการสัมภาษณ์โครงสร้างข้อมูล

1. โครงสร้างข้อมูลคืออะไร?

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

2. โครงสร้างข้อมูลต่างๆ มีอะไรบ้าง?

ความพร้อมใช้งานของโครงสร้างข้อมูลอาจแตกต่างกันไปขึ้นอยู่กับภาษาการเขียนโปรแกรม โครงสร้างข้อมูลที่ใช้กันทั่วไปบางส่วน ได้แก่ แผนภูมิ กราฟ คิว รายการ อาร์เรย์ และสแต็ก

อ่านเพิ่มเติม: การเรียงลำดับในโครงสร้างข้อมูล

3. อัลกอริทึมหมายถึงอะไร

คุณสามารถนึกถึงอัลกอริทึมเป็นขั้นตอนแบบเป็นขั้นตอนสำหรับการกำหนดกลุ่มคำสั่งที่มีการดำเนินการในลำดับคงที่ให้ผลลัพธ์ที่ต้องการ

4. การวิเคราะห์อัลกอริธึมมีความจำเป็นอย่างไร?

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

5. เกณฑ์สำหรับการวิเคราะห์อัลกอริทึม

อัลกอริทึมจะวิเคราะห์ตามปัจจัยสองประการ – ช่องว่างและเวลา หมายถึงเวลาดำเนินการและพื้นที่เพิ่มเติมที่จำเป็นสำหรับส่วนของอัลกอริทึม

6. การวิเคราะห์ asymptotic ของอัลกอริทึมหมายความว่าอย่างไร

สำหรับอัลกอริธึมใดๆ มีเวลาดำเนินการสามระดับที่แตกต่างกันตามการเชื่อมโยงทางคณิตศาสตร์:

  • การแสดง Best Case ทำได้โดยใช้สัญลักษณ์ Ω(n)
  • การแสดงกรณีเลวร้ายที่สุดใช้สัญลักษณ์ Ο(n)
  • การแสดงกรณีเฉลี่ยใช้สัญลักษณ์ Θ(n)

7. โครงสร้างข้อมูลเชิงเส้นหมายถึงอะไร

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

8. การดำเนินการทั่วไปที่ทำกับโครงสร้างข้อมูลมีอะไรบ้าง?

ต่อไปนี้เป็นการดำเนินการที่สามารถทำได้บนโครงสร้างข้อมูล:

การแทรก – การเพิ่มรายการข้อมูล

การลบ – การกำจัดรายการข้อมูล

Traversal – การเข้าถึงและพิมพ์รายการข้อมูล

ค้นหา – ค้นหารายการข้อมูล

เรียงลำดับ – รายการข้อมูลที่จัดเรียงตามลำดับที่กำหนดไว้ล่วงหน้า

ต้องอ่าน: แนวคิดและหัวข้อโครงการโครงสร้างข้อมูล

9. แนวทางต่างๆ ในการพัฒนาอัลกอริธึมมีอะไรบ้าง?

แนวทางที่ใช้กันทั่วไปในการพัฒนาอัลกอริธึมมีสามวิธี ได้แก่

Greedy Approach: การเลือกตัวเลือกที่ดีที่สุดถัดไปในการค้นหาวิธีแก้ปัญหา

แบ่งแยกและพิชิต: ปัญหาแบ่งออกเป็นปัญหาย่อยที่เป็นไปได้น้อยที่สุด และปัญหาย่อยแต่ละข้อได้รับการแก้ไขอย่างอิสระ

การเขียนโปรแกรมแบบไดนามิก: ปัญหาแบ่งออกเป็นปัญหาย่อยน้อยที่สุด และแก้ไขร่วมกัน

9. ตัวอย่างของอัลกอริทึมโลภ:

  1. ·อัลกอริธึมแบบขยายน้อยที่สุดของ Djikstra, Kruskal และ Prim
  2. · กราฟ – การระบายสีแผนที่
  3. ปัญหาปกเวอร์เท็กซ์
  4. · ปัญหาการจัดตารางงาน
  5. · ปัญหาของเป้
  6. · ปัญหาการเดินทางของพนักงานขาย

10. ตัวอย่างอัลกอริทึมการแบ่งและพิชิต

  1. การคูณเมทริกซ์ของ Stassen
  2. เรียงลำดับด่วน
  3. ผสานการเรียงลำดับ
  4. คู่ที่ใกล้เคียงที่สุด
  5. ค้นหาไบนารี

11. ตัวอย่างของอัลกอริธึมการเขียนโปรแกรมแบบไดนามิก:

  1. หอคอยแห่งฮานอย
  2. เส้นทางที่สั้นที่สุดโดย Dijkstra
  3. กำหนดการโครงการ
  4. ปัญหาเป้
  5. ชุดเลขฟีโบนักชี
  6. เส้นทางที่สั้นที่สุดคู่ทั้งหมดโดย 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 สำหรับโปรแกรมเป็นขั้นตอนเริ่มต้นที่ยอดเยี่ยมในการกำหนดโครงสร้างข้อมูลที่จะใช้ในโปรแกรม

โครงสร้างข้อมูลประเภทต่าง ๆ มีอะไรบ้าง?

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

คุณลักษณะใดของโครงสร้างข้อมูลจะยังคงมีความเกี่ยวข้องในอนาคต

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