Android-разработчик

Мобильное приложение ВКонтакте для Android является одним из самых популярных социальных приложений в России и странах СНГ. Мы гордимся создаваемым продуктом и ищем человека, который смог бы разделить с нами страсть к разработке безупречного приложения.

Обязанности
  • Участие в разработке Android-приложений ВКонтакте
  • Тестирование, оптимизация и поддержка существующих и новых продуктов
  • Взаимодействие с командой API и дизайнерами

Требования
  • Опыт создания приложений под Android 4.4+ не менее 2-х лет
  • Уверенное знание Java и Android SDK
  • Желателен опыт работы с Kotlin и RxJava 2
  • Опыт создания сложных, но быстрых интерфейсов (кастомные views и layouts, а так же анимации)
  • Наличие портфолио с выполненными проектами

Мы высоко ценим
  • Способность максимально быстро и качественно решать поставленные задачи, ориентированность на результат
  • Самостоятельность, ответственность, инициативу и внимание к деталям как в коде, так и в создаваемых интерфейсах
  • Гибкий и системный подход к решению сложных задач

При подаче заявки на эту вакансию обязательно оставьте ссылку на одну или несколько законченных работ — приложение в Google Play, репозиторий на GitHub'e или APK-файл. Расскажите о своей роли в проекте, самых сложных и интересных задачах, которые Вы решили (это особенно важно, если проекты были закрытые и дать ссылку на них невозможно).

Вы сможете работать в небольшой команде, где каждый занимается широким кругом задач. Мы работаем много и упорно, но не загоняем себя в рамки традиционного рабочего расписания.

Вознаграждение в большей степени зависит от амбиций и таланта разработчика. ВКонтакте предоставляет полный социальный пакет и максимально комфортные условия.

Please answer a few questions

Вам нужно написать свой Layout, наследуясь от ViewGroup. Какие методы и зачем вам нужно переопределить?
Сколько раз и в какие моменты времени у textView вызовется метод onDraw после нажатия на кнопку button? Какой текст будет отображен?
class MainActivity : AppCompatActivity() {

 override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_main)
  setSupportActionBar(toolbar)

  button.setOnClickListener { view ->
   textView.text = "First Text"
   textView.invalidate()
   textView.text = "Second text"
   textView.invalidate()
   textView.text = "Third text"
  }
 }
}
Этот код нарисует красный круг, на краях которого будет заметна "лесенка". Почему это происходит? Как избавится от этого артефакта?
class CircleView : View {

 private val paint = Paint().apply {
  color = Color.RED
  strokeWidth = 3f
 }

 private var radius: Float = 0f

 constructor(context: Context?) : super(context)
 constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
 constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

 override fun onDraw(canvas: Canvas) {
  canvas.drawCircle((measuredWidth / 2).toFloat(), (measuredHeight / 2).toFloat(), radius, paint)
 }

 override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
  super.onMeasure(widthMeasureSpec, heightMeasureSpec)
  radius = Math.min(measuredWidth, measuredHeight) / 2f
 }
}
У вас есть список пользователей отображенный в RecyclerView. С сервера приходит обновленный вариант этого списка, в котором эти же пользователи расположены в другом порядке. Как анимировано применить эти изменения к RecyclerView?

Tell us about yourself

Резюме:
Full name:
Phone number:
Email:
Расскажите о себе и своем опыте: