Как все начиналось

Все началось с того, что я решил не много разнообразить свои будни тем, чтобы по проходить всякие разные интервью. По совету пары людей устроил себе собеседования вечерами с разными компаниями. Мой выбор пал на страны СНГ, потому как мой устный английский, как я считаю не очень хорош для того, чтобы проходить интервью у западных работодателей.

Решил устроить максимум 4-5 собеседований в неделю и 1-2 тестовых задания. Все собеседования были по скайпу, я получил пару джоб офферов в Москву, и отказался от них по ряду причин. Первая причина - финансовая. Так как Москва сама по себе дорогой город и 120к сейчас в Москве - это не 120к до обвала рубля. Плюс к этому ребята с проекта meshbird, который мы пилили на хакатоне GopherGala не советовали суваться в РФ, потому как рабочая сила сейчас там очень дешевая. Даже дешевле Индии. Вторая причина - не совсем интересный проект для меня, в котором было бы много рутины и задачи ниже среднего. Третья причина - хипстеры и не серьезные будущие коллеги.

Как я решил податься в Яндекс, и подача самого резюме

В феврале, по совету моего знакомого я решил взять триалку Job Seeker на Linkedin. После пары недель юзания его, мне на почту свалилось от него предложение со списком компаний, куда можно отправить резюме. Среди них был и Яндекс. Послал резюме на позицию Python Developer. Подавал через Linkedin.

Этап 1. ТЗ и HR

Через пару дней после подачи мне написала HR и выслала тестовое задание. Суть тз была в том, чтобы написать консольную утилиту для фильтрации логов в json формате и чтобы выдавала логи в разном формате, который можно менять. Читает с stdin. Пример использования: cat log | json-log –filter filter –template=some_template.d2 Тулзу запилил и отправил HR менеджеру.

Этап 2. Интервью с техническим специалистом Яндекса.

Через пару дней, на телефон позвонила HR и мы договорились о интервью по скайпу. Время и дату назначили и закончили разговор с ней. В назначенное время в скайп добавился человек, мы с ним созвонились и около часу говорили на всякие разные отвлеченные темы. Среди тем были: - Сколько вообще программирую - На каких языках программировал и в паре слов рассказать какие понравились, какие нет - Отношение к код ревью, качеству кода и прочим вещам В целом довольно мило пообщались и договорились о том, что он передает все HR, и вполне возможно пригласят на очное интервью в Москву.

Этап 3. Договор о очном интервью.

Через несколько дней после скайпа, ко мне постучалась еще одна HR. Она сказала, что меня хотят пригласить на очное интервью в Москву. Задала мне три вопроса: - Чем бы я хотел заниматься в Яндексе(инфраструктура, какой-нибудь проект и так далее) - На каких языках я программирую - На каких языках я бы хотел программировать. После того, как она получила ответы, она сказала, что меня хотят видеть в Москве. Сказала, что в моем случае будет 4-5 секций по часу. Время выбрали с 12 до 17. В течение пары дней были куплены Яндексом билеты на мое имя, даны инструкции, о том, как добраться до их офиса, как добраться с аэропортов и кого спрашивать на ресепшне.

Этап 4. Вылет.

Билеты на руках, инструкции сохранил. Так как я снова еду в другой большой и не понятный для меня город, то ставлю на телефон приложения Maps.me - это оффлайн карты. Качаю карту Москвы, ставлю Яндекс.Метро, чтобы ориентироваться в Метро. Эти два приложения мои помошники в любом не знакомом мне городе. Имея их, вы точно не заблудитесь нигде, где есть более-менее полные карты в OpenStreetMap. 17 числа, утром еду в аэропорт, торчу в нем 2 часа, дальше лечу 4 часа в самолете, и вот, в 7:55 я уже в Шереметьево. Так как я в Москве, то включил в аэропорту москвича, и быстрым шагом пошел по направлению к аэроэкспрессу. Купил билет за 470 рублей, сел на ближайший поезд и приехал на Белорусский вокзал через 45 минут пути. Добрая кассирша дала мне буклетик с расписанием поездов, в котором все рейсы, во все аэропорта с точным временем прибытия и отправки. После вокзала нашел метро, купил два проезда в метро, доехал на нем до станции “Парк Культуры” и пошел искать офис. В этот раз GPS в телефоне не смог определить мое местоположение и пришлось добираться, спрашивая у прохожих. И вот я добрался.

Yandex

Пришел на ресепшн и меня вскоре проводили до места собеседования.

Этап 5. Первое интервью. Алгоритмы и структуры данных

Интересная секция, вел ее разработчик Яндекс почты. Было три задачи

  1. Есть стек. У него есть четыре метода

    • push - кладет данные в стек
    • pop - удаляет элемент из стека
    • top - возврашает верхний элемент стека
    • empty - проверка на пустой стек Нужно его отсортировать
  2. Есть два односвязных массива, у которых есть общая часть. Нужно выяснить индексы массивов, с которых начинается общая часть. Примеры массивов:

    • a b c x y z
    • d e a d b e e f x y z
  3. Есть функция rand2 которая возвращает 0 и 1 с равной вероятностью. Нужно написать функцию rand3, которая с равной вероятностью возвращает 0 1 и 2.

Этап 6. Второе интервью. Архитектуры

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

Этап 7. Третье интервью. Програмирование на питоне.

В этой части нужно было написать декоратор, который пре серелизует любые данные, заменяя при этом date на "%Y-%m-%dT00:00:00", datetime на "%Y-%m-%dT%H:%M:%S". При этом, возвращать должна следующее [True, response] - если есть открытый файл [False, response] - если нет файла.

Например:

[
    {
        "name": "Will",
        "age": 26,
        "birth": "2015-01-02T00:00:00"
    }
]

Этап 8. Четвертое интервью. Практическое админство.

В этой части. Было много разборок с линуксом.

  1. Как узнать текущих залогиненых пользователей
  2. Почему их не показывает
  3. Убить все процессы, по определенному паттерну, без pkill -f
  4. Выяснить, с какой директории был запущен скрипт
  5. Как работает память в Linux
  6. Модель OSI

Итог.

В конечном итоге были сделаны следующие выводы: 1. Мне нужно подтягивать алгоритмы и некоторые академические моменты. 2. В любой более менее крупной компании (Яндекс, Дропбокс, Убер и тд) требуются знания алгоритмов 3. Диплом нужен чаще всего только для релокейта и получения некоторых ништяков, которые не получают люди без диплома 4. Все компании ценят больше практический опыт с хорошим уровнем теории.

На этом все.