คำถามและคำตอบสัมภาษณ์คอลเลกชัน Java [สำหรับ Freshers & มีประสบการณ์]
เผยแพร่แล้ว: 2020-12-16หากคุณเคยทำงานกับ Java ในระดับปริญญาตรีหรือทำงานกับ Java คุณต้องตระหนักดีถึงเฟรมเวิร์ก Java Collection สำหรับผู้เริ่มต้นที่เพิ่งเริ่มต้นการเดินทางด้วย Java เฟรมเวิร์กคอลเลคชันเป็นสถาปัตยกรรมแบบรวมศูนย์ที่ออกแบบมาเพื่อจัดเก็บและจัดการกลุ่ม (คอลเล็กชัน) ของอ็อบเจ็กต์
โดยพื้นฐานแล้ว "ของสะสม" หมายถึงวัตถุกลุ่มเดียว Java Collection ประกอบด้วยอินเทอร์เฟซ คลาส (ArrayList, Vector, Stack และ Hashtable เป็นต้น) และอัลกอริธึมพร้อมสถาปัตยกรรมที่พร้อมใช้งานสำหรับการจัดเก็บและจัดการข้อมูล
ในบทความนี้ เราจะมาดูคำถามสัมภาษณ์ของ Java Collections ที่พบบ่อยที่สุด เราได้สร้างรายการคำถามพื้นฐานที่มักถามคำถามขณะสัมภาษณ์ผู้สมัครสำหรับโปรไฟล์ Java สิ่งนี้จะช่วยให้คุณเข้าใจว่าคำถามประเภทใดที่รอคุณอยู่ในการสัมภาษณ์ครั้งต่อไป
คำถามและคำตอบสัมภาษณ์คอลเลกชัน Java
1. ข้อดีของการใช้กรอบงานคอลเลกชันคืออะไร?
Java Collections มีทั้งคลาสคอลเลกชัน Generics และ Concurrent สำหรับการดำเนินการเธรดที่ปลอดภัย นอกจากนี้ยังมาพร้อมกับอินเทอร์เฟซการบล็อกพร้อมกับการใช้งานในแพ็คเกจ Java พร้อมกัน ต่อไปนี้คือข้อดีบางประการของเฟรมเวิร์ก Java Collections:
มันอำนวยความสะดวกในการใช้รหัสซ้ำและการทำงานร่วมกัน

