تحليل مسابقة مسابقة Android من منصة HeadHunter في Mobius 2018 Moscow

اليوم نقوم بتفكيك مسابقة Android من المؤتمر لمطوري المحمول Mobius 2018 Moscow.

كان التنسيق قياسيًا جدًا: 15 سؤالًا مع 4 إجابات محتملة. مهلة 30 ثانية لكل سؤال.



دعنا نذهب!


السؤال 1


الجواب
Astra boy/Bender 


التفسيرات
يعلم الجميع أن كل إصدار جديد من Android يحصل على اسم رمزي للحلويات ويتم تعيينهم بترتيب أبجدي (Cupcake ، دونات ، Eclair ، إلخ).
ومع ذلك ، في البداية ، خطط المطورون لتسمية الإصدارات باستخدام أسماء روبوت وهمية. لذلك ، كانت الإصدارات الأولى من Android تسمى Astra boy و Bender . كانت هذه إصدارات داخلية قبل إصدار الإصدار 1.0 غير المعروف. ومع ذلك ، لأسباب معينة ، تم تغيير المتجه والإصدار 1.1 ، فقد تقرر استدعاء Petit Four . كانت هذه هي النسخة الأولى من Android. وبدءًا من الإصدار التالي (Cupcake 1.5) ، بدأت الأسماء يتم تعيينها بترتيب أبجدي.

المصدر

إحصائيات الاستجابة





السؤال 2


الجواب
 Marshmallow 


التفسيرات
مع إصدار API 23 (Marshmallow) ، قدم Android المفهوم الجديد لأذونات وقت التشغيل . كان من المفترض أن تضيف هذه الميزة شفافية للمستخدمين إلى الأذونات الممنوحة للتطبيق. قبل إصدار "الخطمي" ، تم إصدار أذونات في وقت تثبيت التطبيق.

المصدر

ملاحظة ، يحتوي Android على أكثر من 100 أذونات فريدة.


إحصائيات الاستجابة





السؤال 3


الجواب
 measure() 


التفسيرات


قياس () - دعا لتحديد متطلبات حجم العرض وجميع أبنائه.

onMeasure () - تم استدعاؤه من التدبير () للقيام بالعمل الفعلي لتغيير حجم العرض.

onLayout () - يسمى لوضع عنصر داخل الحاوية

تم استدعاء onDraw () لتقديم عرض المحتوى.

يمكن الاطلاع على مزيد من المعلومات حول طريقة العرض "عرض" هنا .


إحصائيات الاستجابة





السؤال 4



الجواب
 isUserSmell() 


التفسيرات
لا توجد طريقة isUserSmell () في SDK. ربما في المستقبل ، مع ظهور أجهزة استشعار مناسبة على الأجهزة ...

دعونا نرى ما تفعله بقية الأساليب:

isUserMonkey () - تم تصميم الطريقة للتحقق مما إذا كان المستخدم اختبارًا في إطار اختبار القرد الآلي.

isUserAGoat () - بدءًا من API 21 ، يتحقق من تثبيت تطبيق Goat Simulator GoatZ. في الإصدارات أدناه ، تُرجع الطريقة دائمًا خطأ. يقع في فئة android.os.UserManager .

isFinalCountdown () - الطريقة تفتح مقطع فرقة Europa "The Final Countdown". إضافته إلى API 26. يقع في فئة android.widget.Chronometer .


إحصائيات الاستجابة





السؤال 5



الجواب
 private static final int mobius = 2018 


التفسيرات
هذه المعرفة المختبرة للكلمة الأساسية const ، والتي يتم استخدامها للإعلان عن compile time constants . في عالم Java ، يتوافق هذا مع المعدلات static final .


إحصائيات الاستجابة





السؤال 6


الجواب
 sdpi 


التفسيرات
بينما سمع المطورون xhdpi و mdpi ، فإن الأمور مختلفة مع tvdpi . لم يكتسب شعبية ، وبالتالي هناك عدد قليل جدا من الأجهزة في فئة tvdpi ، لكنها كانت. أشهرها هو Nexus 7 (2012).

المصدر

لاحظ أن tvdpi يحتوي على معامل 1.3 نسبة إلى mdpi.


إحصائيات الاستجابة





السؤال 7


الجواب
       apk 


التفسيرات
AAPT (Android Asset Packaging Tool) - أداة Android لإنشاء ملفات .APK.

يمكن تقسيم عمل هذه الأداة بشكلٍ مشروط إلى مرحلتين:
- تجميع. في هذه المرحلة ، يتم إعداد الموارد: يتم إنشاء الفئة R ، وترجمة موارد XML إلى تنسيق ثنائي ، ومعالجة PNG ، إلخ.
- التغليف (ربط). يتم تجميع جميع الملفات الوسيطة التي تم إنشاؤها في مرحلة الترجمة في APK.

بالنسبة لخيارات الإجابة المتبقية:
- غموض الكود يتم عادة بواسطة الحارس.
- Java bytecode هو نتيجة برنامج Java Compiler ، الذي يترجم شفرة المصدر إلى Java bytecode.
- Dalvik bytecode هو نتيجة لمترجم Dalvik (DX ، D8) ، والذي يترجم .class (Java bytecode) إلى .dex (Dalvik bytecode). شفرة المصدر في Dalvik bytecode لا تبث مباشرة.

تم توضيح عملية إنشاء تطبيق Android في الوثائق .


إحصائيات الاستجابة





السؤال 8



الجواب
 RIGHT OUTER JOIN 


التفسيرات
مما ذكر أعلاه ، RIGHT OUTER JOIN غير مدعوم.

المصدر


إحصائيات الاستجابة





السؤال 9



الجواب
 2x 


التفسيرات
الاسمالكثافة
ldpi0.75
mdpi1
tvdpi1.3
hdpi1.5
xhdpi2
xxhdpi3 و 2.6
xxxhdpi4 و 3.5



إحصائيات الاستجابة





السؤال 10


الجواب
 ART 


التفسيرات
ART (وقت تشغيل Android) هو وقت تشغيل DEX bytecode الجديد الذي يحل محل Dalvik. الفرق الأكثر أهمية بين Dalvik و ART هو أن Dalvik يستند إلى تجميع JIT ( فقط في الوقت المناسب ) ، بينما يعتمد ART على AOT ( Ahead-of-Time ). بعبارات عامة ، هذا يعني أن Dalvik يترجم رمز بايت dalvik إلى رمز الجهاز في كل مرة يتم فيها تنفيذ التطبيق ، ويقوم ART بذلك مرة واحدة ، أثناء تثبيت التطبيق ، وتخزين النتيجة في ذاكرة الجهاز. يؤدي هذا إلى تشغيل وتنفيذ التطبيقات على ART بشكل أسرع مقارنة بـ Dalvik ، ولكنه يزيد أيضًا من وقت تثبيت التطبيق. بالإضافة إلى ذلك ، أجرت ART تحسين GC ، وأضفت أيضًا عددًا من الوظائف لتحسين تطوير التطبيق وتصحيح الأخطاء.

ART و Dalvik


بالإضافة إلى ذلك ، تجدر الإشارة إلى أن ART تشتمل أيضًا على مترجم JIT يكمل AOT. اقرأ المزيد عنها هنا .


إحصائيات الاستجابة





السؤال 11


الجواب
 YAGNI 


التفسيرات
KISS (حافظ على البساطة ، غبي) - لا تعقده!

جاف (لا تكرر نفسك) ، يموت (الازدواجية الشر) - لا تكرر!

WTF (مقدار "chazan" في الثانية) هي وحدة لقياس جودة الكود للمراجعة.

YAGNI (لن تحتاجها) - لن تحتاجها!


إحصائيات الاستجابة





السؤال 12


الجواب
 Application Not Responding 


