أسئلة مقابلات Jetpack Compose في Android Native
10 سؤال عن Jetpack Compose من مسار Android Native. اقرأ الإجابة المختصرة لكل سؤال هنا، وافتح السؤال للشرح الكامل والأمثلة والأخطاء الشائعة والمصادر.
- مبتدئ
ما هو Jetpack Compose وما الفرق بين الواجهات التصريحية والإجرائية؟
Compose إطار عمل تصريحي (Declarative) يصف شكل الواجهة بناءً على الحالة الحالية، بينما النهج الإجرائي القديم (Imperative) يعتمد على تعديل شجرة الـ Views يدويًا.
اقرأ الشرح الكامل - مبتدئ
ما هي الـ Recomposition في Jetpack Compose وكيف تعمل بكفاءة؟
هي عملية إعادة استدعاء دوال الـ Composable تلقائيًا عندما تتغير حالتها (State) لتحديث الشاشة مع تخطي المكونات التي لم تتغير مدخلاتها.
اقرأ الشرح الكامل - مبتدئ
ما هو مبدأ رفع الحالة (State Hoisting) في Jetpack Compose؟
هو نمط نقل إدارة الحالة إلى المكون الأب لجعل المكون الابن عديم الحالة (Stateless)، قابلاً لإعادة الاستخدام وسهل الاختبار.
اقرأ الشرح الكامل - متوسط
ما الفرق بين remember و rememberSaveable في Jetpack Compose؟
remember تحتفظ بالحالة عبر دورات الـ Recomposition فقط، بينما rememberSaveable تحتفظ بها عبر دورات دوران الشاشة وموت العملية (Process Death).
اقرأ الشرح الكامل - متوسط
ما هي الآثار الجانبية (Side Effects) في Compose وما الفرق بين LaunchedEffect و DisposableEffect؟
LaunchedEffect يطلق Coroutine لإجراء مهمة غير متزامنة عند تغير مفتاح؛ DisposableEffect ينفذ كودًا مع توفير تنظيف إلزامي (onDispose) عند خروج المكون.
اقرأ الشرح الكامل - متوسط
ما هو دور CompositionLocal في Jetpack Compose ومتى يجب استخدامه؟
أداة لتمرير البيانات والتبعيات ضمنيًا عبر شجرة المكونات دون الحاجة لتمريرها كمعامل في كل دالة Composable فرعية.
اقرأ الشرح الكامل - متوسط
متى نستخدم derivedStateOf في Compose ولماذا تختلف عن remember(keys)؟
تُستخدم derivedStateOf لتحديث الحالة فقط عندما تتغير نتيجة الحساب الفعلية، فتمنع الـ Recomposition غير الضرورية الناتجة عن التغيرات المستمرة في المدخلات.
اقرأ الشرح الكامل - متوسط
لماذا يعد ترتيب استدعاء الـ Modifiers جوهريًا في Jetpack Compose؟
لأن الـ Modifiers تطبق بالتسلسل من الخارج للداخل؛ فالترتيب يحدد منطقة النقر والأبعاد وحواف الرسم بدقة.
اقرأ الشرح الكامل - متقدم
كيف تضمن أعلى أداء وسلاسة للقوائم الكبيرة في LazyColumn؟
بتوفير key ثابت وفريد لكل عنصر، وتحديد contentType، والابتعاد عن العمليات الحسابية داخل العناصر أثناء التمرير.
اقرأ الشرح الكامل - متقدم
كيف يحدد Compose استقرار البيانات (Stability) لتخطي الـ Recomposition (Smart Skipping)؟
يصنف المترجم الأنواع كـ Stable أو Immutable بناءً على ثبات قيمها؛ إذا كانت كل معاملات الدالة مستقرة ولم تتغير قيمها، يتم تخطي الدالة بالكامل.
اقرأ الشرح الكامل