Gaza, a piece of our soul. ❤️🇵🇸

أهم الأسئلة في مقابلات Laravel

إليك أهم الأسئلة في مقابلات Laravel مع شرح مختصر لكل سؤال:

1. ما هو OOP؟
   - البرمجة الكائنية (OOP) هي نمط برمجي يعتمد على الكائنات (Objects) التي تمثل البيانات والسلوكيات.

2. ما الفرق بين السيشن والكوكيز؟
   - السيشن: تخزن بيانات المستخدم مؤقتًا على الخادم.
   - الكوكيز: تخزن بيانات على متصفح المستخدم، وتكون قابلة للوصول في كل مرة يتم فيها زيارة الموقع.

3. ما هو Template Engine في Laravel؟
   - محرك القوالب (Blade) في Laravel يسمح بفصل منطق العرض عن منطق العمل، مما يسهل إدارة واجهات المستخدم.

4. ما الفرق بين الكلاس والـ Object؟
   - الكلاس هو نموذج أو قالب، بينما الـ Object هو نسخة من هذا القالب.

5. ما الفرق بين الـ Constructor والـ Destructor؟ وهل استخدمت الـ Destructor من قبل؟
   - الـ Constructor يُستخدم لتهيئة الكائن عند إنشائه، بينما الـ Destructor يتم استدعاؤه عند تدمير الكائن.

6. ما الفرق بين الـ Class والـ Trait؟
   - الـ Class يمثل كائنًا يمكن أن يحتوي على خصائص وسلوكيات. الـ Trait هو وسيلة لإعادة استخدام الكود بين الكلاسات.

7. ما الفرق بين الـ Interface Class والـ Abstract Class؟ واستخدمتهما في ماذا؟
   - Interface يحدد مجموعة من الدوال التي يجب تنفيذها في الكلاسات، بينما Abstract Class يمكن أن تحتوي على دوال مكتملة وغير مكتملة.

8. ما هي مبادئ SOLID؟
   - مجموعة من المبادئ لتصميم البرمجيات تساعد على جعلها أكثر قابلية للصيانة والفهم.

9. ما هو مبدأ Open/Closed في SOLID؟ أعطني مثالًا لتطبيقه.
   - الكود يجب أن يكون مفتوحًا للتوسع ومغلقًا للتعديل. مثلاً، يمكن إضافة ميزات جديدة عبر إنشاء كلاس جديدة بدلاً من تعديل الكلاسات الحالية.

10. ما هي SQL Joins؟
    - طريقة لربط البيانات من جداول مختلفة في قاعدة البيانات.

11. ما الفرق بين WHERE وGROUP BY وHAVING؟
    - WHERE تستخدم لتصفية الصفوف قبل التجميع، GROUP BY لتجميع البيانات، وHAVING لتصفية النتائج بعد التجميع.

12. ما الحالات التي استخدمت فيها Joins في مشاريعك؟
    - عند الحاجة لدمج معلومات من جداول متعددة، مثل جلب تفاصيل المستخدمين مع طلباتهم.

13. ما الفرق بين extend وimplement؟ ومتى يتم استخدام كل منهما؟
    - extend تستخدم لتوريث الكلاسات، بينما implement تستخدم لتنفيذ واجهات.

14. ما هو Event وListener في Laravel؟ وكيف استخدمتهما؟
    - Event هو حدث يحدث في التطبيق، وListener هو كود يتفاعل مع هذا الحدث.

15. ما هو Queue وJobs في Laravel؟
    - Queue تستخدم لمعالجة المهام في الخلفية، بينما Jobs تمثل المهام نفسها.

16. ما هو Facade في Laravel؟
    - واجهة بسيطة تسمح بالوصول إلى الخدمات المختلفة في Laravel.

17. كيف تعمل Spatie Permissions في قاعدة البيانات؟
    - تستخدم لإدارة الأذونات والأدوار في التطبيق بطريقة مرنة.

18. ما هو Polymorphism؟
    - القدرة على تنفيذ دوال متعددة الأشكال تعتمد على الكلاس الذي يتم استدعاؤه.

19. ما هي Design Patterns التي استخدمتها في مشاريعك؟
    - مثل Singleton، Factory، Observer.

