Final Review& Mock.
آخر يوم: مراجعة سريعة لكل المفاهيم، أسئلة سيناريو حقيقية زي اللي بيتسألوا في الإنترفيو، أسئلة سلوكية بطريقة STAR، وتشيك ليست ليوم الإنترفيو.
المراجعة النهائية بتجمع أهم مفاهيم Magento 2 قبل الإنترفيو في مكان واحد: cheat sheet للـ DI والـ Plugins والـ Observers والـ Data Layer، وأسئلة سريعة بإجابات قصيرة، وسيناريوهات عملية، وأسئلة سلوكية بطريقة STAR، و checklist ليوم الإنترفيو نفسه من التحضير لحد الأسئلة اللي تسألها إنت.
Quick Cheat Sheet
كل مفهوم أساسي في سطر واحد. راجعهم قبل الإنترفيو بساعة.
Rapid-Fire Q&A
أسئلة قصيرة بإجابات مباشرة. لو عرفت تجاوب عليها كلها بسرعة، أنت جاهز.
Scenario Questions
"إزاي تعمل كذا؟" — أسئلة عملية بتقيس فهمك الحقيقي مش الحفظ.
- عرّف الجدول في db_schema.xml.
- اعمل Model + ResourceModel + Collection.
- عرّف Api/Data/TicketInterface و TicketRepositoryInterface واربطهم بـ preferences.
- اعمل الـ admin: routes.xml, acl.xml, menu.xml, controllers.
- اعمل الـ UI Component grid (listing) و form مع DataProvider.
- (اختياري) عرّض الـ repository كـ REST عن طريق webapi.xml.
Debugging & Best Practices
الحاجات اللي بتفرّق بين developer شغّال وdeveloper محترف. بيسألوا عنها عشان يقيسوا خبرتك العملية.
- Xdebug — الـ step debugging الأساسي مع الـ IDE.
- لوجات في var/log/ — system.log, exception.log, debug.log.
- developer mode بيظهر الأخطاء بالتفصيل (متستخدمهوش في production).
- bin/magento setup:di:compile بيكشف أخطاء الـ DI بدري.
- الـ profilers: Blackfire / New Relic للـ performance.
- عمرك ما تعدّل ملفات الـ core — استخدم plugins / preferences / events.
- دايمًا اعتمد على service contracts (repositories) مش الـ models مباشرة.
- اعمل type-hint على interfaces مش concrete classes.
- تجنّب around plugins إلا للضرورة.
- الـ indexers على schedule في production.
- متعملش business logic في الـ templates — استخدم ViewModels.
- استخدم declarative schema مش الـ install scripts القديمة.
Behavioral (STAR)
مش كل الإنترفيو تقني. الأسئلة السلوكية بتتجاوب بطريقة STAR عشان تبقى منظّمة ومقنعة.
- احكيلي عن bug صعب واجهته في Magento وإزاي حليته.
- إزاي تتعامل مع deadline ضيّق ومهمة كبيرة؟
- احكيلي عن مرة اختلفت فيها مع زميل في قرار تقني.
- إزاي بتضمن إن كودك مش هيكسّر الـ upgrade الجاي؟
- احكيلي عن performance issue حسّنته وإيه كان الأثر.
في آخر الإنترفيو بيسألوك "عندك أسئلة؟" — دايمًا يبقى عندك، ده بيوضّح اهتمامك.
- إيه إصدار Magento اللي شغّالين عليه؟ Adobe Commerce ولا Open Source؟
- إزاي بتتعاملوا مع الـ deployments والـ CI/CD؟
- الفريق بيكتب unit / integration tests؟
- إيه أكبر تحدي تقني بيواجه الفريق دلوقتي؟
- إزاي بتتعاملوا مع الـ upgrades والـ security patches؟
Interview Day Checklist
آخر مراجعة قبل ما تدخل. لو كل دي متظبطة، أنت جاهز.
- أعرف أشرح DI و preferences و virtualTypes بصوت عالي.
- أعرف الفرق بين plugin و observer و preference وإمتى كل واحد.
- أعرف أشرح EAV vs flat وليه.
- أعرف خطوات عمل custom module + CRUD كاملة.
- أعرف رحلة الـ request من index.php للـ response.
- أعرف أهم أوامر الـ CLI.
- عندي 2-3 قصص STAR جاهزة.
- لو مش عارف إجابة، قول "مش متأكد بس هفكر بصوت عالي" — طريقة تفكيرك أهم من الحفظ.
- اربط إجاباتك بـ تجارب حقيقية من شغلك.
- اذكر دايمًا "مبعدّلش الـ core" و"بستخدم service contracts".
- لو السؤال مبهم، اسأل توضيح قبل ما تجاوب — ده احترافي.
- في أسئلة الكود، فكّر في الـ performance والـ upgradability مش بس "الحل يشتغل".
خلّصت الأربع أيام 🎉
دلوقتي عندك صورة كاملة: من الأساسيات، للـ database، للـ admin، للمراجعة النهائية. لو راجعت الأربع artifacts كويس وعرفت تشرحهم بصوت عالي، أنت في وضع قوي للإنترفيو.
خد نفس، ثق في تحضيرك، وفكّر بصوت عالي. بالتوفيق!
خلّصت الدرس؟علّمه عشان تتابع تقدّمك في الكورس.
أسئلة شائعة
ما الفرق بين setup:upgrade و setup:di:compile في Magento 2؟
setup:upgrade بيطبّق الـ modules والـ patches ويحدّث الـ schema. أما setup:di:compile فبيولّد الـ DI classes زي الـ factories والـ proxies والـ interceptors في فولدر generated/، وده أساسي في الـ production.
ما الفرق بين cache:clean و cache:flush في Magento 2؟
cache:clean بيمسح عناصر Magento بس من الـ cache. أما cache:flush فبيفضّي الـ storage بالكامل، بما فيه بيانات أي تطبيقات تانية بتستخدم نفس الـ Redis، فخلّي بالك قبل ما تستخدمه.
ما الفرق بين Block و ViewModel في Magento 2؟
الـ ViewModel بيفصل منطق الـ view عن الـ Block، وبيبقى أخف وأسهل في الـ testing، وبيتحقن في الـ template عن طريق الـ layout XML. ده الاتجاه الحديث المفضّل، وبيخلّيك متحطّش business logic جوّه الـ templates.
ليه مينفعش أستخدم new أو الـ Object Manager مباشرة في Magento 2؟
الـ new بيكسّر الـ DI وبيخفي الـ dependencies وبيمنع الـ plugins من الاشتغال على الـ object، والـ Object Manager ممنوع تستخدمه مباشرة. البديل الصح هو constructor injection، ولو محتاج instance جديدة كل مرة استخدم Factory بـ ->create().
إيه هي الـ areas في Magento 2؟
الـ areas هي frontend وadminhtml وwebapi_rest وwebapi_soap وcrontab وgraphql، وكل area ليها config خاص بيها. عشان كده لو فيه تعارض، الـ di.xml الخاص بـ area معيّنة زي adminhtml بيتجاوز الـ di.xml الـ global.
إزاي أجاوب على الأسئلة السلوكية بطريقة STAR؟
رتّب إجابتك في أربع نقط: Situation (الموقف والمشكلة)، Task (دورك بالظبط)، Action (اللي عملته أنت تحديدًا مش الفريق)، وResult (النتيجة، ويا حبذا بأرقام). جهّز 2-3 قصص حقيقية من شغلك، زي bug صعب وperformance issue وخلاف تقني، تقدر تلوّيها لأغلب الأسئلة.
إزاي أعمل log في Magento 2؟
بتحقن Psr\Log\LoggerInterface وتستخدم ->info() أو ->error(). ولو عايز اللوجات تروح لملف منفصل، بتعمل logger مخصوص بـ virtualType.