در این مقاله از سری مقالات برنامه نویسی اندروید اومدیم شما رو با قسمت ششم مهم ترین سوالات مصاحبه استخدامی برنامه نویسی اندروید آشنا کنیم. پس با سایت ترولرن همراه باش.
“قبل از شروع مقاله، بگم که بعد از مطالعه این مطلب، از آموزش پروژه محور برنامه نویسی اندروید سایتمون یعنی دوره ژنرال اندروید غافل نشید.”
مصاحبه استخدامی برنامه نویسی اندروید میتواند یک فرصت بسیار خوب برای نمایش مهارتها و تواناییهای فنی فرد باشد. در این مصاحبه، ممکن است سوالاتی پرسیده شود که به طور مستقیم به مهارتهای فنی فرد و همچنین تجربههای کاری او ارتباط دارند. برخی از مهمترین سوالات مصاحبه استخدامی برنامه نویسی اندروید عبارتند از:
Pending Intent در اندروید یک نوع از Intent است که میتوانید از آن برای برنامهریزی انجام یک عملیات در آینده استفاده کنید. به عنوان مثال، میتوانید یک Pending Intent برای ارسال یک نوتیفیکیشن تعریف کنید که در زمانی که کاربر روی آن کلیک میکند، Intent مورد نظر شما را اجرا کند. این کار میتواند برای برنامههایی که نیاز دارند در زمانهای مختلف عملیاتهایی انجام شوند، مفید باشد. برای ایجاد یک Pending Intent، شما باید ابتدا یک Intent را تعریف کرده و سپس آن را به عنوان ورودی به سازنده Pending Intent بدهید. سپس میتوانید این Pending Intent را برای برنامهریزی عملیاتهای آینده استفاده کنید.
Bitmap Pooling در اندروید یک تکنیک بهینهسازی است که به کمک آن میتوانید از بیتمپهای قبلی که در حافظه موجود هستند دوباره استفاده کنید، به جای اینکه هر بار برای نمایش تصاویر یا ایجاد بیتمپ جدید از صفر شروع کنید. در این تکنیک، ابتدا پشتهای از بیتمپهای قبلی ایجاد میشود و در صورت نیاز، از بیتمپهای موجود در پشته استفاده میشود. در صورتی که بیتمپ جدیدی نیاز باشد و در پشته در دسترس نباشد، بیتمپ جدید ایجاد میشود و پس از استفاده، در پشته نگهداری میشود تا در صورت نیاز مجدداً استفاده شود. با استفاده از این تکنیک، میتوانید مصرف حافظه را کاهش داده و عملکرد برنامهی خود را بهبود بخشید.
در اندروید، مجوزها به چهار دسته تقسیم میشوند که شامل سطوح محافظت مختلفی هستند:
پیغام خطای “Application Not Responding” یا “ANR” به معنای عدم پاسخگویی برنامه است. این خطا معمولاً هنگامی رخ میدهد که برنامه به دلایلی برای پاسخ دادن به درخواستهای کاربر یا سیستم، زمان کافی را ندارد و بیش از حد طول میکشد. این مشکل میتواند باعث کندی و کرش شدن برنامه شود.
برای جلوگیری از به وجود آمدن خطای Application Not Responding، میتوانید از روشهای زیر استفاده کنید:
استفاده از روشهای بالا به شما کمک میکند تا از به وجود آمدن خطای Application Not Responding در برنامههای خود جلوگیری کنید و عملکرد بهتری را برای کاربران خود فراهم کنید.
کلاس 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، میتوانید از تعداد زیادی از نمونههای یک کلاس جلوگیری کنید و از حافظه بیشتری صرفهجویی کنید.
تابعهای commit و apply در SharedPreferences در اندروید به شما اجازه میدهند تا دادههایی را در حافظهی دائمی دستگاه ذخیره کنید. تفاوت اصلی بین این دو تابع در مدل اجرایی آنها است.
commit به صورت همزمان اجرا میشود، به این معنی که همانطور که نامش نشان میدهد، دادهها به صورتی که شما ذخیره کردهاید، به حافظهی دائمی ذخیره میشوند و تا زمانی که عملیات ذخیرهسازی به پایان نرسیده باشد، اجرای کد مسدود شده است.commit نیز یک خروجی boolean دارد که نتیجهی ذخیرهسازی را به شما باز میگرداند.
apply به صورت غیرهمزمان (Asynchronous) اجرا میشود، به این معنی که عملیات ذخیرهسازی بر روی یک نخ مستقل از نخ اصلی برنامه اجرا میشود و اجرای کد به صورت مستقل ادامه پیدا میکند. تفاوت دیگری این است که تابع apply هیچ خروجی boolean ندارد و به شما اجازه میدهد تا به سرعت به کد خود ادامه دهید، بدون اینکه منتظر شوید که عملیات ذخیرهسازی به پایان برسد.
بنابراین، استفاده از تابع apply میتواند منجر به بهبود کارایی برنامه شما در زمان اجرا شود، به خصوص در مواردی که نیاز به ذخیرهسازی دادههای کوچکی باشد. اما اگر نیاز به دقت بیشتر و تضمین ذخیرهشدن دادهها باشد، بهتر است از تابع commit استفاده کنید.
RecyclerView برای نمایش لیست های طولانی طراحی شده است. فرض کنید می خواهید ۱۰۰ آیتم را نمایش بدهید؛ یک راه این است که ۱۰۰ ویو بسازید و آن ها را آماده نمایش بکنید ولی خب راه مناسبی نیست چون در لحظه به عنوان مثال ۱۰ عدد از این ویو ها را بیش تر نمی توانید نشان دهید. پس باقی ویو ها تنها حافظه را اشغال میکنند و پرفورمنس را خراب می کنند. ریسایکلر ویو تنها ۱۰ ویو می سازد و برای باقی ویو هایی که در صفحه نیستند این ویو ها را بازیابی می کند و این کار سرعت و مصرف حافظه را ۱۰ برابر بهبود می سازد.
بازیابی ویو ها در متد onBindViewHolder اتفاق می افتد در ابتدا تعدادی ViewHolder استفاده نشده به شما می دهد و شما باید توسط داده هایی این ViewHolder ها را پر کنید و بعد از اسکرول کردن ViewHolder آیتم هایی که دیگر درون صفحه نیستند را به شما می دهد و شما باید داده های آن ها را با داده های جدید جایگزین کنید.
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 برای نمایش لیستهای طولانی و پیچیده است.
اگر میخوای با سوالای بیشتری آشنا بشی قسمت هفتم مقاله رو از دست نده…
و همچنین ممنون میشم از طریق ستارههای این پایین به این مقاله امتیاز بدی و اگه هر سوالی داشتی توی قسمت دیدگاه بپرس و قطعا بهت پاسخ میدیم.
دوره آموزشی کاتلین پیشرفته میتواند مهارتهای شما را با بهرهگیری از ابزارها و فناوریهای مدرن…
مزیتهای کاتلین نسبت به سایر زبانهای برنامه نویسی اندروید این است که سایر زبانها، از…
بهینهسازی عملکرد اپلیکیشنهای اندروید یکی از مهمترین فاکتورهایی است که برای کاربران در دنیای امروز…
مصاحبهی استخدامی کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه اپلیکیشنهای…
مصاحبه استخدام زبان کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه…
مصاحبه استخدام کاتلین یک فرصت برای ارزیابی مهارتها و تواناییهای یک برنامهنویس در توسعه اپلیکیشنهای…
View Comments