Як Android Developer роботу на 6к+ шукав
Вриваюся у пʼятницю з темою грошей. По стопах недавнього посту вирішив описати свій процес пошуку роботи. Якось у вихвалянні своїми зарплатами добре чутно фронтендерів та девопсів, а мобільна сфера мовчить, наче в ній нічого не змінилося. Ну, може, і правильно роблять 🙂 Бо спойлер: варіантів на 12к мені не траплялося.
Ввідні дані: Android Developer з 5 років досвіду + паралельно рік Flutter. Вакансії з кросплатформою цього разу принципово не розглядав, хоча кілька пропозицій було. Перевів профіль на Djinni в стан активного пошуку близько 16.11, де поставив очікування 6000$ (маючи на увазі net). Менше не розглядав. Також відповів кільком рекрутерам в LinkedIn, де одразу ж оголошував свої зарплатні очікування. Загалом, більше ніде не шукав. Цього разу спрацював саме LinkedIn. Аутсорс загалом ігнорував, в першу чергу розглядав продуктові вакансії, плюс кілька варіантів аутстафу.
Говорячи про адекватність запитів: на Djinni всі одразу бачать зарплатні очікування, тому там «втрати лідів» через гроші не було. На час закриття профілю я був у топ 20% за кількістю отриманих пропозицій серед усіх Android-девелоперів в активному пошуку. Висновок: для ринку зараз це цілком обґрунтовані очікування. В LinkedIn близько у половини пропозицій, які обговорював, стеля була в районі 5500$.
На жаль, рекрутери все ще дуже люблять розмовляти. Якщо шукати роботу, ніде не працюючи, то з цим можна жити. Та навіть 3+ дзвінків по
На технічну співбесіду домовився з 10+ компаніями, побував на
По етапах все індивідуально. Найбільше пройшов в одному аутстафі — дзвінок з рекрутером, технічна співбесіда зі сторони компанії, технічна співбесіда з купою людей зі сторони клієнта, і мало би бути ще HR-інтервʼю. Найменше було в одному продукті — рекрутер, технічна співбесіда й офер.
Перший офер прилетів 30.11, через пару днів другий, який я і прийняв. Ще у
2 технічні співбесіди завершилися відмовою. Щодо одного продукту я жалкую, мені здалося, що там має бути цікаво. Щодо другого я навіть радий, що не пройшов. Інтервʼюери були якісь пихаті, і здавалося, що перед ними лежить шпаргалка: «Як завалити кандидата за 100 простих запитань». Найдивніше питання я почув саме від них: «Вам треба зберігати 50 булеанів максимально ефективно, і не можна використовувати колекції. Як ви це зробите?» Одразу згадався епічний, хоча й елегантний костиль з використанням BitSet і файлової системи в якості БД, про який говорилося на одній конференції , але що хотіли від мене почути, я так і не зрозумів. Можливо, про побітові операції.
Здалося, що у більшості однакове джерело стратегії проведення техспівбесіди. Майже щоразу підійматися наступні питання:
- мультитрединг в Java на рівні голих Thread-ів, а також захід з боку Android у вигляді Looper/Handler/MessageQueue; хтось трохи говорив про Executor-и;
- synchronized/volatile в різних комбінаціях, іноді доходили до Semaphore і ReentrantLock;
- колекції, в основному ArrayList vs LinkedList, реалізація HashMap (дехто заходив зі сторони контракту equals/hashCode) і Big O оцінка операцій з колекціями; також дехто згадував і про синхронізовані колекції;
- життєвий цикл Activity, від базового розуміння до всіляких каверзних штук;
- FragmentManager — чомусь всіх дуже цікавило, навіщо треба всі ці commit/commitNow/commitAllowingStateLoss/commitNowAllowingStateLoss;
- в чому різниця invalidate vs requestLayout у View, саме в такому формулюванні;
- робота у фоні — сервіси та в якому Thread-і вони за замовчуванням запускаються, WorkManager і таке інше;
- Різниця між MVP, MVVM, плюс MVI, якщо інтервʼюер про нього в курсі.
Питання про DI, корутіни, Rx та про те, як я вирішував ті чи інші практичні проблеми, зустрічалися набагато рідше. А щось типу System design interview у вигляді обговорення архітектури клону якоїсь популярної програми взагалі було лише в одному місці.
Найкращі коментарі пропустити