التفسيرات
ANR (التطبيق لا يستجيب) - مشكلة تحدث عندما لا يتمكن مؤشر الترابط الرئيسي للتطبيق من معالجة أحداث المستخدم وإعادة رسم واجهة المستخدم.

في Android ، تتم مراقبة استجابة أحد التطبيقات من خلال خدمات نظام ActivityManager و WindowManager . إذا كان أحد الشروط التالية صحيحاً:

- لا يوجد رد فعل على أحداث الإدخال (الأحداث التي تم لمسها والضغط على المفاتيح) ،
- لا تكتمل خدمة BroadcastReceiver في غضون 10 ثوانٍ ،

ثم يقوم النظام بإخطار المستخدم بالمشكلة من خلال إظهار مربع حوار ANR المقابل.


إحصائيات الاستجابة





السؤال 13


الجواب
 Size & mode 


التفسيرات
تم تصميم MeasureSpec لنقل متطلبات الحجم من مكونات العرض إلى الأصل. يتم تجميع هذه المتطلبات في بعدين: العرض والارتفاع. قيم كل من القياسات مركبة: يحتوي الجزء الأول على معلومات حول المساحة المتاحة (بالبكسل) ، بينما يحتوي الجزء الثاني على قيود على استخدام المساحة المتاحة. قد تتضمن هذه القيود ما يلي:

MeasureSpec.UNSPECIFIED - لا توجد قيود ، يمكن أن يستغرق العرض أي حجم يحتاجه.

MeasureSpec.EXACTLY - يتم تحديد الأحجام الدقيقة ، سيتم عرض هذه الحدود.

MeasureSpec.AT_MOST - تحديد الأحجام القصوى. يمكن أن تكون طريقة العرض كبيرة كما تشاء ، ولكن بالحجم المحدد.


إحصائيات الاستجابة





السؤال 14


الجواب
 Linux Kernel 


التفسيرات

Linux Kernel (Linux kernel) - توفر هذه الطبقة عمل النظام وهي مسؤولة عن الأمن وإدارة الذاكرة والعمليات ، كما توفر مكدس شبكة ونموذج برنامج تشغيل (برنامج تشغيل العرض وبرنامج تشغيل الكاميرا وبرامج تشغيل أخرى).

Libraries (libraries) عبارة عن طبقة متوسطة من البرامج المصممة لتوفير الوظائف الأساسية للتطبيقات مثل دعم تنسيقات الملفات وترميز معلومات فك التشفير (برامج الترميز على سبيل المثال) ، وتقديم الرسومات ، وأكثر من ذلك بكثير (Surface Manager و Media Framework و SQLite و أخرى).

وقت تشغيل Android - يقع على نفس مستوى المكتبات. المكونات الرئيسية هنا هي Dalvik VM وعدد من المكتبات الأساسية (المكتبات الأساسية).

إطار التطبيق - مستوى إطار التطبيق. من خلال أطر عمل التطبيق ، يمكن للمطورين الوصول إلى واجهات برمجة التطبيقات التي تقع دون المستوى. وتشمل هذه: ActivityManager ، مدير الحزم ، مدير النوافذ ، الخ

التطبيقات - مستوى التطبيقات ، سواء الأساسية (المثبتة مسبقًا على نظام التشغيل: المتصفح ، التقويم ، جهات الاتصال ، إلخ) ، وتثبيتها بواسطة المستخدم.

ملاحظة ، واضعي هذه المسابقة هي المدرسة القديمة ، لأنه في الوثائق الرسمية ، يتم تمييز الطبقات بطريقة أخرى: source.android.com/devices/architecture .


إحصائيات الاستجابة





السؤال 15


الجواب
 invokeabstract 


التفسيرات
غوتو - القفز إلى تعليمات أخرى.

invokeinterface - تستخدم لاستدعاء أساليب واجهة.

invokestatic - يستخدم لاستدعاء الأساليب الثابتة.

وصف التعليمات الأخرى .


إحصائيات الاستجابة



Source: https://habr.com/ru/post/ar434210/


All Articles