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

سلام و خسته نباشید خدمت همهزیاد حرف نزنم مستقیم برم سر اصل مطلب ‌، ۱۳۲ تا سوال در مورد اندروید هست ( از مبتدی تا پیشرفته ) که تصمیم دارم در ۱۳ پست متوالی راجع به این سوال ها حرف بزنم و هم کمکی به خودم باشه و هم دوستان برنامه نویس اندرویدبریم سراغ سوالات۱. کلاس اپلیکیشن چیست؟کلاس اپلیکیشن پایه ای ترین کلاس در یک برنامه اندروید هست که شامل باقی کامپوننت ها هست مثل اکتیویتی و سرویس ها. این کلاس و هر زیر‌کلاسی (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حمایت یادتون نرهسوالی بود درخدمتم =)))