การใช้คลาสคอลเลคชันหลักช่วยลดความพยายามและเวลาในการพัฒนาได้อย่างมาก
คลาสคอลเลกชันที่จัดส่งพร้อมกับ JDK ช่วยลดความพยายามที่จำเป็นสำหรับการบำรุงรักษาโค้ด
2. แยกแยะระหว่าง Array และ Collection
แม้ว่าอาร์เรย์และคอลเล็กชันจะใช้สำหรับจัดเก็บอ็อบเจ็กต์และจัดการข้อมูล แต่ก็มีความแตกต่างโดยกำเนิดเล็กน้อย:
- คุณไม่สามารถเพิ่มหรือลดความยาวของอาร์เรย์ตามความต้องการรันไทม์ของคุณได้ เนื่องจากอาร์เรย์มีขนาดคงที่ อย่างไรก็ตาม คุณสามารถเปลี่ยนขนาดของคอลเลกชันได้ตามความต้องการในการปรับขนาดของคุณ
- อาร์เรย์สามารถเก็บได้เฉพาะวัตถุที่เป็นเนื้อเดียวกัน (คล้ายกันหรือเหมือนกัน) ในขณะที่คอลเลกชันสามารถจัดเก็บกลุ่มวัตถุที่ต่างกันได้
- แม้ว่าอาร์เรย์จะไม่มีเมธอดที่พร้อมใช้งาน (การค้นหา การเรียงลำดับ การแทรก ฯลฯ) สำหรับความต้องการของผู้ใช้ คอลเล็กชันจะรวมวิธีการที่พร้อมใช้งานเสมอ
3. บทบาทของ Generics ในกรอบงานคอลเลกชันคืออะไร?
Generics ให้คุณระบุหรือกำหนดประเภทของอ็อบเจ็กต์ที่คอลเล็กชันสามารถจัดเก็บได้ หากคุณพยายามเพิ่มองค์ประกอบประเภทอื่น Generics จะแสดงข้อผิดพลาดในการคอมไพล์ ดังนั้น โดยการแสดงข้อผิดพลาดระหว่างการคอมไพล์ จะช่วยป้องกัน ClassCastException ขณะรันไทม์ ยิ่งไปกว่านั้น เนื่องจาก Generics ไม่จำเป็นต้องใช้ฟังก์ชันการแคสต์และอินสแตนซ์ของ มันจึงทำให้โค้ดสะอาดและแม่นยำ
4. ตั้งชื่ออินเทอร์เฟซของกรอบงานคอลเลกชัน
ต่อไปนี้คืออินเทอร์เฟซหลักห้าอินเทอร์เฟซในกรอบงานคอลเลกชัน:
อินเทอร์เฟซของ คอลเลกชัน – เป็นพื้นฐานของลำดับชั้นของ Java Collection คอลเล็กชันส่วนใหญ่ใน Java สืบทอดมาจากอินเทอร์เฟซของคอลเล็กชัน
อินเทอร์เฟซ รายการ - เป็นอาร์เรย์แบบขยายที่มีองค์ประกอบที่เรียงลำดับพร้อมกับรายการที่ซ้ำกัน อินเทอร์เฟซนี้สนับสนุนการค้นหาตามดัชนี ดังนั้นคุณจึงสามารถเข้าถึงองค์ประกอบใดก็ได้จากดัชนีของมัน มันถูกใช้งานโดยใช้คลาสต่าง ๆ เช่น ArrayList, LinkedList เป็นต้น
ตั้งค่า อินเทอร์เฟซ – เป็นคลาสคอลเลกชันที่ไม่มีองค์ประกอบที่ซ้ำกัน ไม่เหมือนกับรายการตรงที่ไม่สนับสนุนการค้นหาตามดัชนีและไม่ได้กำหนดลำดับใดๆ สำหรับองค์ประกอบ ตั้งค่าโมเดลนามธรรมชุดทางคณิตศาสตร์และใช้งานโดยคลาสเช่น HashSet, TreeSet, LinkedHashSet เป็นต้น
อินเทอร์เฟซ แผนที่ – เป็นโครงสร้างข้อมูลสองมิติที่จัดเก็บข้อมูลในคู่คีย์-ค่า แม้ว่าคีย์จะเป็นแฮชโค้ดที่ไม่ซ้ำกัน ค่าก็แสดงถึงองค์ประกอบ แผนที่ไม่สามารถมีคีย์/องค์ประกอบที่ซ้ำกันได้
อินเทอร์เฟซคิว – อินเทอร์เฟซนี้จัดเรียงองค์ประกอบในลักษณะเข้าก่อนออกก่อน (FIFO) ดังนั้น องค์ประกอบในอินเทอร์เฟซคิวจะถูกลบออกจากด้านหน้าและเพิ่มจากส่วนท้าย
อ่านเพิ่มเติม: วิธีเขียนโค้ด คอมไพล์ และรัน Java Projects
5. เมื่อใดที่คุณควรแทนที่เมธอด equals() ใน Java
ในขณะที่การใช้งานเริ่มต้นของวิธี equals() จะตรวจสอบว่าวัตถุสองชิ้นมีความคล้ายคลึงกันหรือไม่ จำเป็นต้องแทนที่วิธีเท่ากับ () หากคุณต้องการเปรียบเทียบวัตถุตามคุณสมบัติ
6. มีประโยชน์ในการใช้ไฟล์ Properties หรือไม่?
ใช่ การใช้ไฟล์ Properties ใน Java ช่วยเพิ่มข้อได้เปรียบที่สำคัญ หากคุณเปลี่ยนค่าในไฟล์นี้ ค่านั้นจะถูกสะท้อนโดยอัตโนมัติ โดยไม่ต้องคอมไพล์คลาส Java ใหม่ ด้วยเหตุนี้ ไฟล์คุณสมบัติจึงถูกใช้เป็นหลักในการจัดเก็บข้อมูลที่อาจมีการเปลี่ยนแปลงได้ (เช่น ชื่อผู้ใช้และรหัสผ่าน ช่วยให้จัดการแอปพลิเคชัน Java ได้ง่าย)
7. Iterator ในกรอบงานคอลเลคชันมีหน้าที่อะไร
Iterator เป็นอินเทอร์เฟซที่มาในแพ็คเกจ java.util Iterator หรือที่รู้จักในชื่อ Universal Java Cursor ช่วยทำซ้ำคอลเล็กชันของอ็อบเจ็กต์ Iterator ให้คุณส่งคอลเลกชั่นของอ็อบเจ็กต์ทีละรายการและรองรับการดำเนินการ READ และ REMOVE มีการใช้กันอย่างแพร่หลายเนื่องจากชื่อวิธี Iterator สามารถใช้งานได้ง่าย
8. คุณจะจัดเรียงออบเจกต์ของ Collection ได้อย่างไร?
ในกรอบงานคอลเลกชัน การเรียงลำดับมักจะถูกใช้งานโดยใช้ อินเทอร์เฟซ ที่ เปรียบเทียบได้ และ ตัว เปรียบเทียบ หากคุณใช้เมธอด Collections.sort() มันจะจัดเรียงองค์ประกอบตามลำดับธรรมชาติที่ระบุในเมธอด CompareTo() อย่างไรก็ตาม เมื่อคุณใช้เมธอด Collections.sort(Comparator) มันจะจัดเรียงองค์ประกอบตามเมธอด Compare() ของอินเทอร์เฟซตัวเปรียบเทียบ
อ่าน: Java Swing Project

