Опыт интервью Media.net для SRE (в кампусе) 2022 г.
Media.net посетил наш кампус в качестве инженера по надежности сайта (DevOps) в августе 2022 года. Критерии CGPA были 6 и выше.
Было 5 раундов.
Раунд 1: (Онлайн-тест): Это был тест MCQ, я не помню продолжительность и количество вопросов. У него были вопросы по операционным системам, компьютерным сетям, структурам данных и алгоритмам, СУБД и общим навыкам.
Около 23 человек были отобраны для Machine Round, и я был одним из них.
Раунд 2: (Машинный раунд — офлайн, 3 часа): Этот раунд проводился в нашем компьютерном центре. Нам дали задание по программированию сокетов.
Описание задачи: Имеется сервер с хранилищем ключей-значений. Может быть несколько клиентов, которые могут отправлять на сервер такие запросы, как «GET», «PUT» и «DELETE».
Хранилище ключей-значений, серверный и клиентский код написаны с нуля. Нам разрешили гуглить все, что угодно, например, синтаксис, ошибки и т. д. Нам даже дали возможность выбрать любой язык, который нам удобен, я выбрал Python.
- Хранилище ключ-значение — это, по сути, словарь в python. Итак, я написал класс, в котором есть словарь и некоторые функции для работы с операциями «GET», «PUT» и «DELETE».
- Я написал код для сервера, который был бы готов принимать клиентов и мог начать общение по протоколу TCP, аналогичным образом я написал код для клиента, который был бы готов принимать данные от пользователя для запросов и отправлять их на сервер.
- После того, как я выполнил задачу, у меня еще оставалось немного времени, меня попросили внедрить систему TTL (Time to live) для хранилища. Это означает, что у ключа будет компонент времени жизни, срок действия ключа истекает через определенный период времени. Я реализовал это, и время закончилось.
- Поскольку я использовал потоки для работы с несколькими клиентами, мне пришлось использовать потоки. Меня спросили, является ли мой код потокобезопасным, и я ответил отрицательно, потому что моей главной целью было завершить основную задачу и позже реализовать потокобезопасность. Впрочем, интервьюеров это вполне устраивало.
Этот тур прошли 3 студента, я был одним из них.
Раунд 3: (Техническое интервью — офлайн, 1 час): Этот раунд был посвящен основам CS, в основном связанным с операционными системами и компьютерными сетями.
Интервьюеры поздоровались, представились и попросили меня представиться. Интервьюер просмотрел мое резюме и спросил меня о стажировке.
Затем обсуждение перешло к компьютерным сетям, некоторые из вопросов, которые я помню, были:
- Что такое TCP и UDP и как они работают.
- 3-стороннее рукопожатие.
- Что происходит, когда мы вводим google.com в браузере?
Я упомянул Git как систему контроля версий в своих проектах в своем резюме, поэтому он задал мне вопрос, связанный с ней.
- Допустим, у нас есть приложение. Версия 2 приложения была развернута, и теперь, после 5000 коммитов, мы развернули версию 3 приложения. Мы выяснили, что в финальной версии 3 есть ошибка, которая закралась из одного из коммитов. Как бы вы нашли коммит, в котором возникла ошибка?
- Дополнительный вопрос, аналогичная ситуация дается, но на этот раз ошибка началась в одном из коммитов, а также была устранена в более позднем коммите, что сделало версию 3 безошибочной. На этот раз мы должны выяснить, откуда взялась ошибка.
Раунд 4: (Проектирование системы — офлайн, 1 час): Этот раунд был раундом проектирования системы.
- Интервьюеры поздоровались, представились и попросили представиться.
- Мне была предоставлена возможность выбора между разработкой приложения для международного чата (например, WhatsApp) или международной службы потокового видео (например, YouTube).
- Я пошел с YouTube.
- Я медленно начал складывать все свои цели на листе бумаги и начал развивать их.
- Интервьюеры спросили меня, как бы вы масштабировали эту конкретную систему для более широкой аудитории, и я изо всех сил старался найти решения.
Раунд 5: (Управленческий раунд — онлайн, 30 минут). Этот раунд представлял собой общее обсуждение того, что делает SRE и как это влияет на компанию. Он рассказал о культуре и ценностях компании. Более того, это была общая дискуссия о зарплате и о том, каким будет мой рост в компании.
Наконец-то мне поступило предложение от компании!
Советы:
- Постарайтесь углубиться, когда вы используете некоторые термины, вы должны быть в состоянии ответить на все вопросы интервьюера о них.
- Ничего страшного, если вы не смогли ответить на что-то. По крайней мере, попробуйте ответить на него по-своему логично и что бы вы об этом подумали.
- Держите сеанс интерактивным. Сообщите интервьюеру, что происходит у вас в голове.
- Требуется хорошая глубина знаний в области операционных систем и компьютерных сетей.
Всего наилучшего!