logo

34 אוספי Java שאלות ראיון

ב-Java, שאלות ראיון אוסף נשאלות בעיקר על ידי המראיינים. להלן רשימת שאלות הראיונות הנשאלות ביותר של האוספים עם תשובות.


1) מהי מסגרת האוסף ב-Java?

Collection Framework הוא שילוב של מחלקות וממשק, המשמש לאחסון ולתפעל את הנתונים בצורה של אובייקטים. הוא מספק מחלקות שונות כגון ArrayList, Vector, Stack ו-HashSet וכו' וממשקים כגון List, Queue, Set וכו' למטרה זו.


2) מהם ההבדלים העיקריים בין מערך לאוסף?

מערך ואוסף דומים במקצת לגבי אחסון הפניות של אובייקטים ותפעול הנתונים, אך הם שונים במובנים רבים. ההבדלים העיקריים בין המערך לאוסף מוגדרים להלן:

  • מערכים הם תמיד בגודל קבוע, כלומר, משתמש אינו יכול להגדיל או להקטין את אורך המערך בהתאם לדרישתו או בזמן ריצה, אך באוסף, ניתן לשנות את הגודל באופן דינמי לפי הצורך.
  • מערכים יכולים לאחסן רק אובייקטים הומוגניים או דומה, אך באוסף ניתן לאחסן אובייקטים הטרוגניים.
  • מערכים אינם יכולים לספק את ה-?מוכן? שיטות לדרישות המשתמש כמו מיון, חיפוש וכו', אבל Collection כולל שיטות מוכנות לשימוש.

3) הסבר ממשקים שונים המשמשים במסגרת Collection?

Collection Framework מיישמת ממשקים שונים, ממשק Collection וממשק Map (java.util.Map) הם הממשקים המשמשים בעיקר של Java Collection Framework. רשימה של ממשקים של Collection Framework ניתנת להלן:

1. ממשק אוסף: Collection (java.util.Collection) הוא הממשק העיקרי, וכל אוסף חייב ליישם ממשק זה.

תחביר:

 public interface Collectionextends Iterable 

איפה מייצג שממשק זה הוא מסוג גנרי

2. ממשק רשימה: ממשק רשימה מרחיב את ממשק האוסף, והוא אוסף מסודר של אובייקטים. הוא מכיל אלמנטים כפולים. זה גם מאפשר גישה אקראית לאלמנטים.

תחביר:

 public interface List extends Collection 

3. הגדר ממשק: ממשק Set (java.util.Set) הוא אוסף שאינו יכול להכיל רכיבים כפולים. זה יכול לכלול רק שיטות בירושה של ממשק Collection

תחביר:

 public interface Set extends Collection 

ממשק תור: ממשק Queue (java.util.Queue) מגדיר את מבנה נתוני התור, המאחסן את האלמנטים בצורה FIFO (ראשון יוצא ראשון).

תחביר:

 public interface Queue extends Collection 

4. ממשק עמידה בתור: זה תור כפול. זה מאפשר הכנסת והסרה של אלמנטים משני הקצוות. הוא משתיל את המאפיינים של סטאק ושל תור, כך שהוא יכול לבצע פעולות LIFO (Last in first out) מחסנית ו-FIFO (first in first out).

תחביר:

 public interface Dequeue extends Queue 

5. ממשק מפה: מפה (java.util.Map) מייצגת אחסון מפתח, זוג ערכים של אלמנטים. ממשק המפה אינו מיישם את ממשק האוסף. זה יכול להכיל רק מפתח ייחודי אבל יכול לכלול אלמנטים כפולים. ישנם שני ממשקים המיישמים את מפה ב-java שהם ממשק מפה ומפה ממוינת.

מדינות בארה"ב

4) מה ההבדל בין ArrayList לוקטור?