20. ما هو SQL Injection؟
    - نوع من الهجمات الأمنية حيث يتم تضمين استعلامات SQL ضارة.

21. ما هو Dependency Injection؟
    - نمط تصميم يسمح بإدارة الاعتمادات بين الكلاسات بطريقة مرنة.

22. ما الفرق بين Service Container وService Provider؟
    - Service Container هو نظام لإدارة الاعتمادات، بينما Service Provider هو مكان تسجيل الخدمات.

23. ما هي Access Modifiers؟
    - تحدد مستوى الوصول إلى الخصائص والدوال (مثل public، protected، private).

24. ما هي Magic Methods؟
    - دوال خاصة في PHP تُستخدم لتحقيق سلوكيات معينة مثل __construct و__get.

25. ما الفرق بين self وthis؟
    - self تشير إلى الكلاس الحالي، بينما this تشير إلى الكائن الحالي.

26. متى نستخدم Single Auth وMulti Auth؟
    - Single Auth للمستخدمين العاديين، Multi Auth للأدوار المختلفة مثل المديرين والمستخدمين.

27. اشرح Laravel Request Life Cycle.
    - سلسلة العمليات التي يمر بها الطلب من استلامه إلى إرسال الاستجابة.

28. ما هي CSRF؟
    - هجوم يتضمن إرسال طلبات مزورة باسم المستخدم.

29. لماذا نستخدم Migrations ولا نتعامل مع قاعدة البيانات مباشرة؟
    - لتسهيل إدارة التغييرات في قاعدة البيانات بشكل منظم وقابل للتتبع.

30. ما الذي يؤثر على الأداء وسرعة الموقع؟
    - استعلامات قاعدة البيانات، حجم الملفات، تخزين البيانات، استخدام التخزين المؤقت.

31. ما الفرق بين SQL Query وQuery Builder وEloquent ORM؟ ومتى أستخدم كل واحد؟
    - SQL Query: استعلامات مباشرة. Query Builder: واجهة مريحة لبناء الاستعلامات. Eloquent ORM: طريقة العمل مع البيانات ككائنات.

32. كيف يتم تعريف العلاقات بين الجداول في Eloquent؟
    - باستخدام الدوال مثل hasMany وbelongsTo في النماذج.

33. ما هو Middleware في Laravel؟ وكيف يتم استخدامه؟
    - كود يُنفذ قبل أو بعد معالجة الطلبات، يُستخدم للتحقق من الأذونات.

34. ما الفرق بين get() وfirst() في Eloquent؟
    - get() تعيد مجموعة من النتائج، بينما first() تعيد العنصر الأول فقط.

35. كيف يمكن التعامل مع الأحداث (Events) في Laravel؟
    - عبر إنشاء Events وListeners وتسجيلها في التطبيق.

36. كيف يتم التحكم في عملية المصادقة في Laravel؟
    - عبر استخدام نظام المصادقة المدمج وتخصيصه.

37. ما الفرق بين Route::resource وRoute::controller في Laravel؟
    - Route::resource ينشئ مجموعة من الطرق CRUD، بينما Route::controller ينشئ طرقًا لدالة معينة.

38. ما هي Queues في Laravel؟ ولماذا يتم استخدامها؟
    - تُستخدم لمعالجة المهام في الخلفية دون التأثير على أداء التطبيق.

39. ما هو Blade Template Engine؟ وكيف يختلف عن PHP العادي؟
    - Blade يسمح بكتابة قوالب أكثر بساطة ووضوحًا، مع ميزات مثل التمديد والوراثة.

40. كيف يمكن التعامل مع الأخطاء (Exceptions) في Laravel؟
    - عبر استخدام try/catch أو تخصيص الـ Exception Handler.

41. كيف يتم استخدام Migrations في Laravel؟
    - لإنشاء وتعديل الجداول في قاعدة البيانات بشكل منظم.

42. كيف يتم تنفيذ الـ API في Laravel؟
    - عبر إنشاء Routes، Controllers، وResponses تتبع معايير RESTful. 

إذا كان لديك أي سؤال أو تحتاج لمزيد من التفاصيل عن أي نقطة، فلا تتردد في طرحه!