1.ง่าย
deque (double-ended queue) คืออะไร
- Aโครงสร้างที่อนุญาตให้แทรกและเอาออกที่ทั้งสองปลาย
- Bคิวสองคิวที่ใช้อาร์เรย์ร่วมกัน
- Cคิวที่อนุญาตให้เอาออกจากด้านหลังเท่านั้น
- Dคิวที่เรียงตามลำดับความสำคัญ
2.ง่าย
โครงสร้างข้อมูลใดทำงานตามหลักการ "เข้าก่อนออกก่อน" (first in, first out)
- Aฮีป (heap)
- Bสแตก (stack)
- Cต้นไม้ทวิภาค (binary tree)
- Dคิว (queue)
3.ง่าย
ลักษณะเด่นของเซต (set) ในฐานะชนิดข้อมูลนามธรรมคืออะไร
- Aเข้าถึงได้เฉพาะที่ปลายด้านเดียว
- Bเก็บสมาชิกโดยไม่มีซ้ำ
- Cเก็บสมาชิกเรียงลำดับ
- Dเก็บคู่คีย์–ค่า
4.ปานกลาง
ต้นไม้ AVL รักษาเงื่อนไขสมดุลใดที่ทุกโหนด
- Aต้นไม้ย่อยทั้งสองของทุกโหนดมีจำนวนโหนดเท่ากันพอดี
- Bทุกโหนดถูกระบายสีแดงหรือดำ
- Cใบทั้งหมดอยู่ที่ความลึกเดียวกันพอดี
- Dความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1
5.ปานกลาง
จะเกิดอะไรขึ้นเมื่อตารางแฮช rehash หลังตัวประกอบการโหลดเกินเกณฑ์
- Aคีย์ที่มีอยู่ถูกเรียงในที่เดิม
- Bย้ายเฉพาะคีย์ที่ชนกันไปยังลิสต์ล้นใหม่ที่ท้ายตาราง
- Cจัดสรรตารางใหม่ที่ใหญ่กว่าและแทรกทุกคีย์ใหม่
- Dคีย์เก่าที่สุดถูกลบเพื่อให้มีที่ว่าง
6.ปานกลาง
เหตุใดการท่องอาร์เรย์จึงเร็วกว่าการท่องลิงก์ลิสต์ที่ยาวเท่ากันมากในทางปฏิบัติ
- Aลิงก์ลิสต์เก็บสมาชิกบนดิสก์เสมอ
- Bการท่องอาร์เรย์เป็น O(1) โดยรวม ส่วนการท่องลิงก์ลิสต์เป็น O(n)
- Cอาร์เรย์ใช้คำสั่งน้อยกว่าในการเปรียบเทียบค่า
- Dสมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
7.ยาก
เหตุใดเซิร์ฟเวอร์จึงเลือกฟังก์ชันแฮชแบบสุ่มจากตระกูลสากล (universal family)
- Aเพื่อตัดความจำเป็นในการปรับขนาดตาราง
- Bเพื่อรับประกันว่าไม่มีคีย์สองตัวชนกันเลย ไม่ว่าผู้โจมตีจะส่งคีย์ใดมา
- Cเพื่อทำให้ตารางแฮชเรียงลำดับ
- Dเพื่อทำให้ผู้โจมตีเลือกคีย์จำนวนมากที่ชนกันทั้งหมดได้ยากมาก
8.ยาก
ในอัลกอริทึมต้นไม้ทอดข้ามที่น้อยที่สุดของ Kruskal โครงสร้าง union-find ใช้เพื่อ
- Aตรวจว่าปลายทั้งสองของเส้นเชื่อมเชื่อมต่อกันอยู่แล้วหรือไม่
- Bเก็บระยะทางปัจจุบันของแต่ละจุดยอดจากต้นทางระหว่างการค้นหา
- Cเลือกจุดยอดเริ่มต้น
- Dเรียงเส้นเชื่อมตามน้ำหนัก
เฉลย
- 1. A · โครงสร้างที่อนุญาตให้แทรกและเอาออกที่ทั้งสองปลาย
- 2. D · คิว (queue)
- 3. B · เก็บสมาชิกโดยไม่มีซ้ำ
- 4. D · ความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1
- 5. C · จัดสรรตารางใหม่ที่ใหญ่กว่าและแทรกทุกคีย์ใหม่
- 6. D · สมาชิกของอาร์เรย์ต่อเนื่องกัน จึงใช้แคชของ CPU ได้ดี
- 7. D · เพื่อทำให้ผู้โจมตีเลือกคีย์จำนวนมากที่ชนกันทั้งหมดได้ยากมาก
- 8. A · ตรวจว่าปลายทั้งสองของเส้นเชื่อมเชื่อมต่อกันอยู่แล้วหรือไม่
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com