شاید یه اندروید دولوپر
سوالات مصاحبه اندرویدی
اخیرا اینقدر پست با عنوان "چطوری رزومه بنویسیم" و "تجربه های من از مصاحبه های اخیر" دیدم که خودم با خوندن عنوانشون از ادامه منصرف میشم. اما تفاوت این پست اینه که جنرال نیست و مختص مصاحبه برای پوزیشن اندروید دولوپر توی شرکتهای تاپی مثل کافهبازار، موبایلت و آپ هستن.
مصاحبه توی این شرکت ها کمی متفاوتتر از دیگر مصاحبه هاست و بجای صحبت دربارهی ابزارها و کتابخونه ها، سوالاتی درباره موارد پایهای برنامهنویسی، درک عمیق از زبان های جاوا و کاتلین و آشنایی با SDK اندروید پرسیده میشه. که هدف از انتشار این پست آوردن اینها بوده.مشخصا سوالات روتینی بین این سوالات وجود داره که برای کامل بودن حذفشون نکردم.
سوالات اولیه
- در ابتدای شروع معمولا خواسته میشه که خودمون رو معرفی کنیم و از تجربه های قبلیمون توی شرکت ها و محصولاتی که روشون کار کردیم بگیم و از دلایلمون برای خروج از شرکت قبلی و سوالاتی هم از لابلای صحبتهامون خواهند پرسید.
- وضعیت تحصیلی و معافیت هم که همواره جزو موارد همیشگی هر مصاحبهای هست.
دست گرمی
- حالا درباره چلنج هایی که تجربشون کردیم صحبت میشه و خواسته میشه یکی دو موردشون رو نام ببریم و مجددا دربارشون سوال پرسیده میشه.
- از تجربه های تیمورکمون و چگونگی ارتباط تیم و انجام تسک ها و متدلوژی هایی که تجربه کردیم، هم پرسیده خواهد شد.
درباره SDK اندرویدی
- سوالاتی از لایف سایکل اکتیویتی و فرگمنت توی سناریو های مختلف پرسیده میشه. درباره onSaveInstanceState(..) و زمانی که onNewIntent() صدا زده میشه. چه زمانی باید لیسنر ها یا برودکست هامونو register و unregister کنیم و از این جور سوالات
- طریقه جابجایی دیتا بین فرگمنت و اکتیویتی. اینکه چرا از کانستراکتور دیفالت فرگمنت استفاده نمیکنیم؟ چه آبجکت هایی میتونیم به باندل اضافه کنیم؟
- کلاس های Parcellable ها و Serializeable چه ویژگیای دارن و تفاوت این دو باهم چی هست؟ نحوه کارشون چطوره و چرا توصیه شده بجای Serializeable از Parcellable استفاده کنیم؟
مالتی تردینگ
- از تجربمون توی کار با ترد ها سوال پرسیده میشه. ترد و لوپر و هندلر چی هستن و کاربردشون چیه؟
- از تجربه کار با AsyncTask پرسیده میشه. مشکلش چی بوده؟ چطور ازش استفاده میکردیم و چرا کنار گذاشتیمش؟
- مموری لیک چیه؟ گاربج کالکتور چیکار میکنه؟ چطور میفهمه فلان آبجکت باید پاک شه یا نه؟ وقتی میگیم لیک شده یعنی چه چیزی توی حافظه مونده؟ WeakReference چیه و کاربردش چیه؟
- فرق Service و IntentService چیه؟ ارتباط سرویس و اکتیویتی ها از چه طریقی میتونه باشه؟ محدودیت های سرویس ها تو نسخه های جدید اندروید چیا هستن؟
- سوالاتی درباره اینکه چطوری یک کد اپی که سنگین هست رو Optimize میکنیم؟ اگر کد برنامهای به ما داده بشه که لگی باشه و سنگین کار کنه کدوم بخشها رو میریم چک میکنیم؟ اگر بعد مدتی کرش کنه کجارو میریم چک میکنیم؟ و حدسمون برای این موارد چی هست؟
- چگونگی و ترتیب کال شدن متد های اداپتور ریسایکلرویو. فرق بین getAdapterPosition و پوزیشن عادی توی اداپتور چیه؟
ساختاری (Conceptual)
- معماری هایی که پیاده کردیم و تفاوت هاشون، مزیت و معایبشون و دلیل سویچ کردن بینشون چی بوده؟
- اگر پروژهای از ما خواسته باشن و تحویل داده باشیم معمولا سوالاتی در مورد قسمت های مختلف و معماری استفاده شده خواهند پرسید. درباره لایه ها و پترن های مختلف و دلیل وجودشون رو خواهند پرسید.
- دیزاین پترن چیه و درباره اونهایی که استفاده کردیم سوالاتی مطرح خواهد شد.
- توضیح و پیاده سازی ساده سینگلتون و ارائه توضیحاتی درباره synchronized و کیس استفاده اون رو ارایه بدیم. دلیل استفاده از Lock چیه؟ اگر synchronized نباشه چطور میشه ترد سیف کرد؟
- معمولا یک یا چند الگوریتم هم مطرح خواهد شد که پیشنهاد میکنم این مطلب رو بخونید.
جاوا/کاتلین
- سوالاتی درباره Inner Class ها و فرقشون با کلاس عادی؟ اینکه آیا مشکلی ایجاد میکنن؟
- تفاوت overload و override چی هست؟ آیا متد استاتیک رو میشه override کرد؟ چطوری از یک کلاس ارث بری کنیم و چطور از ارث بریش جلوگیری کنیم؟
- بخشی از سوالات هم متمرکز هستید روی کاتلین: Extension Function ها، Inline Function ها، Scope Function ها و تفاوتشون چیه؟ Infix Function ها و محدودیت هاشون چین؟ High order function ها و Reified چی هستن؟ lateinit var به چه کاری میاد و در نهایت سوالاتی درباره delegate ها توی کاتلین مثل lazy
- فرق interface و abstract class ها چیه و کاربردشون کجاست؟ توی جاوا ۸ چه تغییراتی روی اینترفیسها به وجود اومد؟
این ها عموم سوالاتی بود که توی مصاحبههای اخیرم به عنوان اندروید دولوپر ازم پرسیده شده بود. بیس سوالات، سوالات مصاحبه کافهبازار بوده که در بعضی موارد با سوالاتی که توی دیگر مصاحبه ها شنیدم تکمیلشون کردم.
مطلبی دیگر از این انتشارات
استفاده از Dagger Hilt به صورت پروژه محور (قسمت دوم)
مطلبی دیگر از این انتشارات
الگویِ طراحیِ Chain of Responsibility (جاوا و کاتلین)
مطلبی دیگر از این انتشارات
راهنمای سریع دریافت رمزدوم پویا برای همه بانکها