35+ Java 8 أسئلة وأجوبة للمقابلة (2026)
سواء أكان ذلك تقنيًا أو أي محترف آخر، فإن المقابلات دائمًا ما تثير الأدرينالين من التوتر. ومع ذلك، لتتميز عن الآخرين، من المهم صقل مهاراتك والمراهنة على قدراتك. علاوة على ذلك، وضع يديك على الأسئلة المتداولة Java 8 أسئلة وأجوبة للمقابلة يمكن أن تكون أكثر ذكاءً.
لذلك، قم بالتعمق في أسئلة المقابلة الخاصة بـ Java 8 للخبراء والمبتدئين لتتفوق في المقابلات القادمة.
Java 8 أسئلة المقابلة للطلاب الجدد والخبرة
1) Java 8 يقع في أي نموذج البرمجة؟
Java 8 يقع في نموذج البرمجة التالي:
- لغة برمجة كائنية أو فئة موجهة.
- لغة البرمجة الوظيفية.
- لغة البرمجة الإجرائية المحددة.
- لغة البرمجة المنطقية.
2) لماذا يجب على المرء استخدام الفصل الاختياري؟
الفئة الاختيارية هي فئة حاوية تم تقديمها حديثًا وهي مفيدة في إظهار القيم الاختيارية الموجودة أو غير الموجودة. وتتمثل ميزتها الرئيسية في تجنب عمليات التحقق من القيمة الفارغة والباطلة وتسهيل الطرق المفيدة في التحقق من وجود قيمة لمتغير معين.

