Всем привет. А вот моя история о том, как я попал на стажировку в Яндекс Облако в качестве Backend Developer на Go.

Сразу скажу, что на стажировку я попала не с первого раза.

Фон

Немного обо мне: в начале рассказа я был студентом 4 курса, писал научные статьи по нейросетям, в свободное время писал любимые проекты, чтобы прикоснуться к тем или иным технологиям, фреймворкам, технологиям и т.д. Я никогда не любил алгоритмы, из-за которых будут проблемы, о которых я расскажу ниже. В кошельке было несколько коммитов Клиентская библиотека Twitch APIAPI с анализатором данных HLTV.

Попытка 1

Это был февраль 2022 года, в то время я уже работал C++ разработчиком, но мне всегда хотелось работать в чем-то большем, чем завод или небольшая городская ИТ-компания. Я подал заявку на стажировку. Думаю, всем читателям уже известен остальной процесс: тестовый конкурс, алгоритмическое интервью, встречи с командами, стажировка. И так мой путь начался с конкурса, ссылку на который мне прислали на почту, его нужно было пройти за неделю. В самом конкурсе я решил не все задачи, а только 2-3. Но после выходных мне в телеграмм написал рекрутер с предложением пройти алгоритмическое собеседование. Мы договорились о дате и времени, и я начал ждать. Пришло время собеседования, мы позвонили интервьюеру, он сразу дал мне задание, и мы начали решать.

Пятно 1

Пятница 13

Первая задача обычно проста и занимает немного времени. Что-то вроде “Вам дан день недели 1 января, посчитайте количество 13 пятниц в году”. Эту задачу можно решить несколькими способами, с разной сложностью алгоритмов, поэтому следует придумать как можно больше и не забыть указать сложность предлагаемого алгоритма. Я предложил обозначать дни недели числами (как enum), взяв 13 января и прибавив остаток от деления на 7 количества дней в месяце. Если день недели выпадал на пятницу, то счетчик добавлялся. Сложность алгоритма получается O(1), потому что всегда 12 итераций цикла, потому что 12 месяцев в году. Мы быстро написали код, интервьюер рассказал о читерском решении проблемы: есть 7 возможных входных данных, поэтому для каждого входного аргумента можно заранее посчитать количество пятниц 13-го в году и написать функцию switch-case и вернуть уже рассчитанные значения.

Задача 2

Количество квадратов

Вторая задача заключалась в следующем: «По заданному массиву положительных и отрицательных чисел вы должны вернуть массив квадратов этих чисел, отсортированных в порядке возрастания». Здесь я предложил иметь 2 среза с квадратами положительных и отрицательных чисел, потом сортировать при создании выходного среза, все просто. Мы решили задачу и у нас оставалось 10-15 минут, поэтому мы не успели выполнить задание 3, и интервьюер решил спросить меня о знании Golang: о слайсах, о картах, о горутинах.

ЧИТАТЬ   «Дочка» АФК «Система» выпустила технологию производства лекарств от рака

Собеседование закончилось, и я снова стал ждать ответа от рекрутера. Через несколько часов я получил сообщение об успешном прохождении собеседования и мне предложили продолжить общение… дальше алгоритмы. Я выбрал время, я жду. Это интервью также включало 2 задания.

Пятно 1

Интроверт в кино

Первый был что-то вроде «Ты в кинотеатре, можешь выбрать любое место в ряду, но ты не любишь сидеть рядом с другими, тебе нужно найти место как можно дальше от людей». Не помню точно, что я предлагал тогда, но, наверное, стоит сначала предложить самый примитивный способ, это для каждой локации рассчитать расстояние до человека рядом с каждой стороны и взять минимальное значение, потом сложность алгоритм O (n ^ 2). Более оптимальное решение — найти расстояние до ближайшего соседа по мере перебора массива (если предыдущее место занято, то расстояние равно 1, иначе x[i-1]+1). Итак, находим расстояние до соседа слева и справа за 2 прохода по массиву, а на 3 проходе находим место, где сидим, сложность алгоритма O(n).

Задача 2

петля

Второе задание: “Дана строка с буквами, обозначающими направление движения по клетке: Ш – вверх, С – вниз, А – влево, Д – вправо. Вернуть линию движения, сняв с нее петли”. Эта задача мне показалась более сложной, не помню, как я ее тогда решал, но было очень хитрое и непонятное решение, поэтому я потратил на него много времени и не успел позаботиться о индексы (такой косяк был). В свое оправдание скажу, что в то время я практически не имел дела с алгоритмами, а только с написанием своих проектов.