לא.רשימת מערךוֶקטוֹר
1)ArrayList אינו מסונכרן.וקטור מסונכרן.
2)ArrayList אינו מחלקה מדור קודם.וקטור הוא מחלקה מדור קודם.
3)ArrayList מגדיל את גודלו ב-50% מגודל המערך.וקטור מגדיל את גודלו על ידי הכפלת גודל המערך.
4)ArrayList אינו בטוח? מכיוון שהוא לא מסונכרן.רשימת וקטור היא 'בטוחה לחוטים'? שכן כל שיטה מסונכרנת.

5) מה ההבדל בין ArrayList ל-LinkedList?

לא.רשימת מערךרשימה מקושרת
1)ArrayList משתמש במערך דינמי.LinkedList משתמש ברשימה מקושרת כפולה.
2)ArrayList אינו יעיל למניפולציה מכיוון שנדרש יותר מדי.LinkedList יעיל למניפולציה.
3)ArrayList עדיף לאחסן ולהביא נתונים.LinkedList עדיף לתפעל נתונים.
4)ArrayList מספק גישה אקראית.LinkedList אינו מספק גישה אקראית.
5)ArrayList לוקח פחות זיכרון תקורה מכיוון שהוא מאחסן רק אובייקטLinkedList לוקח יותר זיכרון, מכיוון שהוא מאחסן את האובייקט כמו גם את הכתובת של אותו אובייקט.

6) מה ההבדל בין Iterator ל- ListIterator?

Iterator חוצה את האלמנטים בכיוון קדימה בלבד ואילו ListIterator חוצה את האלמנטים לכיוון קדימה ואחורה.

לא.איטרטורListIterator
1)האיטרטור חוצה את האלמנטים בכיוון קדימה בלבד.ListIterator חוצה את האלמנטים בכיוונים אחורה וקדימה שניהם.
2)ניתן להשתמש באיטרטור ב- List, Set ו-Queue.ניתן להשתמש ב- ListIterator ב- List בלבד.
3)האיטרטור יכול לבצע פעולת הסרה רק בזמן חציית האוסף.ListIterator יכול לבצע ?add,? ?לְהַסִיר,? ו?סט? פעולה תוך כדי חציית האוסף.

7) מה ההבדל בין איטרטור לספירה?

לא.איטרטורספירה
1)האיטרטור יכול לחצות אלמנטים מדור קודם ולא מדור קודם.ספירה יכולה לעבור רק אלמנטים מדור קודם.
2)האיטרטור מהיר לכשל.הספירה אינה מהירה לכישלון.
3)האיטרטור איטי יותר מספירה.הספירה מהירה יותר מאיטרטור.
4)האיטרטור יכול לבצע פעולת הסרה תוך כדי חציית האוסף.הספירה יכולה לבצע רק פעולת מעבר על האוסף.

8) מה ההבדל בין רשימה לסט?

הרשימה והסט מרחיבים את ממשק האיסוף. עם זאת, ישנם כמה הבדלים בין שניהם המפורטים להלן.

  • הרשימה יכולה להכיל רכיבים כפולים בעוד שהסט כולל פריטים ייחודיים.
  • הרשימה היא אוסף מסודר ששומר על סדר ההכנסה בעוד שסט הוא אוסף לא מסודר שאינו שומר על סדר ההכנסה.
  • ממשק הרשימה מכיל מחלקה אחת מדור קודם שהיא מחלקה וקטור ואילו לממשק Set אין מחלקה מדור קודם.
  • ממשק הרשימה יכול לאפשר n מספר ערכי null בעוד שממשק Set מאפשר רק ערך null בודד.

9) מה ההבדל בין HashSet ל-TreeSet?

ה-HashSet ו-TreeSet, שתי המחלקות, מיישמות ממשק Set. ההבדלים בין שניהם מפורטים להלן.

  • HashSet שומר �אין סדר� ואילו TreeSet שומר על סדר עולה.
  • HashSet מושפע על ידי טבלת hash ואילו TreeSet מיושם על ידי מבנה Tree.
  • HashSet פועל מהר יותר מ-TreeSet.
  • HashSet מגובה על ידי HashMap ואילו TreeSet מגובה על ידי TreeMap.

10) מה ההבדל בין סט למפה?

