Пробовал ли собеседоваться в крупные компании

Ответ

Да, проходил собеседования в несколько крупных компаний (например, Яндекс, Сбер, Tinkoff). В основном спрашивали:

  • Алгоритмы и структуры данных (Leetcode medium/hard)
  • Глубокое знание Android (Lifecycle, View/ViewGroup, многопоточность)
  • Системный дизайн (архитектура приложения, масштабирование)
  • Kotlin специфику (coroutines, inline/reified, делегаты)

Пример алгоритмического вопроса:

fun findDuplicate(nums: IntArray): Int {
    var slow = nums[0]
    var fast = nums[0]
    do {
        slow = nums[slow]
        fast = nums[nums[fast]]
    } while (slow != fast)

    fast = nums[0]
    while (slow != fast) {
        slow = nums[slow]
        fast = nums[fast]
    }
    return slow
}

Готовился по книгам "Cracking the Coding Interview" и "Android Internals".

Ответ 18+ 🔞

А, ну это классика, ёпта! Тысячу раз на эти собеседования ходил — одно и то же, как будто на дворе 2002-й год, а не эпоха ИИ наступила.

Слушай, ну они там все с ума посходили, ей-богу. Приходишь, а тебе сразу: «Реализуй, блядь, квиксорт на бумажке, да так, чтобы он в уме работал!». И смотрят, суки, как ты пишешь, будто хирург на операции. Волнение ебать, рука дрожит, а они сидят такие довольные, пидарасы шерстяные.

А про Android — это вообще ёперный театр. Начинают копать в такие дебри, что сам от себя охуеваешь. «Расскажите про жизненный цикл фрагмента». Ну, окей, рассказываю. А они: «А если мы его в ViewPager2 засунем, который внутри BottomSheetDialogFragment лежит, который ещё и с Navigation Component интегрирован, а потом конфигурация поменяется?». Чувак, да какого хуя? В реальной жизни такого пиздопроебибна не бывает, это они просто впендюрить хотят, чтобы ты бздел и признался, что не знаешь.

И самое смешное — системный дизайн. Сидишь, рисуешь квадратики и стрелочки, а тебе говорят: «Представь, что у вас приложение для одного человека, и он внезапно стал миллиардом пользователей. Как масштабировать?». Да хуй с горы, как масштабировать! Купить сервер побольше! Нет, им подавай микросервисы, кеширование в пятнадцати слоёв и хитрую жопу с eventual consistency. Терпения ноль ебать.

А код твой, этот, с зайцами-черепахами... Ну, ни хуя себе, задачка. Это ж про поиск дубликата в массиве через алгоритм Флойда. Умно, конечно. Но представляешь картину? Ты на собеседовании, тебе надо не только решить, но и объяснить, почему slow и fast встретятся. А у тебя в голове одна мысль: «Чих-пых тебя в сраку, дай хоть воды попить». Главное — не спасовать и не выдать что-нибудь вроде «ну, тут, блядь, магия какая-то».

Книжки эти — да, библия, спору нет. «Cracking the Coding Interview» — это как священное писание для айтишника. Но иногда кажется, что вся эта подготовка — просто чтобы пройти через овердохуища унижений, а потом всё равно работать с легаси-кодом, который писал какой-то распиздяй десять лет назад.

Короче, суть в чём: отскакивают эти собеседования, как горох от стенки. Надо просто не бздеть, готовиться, и рано или поздно попадёшь в место, где не будут спрашивать, как переписать HashMap на ассемблере для Android 4.4. Удачи там, не вздрачивай себя раньше времени.