После этого интервью я получил электронное письмо, в котором говорилось, что теперь они не готовы меня брать, и посоветовали мне сайты с головоломками, где я могу потренироваться.

После этого письма я решил серьезно заняться алгоритмами и решала по 3-4 задачи каждый день в течение 2 месяцев.

Попытка 2

Следующий звонок был в августе, т.к. Между попытками должно пройти 6 месяцев.

ЧИТАТЬ   Древние мифы и сага о Гарри Поттере рассказывают вечную историю. Почему - объясняет культуролог Оксана Седых - Lifehacker

Повторюсь: я подал заявку, прошел конкурс, где не решил 1 задачу, потому что просто не знал о k-мерных деревьях. Потом мне снова написал рекрутер и предложил пройти собеседование, мы договорились о времени и я стал ждать. Мы позвонили, было еще 2 задания, которые я вообще не помню, но они для меня были простыми, у нас оставалось 10 минут, у интервьюера больше не было заданий и мы разошлись.

После этого мне предложили продолжить общение, но уже с командами. Мы позвонили рекрутеру, он уточнил мои предпочтения по командам, с которыми я хотел бы работать, если был готов к переезду.

Мне предложили 3 команды, я решил, что надо поговорить со всеми, хотя по описанию они мне не очень нравятся, может я чего-то не понимаю. Но обычно вам кидают описание команд, в котором кратко говорится чем они занимаются и вы сами решаете интересна вам эта команда или нет.

В этом интервью вы говорите друг о друге. Рассказываю о себе, о своем опыте разработки, о том, что меня интересует, кто мой собеседник в команде, его задачи и его роль в Яндексе. Обычно это занимало около 20 минут, потом можно было задать несколько уточняющих вопросов о команде. Интервью обычно заканчивались в течение 30 минут. Первые 3 команды меня не взяли, поэтому я решил уточнить у рекрутера, почему мне отказали, чтобы решить эту проблему. Они думали, что я недостаточно заинтересован в командах. Да, у меня такая проблема, что я не очень эмоционален в разговорах и просто слушаю, отвечаю на вопросы и задаю их.

Они нашли для меня 2 другие команды, которые, я думаю, были бы последними, если бы они меня не взяли. В этот раз собеседования были немного другими, с одной стороны меня спрашивали про REST и gRPC, работаю ли я с Linux и про интерфейсы в Golang, с другой стороны мы решали простую задачу про алгоритмы. Все остальное было примерно таким же. После этого я снова начал ждать ответа, который пришел довольно быстро, через несколько часов после интервью, одна из команд которого мне очень понравилась. Мне прислали предложение стажировки, я заполнил анкету и через несколько дней прислали подарок – рабочий ноутбук, станцию ​​Alice Light, фирменный шоппер, скетчбук, ручку и книгу о Яндексе, которую я сразу читать.

ЧИТАТЬ   «Организации с названием, но без слов» — Почему молчат омбудсмен и Национальный центр?

Интернатура

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

На протяжении всей стажировки у вас есть собственный наставник. Для меня это был человек, проводивший интервью. Я написал ему все свои вопросы, он дал мне задания. Часто мы созванивались просто для того, чтобы поговорить о том, как идут дела у меня и у Яндекса в целом. В общем, глупых вопросов не бывает, спрашивать можно и нужно все, что вас интересует, здесь вам всегда помогут и подскажут, где и что искать.

За время работы у меня:

  • общался с другими разработчиками

  • предлагал свои идеи, которые иногда принимались

  • пишет код на Python, Java, но особенно на Go

  • читал и работал с Terraform, gRPC, различными базами данных

  • изучил весь жизненный цикл задачи, от создания тикета до развертывания в рабочей среде

После 4 месяцев работы (первые 2 месяца я работал на 0,5 оклада) моя стажировка закончилась, я написала своему научному руководителю, что они мне очень нравятся и я хотела бы остаться, если будет такая возможность. От меня ушли, и по сей день я работаю в этой компании и в той же команде, но уже джуниором.

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

В качестве подсказки могу сказать, что нужно иметь уверенность в алгоритмах и структурах данных, это самое основное, что спрашивают на всех собеседованиях и показывает ваши навыки решения проблем. Я думаю, что всегда стоит написать несколько собственных проектов и заполнить портфолио, это может сыграть роль на командных собеседованиях.

Не сдавайтесь, и если у вас не получится сразу, вы можете добиться успеха позже.

Source

От admin