مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید - قسمت اول

سلام و خسته نباشید خدمت همه
زیاد حرف نزنم مستقیم برم سر اصل مطلب ‌، ۱۳۷ تا سوال در مورد اندروید هست ( از مبتدی تا پیشرفته ) که تصمیم دارم در ۱۴ پست متوالی راجع به این سوال ها حرف بزنم و هم کمکی به خودم باشه و هم دوستان برنامه نویس اندروید
بریم سراغ سوالات



۱. کلاس اپلیکیشن چیست؟

کلاس اپلیکیشن پایه ای ترین کلاس در یک برنامه اندروید هست که شامل باقی کامپوننت ها هست مثل اکتیویتی و سرویس ها. این کلاس و هر زیر‌کلاسی (subclass) از کلاس اپلیکیشن قبل از اینکه پروسه کار پکیج شروع بشه صدا زده میشه و اجرا میشه

۲ـ Context چیست؟

در اصل context یک کنترل کننده یا به نوعی رابط برای سیستم هست و یک سری خدمات به ما ارائه میده ماننده دسترسی به resource ها و دیتابیس ها و prefrences و...

ـ Application context :
این نوع کانتکست در طول حیات کلاس اپلیکیشن در دسترس شما هست و هنگامی استفاده میشه که شما کانتکستی به غیر از کانتکست lifeCycle فعلیتون بخواهید یا اینکه بخواهید context ای که مربوط به اکتیویتی هست رو به خارج از scope اون پاس بدید

ـ‌ Activity Context :
این نوع کانتکست در طول حیات یک اکتیویتی در اختیار شما هست و به lifeCycle کلاس اکتیویتی وابسته هست و تنها زمانی باید استفاده بشه که شما context رو در lifeCycle یک اکتیویتی درخواست کنید


۳ـ ArmV7 چیست :
سه معماری cpu رایج در اندروید وجود داره که ArmV7 بیش تر از باقی مورد استفاده هست و مصرف باتری این معماری بهینه هست. Arm64 نسخه تکامل یافته ای از ArmV7 هست که پردازش ۶۴ بیتی رو هم برای پردازش قدرتمند تر ساپورت میکنه و در نهایت x86 معماری ای کم استفاده تر از دو معماری باقی هست که رابطه ی خوبی هم با باتری نداره ولی از دو معماری باقی قدرتمند تر هست


۴. چرا byteCode ها قابل اجرا روی اندروید نیستند؟
چون اندروید از DVM (مخفف Dalvic virtual machine ) به جای JVM ( مخفف Java Virtual Machine ) استفاده میکنه

[ از اندروید 5 به بعد ART ( مخفف Android RunTime ) جایگزین DVM شد و مشکلات حل شد ]


۵ـ buildType در gradle چیست و چرا استفاده میشود؟

در اصل buildType تنظیمات gradle برای بیلد کردن پروژه اتون رو تعریف میکنه

ــ این buildType هست که نوع بیلد شدن یک ماژول رو تعریف میکنه مثلا آیا این ماژول از پروگارد استفاده کرده یا نه

ــ Product flavour تعیین میکنه که چه ماژولی بیلد خواهد شد مثلا تعیین میکنه که چه resource ای در بیلد استفاده بشه

ــ گریدل یک build variant میسازه که کارش به وجود اوردن ترکیباتیی از buildType و product flavour در اپلیکیشنتون هست


۶.‌ پروسه ی بیلد شدن یک اپلیکیشن اندروید رو توضیح بدید :
مرحله ی اول پروسه ی بیلد یک اپلیکیشن اندروید شامل کامپایل کردن پوشه ی res توسط یک ابزار به نام aapt ( مخفف Android asset packaging tool ) هست که کل این پوشه به یک فایل به نام R.java کامپایل میشه ؛ این کلاس فقط شامل مقادیر ثابت هست.

مرحله دوم شامل کامپایل کردن سورس جاوا به فایل های class هست که این کار توسط javac انجام میشه و بعد از اون فایل های class به dalvic byteCode با فرمت dx تبدیل میشن که شامل sdk tools هم هستند و خروجی classes.dex هست

در مرحله نهایی هم apkBuilder تمام ورودی ها رو گرفته و فایل apk ( مخفف Android packaging key ) رو تحویل میده


۷.معماری یک اپلیکیشن اندروید به چه شکل است ؟

معماری اپلیکیشن اندروید دارای کامپوننت های زیر هست :

الف. Services : فعالیت های پس زمینه اپلیکیشن رو انجام میده

ب. Intent : مسئول برقراری ارتباط داخلی بین اکتیویتی ها و مکانیزم انتقال داده ( data passing mechanism ) هست

ج. Resource externalization : شامل string ها و گرافیک هست

د. Notification : شامل نور (led) ، صدا ، ایکون ، نوتیفیکیشن ، dialog box و توست (toast) هست

هـ. Content providers : اطلاعات رو بین اپلیکیشن ها منتشر میکنه


۸. اکتیویتی ها را توضیح دهید :
خیلی ساده و مختصر بخوایم بگیم اکتیویتی ها نگهدارنده یا پنجره هایی برای رابطه کاربری هستند


۹.زنجیره حیات (lifeCycle) یک اکتیویتی :

ـ onCreate : در این متد اولین ویو ها ساخته میشن و جایی هست که ما باید داده ها رو از bundle ها دریافت کنیم و...

ـ on Start : این متد زمانی صدا زده میشه که ویو ها برای کاربر نمایان میشن و با یا زنجیره ادامه پیدا میکنه

ـ on Resume : این متد زمانی صدا زده میشه که اکتیویتی اولین ارتباطش رو با کاربر برقرار میکنه ( اکتیویتی به foreground میاد ) و در این متد دیگه اکتیویتی در صدر پشته ی اکتیویتی ها قرار داره ( top of the activity stack )

ـ on pause : این متد زمانی صدا زده میشه که اکتیویتی به بکگراند منتقل شده ولی هنوز به صورت کامل از بین نرفته ( به اصطلاح kill نشده )

ـ on stop : این متد وقتی صدا زده میشه که اکتیویتی برای کاربر دیگه نمایان (visible) نیست

ـ onDestroy : این متد زمان پایان اکتیویتی صدا زده میشه

ـ onRestart : این متد زمانی صدا زده میشه که اکتیویتی متوقف (stop) شده میخواد دوباره start بشه


۱۰. فرق onCreate و on Start چیه؟
متد onCreate زمانی اجرا میشه که اکتیویتی میخواد ساخته بشه یا کاملا از بین رفته ( destroy شده ) و میخواد دوباره ساخته بشه اما on Start هرموقع که اکتیویتی برای کاربر نمایان (visible) بشه اجرا میشه و این عمل ممکنه بعد از onCreate یا بعد از onRestart اتفاق بیفته



قسمت دوم مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید

قسمت سوم مجموعه تقلب مصاحبه شغلی برنامه نویس اندروید


تشکر بابت مطالعه پست

ترجمه متنی از Anitaa murthy

حمایت یادتون نره

سوالی بود درخدمتم =)))