ההבדלים בין הסט למפה ניתנים להלן.

  • הסט מכיל ערכים בלבד ואילו מפה מכילה מפתח וערכים שניהם.
  • הסט מכיל ערכים ייחודיים ואילו מפה יכולה להכיל מפתחות ייחודיים עם ערכים כפולים.
  • הסט מכיל מספר בודד של ערך null ואילו מפה יכולה לכלול מפתח null יחיד עם מספר n של ערכי null.

11) מה ההבדל בין HashSet ל- HashMap?

ההבדלים בין HashSet ל- HashMap מפורטים להלן.

  • HashSet מכיל רק ערכים ואילו HashMap כולל את הערך (מפתח, ערך). ניתן לבצע איטרציה של HashSet, אך HashMap צריך להמיר ל-Set כדי לבצע איטרציה.
  • HashSet מיישמת ממשק Set ואילו HashMap מיישמת את ממשק המפה
  • ל-HashSet לא יכול להיות ערך משוכפל, בעוד ש-HashMap יכול להכיל ערכים כפולים עם מפתחות ייחודיים.
  • HashSet מכיל את המספר היחיד היחיד של ערך null ואילו HashMap יכול להחזיק מפתח null יחיד עם מספר n של ערכי null.

12) מה ההבדל בין HashMap ל-TreeMap?

ההבדלים בין HashMap ל-TreeMap ניתנים להלן.

  • HashMap לא שומרת על סדר, אבל TreeMap שומרת על סדר עולה.
  • HashMap מיושם על ידי טבלת hash ואילו TreeMap מיושמת על ידי מבנה עץ.
  • ניתן למיין את HashMap לפי מפתח או ערך ואילו TreeMap ניתן למיין לפי מפתח.
  • HashMap עשוי להכיל מפתח null עם ערכי null מרובים ואילו TreeMap לא יכול להחזיק מפתח null אבל יכול להיות בעל ערכי null מרובים.

13) מה ההבדל בין HashMap ל-Hashtable?

לא.מפת גיבובטבלת גיבוב
1)HashMap אינו מסונכרן.Hashtable מסונכרן.
2)HashMap יכול להכיל מפתח null אחד וערכי null מרובים.Hashtable לא יכול להכיל מפתח null או ערך null.
3)HashMap אינו ?בטוח לשרשור,? אז זה שימושי עבור יישומים ללא פתיל.Hashtable בטוח בשרשור, וניתן לחלוק אותו בין שרשורים שונים.
4)4) HashMap יורשת את המחלקה AbstractMapHashtable יורש את המחלקה Dictionary.

14) מה ההבדל בין אוסף לאוספים?

ההבדלים בין האוסף והאוספים מפורטים להלן.

  • האוסף הוא ממשק ואילו אוספים הוא מחלקה.
  • ממשק האיסוף מספק את הפונקציונליות הסטנדרטית של מבנה נתונים לרשימה, קבוצה ותור. עם זאת, מחלקה Collections היא למיין ולסנכרן את רכיבי האוסף.
  • ממשק האוסף מספק את השיטות שניתן להשתמש בהן למבנה נתונים ואילו מחלקת Collections מספקת את השיטות הסטטיות בהן ניתן להשתמש לפעולות שונות באוסף.

15) מה ההבדל בין Comparable לבין Comparator?

לא.בר השוואהמשווה
1)Comparable מספק רק סוג אחד של רצף.ה-Comparator מספק מספר סוגים של רצפים.
2)הוא מספק שיטה אחת בשם compareTo().הוא מספק שיטה אחת בשם compare().
3)זה נמצא בחבילת java.lang.הוא ממוקם בחבילת java.util.
4)אם ניישם את ממשק Comparable, המחלקה בפועל תשתנה.המעמד בפועל לא משתנה.

16) מה אתה מבין ב- BlockingQueue?

BlockingQueue הוא ממשק שמרחיב את ממשק ה-Queue. זה מספק מקבילות בפעולות כמו אחזור, הכנסה, מחיקה. בזמן שליפה של רכיב כלשהו, ​​הוא ממתין עד שהתור לא ריק. בזמן אחסון האלמנטים, הוא ממתין לשטח הפנוי. BlockingQueue לא יכול להכיל רכיבים null, והיישום של BlockingQueue הוא בטוח לשרשור.