9. เป็นไปได้ไหมที่จะแปลง ArrayList เป็น Array และ Array เป็น ArrayList?
ใช่ มันเป็นไปได้ที่จะทำเช่นนั้น คุณสามารถแปลง Array เป็น ArrayList ได้โดยใช้ฟังก์ชัน asList() ของคลาส Array ไวยากรณ์สำหรับสิ่งนี้มีดังนี้:
Arrays.asList(รายการ)
คุณสามารถแปลง ArrayList เป็น Array โดยใช้ฟังก์ชัน toArray() ของคลาส ArrayList เช่น:
List_object.toArray(สตริงใหม่[List_object.size()])
10. จะย้อนกลับรายการได้อย่างไร?
คุณจะย้อนกลับ ArrayList ได้อย่างไร
คุณสามารถย้อนกลับ ArrayList โดยใช้ฟังก์ชัน reverse() ของคลาส Collections ไวยากรณ์สำหรับสิ่งนี้มีดังนี้:
โมฆะคงที่สาธารณะย้อนกลับ (คอลเลกชัน c)
11. “BlockingQueue” คืออะไร
อินเทอร์เฟซ BlockingQueue มีอยู่ใน แพ็คเกจ java.util.concurrent วัตถุประสงค์หลักคือเพื่อปรับปรุงการควบคุมโฟลว์โดยเปิดใช้งานการบล็อกเมื่อใดก็ตามที่เธรดพยายามจะยกเลิกคิวคิวว่างหรือจัดคิวคิวเต็มที่มีอยู่ อินเทอร์เฟซ BlockingQueue ไม่ยอมรับค่า Null และหากคุณพยายามแทรกค่า Null จะแสดง NullPointerException
12. อธิบาย “คิวลำดับความสำคัญ”
Priority Queue เป็นประเภทข้อมูลนามธรรม เช่น คิวมาตรฐานหรือโครงสร้างข้อมูลสแต็ก อย่างไรก็ตาม ในคิวนี้ แต่ละองค์ประกอบมีคุณลักษณะเฉพาะที่เรียกว่า "ลำดับความสำคัญ" เนื่องจากอิงตามฮีปลำดับความสำคัญ คิวลำดับความสำคัญจึงให้บริการองค์ประกอบที่มีลำดับความสำคัญสูงก่อนองค์ประกอบที่มีลำดับความสำคัญต่ำ โดยไม่คำนึงถึงลำดับการแทรก ใน Priority Queue อิลิเมนต์จะถูกจัดลำดับตามการเรียงลำดับตามธรรมชาติหรือโดยตัวเปรียบเทียบที่ใช้ในเวลาการสร้างคิว (ขึ้นอยู่กับตัวสร้างที่คุณใช้)
13. คลาส HashSet เก็บองค์ประกอบอย่างไร
คลาส HashSet เป็นสมาชิกของเฟรมเวิร์ก Java Collections ที่สืบทอดคลาส AbstractSet และใช้อินเทอร์เฟซ Set
HashSet ใช้ Hashtable ทั้งสำหรับการสร้างและจัดเก็บคอลเลกชันขององค์ประกอบ Hashtable เป็นอินสแตนซ์ของคลาส HashMap ที่ใช้กลไกการแฮชเพื่อเก็บข้อมูลภายใน HashSet การแฮชหมายถึงเทคนิคการแปลงข้อมูลให้เป็นค่าเฉพาะที่เรียกว่าแฮชโค้ด รหัสแฮชจัดทำดัชนีข้อมูลที่เกี่ยวข้องกับคีย์เฉพาะ
14. เป็นไปได้ไหมที่จะเพิ่มองค์ประกอบ null ลงใน TreeSet หรือ HashSet?
แม้ว่าคุณสามารถเพิ่มองค์ประกอบ null ได้เพียงองค์ประกอบเดียวใน HashSet คุณไม่สามารถทำได้ใน TreeSet เนื่องจากใช้ NavigableMap เพื่อจัดเก็บองค์ประกอบ NavigableMap เป็นประเภทย่อยของ SortedMap ที่ไม่ยอมรับ/สนับสนุนค่า Null หากคุณแทรกองค์ประกอบ null ลงใน TreeSet มันจะทริกเกอร์ NullPointerException
15. ฟังก์ชัน emptySet() ทำหน้าที่อะไร?
ใน Java Collections.emptySet() ใช้เพื่อส่งคืนชุดว่างที่ไม่เปลี่ยนรูปโดยการกำจัดองค์ประกอบ null ทั้งหมด นี่คือไวยากรณ์สำหรับการประกาศ emptySet():
สแตติกสาธารณะขั้นสุดท้าย <T> Set<T> emptySet()
16. เหตุใดส่วนต่อประสานแผนที่จึงไม่ขยายส่วนต่อประสานการรวบรวม
แม้ว่าส่วนต่อประสานแผนที่จะเป็นไปตามโครงสร้างคู่ของคีย์-ค่า ส่วนต่อประสานคอลเลกชั่นจะจัดเก็บคอลเลกชั่นของอ็อบเจ็กต์ในลักษณะที่มีโครงสร้างด้วยกลไกการเข้าถึงที่กำหนดไว้ แผนที่ไม่ขยายอินเทอร์เฟซการรวบรวมเนื่องจากฟังก์ชัน add(E e) ของอินเทอร์เฟซ Collection ไม่สนับสนุนรูปแบบคู่คีย์-ค่าของฟังก์ชัน put (คีย์ K, ค่า V) ของ Map
17. ตั้งชื่อมุมมองคอลเลกชันต่างๆ ที่ขยายโดยส่วนต่อประสานแผนที่
อินเทอร์เฟซแผนที่มีมุมมองสามคู่ของคีย์-ค่า ได้แก่:
- มุมมองชุดคีย์
- มุมมองชุดค่า
- มุมมองชุดรายการ
18. แสดงรายการคุณสมบัติหลักของ Java Hashmap
คุณสมบัติพื้นฐานของ Hashmap คือ:
- คุณสามารถจัดเก็บองค์ประกอบโดยสร้างคู่คีย์-ค่าและดึงค่าโดยส่งคีย์ไปยังวิธีที่ถูกต้อง
- จะแสดง NoSuchElementException หากไม่มีองค์ประกอบอยู่ในแผนที่
- มันเก็บเฉพาะการอ้างอิงวัตถุ ทำให้ไม่สามารถใช้ชนิดข้อมูลดั้งเดิมเช่น double หรือ int ได้ คุณสามารถใช้คลาส wrapper เช่น Integer หรือ Double ได้
ต้องอ่าน: คำถามและคำตอบสัมภาษณ์ Java
19. กำหนด "กอง"

ใน Java สแต็กหมายถึงพื้นที่ที่กำหนดของหน่วยความจำของคอมพิวเตอร์ซึ่งมีตัวแปรชั่วคราวที่สร้างโดยฟังก์ชัน ตัวแปรถูกประกาศ จัดเก็บ และเริ่มต้นระหว่างรันไทม์ในสแต็ก
20. กำหนด "สัญกรณ์บิ๊กโอ"
สัญกรณ์ Big-O กำหนดประสิทธิภาพของอัลกอริทึมที่สัมพันธ์กับจำนวนองค์ประกอบในโครงสร้างข้อมูล คลาสคอลเลคชันเป็นโครงสร้างข้อมูล ดังนั้น คุณต้องใช้สัญกรณ์ Big-O เพื่อตัดสินใจว่าจะใช้คอลเล็กชันใดตามหน่วยความจำ เวลา และประสิทธิภาพ
ลงทะเบียนเรียน หลักสูตรวิศวกรรมซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
บทสรุป
หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java การพัฒนาซอฟต์แวร์แบบฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์แบบครบวงจร ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง 9+ โครงการและการมอบหมาย สถานะศิษย์เก่า IIIT-B โครงการหลักในทางปฏิบัติและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