3) اذكر بعض الميزات الحديثة التي تم تقديمها في Java 8.
وفيما يلي أحدث الميزات التي تم تقديمها في Java 8:
- تعبيرات لامدا: هو Java الوظيفة التي يمكنك مشاركتها أو الإشارة إليها ككائن.
- تدخل الطريقة: يستخدم الوظيفة كمعيار لتنفيذ الطريقة.
- التدخل الوظيفي: يرتبط كل تداخل وظيفي بافتراض واحدtracطريقة t التي تُعرف بالطريقة الوظيفية.
- الطريقة الافتراضية: إنه مفيد في تنفيذ الأساليب في الواجهات التي تساعد في تمكين إمكانات "تطور الواجهة".
- واجهة برمجة تطبيقات التاريخ والوقت: إنها نسخة محسنة ولكنها ملهمة من واجهات برمجة تطبيقات Java Time للتعامل مع عيوب الإصدار الأخير.
- Stream API يُشار إليه باسم abstracالطبقة t، التي تساعد في تنظيم معالجة البيانات.
- اختياري: تعتبر فئة المجمع مفيدة في التحقق من القيم الخالية ومعالجة البيانات الإضافية.
- Javaالبرنامج النصي ومحرك Nashorn: إنها النسخة المحسنة من Javaمحرك النصوص، وهو مفيد في تمكين وظائفه في Javaليحل محل وحيد القرن.
4) حدد مزايا استخدام Java 8
فيما يلي بعض فوائد استخدام Java 8:
- فهو يساعد في إنشاء التطبيقات بشكل أسرع وبطريقة أسهل.
- إنه يوفر بيئة مستقرة جدًا للمطورين.
- رموز موجزة وقابلة لإعادة الاستخدام وسهلة الفهم.
- دعم محسن وفعال.
- من السهل نقله عبر أنظمة التشغيل المختلفة.
- الحد الأدنى من رموز المعياري.
5) ما هي المجموعة وكيف تختلف عن الدفق؟
المجموعة عبارة عن قاعدة بيانات في الذاكرة تسجل جميع القيم وفقًا لبنية البيانات الحالية. لذا، قبل إضافتها إلى المجموعة، من المهم حساب كل منها. في حين أن الدفق عبارة عن بنية بيانات ثابتة بصريًا حيث يمكننا حساب العناصر وفقًا لاحتياجاتنا.
6) ما هو تعبير لامبادا؟
تعبير لامبادا هو نوع من الدوال التي لا تحمل اسمًا، ويُشار إليها أحيانًا بالدالة المجهولة لأنها لا تحتوي على نوع بيانات خاص بها. يمكنك استخدامها حسب حاجتك، وهي مفيدة جدًا في التكرار والتصفية والتعبير.tracحذف أي بيانات من المجموعة.
على سبيل المثال:
import java. util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class LambdaExpressionExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave");
List<String> filteredNames = names.stream()
.filter(name -> name.startsWith("C"))
.map(name -> name.toUpperCase())
.collect(Collectors.toList());
System.out.println(filteredNames);
}
}
الإخراج:
Charlie
7) تحديد خطوط أنابيب التيار
تُعدّ تقنية خطوط الأنابيب المتدفقة طريقةً لتجميعping عمليات مختلفة تمامًا. يمكنك تحقيق ذلك من خلال تصنيف عمليات التدفق إلى جزأين: العمليات الوسيطة والعمليات النهائية.
كلما تم تنفيذ عملية وسيطة، فإنها تعيد مثيلًا إلى خط أنابيب التدفق. وبالتالي، يمكن لأي مستخدم إعداد عدد غير منطقي من العمليات الوسيطة لتبسيط البيانات وتشكيل خط أنابيب معالجة في النهاية.
علاوة على ذلك، لإنهاء خطوط الأنابيب، من الضروري أن يكون هناك عملية طرفية في نهاية العملية.
8) ما هو المسند والمستهلك في Java 8?
المسند هو واجهة وظيفية تتلقى عادةً الوسائط وتسترد قيمة منطقية. يمكنك استخدامه لتطبيق عامل التصفية لمجموعة من الكائنات.
من ناحية أخرى، يشار إلى المستهلك على أنه واجهة وظيفية مدمجة موجودة في Java.util.function الحزمة. يمكنك استخدامه لاستهلاك أي كائن، ويأخذ القيمة المدخلة ولا يعطي شيئًا.
9) لماذا يتم استخدام طريقة النظرة الخاطفة () في Java 8?
تساعد طريقة peek() في دعم تصحيح الأخطاء، حيث يرغب المرء في ملاحظة العناصر لأنها تميل إلى التدفق من نقطة معينة في خط الأنابيب. إنه تمثيل لملاحظتنا لكيفية مرور كل عنصر.
بناء الجملة: public Object peek()
10) ما الذي يجعلك المرشح المثالي لـ Java دور المطور؟
فيما يلي بعض الصفات المهمة التي يمكن أن تجعلك مرشحًا مثاليًا للوظيفة Java دور المطور:
- يجب أن تكون لديك القدرة على كتابة رموز واضحة وسهلة الفهم وفعالة.
- فهم عميق لأنماط ومفاهيم "OOP أو البرمجة الموجهة للكائنات".
- - معرفة جيدة بالأنماط المعمارية والتصميمية المختلفة.
- مألوف لدى Java أنماط التزامن.
- الخبرة والمعرفة بالعمل مع أطر تطبيقات الويب المختلفة مثل Spark واللعب.
- المعرفة الأساسية Java الآلة الافتراضية أو JVM وعيوبها والحلول البديلة وما إلى ذلك.
- خبرة جيدة في استخدام قواعد البيانات المدمجة والخارجية.
11) شرح "الواجهة الوظيفية".
واجهة ذات نقطة تعادل واحدة فقطtracيُطلق عليه اسم الواجهة الوظيفية. ويُعرف أيضًا باسم الامتصاص الأحاديtracطريقة t أو SAM. ومع ذلك، فإن التعليق التوضيحي @FunctionalInterface اختياري ويمكن استخدامه حتى في حالة عدم وجوده. ويمتد إلى الواجهة الأخرى إذا لم يكن لها أي abstract.
12) لماذا هناك حاجة إلى الأساليب الثابتة Java 8?
يُشار إلى مرجع الطريقة الثابتة على أنه أداة مساعدة أو طريقة مساعدة مرتبطة بواجهة. وهي أيضًا فئة غير مرتبطة بأي كائن.
فيما يلي أسباب استخدام الطريقة الثابتة في Java:
- مفيد لصيانة وتوسيع واجهة برمجة التطبيقات (API).
- يستلزم مشاركة واضحة وموجزة للمسؤوليات، ولا تحتاج إلى وجود فئة فائدة واحدة للحصول على مجموعات الفائدة.
- مفيد لـping جميع الواجهات في واجهة مشتركة بدلاً من واجهات محددة.
13) ما هي مميزات النشورن؟
Nashorn هو الأكثر تقدما وجديدة Javaسيناريو تم تقديم محرك المعالجة في Java 8. في وقت سابق، كان يعتمد على Mozilla Rhino. يوفر امتثالًا محسنًا لـ ECMA Javaالبرنامج النصي. إنه أسرع من إصداراته السابقة.
14) ما الفرق بين Collection API وStream API؟
فيما يلي بعض الاختلافات المهمة بين Collection API وStream API
| واجهة برمجة تطبيقات المجموعة | Stream API |
|---|---|
| تم استخدام Collection API لأول مرة في Java 1.2 | تم تقديم Stream API لأول مرة في Java IF 8. |
| يمكنك استخدامه لتخزين بيانات غير محدودة. | يمكنك استخدامه لحساب بيانات غير محدودة. |
| تسمح لك Collection API باستخدام Iterator وSpilterator لتكرار البيانات. | يتيح لك Stream API استخدام Iterator وSpilterator لتكرار البيانات. |
| من السهل الوصول إلى Collection API. | واجهة برمجة التطبيقات المضمنة في البث، لا توجد طريقة مباشرة للوصول إلى عناصر محددة. |
| كما أنه يوفر سهولة في معالجته وفقًا لاحتياجاتك. | يمكن معالجة Stream API مرة واحدة فقط. |
15) صف PermGenSpace و METAASPace.
مساحة التوليد الدائم (PermGen) هي نوع فريد من مساحات التخزين المستخدمة لحفظping track من البيانات الوصفية المخزنة والتي تمت إزالتها الآن في Java 8.
في هذا الإصدار الجديد، سيتم تخزين البيانات الوصفية في ذاكرة مماثلة تُعرف باسم "مساحة البيانات الوصفية". وهي غير قابلة للنقل. Java تعتبر ذاكرة الكومة نسخة محسنة من PermGen في جوانب الضبط التلقائي وجمع القمامة وما إلى ذلك.
16) كيف يتم إنشاء الواجهة الوظيفية Java 8?
يمكنك استخدام تعبير لامدا لتنفيذ القيمة المطلقةtracطريقة الواجهة الوظيفية في Java 8. فيما يلي مثال ترميزي لنفس الشيء:
مثال
import java.util.function.Consumer;
public class FunctionalInterfaceExample {
public static void main(String[] args) {
Consumer<String> printer = System.out::println;
printer.accept("Hello, world!");
}
}
الإخراج:
Hello, world!
17) ما هي أوجه الاختلاف والتشابه بين الوظيفة والمسند في Java 8?
فيما يلي الاختلافات بين الوظيفة والمسند في Java 8:
- الدالة مفيدة في التحويل، في حين يمكن استخدام المسند لاختبار أي شرط.
- يمكن أن تتلقى الدالة وسيطة وتعطي نتيجة، في حين أن المسند يمكن أن يتلقى أيضًا وسيطة ولكنه يعطي القيمة المنطقية فقط.
- يتم الإشارة إلى الوظيفة بواسطة ، والمسند يُشار إليه بـ فقط حيث T هو نوع الدالة، و R هي النتيجة.
فيما يلي أوجه التشابه بين الوظيفة والمسند:
- كل من الوظيفة والمسند عبارة عن واجهات وظيفية.
- كل من الوظيفة والمسند هي وظائف وسيطة واحدة.
18) اشرح الفرق بين التخطي (الطويل) والحد (الطويل) باستخدام مثال.
التخطي (الطويل) هو عملية وسيطة تقوم باسترجاع العناصر المتبقية بعد إزالة العناصر الأولية n من مجرى معين.
على سبيل المثال:
import java.util.Arrays;
import java.util.List;
public class SkipExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
// Create a stream from the names list
names.stream()
// Skip the first two elements of the stream
.skip(2)
// Print the remaining elements to the console
.forEach(System.out::println);
}
}
الإخراج:
Charlie Dave Eve
يسترد الحد (الطويل) تدفق العناصر ذات حجم معين
على سبيل المثال:
import java.util.Arrays;
import java.util.List;
public class LimitExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve");
// Create a stream from the names list
names.stream()
// Limit the stream to the first three elements
.limit(3)
// Print the elements to the console
.forEach(System.out::println);
}
}
الإخراج:
AliceBob Charlie
19) ما هو الموقف الأكثر ملاءمة لاستخدام Stream API فيه Java 8?
يمكنك استخدام واجهة برمجة التطبيقات للبث في Java 8. هناك حاجة للعمليات التالية:
- يمكنك تنفيذ المعالجة المتوازية.
- لتنفيذ العمليات ببطء
- لإجراء عمليات قاعدة البيانات
- استخدم للتكرارات الداخلية.
- لكتابة البرمجة ذات النمط الوظيفي
- يمكنك استخدامه لاستخدام عمليات خط الأنابيب.
20) ما هي وظيفة نوع الاستدلال؟
يساعد Type Inference المترجم في تحديد أنواع الوسائط أو التعرف عليها من خلال الحصول على نظرة عامة على الإعلان المقابل واستدعاء الطريقة.
21) ما هي أسهل طريقة لتحديد وإزالة العناصر المكررة من القائمة Java 8?
الطريقة الأسهل لتحديد العناصر المكررة وإزالتها هي استخدام عملية التدفق وتنفيذ عملية التجميع، متبوعة باستخدام طريقة Collections.toSet().
22) ما هي المبادئ التوجيهية للواجهة الوظيفية؟
فيما يلي الإرشادات الخاصة بالواجهة الوظيفية التي تعد من بين أكثر الإرشادات المطلوبة Java 8 أسئلة برمجة:
- يجب أن يكون له بطن واحد فقطtracطريقة t.
- يمكنك استخدام عدد غير محدود من الطرق الافتراضية، لأنها ليست مطلقة.tract، ويتم تقديم التنفيذ سابقًا من قبل نفس الجهة.
- عضلات بطنtracطريقة t، العنصر الرئيسي للطرق العامة من Java.lang معروف في الواجهة الوظيفية. لا يزال يعتبر الكائن بمثابة واجهة مفيدة.
ملاحظة: والتفسير لذلك هو أن كل فئة تنفيذ لهذه الواجهة يمكن أن يكون لها تنفيذ لهذا المطلقtracطريقة يتم تعريفها إما بواسطة فئة التنفيذ نفسها أو يتم أخذها من فئة أساسية.
23) التفريق بين المقسم والمكرر.
فيما يلي بعض الاختلافات بين التقسيم والمكرر:
| المنشق | المكرر |
|---|---|
| تم تقديمه في Java 1.2. | تم تقديمه في Java 1.8. |
| إنه يكرر فقط جميع العناصر بشكل منفصل. | إنه يعرض جميع العناصر بشكل منفصل وكذلك بكميات كبيرة. |
| إنه بمثابة مكرر لمجموعة كاملة من واجهات برمجة التطبيقات. | إنه بمثابة مكرر لكل من واجهة برمجة تطبيقات الدفق والمجموعة. |
| لن يدعم البرمجة الموازية. | وهو يدعم البرمجة الموازية. |
24) كيف يمكنك استدعاء الطريقة الافتراضية للواجهة في الفصل الدراسي؟
يتم استخدام الكلمة الأساسية الافتراضية، الموجودة في بداية توقيع الطريقة، لتعيين إعلان الطريقة في الواجهة كطريقة افتراضية. يمكنك تخطي المعدل العام لأن كل إعلان طريقة في الواجهة، بما في ذلك الطرق الافتراضية، يكون عامًا تلقائيًا.
25) تحديد الطريقة الافتراضية. متى يمكنك استخدامه؟
توجد طريقة افتراضية في الواجهة، وهي تتضمن تطبيقًا. تُفيد هذه الطريقة في إضافة وظائف جديدة إلى واجهة معينة مع الحفاظ علىping التوافق مع الإصدارات السابقة بالإضافة إلى فئاتها التي تم تنفيذها بالفعل في واجهة.
26) كيف يتم إنشاء التدفقات في Java، وهل هو من بين الأسئلة الأكثر طلبًا في مقابلات Java 8 Stream؟
تيارات في Java وصف تسلسل الكائنات من مصدر محدد، مثل مجموعة، والتي ستدعم عمليات التجميع. يمكنك الاستفادة منها لجمع وتصفية وطباعة وتغيير بنية بيانات واحدة إلى أخرى.
فيما يلي أمثلة لكيفية إنشاء التدفقات Java:
import java.util.stream.Stream;
public class StreamExample {
public static void main(String[] args) {
Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve");
stream.forEach(System.out::println);
}
}
الإخراج:
Alice Bob Charlie Dave Eve
27) ما هي عمليات تدفق الخرائط و FlatMap؟
تعتبر Map وFlatMap بمثابة عمليات التدفق والتدفق الوسيط التي تقبل وظيفة. كما أنها تساعد في تطبيق الوظيفة المعطاة على بقية العناصر.
28) لماذا نحتاج إلى تغيير Java لغة البرمجة في كثير من الأحيان؟
علينا أن نغير Java لغة البرمجة بشكل متكرر للأسباب التالية:
- يمكنك استخدام الميزات البرمجة الوظيفية.
- للاستفادة من أحدث التقنيات لوحدات المعالجة المركزية متعددة النواة بشكل فعال.
29) اذكر بعض الواجهات الوظيفية المستخدمة في Java 8.
فيما يلي بعض الواجهات الوظيفية المستخدمة في Java 8:
- ثنائيOperaتور
- مستهلكة
- الوظيفة
- التسجيل كمورّد
- أحاديOperaتور
- وظيفة ثنائية
- فاعل
30) ما هي فئات API الرئيسية للوقت والتاريخ؟
فيما يلي فئات واجهة برمجة التطبيقات الرئيسية للوقت والتاريخ المستخدمة في Java 8:
- الوقت المحلي
- لوكالداتيتيمي
- التاريخ المحلي
31) أعط البنية الأساسية/بناء الجملة لتعبير Lambda.
البنية الأساسية/بناء جملة تعبير Lambda هي:
(arugument - list) - > {body}
هنا،
- الوسيطة – القائمة: يمكنك الاحتفاظ بها ممتلئة أو فارغة.
- رمز السهم: وهو مفيد في ربط تعبيرات الجسم والوسائط – القائمة.
- الجسم: وهو يتألف من البيانات والتعبيرات للتعبير لامدا.
32) ما هي الخصائص الرئيسية للستريم؟
وفيما يلي الخصائص الرئيسية للتيار:
- خط الأنابيب
- مصدر
- مجموع Operaستعقد
- تسلسل العناصر
- التكرارات التلقائية
33) ما هي العمليات الوسيطة الأكثر شيوعا؟
بعض الأنواع الأكثر شيوعًا من التعبيرات الوسيطة هي:
- متميز ()
- تخطي (طويل ن)
- مرشح (المسند)
- الحد (طويل ن)
- الخريطة (الوظيفة)
34) ما هي أكثر أنواع عمليات المحطة الطرفية شيوعًا؟
فيما يلي أكثر أنواع عمليات المحطة الطرفية شيوعًا:
- العد التنازلي
- تخفيض
- اقل شئ
- AllMatch
- اكثر شئ
- AnyMatch
- لمجموعة
35) ما هو الأسلوب المرجعي Java 8?
مرجع الطريقة في Java 8 هي طريقة للإشارة إلى الواجهة الوظيفية. ومن المعروف أنه شكل أسهل وأكثر كفاءة من تعبير لامدا. عند استخدام تعبيرات lambda للإشارة إلى طريقة ما، يمكنك استبدالها بمرجع الطريقة.
36) كيف تختلف التكرارات الداخلية والخارجية؟
فيما يلي الاختلافات بين التكرار الداخلي والخارجي:
| التكرار الداخلي | التكرار الخارجي |
|---|---|
| يُعرف أيضًا باسم المكرر السلبي أو الضمني. | يُعرف أيضًا باسم المكرر النشط أو الصريح. |
| يتم حمله داخليًا على أشياء مختلفة. | يتم حمله خارجيًا على أشياء مختلفة. |
| يتم استخدامه في البرمجة الوظيفية. | يتم استخدامه في البرمجة الشيئية. |
| وهو يمثل أخطاء أقل جدا. ومع ذلك، الترميز أمر لا بد منه لذلك. | ويتسبب في المزيد من الأخطاء. ومع ذلك، الترميز ليس ضروريا. |
37) هل تم استخدام الاستدلال النوعي في الإصدارات السابقة من Java?
Java أدخل نوع التدخل في Java 5 ولكن مع وصول محدود للغاية. ولكن على مر السنين، زادت احتمالات التداخل النوعي، وهي في أفضل حالاتها Java 8.
38) اكتب أ Java 8 برنامج يمكنه العثور على الحد الأدنى والحد الأقصى لعدد الدفق.
import java.util.Arrays;
import java.util.stream.IntStream;
public class MinMaxExample {
public static void main(String[] args) {
int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4};
int min = IntStream.of(numbers).min().getAsInt();
int max = IntStream.of(numbers).max().getAsInt();
System.out.println("Minimum number: " + min);
System.out.println("Maximum number: " + max);
}
}
الإخراج:
Minimum number: 1 Maximum number: 9
39) كيف يمكن للمرء الانضمام إلى سلاسل متعددة من خلال فئة StringJoiner؟
يساعد StringJoiner في ربط سلسلة نصية واحدة أو أكثر، ويمكن القيام بذلك من خلال رابط أو فاصل معين. على سبيل المثال، يمكن ربط عدد من السلاسل النصية عن طريق فصلها بفاصلة (,).
لإنشاء سلسلة CSV، يمكن للمرء إنشاء مسار كامل لدليل معين في Linux والذي يمكن القيام به عن طريق ضم السلسلة بمساعدة الشرطة المائلة للأمام "/."
40) ما هو أفضل بديل لتعبيرات لامدا في Java 8?
بشكل عام، نستخدم تعبيرات لامدا لإنشاء طرق مجهولة تساعد في الحصول على المخرجات المطلوبة. ومع ذلك، هناك حالات تفشل فيها تعبيرات لامدا في العمل وتستخدم طريقة موجودة فقط.
لذا، لتجنب ذلك، يمكنك استخدام مرجع الطريقة الذي يمكن أن يساعد في الحصول على النتيجة المطلوبة. يتم تصوير مرجع الطريقة باستخدام الرمز: (العلامة النقطية المزدوجة).
