سوالات مصاحبه استخدامی برنامه نویسی اندروید همراه با جواب(قسمت ششم)
مصاحبه استخدامی برنامه نویسی اندروید، یکی از مراحل مهم در فرایند استخدام است که میتواند برای شرکتها و کارفرمایان، فرصتی برای ارزیابی تواناییها و مهارتهای فنی فرد باشد. در این مصاحبهها، سوالات مختلفی در مورد مهارتهای فنی، تجربه کاری، روش کار و غیره پرسیده میشود.
در این مقاله از سری مقالات برنامه نویسی اندروید اومدیم شما رو با قسمت ششم مهم ترین سوالات مصاحبه استخدامی برنامه نویسی اندروید آشنا کنیم. پس با سایت ترولرن همراه باش.
“قبل از شروع مقاله، بگم که بعد از مطالعه این مطلب، از آموزش پروژه محور برنامه نویسی اندروید سایتمون یعنی دوره ژنرال اندروید غافل نشید.”
مصاحبه استخدامی برنامه نویسی اندروید میتواند یک فرصت بسیار خوب برای نمایش مهارتها و تواناییهای فنی فرد باشد. در این مصاحبه، ممکن است سوالاتی پرسیده شود که به طور مستقیم به مهارتهای فنی فرد و همچنین تجربههای کاری او ارتباط دارند. برخی از مهمترین سوالات مصاحبه استخدامی برنامه نویسی اندروید عبارتند از:
1.Pending Intent چیست؟
Pending Intent در اندروید یک نوع از Intent است که میتوانید از آن برای برنامهریزی انجام یک عملیات در آینده استفاده کنید. به عنوان مثال، میتوانید یک Pending Intent برای ارسال یک نوتیفیکیشن تعریف کنید که در زمانی که کاربر روی آن کلیک میکند، Intent مورد نظر شما را اجرا کند. این کار میتواند برای برنامههایی که نیاز دارند در زمانهای مختلف عملیاتهایی انجام شوند، مفید باشد. برای ایجاد یک Pending Intent، شما باید ابتدا یک Intent را تعریف کرده و سپس آن را به عنوان ورودی به سازنده Pending Intent بدهید. سپس میتوانید این Pending Intent را برای برنامهریزی عملیاتهای آینده استفاده کنید.
2. Bitmap pooling در اندروید چیست؟
Bitmap Pooling در اندروید یک تکنیک بهینهسازی است که به کمک آن میتوانید از بیتمپهای قبلی که در حافظه موجود هستند دوباره استفاده کنید، به جای اینکه هر بار برای نمایش تصاویر یا ایجاد بیتمپ جدید از صفر شروع کنید. در این تکنیک، ابتدا پشتهای از بیتمپهای قبلی ایجاد میشود و در صورت نیاز، از بیتمپهای موجود در پشته استفاده میشود. در صورتی که بیتمپ جدیدی نیاز باشد و در پشته در دسترس نباشد، بیتمپ جدید ایجاد میشود و پس از استفاده، در پشته نگهداری میشود تا در صورت نیاز مجدداً استفاده شود. با استفاده از این تکنیک، میتوانید مصرف حافظه را کاهش داده و عملکرد برنامهی خود را بهبود بخشید.
3. سطوح محافظت مجوز ها را بیان کنید:
در اندروید، مجوزها به چهار دسته تقسیم میشوند که شامل سطوح محافظت مختلفی هستند:
- Normal: مجوزهای کم خطری هستند که برای حفاظت از آنها، سیستم اندروید فقط در هنگام نصب نام آنها را نمایش میدهد و نیازی به تایید کاربر ندارد.
- Dangerous: مجوزهای خطرناکی هستند که اطلاعات حساس کاربر را در بر دارند و برای استفاده از آنها، به تایید کاربر نیاز است. در این مورد، سیستم اندروید پیغامی را به کاربر نمایش میدهد و پس از تایید کاربر، مجوز صادر میگردد.
- Signature: این مجوزها فقط به اپلیکیشنهایی داده میشوند که با همان امضایی ساخته شدهاند که اپلیکیشن هدف با آن ساخته شده است. در این حالت، نیازی به تایید کاربر نیست.
- SignatureOrSystem: این نوع مجوزها تنها به اپلیکیشنهایی داده میشوند که سیستمی هستند و یا با همان امضایی ساخته شدهاند که اپلیکیشن هدف با آن ساخته شده است. به عبارت دیگر، این مجوزها تنها به اپلیکیشنهایی داده میشوند که از سوی سیستم یا توسعهدهنده معتبر دارای امضا شدهاند. در این حالت نیز، نیازی به تایید کاربر نیست.
4. خطای Application not responding چیست؟ چگونه از به وجود آمدن این خطا جلوگیری کنیم؟
پیغام خطای “Application Not Responding” یا “ANR” به معنای عدم پاسخگویی برنامه است. این خطا معمولاً هنگامی رخ میدهد که برنامه به دلایلی برای پاسخ دادن به درخواستهای کاربر یا سیستم، زمان کافی را ندارد و بیش از حد طول میکشد. این مشکل میتواند باعث کندی و کرش شدن برنامه شود.
برای جلوگیری از به وجود آمدن خطای Application Not Responding، میتوانید از روشهای زیر استفاده کنید:
- استفاده از نخهای جداگانه (Thread) برای انجام عملیاتهای سنگین
- استفاده از سرویسهای پسزمینه (Background Service) برای انجام عملیاتهای بلند مدت
- بهینهسازی کدهای برنامه و استفاده از الگوریتمهای بهتر برای محاسبات و عملیاتهای پردازشی
- بهبود عملکرد دستگاه و سیستم عامل با بهروزرسانی نرمافزار و حذف برنامههای غیر ضروری
- استفاده از ابزارهای تست و اشکالزدایی (Debugging) برای پیدا کردن و رفع مشکلات کد برنامه
استفاده از روشهای بالا به شما کمک میکند تا از به وجود آمدن خطای Application Not Responding در برنامههای خود جلوگیری کنید و عملکرد بهتری را برای کاربران خود فراهم کنید.
5. کلاس Singleton در اندروید چیست؟
یکی از سوالات مصاحبه استخدامی برنامه نویسی اندروید توضیح در مورد کلاس Singleton است.
کلاس Singleton یک الگوی طراحی (Design Pattern) است که در برنامهنویسی اندروید (و همچنین بسیاری از زبانهای برنامهنویسی دیگر) استفاده میشود. این الگو به شما اجازه میدهد تا از یک شیء فقط با یک نمونه (Instance) استفاده کنید.
در این الگو، کلاس Singleton با استفاده از یک متغیر از نوع خودش به عنوان نمونه (Instance)، به شما اجازه میدهد تا از همین نمونه در سراسر برنامه استفاده کنید، به جای اینکه هر بار یک نمونه جدید از کلاس را ایجاد کنید. این الگو در مواقعی کاربرد دارد که نیاز به ایجاد چند نمونه از یک کلاس نباشد و میخواهید از یک نمونه به عنوان یک نقطه مرجع در سراسر برنامه استفاده کنید.
برای پیادهسازی کلاس Singleton در اندروید، باید یک کلاس بازگشتی (Recursive) ایجاد کنید که با استفاده از یک متغیر از نوع خودش، یک نمونه از کلاس را ایجاد میکند. در این کلاس، متدهایی برای دسترسی به نمونه ایجاد شده و همچنین برای ایجاد نمونه جدید در صورت نبود نمونه موجود، قرار میگیرند.
به عنوان مثال، پیادهسازی کلاس Singleton در اندروید به زبان جاوا به صورت زیر است:
public class MySingleton { private static MySingleton instance; private MySingleton() { // Private constructor to prevent instantiation from outside } public static MySingleton getInstance() { if (instance == null) { instance = new MySingleton(); } return instance; } // Other methods and variables }
در این مثال، کلاس MySingleton با استفاده از متغیر instance و متد getInstance پیادهسازی شده است. با استفاده از متد getInstance، شما میتوانید به یک نمونه از کلاس دسترسی پیدا کنید و در صورت نبود نمونه، یک نمونه ایجاد کنید. با استفاده از کلاس Singleton، میتوانید از تعداد زیادی از نمونههای یک کلاس جلوگیری کنید و از حافظه بیشتری صرفهجویی کنید.
6. تفاوت تابع هایی Commit و apply در SharedPrefrences چیست؟
تابعهای commit و apply در SharedPreferences در اندروید به شما اجازه میدهند تا دادههایی را در حافظهی دائمی دستگاه ذخیره کنید. تفاوت اصلی بین این دو تابع در مدل اجرایی آنها است.
commit به صورت همزمان اجرا میشود، به این معنی که همانطور که نامش نشان میدهد، دادهها به صورتی که شما ذخیره کردهاید، به حافظهی دائمی ذخیره میشوند و تا زمانی که عملیات ذخیرهسازی به پایان نرسیده باشد، اجرای کد مسدود شده است.commit نیز یک خروجی boolean دارد که نتیجهی ذخیرهسازی را به شما باز میگرداند.
apply به صورت غیرهمزمان (Asynchronous) اجرا میشود، به این معنی که عملیات ذخیرهسازی بر روی یک نخ مستقل از نخ اصلی برنامه اجرا میشود و اجرای کد به صورت مستقل ادامه پیدا میکند. تفاوت دیگری این است که تابع apply هیچ خروجی boolean ندارد و به شما اجازه میدهد تا به سرعت به کد خود ادامه دهید، بدون اینکه منتظر شوید که عملیات ذخیرهسازی به پایان برسد.
بنابراین، استفاده از تابع apply میتواند منجر به بهبود کارایی برنامه شما در زمان اجرا شود، به خصوص در مواردی که نیاز به ذخیرهسازی دادههای کوچکی باشد. اما اگر نیاز به دقت بیشتر و تضمین ذخیرهشدن دادهها باشد، بهتر است از تابع commit استفاده کنید.
7. RecyclerView چگونه کار میکند؟
RecyclerView برای نمایش لیست های طولانی طراحی شده است. فرض کنید می خواهید ۱۰۰ آیتم را نمایش بدهید؛ یک راه این است که ۱۰۰ ویو بسازید و آن ها را آماده نمایش بکنید ولی خب راه مناسبی نیست چون در لحظه به عنوان مثال ۱۰ عدد از این ویو ها را بیش تر نمی توانید نشان دهید. پس باقی ویو ها تنها حافظه را اشغال میکنند و پرفورمنس را خراب می کنند. ریسایکلر ویو تنها ۱۰ ویو می سازد و برای باقی ویو هایی که در صفحه نیستند این ویو ها را بازیابی می کند و این کار سرعت و مصرف حافظه را ۱۰ برابر بهبود می سازد.
بازیابی ویو ها در متد onBindViewHolder اتفاق می افتد در ابتدا تعدادی ViewHolder استفاده نشده به شما می دهد و شما باید توسط داده هایی این ViewHolder ها را پر کنید و بعد از اسکرول کردن ViewHolder آیتم هایی که دیگر درون صفحه نیستند را به شما می دهد و شما باید داده های آن ها را با داده های جدید جایگزین کنید.
8. تفاوت های RecyclerView و ListView چیستند؟
RecyclerView و ListView هر دو برای نمایش لیستهای طولانی در اندروید استفاده میشوند، اما با وجود شباهتهای زیادی که دارند، تفاوتهای مهمی نیز بین آنها وجود دارد.
اولین تفاوت بین RecyclerView و ListView، استفاده از الگوی ViewHolder در RecyclerView است. ViewHolder یک آبجکت است که ویوهای کامپوننتی را درون یک لی آوت تگ دار ذخیره میکند. در ListView نیز میتوان از ViewHolder استفاده کرد، اما در RecyclerView استفاده از این الگو اجباری است. RecyclerView در هنگام اسکرول، سلولهای لیست را بازیابی میکند و از ViewHolder استفاده میکند تا ویوهای کامپوننتی را با دادههای جدید پر کند. این روش در مصرف حافظه و بهبود پرفورمنس موثر است.
تفاوت دیگر بین RecyclerView و ListView، استفاده از LayoutManager در RecyclerView است. در ListView، تنها نوع ویوی عمودی برای نمایش لیست در دسترس است، اما در RecyclerView میتوانید از LayoutManager استفاده کنید تا آیتمهای لیست را در هنگام اجرا در container های مختلف (Linear یا Grid) نمایش دهید.
در نهایت، RecyclerView از انیمیشنها پشتیبانی بهتری نسبت به ListView دارد. در RecyclerView میتوان از Item Animator استفاده کرد تا انواع مختلفی از انیمیشنها را برای ظاهر شدن و حذف آیتمها در لیست اعمال کنید، در حالی که در ListView این امکانات محدودتر است.
در کل، RecyclerView به دلیل استفاده از الگوی ViewHolder، قابلیت تغییر LayoutManager و پشتیبانی از انیمیشنهای مختلف، بهینهتر از ListView برای نمایش لیستهای طولانی و پیچیده است.
اگر میخوای با سوالای بیشتری آشنا بشی قسمت هفتم مقاله رو از دست نده…
و همچنین ممنون میشم از طریق ستارههای این پایین به این مقاله امتیاز بدی و اگه هر سوالی داشتی توی قسمت دیدگاه بپرس و قطعا بهت پاسخ میدیم.
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.