منذ ساعة
أهلا بك عزيزي المتابع لموقع (journey for learn) نقدم دورات بكوبونات متاحة لاول 1000 تسجيل مجاني فقط وكوبونات اخري لفترة محدودة فاذا كنت تريد ان تحصل علي كل الكورسات علي موقعنا وان تكون اول المسجلين في الكورسات المجانية قم بتسجيل الدخول أوقم بالدخول علي وسائل التواصل الاجتماعي وخصوصا التليجرام نوضح الوصف المختصر والطويل للدورات لكي تعرف الدروس التي سوف تتعلمها بسهولة ويسر :
تغطية تفصيلية لنطاق الاختبار تم تصميم مستودع الاختبار التدريبي هذا بدقة ليعكس التوزيعات الفنية الواقعية المتوقعة في المقابلات الفنية على مستوى المؤسسة لـ Kotlin وAndroid.- أساسيات Kotlin (20%): السلامة الخالية المتقدمة، وميكانيكا Smart Cast، ووظائف الامتداد، وفئات البيانات تحت الغطاء، وفئات التعداد المخصصة.
- التزامن وCoroutines (18%): نطاقات Coroutine، والمزامنة/الانتظار. الأنماط والتزامن المنظم والتدفقات الباردة غير المتزامنة مع تكامل Flow وLiveData.
- البرمجة الوظيفية (15%): وظائف ذات ترتيب أعلى، وتعبيرات Lambda المحسنة، والوظائف المضمنة، وهياكل البيانات غير القابلة للتغيير، ومبادئ البرمجة الوظيفية.
- البرمجة الموجهة للكائنات (12%): الفئات المخصصة، وإعلانات الكائنات، والكائنات المصاحبة، والوراثة الهيكلية، وتعدد الأشكال، و استراتيجيات التجريد.
- نظام Kotlin البيئي وأطر العمل (10%): الأنظمة الخلفية مع Ktor، وEnterprise Spring Boot مع Kotlin، وبنيات Android Jetpack، والتسلسل عبر Kotlinx.
- تحديات حل المشكلات والتشفير (10%): مشاكل الخوارزمية، وهياكل البيانات الأساسية، وتصحيح الأخطاء أثناء التشغيل، وتحسين التعليمات البرمجية المراعي للذاكرة.
- أنماط التصميم والهندسة المعمارية (5%): نظيف. أنماط البنية بما في ذلك MVC، وMVVM، وأنماط المستودعات المنفصلة، وحقن التبعية الحديث (Hilt/Koin).
- أفضل الممارسات وجودة الكود (10%): بروتوكولات مراجعة التعليمات البرمجية الشاملة، وتحديد روائح التعليمات البرمجية، وإعادة البناء الاستباقي، ومنهجيات اختبار الوحدة.
- أ) يستمر كوروتين الطفل في التنفيذ دون أن يتأثر لأنه يعمل على مرسل مختلف (Dispatchers.IO).
- ب) يتم إلغاء كوروتين الطفل على الفور لأن الفشل ينتشر لأعلى إلى النطاق الأصلي، مما يؤدي إلى إلغاء جميع الأطفال بشكل افتراضي.
- ج) يوقف كوروتين الطفل التنفيذ مؤقتًا ويدخل في تعليق معلق. الحالة حتى يتم استرداد النطاق الأصلي بشكل صريح.
- د) يقوم coroutine الفرعي بترقية نفسه تلقائيًا ليصبح coroutine جذر ضمن GlobalScope.
- E) تعطل بيئة التنفيذ عملية التطبيق بالكامل على الفور، مما يمنع تنفيذ أي إجراءات تنظيف.
- F) يكمل coroutine الطفل كتلة التنفيذ الحالية ولكن يتم منعه من إصدار أي قيم في تدفق التدفق البارد.
- الإجابة الصحيحة: ب
- لماذا هي صحيحة: بموجب قواعد Kotlin للتزامن المنظم، يكون نشر الاستثناء ثنائي الاتجاه بشكل افتراضي ما لم يتم استخدام SupervisorJob. عندما يواجه كوروتين أصلي استثناءً غير معالج، فإنه يلغي نفسه على الفور وينشر إشارة الإلغاء إلى جميع كوروتيناته الفرعية النشطة، بغض النظر عن حقيقة أنها تنفذ على مرسل مختلف مثل المرسلين. IO.
- لماذا الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: يقوم المرسلون بتعيين المواضيع فقط؛ فهي لا تكسر التسلسل الهرمي الهيكلي للوظائف وقواعد تحديد النطاق.
- الخيار ج غير صحيح: لا تتوقف coroutines التابعة أو تعلقها مؤقتًا؛ يتلقون إشارة إلغاء صريحة ويتوقفون عن التنفيذ.
- الخيار D غير صحيح: لا تغير Coroutines نطاقها الأصلي الهيكلي ديناميكيًا أثناء التنفيذ.
- الخيار E غير صحيح: تتعطل عملية التطبيق فقط إذا بقي الاستثناء دون معالجة تمامًا على مستوى UncaughtExceptionHandler الجذر، لكن التزامن المنظم يضمن الإلغاء المنظم أولاً.
- الخيار F غير صحيح: لم يكمل الطفل تنفيذه؛ وينتهي مبكرًا عند نقطة التعليق التالية المتاحة.
- أ) يظل ملف التعريف الأصلي بدون تغيير لأن فئات بيانات Kotlin يتم نسخها بعمق تلقائيًا أثناء استدعاء .copy().
- ب) يطرح التطبيق ConcurrentModificationException لأن خصائص فئة البيانات غير قابلة للتغيير ضمنيًا.
- ج) يتم تعديل قائمة التفاصيل في ملف التعريف الأصلي أيضًا لأن وظيفة .copy() ينفذ نسخة سطحية من أنواع المراجع.
- د) يعمل التعديل بشكل نظيف ولكنه يتسبب في تحذير مترجم ينبه المطور إلى تجزئة عنوان الذاكرة.
- هـ) يحظر المترجم هذه العملية لأن الهياكل القابلة للتغيير محظورة تمامًا داخل معلمات فئة البيانات.
- و) يتم حذف ملف التعريف الأصلي من الذاكرة بواسطة جامع البيانات المهملة بمجرد إنشاء المرجع إلى المثيل الجديد.
- صحيح الإجابة: C
- لماذا هذا صحيح: تقوم طريقة .copy() التي تم إنشاؤها في فئة بيانات Kotlin بإجراء نسخة سطحية. بالنسبة للأنواع البدائية والسلاسل غير القابلة للتغيير، يتصرف هذا كنسخة مكررة مستقلة. ومع ذلك، بالنسبة للأنواع المرجعية مثل MutableList، فإن كلا من المثيلات الأصلية والجديدة ينتهي بها الأمر إلى الرجوع إلى نفس كائن القائمة الفعلي في ذاكرة الكومة. يؤدي تعديل محتويات القائمة عبر مرجع واحد إلى تغيير الحالة المشتركة التي يراها المرجع الآخر.
- لماذا تكون الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: لا يقوم Kotlin بإنشاء نسخ عميقة؛ يجب عليك تنفيذ منطق النسخ المخصص يدويًا للمراجع القابلة للتغيير.
- الخيار ب غير صحيح: لم يتم طرح أي استثناء في وقت التشغيل؛ النسخ السطحية صالحة تمامًا من وجهة نظر تنفيذ JVM.
- الخيار D غير صحيح: يسمح المترجم بهذا النمط دون إصدار أي تحذيرات، على الرغم من أنه يتعارض مع أهداف البرمجة الوظيفية النظيفة.
- الخيار E غير صحيح: الخصائص القابلة للتغيير قانونية تمامًا ضمن فئات البيانات، على الرغم من أن استخدام الأنواع غير القابلة للتغيير (قائمة بدلاً من MutableList) هو أفضل الممارسات الموصى بها في الصناعة.
- الخيار F غير صحيح: يحتفظ ملف التعريف الأصلي بمرجع نشط في نطاقه المتغير، مما يعني البيانات المهملة لن يلمسه المجمع.
- أ) يتحول التدفق إلى تيار ساخن، ويبث نفس الانبعاثات بالضبط إلى جميع المجمعات في وقت واحد.
- ب) ينفذ التدفق كتلة الإنشاء من البداية لكل مجمع، ويعمل بشكل مستقل تمامًا.
- ج) يلقي النظام IllegalStateException لأن التدفقات الباردة هي تدفقات أحادية الاستخدام تحظر عدة مجمعات. المجموعات.
- د) يقوم محرك التدفق بتخزين مجموعة البيانات المنبعثة الأولى مؤقتًا ويمرر حالة الذاكرة المحفوظة إلى جميع المشتركين اللاحقين.
- هـ) يوازن المحرك الحمل عن طريق توزيع الانبعاثات بشكل دوري عبر مشتركي التجميع النشطين.
- و) ينتهي المجمع الأول من التنفيذ، بينما يظل المجمع الثاني معلقًا إلى أجل غير مسمى في انتظار إصدار الخيط.
- الإجابة الصحيحة: ب
- لماذا هي صحيحة: حسب التعريف، تدفقات Kotlin القياسية هي تدفقات باردة. لا يتم تنشيط كتلة التنفيذ الموجودة داخل منشئ التدفق { ... } أو تنفيذها حتى يتم استدعاء عامل المحطة الطرفية مثل التجميع. يقوم كل مجمع متميز بتشغيل التنفيذ المستقل الخاص به لكتلة الإنشاء، مما يعني أن دورة حياة إنشاء البيانات تعمل حديثًا لكل مشترك منفصل.
- لماذا تكون الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: لا تنتقل التدفقات إلى التدفقات الساخنة تلقائيًا؛ يتطلب هذا السلوك عوامل تحويل صريحة مثل shareIn أوstateIn.
- الخيار C غير صحيح: تم تصميم التدفقات الباردة خصيصًا لتكون قابلة لإعادة الاستخدام عبر عمليات التجميع المتعددة.
- الخيار D غير صحيح: لا يوجد تخزين داخلي مؤقت أو سلوك إعادة تشغيل مضمن في مُنشئ التدفق البارد الخام.
- الخيار E غير صحيح: التوزيع الدوري هو إحدى ميزات القنوات متعددة المستهلكين، وليس التدفقات الباردة المتسلسلة.
- الخيار F غير صحيح: تشغيل المجمعات بشكل متزامن أو متسلسل اعتمادًا على نطاقات كوروتين الاتصال الخاصة بهم، دون حظر أو تعليق بعضهم البعض.
- مرحبًا بك في اختبارات أسئلة المقابلة لمساعدتك في الاستعداد لتقييم أسئلة مقابلة Kotlin.
- يمكنك إعادة إجراء الاختبارات عدة مرات كما تريد
- هذا بنك أسئلة أصلي ضخم
- تحصل على الدعم من المعلمين إذا كانت لديك أسئلة
- يحتوي كل سؤال على شرح تفصيلي
- متوافق مع الجوال مع تطبيق Udemy
ما هي المتطلبات الأساسية لدخول الدورة والتسجيل فيها على موقعنا؟ رحلة التعلم:
(احصل على الدورة للدخول إلى الموقع والتسجيل)
يجب أن يكون لديك بريد إلكتروني (حساب بريد) تتذكره لنفسك وأيضًا يجب أن تتذكر كلمة مرور البريد الإلكتروني الذي ستسجل به ، وإذا لم يكن لديك حساب بريد إلكتروني ، فمن الأفضل إنشاء حساب (Gmail)
0 تعليقات
تسجيل دخول
دورات مشابهة