جافا أسئلة وأجوبة المقابلة في عام 2022
نشرت: 2022-08-03هل انت مبرمج؟ وقد اخترت لغة برمجة Java باعتبارها المكانة المفضلة لديك لبناء مستقبل مهني؟ تهانينا! لقد اخترت بحق. وفقًا للإحصائيات ، يكسب المبرمج الأمريكي ما معدله 105801 دولارًا سنويًا. هذا هو متوسط 50.87 دولارًا في الساعة ، و 2035 دولارًا في الأسبوع ، و 8817 دولارًا في الشهر. أليس هذا مثير للإعجاب؟
لكن الحصول على فرصة للحصول على وظيفة أحلامك كمبرمج جافا هو أبعد من مجرد التمني. من بين 8 ملايين مبرمج جافا على مستوى العالم ، يعمل حوالي 56585 فقط بأجر في الولايات المتحدة ، مما يجعل البحث عن وظيفة كمبرمج جافا أمرًا تنافسيًا للغاية. إذا كان يجب عليك الحصول على وظيفة الأحلام هذه ، فأنت بحاجة إلى أن تكون مجهزًا جيدًا في كل من الجوانب الأساسية والمعقدة للغة برمجة Java.
الآن أنت تعرف مدى المنافسة في الحصول على وظيفة كمبرمج جافا ، ومتطلبات أن تكون مؤهلاً لتكون من بين القلائل الذين يحصلون على وظيفة كمبرمج جافا. تذكر ، النجاح هو وظيفة فرصة لقاء التأهب. مع تقدمنا ، قمنا بتصميم دليل للأسئلة والأجوبة لمساعدتك على التوسع خلال مرحلة المقابلة وربما الحصول على وظيفة أحلامك. تم تجميع هذه القائمة بمساعدة المقال - التحضير لأسئلة وأجوبة مقابلة جافا على Apollotechnical. دعنا نتعامل معها.
أسئلة مقابلة Java الأساسية للطلاب الجدد
ماذا تفهم بجافا؟
Java هي لغة برمجة متعددة الاستخدامات وموجهة للكائنات وعبر الأنظمة الأساسية ، تُستخدم على 3 مليارات جهاز على مستوى العالم لمهام مختلفة مثل تطبيقات الشبكات الاجتماعية وبرامج الصوت والفيديو والألعاب ومعالجة البيانات الضخمة والأجهزة المضمنة وما إلى ذلك.
قارن بين Java و Python
في بساطتها ، تعد Java لغة برمجة للأغراض العامة وتركز على الكائنات استنادًا إلى الفئات ولكن مع عدد أقل من المواصفات المطلوبة. نظرًا لسمعتها بأنها سريعة وموثوقة وموجهة نحو النتائج ، فهي لغة برمجة الانتقال إلى تطوير التطبيقات في الهواتف المحمولة ووحدات التحكم في الألعاب وأجهزة الكمبيوتر المحمولة وأجهزة الكمبيوتر العلمية المتطورة وما إلى ذلك. لغة برمجة مترجمة ومركزة على الكائن ومرتفعة الهيكلية ديناميكيًا. تسهل Python مرونة البرنامج وإعادة استخدام الكود من خلال تمكين الوحدات والحزم.
حدد ميزات Java الرئيسية
- Java تركز على الكائن
- جافا هو النظام الأساسي الحيادية
- لديه تنفيذ تعدد ممتاز
- يستخدم لغة بسيطة
- وهل العمارة محايدة
ماذا تقصد بكائن في جافا
في Java ، الكائن هو مكون (يُعرف أيضًا باسم "مثيل") من مجموعة Java أخرى تسمى "class". كل كائن له حالة وسلوك / أفعال وهوية فريدة. تخزن الحقول (المتغيرات) حالة الكائن ، بينما تعرض المنهجيات (العمليات) إجراءات الكائن. في وقت التشغيل ، يتم إنشاء الكائنات من أطر عمل تم تحديدها على أنها فئات.
يمكن أن يكون الكائن أيضًا عنصرًا أساسيًا في البرمجة القائمة على الكائنات التي تمثل كيانات العالم الحقيقي.
التمييز بين Stringbuffer و Stringbuilder في برمجة Java
يختلف StringBuffer و StringBuilder بشكل أساسي في أربعة معلمات: الأداء / السرعة ، وسلامة مؤشر الترابط ، والتوافر ، والمزامنة. StringBuilder هو متغير غير متزامن لفئة StringBuffer.
هناك اختلاف آخر بين StringBuffer و StringBuilder وهو أن الأول آمن للخيط ، في حين أن الأخير ليس كذلك.
ميّز بين JDK و JRE و JVM
تتضمن مجموعة أدوات تطوير Java (JDK) الكتابة واستكشاف الأخطاء وإصلاحها وتحليل أدوات برمجة Java. JRE عبارة عن مجموعة من الفئات والكائنات وغيرها من الملفات المصاحبة التي يحتاجها JVM لتشغيل تطبيق. لا توفر JVM أي أدوات لتطوير البرامج.
تعد Java Development Kit (JDK) منتجًا برمجيًا لإنشاء تطبيقات Java. JRE هي حزمة برامج تحتوي على مكتبات فئة Java والمكونات الأخرى المطلوبة لتشغيل برمجة Java. يفسر Java Virtual Machine (JVM) لغة Java byte ويخلق جوًا مناسبًا للتنفيذ. JDK هي منصة محددة ، JRE تعتمد على النظام الأساسي ، و JVM تعتمد على النظام الأساسي على نطاق أعلى.
تحديد الميراث
في Java ، الوراثة هي مبدأ ينقل خصائص فئة إلى أخرى ؛ إنه إطار العمل في Java الذي من خلاله تحصل فئة ما على خاصية من فئة أخرى أو تسمح لفئة واحدة بامتلاك خصائص (طرق وسمات) لفئة أخرى.
ما هي الطبقة في جافا؟
الفئة هي عنصر أساسي في البرمجة الشيئية. إنه تنسيق يحدد الحالة والوظائف المنسوبة إلى إنشاء مثيل للفئة. يعتبر الفصل أيضًا قالبًا منطقيًا لأنه يُستخدم لبناء نماذج تشترك في سمات وطرق متشابهة.
قارن بين التحميل الزائد والتجاوز في Java
يشير التحميل الزائد إلى وجود طرق من نفس الفئة بنفس الاسم ، ولكن لكل منها معايير مختلفة أو نفس المعايير مع أنواع وأوامر مختلفة. بينما يعني التجاوز وجود فئة فرعية بنفس الأساليب تحت نفس العنوان مثل فئة فائقة ونفس نوع المعايير وقيمة الإرجاع.
بالإضافة إلى ذلك ، التحميل الزائد هو تعدد أشكال لسطر الأوامر مع رابطة ثابتة وتحميل زائد على الطريقة الثابتة. بينما التجاوز هو تعدد أشكال تنفيذ البرنامج برابطة مرنة وعدم القدرة على تجاوز الطريقة الثابتة.
اشرح إنشاء مفرد آمن لمؤشر الترابط في Java باستخدام قفل مزدوج التحقق
نمط Singleton هو نمط تصميم معروف جيدًا حيث يقتصر الفصل على مثيل واحد فقط طوال حياته ، ويشارك العديد من العملاء هذا المثال. يتجسد نمط Singleton مع مسؤوليتين رئيسيتين: الأولى هي ضمان إنشاء مثيل فئة واحد فقط. والثاني هو توفير طريقة يمكن للجميع الوصول إليها في جميع أنحاء العالم لتلك الحالة المحددة.
يتمثل أحد التحديات التي يواجهها تصميم Singleton في برنامج تعدد مؤشرات الترابط في ضمان إنشاء مثيل واحد فقط من الفئة ، على الرغم من أن العديد من المستخدمين يطلقون تقنية getInstance () في نفس الوقت. يعمل نظام القفل الذي تم التحقق منه مرتين على تصحيح هذه المعضلة من خلال ضمان استخدام المزامنة فقط عند إنشاء حالة فردية من Singleton في أي وقت يتم فيه استدعاء وظيفة getInstance () للمرة الأولى وإعادة نفس الحالة مرة أخرى بدون مزامنة أعلاه كل تلك الحالات الأخرى.
أسئلة مقابلة جافا المتوسطة
ما هو JDK؟ أذكر متغيرات JDK؟
JDK لتقف على Java Development Kit. Java Development Kit (JDK) هو برنامج go-to أثناء تطوير أي تطبيق Java. تتضمن مجموعة أدوات تطوير Java (JDK) الكتابة واستكشاف الأخطاء وإصلاحها وتحليل أدوات برمجة Java.
في الأساس ، JDK هو تطبيق Java Standard Edition أو Java Enterprise Edition. تمت إعادة تسمية Java باسم Java 2 (تم اختصاره إلى Java 2 SDK أو J2SDK) في عام 1998 بسبب ترقية النظام الأساسي الهامة. طورت ثلاثة إصدارات منفصلة من Java لدعم التطبيقات المختلفة.
- يرمز J2SE إلى Java 2 Platform ، الإصدار الأساسي والإصدار المعتاد ، وهو مخصص لسياقات سطح المكتب والخادم.
- يرمز J2EE إلى Java 2 Platform، Corporate Edition ، المصمم لتطبيقات الأعمال ويتضمن إمكانيات مثل التخزين السحابي ودعم الخدمات عبر الإنترنت.
- تم تخصيص J2ME (Java 2 Platform، Micro Edition) للأجهزة أو الأنظمة الأساسية المثبتة والمتحركة.
ومع ذلك ، في عام 2004 ، تم تعديل تسميات المتغيرات إلى Java ME (Micro Edition من Java Platform) ، و Java EE (الإصدار Enterprise من Java Platform) ، و Java SE (الإصدار القياسي لمنصة Java Platform) ، على التوالي. تم تغيير لقب مجموعة التطوير أيضًا من "Java 2 SDK" إلى "JDK". أيضًا ، تمت إعادة تسمية سياق التشغيل "JRE" بدلاً من "J2RE". لا تزال المتغيرات بإصداراتها ، Java SE 6 و Java EE 5 قيد الاستخدام.

