مرحبًا بك في اختبار سلاسل جافا. السلسلة هي واحدة من أهم الفئات في جافا. إذا كنت قد قمت بأي برمجة في جافا ، فمن الضروري أن تكون قد استخدمتها.
السلسلة شائعة جدًا عندما يتعلق الأمر بأسئلة مقابلة جافا أو اختبار. لذا قمت بتجميع بعض أسئلة اختبار جافا الرائعة والمعقدة التي يجب أن تجربها.
اختبار سلاسل جافا
يوجد 21 سؤالًا في هذا الاختبار. إذا استطعت الإجابة بشكل صحيح على 15 سؤالًا أو أكثر ، فاعتبر نفسك جيدًا حقًا في مفاهيم السلاسل. يمكنك التحقق من الإجابة والشرح المفصل عن طريق النقر على زر ” كشف الإجابة ” بعد كل سؤال.
دعنا نبدأ اختبار السلاسل وحظًا سعيدًا.
1. ما سيكون ناتج البيانات التالية؟
String s = "Java String Quiz";
System.out.println(s.charAt(s.toUpperCase().length()));
A. Convert “Z” to int 90 and prints “90”
B. Runtime Exception
C. Prints “z”
D. Prints “Z”
Click to Reveal Answer
** الإجابة الصحيحة: ب
**
سيتم رمي استثناء تشغيل الوقت.استثناء في الموضوع "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16
ذلك لأن قيمة الفهرس تبدأ من 0.
2. ما سيكون الناتج للبيانات التالية؟
String s = "Java String Quiz";
System.out.println(s.substring(5,3));
A. Prints “Str”
B. Runtime Exception
C. IndexOutOfBoundsException Runtime Exception
D. StringIndexOutOfBoundsException Compile-time error
Click to Reveal Answer
** الإجابة الصحيحة: ب
**
سيتم رمي استثناء تشغيل الوقت مع رسالة الخطأ استثناء في الموضوع "main" java.lang.StringIndexOutOfBoundsException: begin 5, end 3, length 16
ذلك لأن فهرس النهاية أصغر من فهرس البداية.
3. حدد جميع الطرق الصحيحة لفئة السلسلة.
A. trim()
B. intern()
C. toLower()
D. split()
Click to Reveal Answer
الإجابة الصحيحة: أ ، ب
الأساليب الصحيحة لفئة السلسلة هي – trim()، intern()، toLowerCase()، و split(String regex).
4. ما سيكون ناتج العبارات التالية؟
String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");
System.out.print(s1 == s2);
System.out.print(s1 == s3);
A. truefalse
B. truetrue
C. falsefalse
D. falsetrue
Click to Reveal Answer
**الإجابة الصحيحة: A
**
عند استخدام علامات التنصيص المزدوجة لإنشاء سلسلة، يبحث أولاً عن سلسلة بنفس القيمة في تجميعة السلاسل. إذا تم العثور عليها، فإنه يعيد المرجع ، وإلا فإنه ينشئ سلسلة جديدة في تجميعة السلاسل ويعيد المرجع.
ومع ذلك، باستخدام عامل التجديد، نجبر فئة السلسلة على إنشاء كائن سلسلة جديد في مساحة العنصر. لذا فإن s1 و s2 ستحتوي على مرجع لنفس السلسلة في تجميعة السلاسل بينما s3 سيكون كائنًا مختلفًا خارج التجميعة، وبالتالي الناتج.
5. أي من العبارات التالية صحيحة بالنسبة للسلسلة في حالة التبديل؟
A. String is allowed in switch case for Java 1.5 or higher versions.
B. String is allowed in switch case for Java 1.7 or higher versions.
C. The equals() method is used by switch-case implementation, so add null check to avoid NullPointerException.
6. أي من العبارات التالية صحيحة بالنسبة لـ StringBuffer و StringBuilder؟
A. StringBuilder is not thread-safe.
B. StringBuffer is thread safe because its methods are synchronized.
C. StringBuilder was introduced in Java 1.4
D. StringBuffer and StringBuilder are immutable.
Click to Reveal Answer
الإجابة الصحيحة: A, B
كائن StringBuffer متوافق مع المواضيع لأن أساليبه متزامنة. ولكن هذا أمر زائد في معظم الحالات، ولذلك تم تقديم StringBuilder في جافا 1.5. StringBuilder ليس متوافقًا مع المواضيع. StringBuffer و StringBuilder هما فئتان قابلتان للتغيير. اقرأ المزيد في String vs StringBuffer vs StringBuilder.
7. تتبع تنفيذ السلسلة أيًا من أنماط التصميم التالية؟
A. Flyweight Design Pattern
B. Factory Pattern
C. Singleton Pattern
D. None of the above
8. ما سيكون ناتج البيانات التالية؟
String s1 = "abc";
String s2 = "def";
System.out.println(s1.compareTo(s2));
A. 0
B. true
C. -3
D. false
Click to Reveal Answer
**الإجابة الصحيحة: ج
**
من وثائق طريقة String compareTo():
تقارن طريقة compareTo سلسلتين بشكل لغوي. يستند المقارنة إلى القيمة اليونيكودية لكل حرف في السلاسل. يتم مقارنة التسلسل الحرفي الذي يُمثله كائن السلسلة هذا بشكل لغوي مع التسلسل الحرفي الذي يُمثله سلسلة الوسيطة. النتيجة هي عدد صحيح سالب إذا سبقت كائن السلسلة هذا سلسلة الوسيطة لغويًا. النتيجة هي عدد صحيح موجب إذا تلي كائن السلسلة هذا سلسلة الوسيطة لغويًا. النتيجة هي صفر إذا كانت السلاسل متساوية. تعيد طريقة compareTo القيمة صفر بالضبط عندما تعيد طريقة equals(Object) القيمة true.
هذه هي تعريف الترتيب اللغوي. إذا كانت سلسلتان مختلفتين ، فإما أنهما لديهما أحرف مختلفة في بعض المواضع التي هي موضع صحيح لكلا السلسلتين ، أو أن طولهما مختلف أو كلاهما. إذا كانت لديهما أحرف مختلفة في واحدة أو أكثر من مواضع المؤشر ، فليكن k هو أصغر مؤشر مثل ذلك. ثم تسبق السلسلة التي يكون الحرف في الموضع k لديها القيمة الأصغر ، حسبما يتم تحديده باستخدام المشغل < لغويًا السلسلة الأخرى. في هذه الحالة ، تعيد compareTo فرق قيمة الحرفين في الموضع k في السلسلتين – وهي القيمة:
this.charAt(k)-anotherString.charAt(k)
في مثالنا، “abc” يسبق “def”، وبالتالي يتم إرجاع عدد صحيح سالب. ثم يكون أقل فهرس مع حرف مختلف هو 0 ويساوي a-d -3.
9. ما سيكون الناتج من البرنامج أدناه؟
public class Test {
public static void main(String[] args) {
String x = "abc";
String y = "abc";
x.concat(y);
System.out.print(x);
}
}
A. abc
B. abcabc
C. null
Click to Reveal Answer
الإجابة الصحيحة: أ
سيقوم x.concat(y)
بإنشاء سلسلة جديدة ولكنها لم يتم تعيينها لـ x ، لذلك لا يتم تغيير قيمة x.
10. ما سيكون الناتج من البرنامج أدناه؟
public class Test {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
System.out.println("s1 == s2 is:" + s1 == s2);
}
}
A. false
B. s1 == s2 is:true
C. s1 == s2 is:false
D. true
Click to Reveal Answer
الإجابة الصحيحة: أ
سيكون ناتج التعبير المعطى “false” لأن في لغة جافا، أولوية عامل الجمع + أكبر من عامل التساوي ==. لذلك سيتم تقييم التعبير المعطى إلى “s1 == s2 is:abc” == “abc” أي false.
11. ما سيكون الناتج من البيانات أدناه؟
String s = "Java"+1+2+"Quiz"+""+(3+4);
System.out.println(s);
A. Java3Quiz7
B. Java12Quiz7
C. Java12Quiz34
D. Java3Quiz34
Click to Reveal Answer
الإجابة الصحيحة: ب
أولاً، يتم تنفيذ التعبير في القوس. ثم يتم تنفيذ جميع عوامل الجمع +، لذا يتم تنفيذها من اليسار إلى اليمين.
نحصل على سلسلة مع كل عملية الاتصال، وبالتالي يتم إنتاج الناتج على النحو المبين أدناه.
“Java”+1+2+”Quiz”+””+(3+4)
= “Java”+1+2+”Quiz”+””+7
= “Java1″+2+”Quiz”+””+7
= “Java12″+”Quiz”+””+7
= “Java12Quiz”+””+7
= “Java12Quiz”+7
= “Java12Quiz7”
12. كم عدد من كائنات السلسلة يتم إنشاؤها في البيانات أدناه؟
String s = "abc"; // statement 1
String s1 = new String("abcd"); // statement 2
A. 1
B. 2
C. 3
D. 4
Click to Reveal Answer
الإجابة الصحيحة: ج
في البيان 1 ، يتم إنشاء “abc” في مجموعة السلاسل.
في البيان 2، أولاً يتم إنشاء “abcd” في pool السلاسل. بعد ذلك، يتم تمريره كوسيطة إلى العامل String new وتتم إنشاء سلسلة أخرى في ذاكرة المكدس.
لذا يتم إنشاء ما مجموعه 3 أجسام للسلاسل.
13. ماذا سيكون الناتج للبيانات أدناه؟
String s1 = "abc";
String s2 = new String("abc");
System.out.print(s1==s2);
System.out.println(s1==s2.intern());
A. falsetrue
B. falsefalse
C. truetrue
D. truefalse
Click to Reveal Answer
الإجابة الصحيحة: أ
توجد السلسلة s1 في pool السلاسل بينما يتم إنشاء s2 في ذاكرة المكدس.
وبالتالي فإن s1==s2 ستعيد القيمة false.
عندما يتم استدعاء الطريقة s2.intern()
، تتحقق من وجود أي سلسلة تحتوي على القيمة “abc” في الpool. لذا تعيد الإشارة إلى s1. لذا كلا من s1 و s2 يشيران إلى نفس الكائن السلسلة الآن.
وبالتالي فإن s1==s2.intern() ستعيد القيمة true.
14. حدد جميع الواجهات التي تم تنفيذها بواسطة فئة السلسلة.
A. Serializable
B. Comparable
C. Constable
D. Cloneable
Click to Reveal Answer
الإجابة الصحيحة: أ، ب، ج
السلسلة قابلة للتسلسل والمقارنة. الواجهة Constable هي واجهة جديدة من إصدار Java 12.
15. حدد جميع الأسباب التي تجعل السلسلة مرشحًا مثاليًا لمفتاح الخريطة؟
A. String is immutable
B. String is final
C. String properly implements hashCode() and equals() method
C. String hashcode is cached
Click to Reveal Answer
**الإجابة الصحيحة: أ، ب، ج
**
**
**
تنفيذ الطرق hashCode() وequals() بشكل صحيح ضروري لمفتاح الخريطة. نظرًا لأن السلسلة نهائية وغير قابلة للتغيير، فلا توجد فرصة لتلف بيانات المفتاح.
16. ماذا سيكون الناتج لقطعة الكود أدناه؟
String s1 = new String("java");
String s2 = new String("JAVA");
System.out.println(s1 = s2);
A. JAVA
B.java
C. true
D. false
Click to Reveal Answer
**الإجابة الصحيحة: أ
**
**
**
سوف يطبع “JAVA” لأن الوسيطة داخل الطريقة println() هي تعيين. لذا سيتم معاملتها كـ System.out.println("JAVA")
.
17. ماذا سيكون الناتج للبيانات أدناه؟
String s1 = "abc";
StringBuffer s2 = new StringBuffer(s1);
System.out.println(s1.equals(s2));
A. false
B. true
C. ClassCastException at runtime
D. Compile-time error
Click to Reveal Answer
الإجابة الصحيحة: أ
سيتم طباعة قيمة خاطئة لأن s2 ليس من نوع String. إذا نظرت إلى تنفيذ طريقة equals() في الفئة String ، ستجد فحصًا باستخدام عامل instanceof للتحقق مما إذا كان نوع الكائن الممرر هو String؟ إذا لم يكن كذلك ، فسيتم إرجاع قيمة خاطئة.
18. ما سيكون ناتج قطعة الكود التالية؟
String s1 = "abc";
String s2 = new String("abc");
s2.intern();
System.out.println(s1 == s2);
A. false
B. true
C. null
Click to Reveal Answer
الإجابة الصحيحة: أ
إنها سؤال محيرة وسيتم طباعة القيمة الخاطئة. نعلم أن طريقة intern() ستعيد مرجع الكائن String من مجموعة السلاسل ، ولكن نظرًا لأننا لم نعيد تعيينها إلى s2 ، فلا توجد تغيير في s2. وبالتالي ، يحتوي كل من s1 و s2 على مرجع مختلف.
إذا قمنا بتغيير السطر 3 إلى s2 = s2.intern();
، فسيكون الناتج هو true.
19. حدد جميع الفئات التي تمتد من فئة String.
A. StringBuffer
B. StringBuilder
C. StringWriter
D. None
Click to Reveal Answer
**الإجابة الصحيحة: D
**
إنها سؤال محيرة. الفئة String هي فئة نهائية ، لذا لا يمكنك تمديدها.
20. أي من العبارات التالية صحيحة بشأن السلسلة في جافا؟
A. We can extend String class like StringBuffer does it.
B. String class is defined in java.util package.
C. String is immutable in Java.
D. String is thread-safe in Java.
E. String is case sensitive in Java.
Click to Reveal Answer
الإجابة الصحيحة: C ، D ، E
لا يمكننا تمديد فئة String لأنها نهائية. StringBuffer لا يمتد منها. تم تعريف فئة String في حزمة java.lang. السلسلة لا تتغير وبالتالي آمنة في الأداء في الخيوط في جافا. السلسلة حساسة لحالة الأحرف ، لذا “abc” ليست مساوية لـ “ABC”.
21. ما سيكون ناتج البيانات التالية؟
String s1 = null;
System.out.print(s1); // line 2
System.out.print(s1.toString()); // line 3
A. nullnull
B. null followed by NullPointerException
C. NullPointerException
Click to Reveal Answer
الإجابة الصحيحة: ب
سيتم طباعة السطر 2 قيمة null
لأن طريقة الطباعة لديها فحصًا للقيمة الفارغة مثل هذا:
if (s == null) { s = "null";}
السطر 3 سيُطلق استثناء NullPointerException لأننا نحاول استدعاء دالة toString() على قيمة null.
الاستنتاج
I have tried to cover most of the important points about String in this Quiz. If you think some interesting concept has been missed, please let me know through comments. If you liked the Quiz, share it with others too.
Source:
https://www.digitalocean.com/community/tutorials/java-string-quiz