Александр
Ну шо, вот я и сходил на очередной собес, на это раз в банк. Ребята ищут Android дева, иногда могут рассмотреть джуна. Вбрасываю вопросы которые запомнил.
Вопросов немного было, большей частью по Rx, все задавались просто по ходу беседы(заготовленных не было).
- Git, Merge vs Rebase
- Git, какие методологии юзаете на работе(или просто какие знаешь)
- Rx, observeOn vs subscribeOn
- Rx, виды Subject(Behavior,Async,...) и чем различаются
- Rx, виды Observabe(Single,Maybe,...) и чем различаются
- Rx, какие операторы знаешь
- Rx, есть Observer, который эммитит List<Int>, int:[0..10]. Что произойдёт, если в цепочке вызовов добавить что - то типо .filter(i > 5) (псевдокод)
- Rx, какой оператор и как нужно применить, чтобы убрать из этого листа какое - то число и передать лист дальше
- Rx, где и как юзается retry(желательно привести не оторванный от реальности пример)
- Rx, где и как юзается zip(аналогично)
- Rx, map операторы(имеется ввиду flatMap vs ещё какие то %nameMap%, погуглите, а то я их не знаю тупо)
- Rx, что такое Sheldurer и с какими его "видами"(ну вы поняли, IO, вот это всё) работал
- MultiThread, зачем нужен synchronized, привести пример
- MultiThread, как работает synchronized под капотом(лол кек, я не ответил, но от меня и не ожидали, на верочку спросили)
- MultiThread, что такое Executor
- Личные предпочтения: Kotlin или Java? Если ответили "Kotlin", дать конкретный ответ на вопрос почему именно он(по сути, перечислить основные power фичи и объяснить зачем они нужны)
Co(n)stantine👨🔬
знание Java и Android SDK
опыт разработки приложений под Android
опыт создания многопоточных приложений
знание распределенных систем контроля версий (Git)
знание структур данных (стек, очереди, деревья, хэш-таблицы) и алгоритмов сортировки: quicksort, mergesort, heapsort
хорошо разбираться в стандартной системе сборки Android;
уметь писать кастомные Gradle-таски, дополнять процесс сборки приложения;
уметь эффективно реализовывать сложный GUI, разбираясь в устройстве стандартных UI-компонентов Android, представляя, что у них находится «под капотом»;
глубокое знание жизненных циклов как приложений, так и отдельных компонентов (Activity и Services);
быть готовым придумывать и реализовывать эффективные способы межпроцессного взаимодействия, используя основные механизмы, предоставляемые Android (Intent, bindService(), AIDL, ContentProvider, файлы и пр.).
Дополнение:
знание шаблонов проектирования
умение декомпозировать и оценивать задачи
Понимание механизма Dependency Injection, Clean Architecture, Понимание MVVM, MVP, ООП, SOLID, DRY, KISS, TDD
Умение работать с Push-уведомлениями, Умение писать тесты (Espresso, Unit).
Fragments (Child Fragments, Headless Fragments, Fragments communications, Single Activity Application),
Service (JobService, BoundService, IPC),
Views (View Lifecycle, measurement, drawing, SurfaceView, Constraint Layout),
Canvas (Bitmap, PorterDuff, Matrix, Path),
GPU profiling, dumpsys, GPS measurement,
Interceptors, CallAdapter.Factory, SSL pinning, WebSocket connection, GSON
Android Keystore, Google tink
APKtool, jadx
Material Design
Evgeniy