يمكن للمنشئ إرجاع قيمة؟
فهم أن المُنشئ ليس مثل التقنية التقليدية المستخدمة أثناء البرمجة في Java ، فإنه بطريقة ما لا يُرجع أو يعيد أي نتيجة محددة ، مما قد يتسبب في تأثير أو تأثير كبير على الكود. يمكن أن يتضمن المُنشئ تعليمات غير محدودة ، لكنه لا يمكنه إعادة أو إرجاع القيم أو نتائج البيانات.
شرح "هذه" الكلمة الأساسية في جافا
"هذا" مصطلح محدد في Java يحدد الكيان الذي يقوم المبرمج بتشغيله الآن. الكلمة الأساسية مسبوقة فقط بالمعامل المختلف المعني باستخدام عامل التشغيل - فترة (.) ، والتي يمكن استخدامها من داخل طريقة أو مُنشئ. لا يتم استخدام الكلمة الأساسية "هذه" كثيرًا نظرًا لأن معظم التطبيقات تهدف إلى تجنب المواقف التي قد تكون ضرورية. يتم توفير الوصول إلى متغيرات الحالة من خلال المصطلح "هذا".
اشرح الكلمة الأساسية "SUPER" في Java
في Java ، تعد كلمة المرور 'super' معلمة نسبية مرتبطة بمفهوم الوراثة الذي يشير إلى مثيلات الفئة الأصل ، بافتراض أن الفئة المشتقة لها معلمة في المجموعة أو الطريقة بنفس اسم الفئة الرئيسية. يستخدم المصطلح في الغالب عندما تحتاج الفئة الفرعية للوصول إلى معلمة أو وظيفة أو مُنشئ في الفئة الأساسية.
شرح طريقة التحميل الزائد في جافا
في Java ، يشير التحميل الزائد إلى الطرق التي لها نفس الاسم والفئة ولكن بمعايير مختلفة والعكس صحيح. تقنيتان أو أكثر لهما أسماء وفئات موحدة ولكن توقيعات مختلفة في التحميل الزائد. التحميل الزائد هو تعدد أشكال لسطر الأوامر يمد سلوك طريقة ما ، مما يتسبب في زيادة الحمل.
هل يمكننا زيادة التحميل على طريقة ثابتة في Java؟
في Java ، تتصرف الطريقة الثابتة بشكل مشابه لمنهجيات التحميل الزائد العادية ، وبالتالي يمكن أن تكون محملة بشكل زائد. ومع ذلك ، يجب أن تقدم طريقة ثابتة إضافية بنفس الاسم ولكن بتوقيع منهجي مختلف إذا كان الهدف هو زيادة التحميل على الطريقة الثابتة.
تحديد الربط المتأخر
الربط المتأخر هو تنسيق يشير إلى أن المترجم يجب ألا يقوم بإجراء أي فحوصات على استدعاءات الأسلوب ، ولا تدقيق وسيطة ، ويجب أن يترك كل شيء لوقت التشغيل (يوجد مثيل في برمجة COM).
تحديد طريقة الإرسال الديناميكي
يشير إرسال الأسلوب الديناميكي إلى حل أو إصلاح استدعاء لطريقة تم تجاوزها في وقت التشغيل بدلاً من وقت الترجمة.
لماذا تعتبر وظيفة الحذف في القائمة المرتبطة أسرع من المصفوفة
تقوم عملية إزالة LinkedList بإرجاع O (1). لكن عملية إزالة ArrayList تُرجع O (n) في أسوأ الحالات ، أي عند حذف الإدخال الأول و O (1) في أفضل سيناريو أثناء إزالة العنصر الأخير. عند المقارنة بـ ArrayList ، يكون حذف عنصر LinkedList أسرع. والسبب في ذلك هو أن كل عنصر LinkedList يحتوي على مؤشرين (عناوين) يشيران إلى كل من الأعضاء المجاورين في القائمة. نتيجة لذلك ، تتضمن إزالة العقدة تعديل موضع المرجع في المكونين المتجاورين للعقدة.
أسئلة مقابلة Java المتقدمة لذوي الخبرة
على الرغم من أن الميراث مفهوم شائع ، إلا أنه أقل فائدة من التركيب. يشرح!
يمكن أن تحتوي فئات Java على فئة فائقة واحدة فقط نظرًا لأن الوراثة المتعددة غير مدعومة في اللغة. في الوظائف المختلفة ، مثل القراءة والكتابة إلى ملف ، يفضل استخدام بنية التجميع. يمكنك مقارنتها بقدرات كاتب وقارئ عضو خاص. بمساعدة التركيب ، من الممكن منع كسر التغليف مع تحقيق مرونة كبيرة. يمكن تحقيق اختبار الوحدة ، وهو أمر مستحيل بسبب الوراثة ، بمساعدة التكوين.
كيف يختلف إنشاء سلسلة باستخدام new () عن إنشاء سلسلة حرفية؟
عندما نستخدم new () لإنشاء سلسلة ، يتم إنشاء كائن جديد في ذاكرة الكومة. يستغرق التنفيذ وقتًا أطول وبالتالي يتأخر مقارنةً بـ String literal. ومع ذلك ، عندما تكون هناك بيانات مثبتة بالفعل في سلسلة String تم إنشاؤها باستخدام String literal ، فهناك ارتباط لتلك البيانات نفسها مع متغير String في مجموعة String. ويتم تحقيق ذلك دون الحاجة إلى إنشاء سلسلة جديدة تمامًا بنفس البيانات المحددة.
هل يمكن تجاوز حد الذاكرة المسموح به في أحد البرامج على الرغم من وجود برنامج تجميع البيانات المهملة؟
نعم. إن وجود أداة تجميع القمامة لا يوقف أو يعيق البرنامج من الخروج من الذاكرة بأي حال من الأحوال.
لماذا المزامنة ضرورية؟ اشرح بمساعدة مثال ذي صلة
التزامن هو آلية تضمن أن جميع الخيوط المتزامنة تعمل في وقت واحد. تمنع المزامنة مشاكل تناسق الذاكرة الناتجة عن عرض الذاكرة التآزرية غير المتسق. في طريقة متزامنة ، يتم مراقبة الكائن وإبقائه في مكانه بواسطة مؤشر الترابط. إذا كان مؤشر ترابط آخر ينفذ الطريقة المتزامنة ، فسيتم إيقاف الخيط الحالي حتى يقوم مؤشر الترابط السابق بتحرير الشاشة.
دعنا نقول ، في الحالة التي يكون فيها مطلوبًا العثور على عدد الطلبات المقدمة إلى عنوان URL معين ، فإن وجود أكثر من طلب قيد التشغيل لا بد أن يؤدي إلى إحصاء غير منتظم. قل أن الخيط 1 يرى أن العدد هو 12 ؛ سيتم زيادته إلى 13 بإضافة واحد. في الوقت نفسه ، يرى مؤشر ترابط آخر 2 أن العدد هو 12 ، وعلى نفس المنوال ، يزداد إلى 13 بإضافة 1. هذا عدم القدرة على التنبؤ في قيمة العد يحدث لأنه بدلاً من القيمة النهائية المتوقعة 14 ، ما سيحصل على أنه نهائي ستكون القيمة 13. هذا هو المكان الذي تلعب فيه المزامنة مع زيادة الوظيفة () ، لذلك يتم منع الوصول المتزامن إلى العدد.
هل يمكنك شرح دورة حياة مؤشر ترابط Java؟
في Java ، يتم تعريف دورة حياة الخيط على أنها تحولات حالة الخيط من الولادة إلى الموت. عندما يتم إنشاء مثيل مؤشر ترابط ، ويتم استدعاء وظيفة start () لفئة مؤشر الترابط ، يدخل مؤشر الترابط في حالة التشغيل. عندما تستدعي فئة مؤشر الترابط أساليب السكون () أو الانتظار () ، يصبح مؤشر الترابط غير قابل للتشغيل.
ما الذي يمكن أن يكون المفاضلة بين استخدام مصفوفة غير مرتبة مقابل استخدام مصفوفة مرتبة؟
أحد الجوانب الإيجابية الرئيسية للصفيف المرتب هو أنه يحتوي على تعقيد وقت البحث O (log n). عملية الإدراج على مصفوفة مرتبة لها تعقيد زمني لـ O (n) لأنه يجب إزاحة الأعضاء الحاصلين على درجات أكبر لإنشاء متغير جديد. على الجانب الآخر ، تتطلب عملية إدراج مصفوفة غير مرتبة وقتًا ثابتًا من O (1).
هل يمكن استيراد نفس الفئة أو الحزمة مرتين في جافا وماذا يحدث لها أثناء وقت التشغيل؟
نعم. بغض النظر عن عدد مرات استيراد الفئة أو الحزمة ، سيقوم JVM بتحميلها داخليًا مرة واحدة أثناء وقت التشغيل.
هل سيتم تنفيذ الكتلة "أخيرًا" إذا تمت كتابة نظام الكود. خروج (o) في نهاية كتلة try؟
لا ، لن يتم تنفيذ الكتلة "النهائية" في هذا السيناريو لأنه عند تنشيط System.exit (0) ، يترك عنصر التحكم البرنامج على الفور ، وبالتالي ، لا يتم تنفيذ "أخيرًا" أبدًا. إذا كان النظام. يتم استدعاء exit (0) بدون استثناء ؛ البرنامج لن يعمل.
ماذا تفهم من خلال واجهات العلامات في Java
تُعرف الواجهة التي لا تحتوي على ثوابت أو طرق بواجهة علامة أو واجهة علامات نظرًا لأنها توفر للمجمع ومعلومات JVM حول نوع وقت تشغيل الكائنات. تعد الواجهات البعيدة و Serializable و Cloneable أمثلة لواجهات العلامة ، وجميع هذه الواجهات فارغة.
اشرح مصطلح "تهيئة الدعامة المزدوجة" في جافا
في Java ، تهيئة الدعامة المزدوجة هي مزيج من عمليتين منفصلتين. اثنين من الأقواس ({) المعنية في هذا الموقف. تحدث تهيئة الدعامة المزدوجة عندما يتم عرض قوسين معقوفين متتاليين في كود جافا.
بناء فئة داخلية غير مسمى هو الدعامة الأولى ، بينما كتلة التهيئة هي الدعامة الثانية. تحدث تهيئة Java Double Brace عندما تستخدم فئة داخلية غير مسماة كتلة التهيئة.
استنتاج
بصفتك مبرمجًا مبتدئًا أو حتى مبرمجًا متمرسًا ، قد تبدو أسئلة المقابلة هذه صعبة بعض الشيء. ولكن إذا التزمت بممارسة هذه الأسئلة ، فمن المؤكد أنك ستحصل على هذه الفرصة التالية التي تحصل عليها.