תחביר:

 public interface BlockingQueue extends Queue 

17) מה היתרון של קובץ נכסים?

אם תשנה את הערך בקובץ המאפיינים, אין צורך להדר מחדש את מחלקת java. לכן, זה הופך את האפליקציה לקלה לניהול. הוא משמש לאחסון מידע שאמור להשתנות לעתים קרובות. שקול את הדוגמה הבאה.

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

תְפוּקָה

 system oracle 

18) מה עושה שיטת hashCode()?

השיטה hashCode() מחזירה ערך קוד hash (מספר שלם).

השיטה hashCode() מחזירה את אותו מספר שלם אם שני מפתחות (על ידי קריאה לשיטת equals()) זהים.

כמה שבועות בחודש

עם זאת, ייתכן שלשני מספרי קוד גיבוב יכולים להיות מפתחות שונים או זהים.

אם שני אובייקטים אינם מייצרים תוצאה שווה על ידי שימוש בשיטת equals() אז שיטת hashcode() תספק את תוצאת המספרים השלמים השונה עבור שני האובייקטים.


19) מדוע אנו עוקפים את שיטת equals()?

שיטת equals משמשת כדי לבדוק אם שני אובייקטים זהים או לא. יש לעקוף אותו אם ברצוננו לבדוק את האובייקטים על סמך הנכס.

לדוגמה, Employee היא מחלקה שיש בה 3 חברי נתונים: מזהה, שם ומשכורת. עם זאת, אנו רוצים לבדוק את שוויון חפץ העובד בשכר. לאחר מכן, עלינו לעקוף את שיטת equals() .


20) כיצד לסנכרן רכיבי רשימה, סט ומפה?

כן, מחלקה Collections מספקת שיטות להפוך רכיבי רשימה, סט או מפה לסנכרון:

רשימה סטטית ציבורית synchronizedList(List l){}
סטטי ציבורי סט סינכרוניסט(סט s){}
סטטי ציבורי ממוין מסונכרן מסונכרן מסדר (SortedSet s){}
מפה סטטית ציבורית מסונכרנתMap(Map m){}
סטטי ציבורי ממוין מסונכרן מפה מסוננת(מפה מסודרת m){}

21) מה היתרון של האוסף הגנרי?

ישנם שלושה יתרונות עיקריים לשימוש באוסף הגנרי.

  • אם אנו משתמשים במחלקה הגנרית, איננו זקוקים ל-typecasting.
  • זה בטוח לטיפ ונבדק בזמן ההידור.
  • Generic מאשרת את יציבות הקוד על ידי הפיכתו לזיהוי באגים בזמן ההידור.

22) מהי hash-collision ב-Hashtable וכיצד היא מטופלת בג'אווה?

שני מפתחות שונים בעלי אותו ערך גיבוב ידועים כ-hash-collision. שתי ערכים נפרדים יישמרו בדלי גיבוב אחד כדי למנוע את ההתנגשות. ישנן שתי דרכים להימנע מהתנגשות חשיש.

  • שרשור נפרד
  • פתח כתובת

23) מהי כיתת המילון?

המחלקה Dictionary מספקת את היכולת לאחסן צמדי מפתח-ערך.


24) מהו גודל ברירת המחדל של גורם העומס באיסוף מבוסס hashing?

גודל ברירת המחדל של מקדם העומס הוא 0.75 . קיבולת ברירת המחדל מחושבת כקיבולת התחלתית * גורם עומס. לדוגמה, 16 * 0.75 = 12. לכן, 12 היא קיבולת ברירת המחדל של מפה.


25) מה אתה מבין בכשל מהיר?

האיטרטור ב-java שזורק מיד את ConcurrentmodificationException, אם מתרחש שינוי מבני כלשהו, ​​נקרא איטרטור Fail-fast. איטרטור של Fail-Fats אינו דורש שטח נוסף בזיכרון.


