مهندس Java Backend: مجموعة أسئلة المقابلة

Home PDF

المشاريع ذات الصلة

  1. مقدمة عن النفس
  2. مقدمة عن المشروع
  3. حجم المشروع
  4. نقاط معرفة حول الخيوط (Threads) والتزامن (Concurrency)
  5. الفروق بين القفل (lock) وقفل الـ synchronized
  6. الفروق بين MYSQL و MONGODB
  7. المكونات وإصدارات SpringCloud المستخدمة

نظام Spring البيئي

  1. ما هو جوهر SpringBoot
  2. إصدار SpringBoot
  3. أي مكونات SpringCloud يتم استخدامها
  4. الفروق بين SpringBoot و SpringCloud
  5. طرق حقن Spring bean
  6. قواعد تسمية Bean لتكوين مصادر بيانات متعددة

هندسة الخدمات المصغرة (Microservice Architecture)

  1. كيفية تقسيم وحدات الخدمات المصغرة
  2. في حالة التزاوج (Coupling)، ما الذي يأخذ الأولوية: التزاوج التجاري أم التزاوج التقني؟
  3. ما هو نمط الخدمات المصغرة المستخدم
  4. الفروق بين عديم الحالة (Stateless) وذو الحالة (Stateful) في تصميم واجهات برمجة التطبيقات (API)، وكيفية الاختيار بينهما
  5. العدد الافتراضي للعقد (Nodes) لنشر الخدمات على السحابة (Cloud Deployment)

متعلق بـ Java

  1. إصدار JDK المستخدم
  2. التنفيذ الأساسي لـ Stream
  3. كيفية تصحيح مشاكل كود Stream
  4. مكونات Stream والبنية الأساسية
  5. كيفية تنفيذ مشاركة الرسائل بين الخيوط (Threads)
  6. ما هو القفل القابل لإعادة الدخول (Reentrant Lock)
  7. اشرح فهمك للأقفال
  8. الفروق بين JDK8 و JDK17

تكوين الخادم

  1. عدد الخيوط الافتراضي في Tomcat
  2. كيفية الانتقال من Tomcat إلى خوادم ويب أخرى
  3. تكوين وكيل عكسي لـ Nginx

قاعدة البيانات والذاكرة المؤقتة

  1. كيفية إنشاء اتصال Redis في المشروع، والتبعيات المطلوبة
  2. كيفية إنشاء اتصال باستخدام Jedis
  3. أوامر معاملات Redis
  4. سيناريو SQL: استعلام Join بين جدولي القسم والموظف لأعلى راتب حسب القسم
  5. مزايا Left Join

1. كيفية إنشاء اتصال Redis في المشروع، والتبعيات المطلوبة

لإنشاء اتصال Redis في مشروعك، تحتاج إلى إضافة التبعيات اللازمة. إذا كنت تستخدم Maven، يمكنك إضافة التبعية التالية إلى ملف pom.xml:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.2.3</version>
</dependency>

إذا كنت تستخدم Gradle، يمكنك إضافة التبعية التالية إلى ملف build.gradle:

implementation 'redis.clients:jedis:4.2.3'

2. كيفية إنشاء اتصال باستخدام Jedis

لإنشاء اتصال باستخدام Jedis، يمكنك استخدام الكود التالي:

import redis.clients.jedis.Jedis;

public class RedisExample {
    public static void main(String[] args) {
        // إنشاء اتصال مع Redis
        Jedis jedis = new Jedis("localhost", 6379);

        // اختبار الاتصال
        System.out.println("Connection to server successfully");
        System.out.println("Server is running: " + jedis.ping());

        // إغلاق الاتصال
        jedis.close();
    }
}

3. أوامر معاملات Redis

Redis يدعم المعاملات باستخدام الأمر MULTI لبدء المعاملة، وEXEC لتنفيذها. إليك مثال بسيط:

jedis.multi();
jedis.set("key1", "value1");
jedis.set("key2", "value2");
jedis.exec();

4. سيناريو SQL: استعلام Join بين جدولي القسم والموظف لأعلى راتب حسب القسم

لحصول على أعلى راتب لكل قسم، يمكنك استخدام الاستعلام التالي:

SELECT d.department_name, e.employee_name, MAX(e.salary) AS max_salary
FROM department d
JOIN employee e ON d.department_id = e.department_id
GROUP BY d.department_name, e.employee_name;

5. مزايا Left Join

مثال على استخدام Left Join:

SELECT d.department_name, e.employee_name
FROM department d
LEFT JOIN employee e ON d.department_id = e.department_id;

هذا الاستعلام سيعرض جميع الأقسام حتى إذا لم يكن هناك موظفين مرتبطين بها.

سيناريوهات البرمجة

  1. تنفيذ فرز كائنات Person حسب العمر والاسم باستخدام واجهة برمجة تطبيقات Java 8
  2. إخراج الأحرف المشتركة بين سلسلتين نصيتين

CI/CD (التكامل المستمر/التسليم المستمر)

  1. خبرة في كتابة Dockerfile
  2. ميزات الإغلاق (Closure) في Groovy ضمن خط أنابيب Jenkins
  3. الغرض من أداة Nexus
  4. الخبرة العملية في DevOps

المفاهيم الأساسية

  1. مفاهيم ووظائف نموذج ذاكرة Java (JMM)
  2. مبادئ تنفيذ HashMap وحل النزاعات
  3. تنفيذ نمط الوكيل (الستاتيكي والديناميكي)
  4. مبادئ IoC و AOP
  5. لماذا يحافظ Redis على أداء عالي باستخدام خيط واحد
  6. تكوين معلمات مجموعة خيوط Executor

تركيز المقابلات الهندية

  1. المفاهيم الأساسية في Java (مع أمثلة)
  2. استخدام تعدد الأشكال (Polymorphism)
  3. أداء LinkedList والاختلافات
  4. الاختلافات بين الخرائط (Maps)
  5. حلول التعامل مع المصفوفات (Arrays)
  6. أوامر Linux
  7. الخبرة في المشاريع (التقنيات المستخدمة: Python, Angular, Control-M)
  8. إتقان اللغة الإنجليزية

مستويات الطلاقة في اللغة الإنجليزية

  1. عدم القدرة على التعبير عن النفس - أساسيات ضعيفة، غير قادر على تقديم مقدمة عن النفس أو عرض المشاريع
  2. محادثة أساسية/بسيطة - أساسيات جيدة، يمكن تقديم مقدمة عن النفس مُعدة مسبقًا
  3. تواصل يومي - أساسيات قوية، يمكن المشاركة في الاجتماعات الإنجليزية وفهم معظم المحتوى
  4. قابل للعمل - أساسيات ممتازة، يمكن التواصل بطلاقة مع المُحاور
  5. قابل للعمل وتبادل تقني - إتقان ممتاز، يمكن المشاركة في مناقشات تقنية دون عوائق

نقاط تقييم أخرى في المقابلة

  1. طرق التعلم
  2. القدرة على التواصل التقني
  3. خبرة التواصل مع العملاء
  4. التحديات في المشاريع والحلول المقدمة
  5. خطة التطور الوظيفي
  6. العمق التقني (مثل التعددية في الخيوط، التحقق من البيانات، تطوير الواجهات الأمامية، إلخ)

Back 2025.01.18 Donate