26) מה ההבדל בין Array ל- ArrayList?

ההבדלים העיקריים בין המערך ל-ArrayList ניתנים להלן.

SNמַעֲרָךרשימת מערך
1המערך הוא בגודל קבוע, כלומר איננו יכולים לשנות את גודל המערך לפי הצורך.ArrayList אינו בגודל הקבוע שאנו יכולים לשנות את הגודל באופן דינמי.
2מערכים הם מהסוג הסטטי.ArrayList הוא בגודל דינמי.
3מערכים יכולים לאחסן סוגי נתונים פרימיטיביים כמו גם אובייקטים.ArrayList לא יכול לאחסן את סוגי הנתונים הפרימיטיביים, היא יכולה לאחסן רק את האובייקטים.

27) מה ההבדל בין אורך מערך לגודל של ArrayList?

ניתן לקבל את האורך של מערך באמצעות המאפיין של length בעוד ArrayList אינו תומך במאפיין length, אך אנו יכולים להשתמש בשיטת size() כדי לקבל את מספר האובייקטים ברשימה.

מציאת אורך המערך

מילת מפתח סטטית ב-java
 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

מציאת הגודל של ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) כיצד להמיר ArrayList למערך ומערך ל-ArrayList?

אנו יכולים להמיר מערך ל-ArrayList באמצעות שיטת asList() של המחלקה Arrays. שיטת asList() היא השיטה הסטטית של המחלקה Arrays ומקבלת את האובייקט List. שקול את התחביר הבא:

 Arrays.asList(item) 

אנו יכולים להמיר ArrayList ל-Array באמצעות שיטת toArray() של המחלקה ArrayList. שקול את התחביר הבא כדי להמיר את ArrayList לאובייקט List.

 List_object.toArray(new�String[List_object.size()]) 

29) כיצד להפוך את Java ArrayList לקריאה בלבד?

אנו יכולים להשיג את Java ArrayList לקריאה בלבד על ידי קריאה לשיטת Collections.unmodifiableCollection() . כאשר אנו מגדירים ArrayList כ-Read-only, אז איננו יכולים לבצע כל שינוי באוסף באמצעות שיטת �add(), remove() או set().


30) כיצד להסיר כפילויות מ- ArrayList?

ישנן שתי דרכים להסיר כפילויות מ-ArrayList.

    שימוש ב-HashSet:על ידי שימוש ב-HashSet נוכל להסיר את הרכיב הכפול מה-ArrayList, אך הוא לא ישמר אז את סדר ההכנסה.שימוש ב-LinkedHashSet:אנו יכולים גם לשמור על סדר ההכנסה באמצעות LinkedHashSet במקום HashSet.

התהליך להסרת רכיבים כפולים מ- ArrayList באמצעות LinkedHashSet:

  • העתק את כל הרכיבים של ArrayList ל-LinkedHashSet.
  • רוקן את ArrayList באמצעות שיטת clear() שתסיר את כל האלמנטים מהרשימה.
  • כעת העתק את כל האלמנטים של LinkedHashset ל-ArrayList.

31) כיצד להפוך ArrayList?

כדי להפוך ArrayList, אנו יכולים להשתמש בשיטה reverse() של המחלקה Collections. שקול את הדוגמה הבאה.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

תְפוּקָה

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) כיצד למיין ArrayList בסדר יורד?

כדי למיין את ArrayList בסדר יורד, נוכל להשתמש בשיטת reverseOrder של המחלקה Collections. שקול את הדוגמה הבאה.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

תְפוּקָה

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) כיצד לסנכרן את ArrayList?

אנחנו יכולים לסנכרן את ArrayList בשתי דרכים.

  • שימוש בשיטת Collections.synchronizedList().
  • שימוש ב-CopyOnWriteArrayList

3. 4) מתי להשתמש ב-ArrayList וב-LinkedList?

עדיף להשתמש ב-LinkedLists עבור פעולות העדכון ואילו ב-ArrayLists עדיף להשתמש עבור פעולות החיפוש.