banner



Grokking The System Design Interview Video

С чего начать? Присоединиться к чьему-нибудь стартапу? Запустить собственный? Сфокусироваться на откачивании знаний алгоритмов и структур данных? Как получить работу своей мечты?



Для начала несколько полезных ссылок, упоминавшихся в ответах:

  • Grokking the System Design Interview
  • LeetCode
  • Coderust 2.0: Faster Coding Interview Preparation Using Interactive Visualizations
  • Programming Interview Questions | CareerCup
  • GeeksForGeeks | A computer science portal for geeks
  • HiredInTech`s Training Camp for Coding Interviews
  • http://highscalability.com/
  • Problem Solving in Data Structures & Algprithms Using Java: The Ultimate Guide to Programming Interview

Итак, топ-3 ответов, набравших наибольшее количество голосов.

1. Аншуман Сингх, соучредитель InterviewBit, разработчик в Facebook

Типичный процесс прохождения собеседования

  1. 2-3 телефонных интервью. Обычно перед личной встречей проходит несколько бесед по телефону, чтобы «прощупать» собеседуемого. Как правило, в них могут задаваться несложные алгоритмические задачи, но в основном телефонные интервью предназначены для выявления «красных флажков» - потенциальных нежелательных черт и возможных проблем при вхождении нанимаемого в коллектив.
  2. Личные беседы
    • интервью 1-2: программирование, алгоритмы и структуры данных, культура программирования, «чистота» кода;
    • интервью 3: программирование или системный дизайн. Этот этап зависит от опыта собеседуемого. Соискатель тестируется на понимание сферы его предполагаемой профессиональной деятельности;
    • интервью 4: поведенческое. После нескольких технических собеседований следует собеседование с hr-ом. Его цель — выявить ваши психологические плюсы и минусы, оценить, насколько вы способны влиться в коллектив.

О подготовке к собеседованию

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

Именно таким является проект InterviewBit. Он абсолютно бесплатен, и предоставляет любому желающему упорядоченный и тщательно структурированный план подготовки к техническому собеседованию, в некоторой степени исполняя роль персонального наставника.

Последовательный подход.Никаких деревьев и хэшей, пока вы как следует не усвоите массивы и списки.

career

Каждая тема разбита на подтемы

career

Имитация интервью в процессе решения задач

career

Джимми Саад, получил работу в Facebook

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

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

Итак, представим, что у вас собеседование через месяц. Как бы вы спланировали подготовку за это время?

Дни -∞-0: исходные данные

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

Если это не так, вам понадобится куда больше месяца. Для начала обратите внимание на книгу «Введение в алгоритмы».Также от вас ожидают, что вы знаете язык программирования вроде С++ или Java.

День 1: книга

Приобретите книгу «Элементы технических собеседований». Это одна из лучших книг по данной теме. Она содержит более 300 вопросов, задаваемых на реальных интервью.

День 2-14: алгоритмы

Читайте книгу глава за главой, по одной в день, с 5-й по 19-ю. Решайте каждую задачу. Не программируйте, просто находите алгоритм решения. Поставьте себе дедлайн на каждое задание в зависимости от его сложности. Если не получается решить задачу за это время — перейдите к ответу и тщательно проанализируйте его.

День 14-24: программирование

Пройдите книгу еще раз, на этот раз программируя. Теперь вы знаете ответы, так что сможете вспомнить алгоритм решения каждой задачи довольно быстро (если нет, можно подсмотреть). Это этап программирования, так что не тратьте время на повторный подбор алгоритмов.

День 25-30: больше вопросов

Обратите внимание на следующие ссылки:

  • Google Interview Questions | CareerCup
  • Get that job at Google
  • Five Essential Phone Screen Questions

День 31: не техническая часть

Да, это немного жульничество — добавлять 31-й день, но настоятельно рекомендуется сделать это. Вам нужен день для подготовки к не технической части интервью (особенно, если вы устраиваетесь в Facebook, там практикуют не технические собеседования).

Во-первых, заготовьте вопросы, которые вы хотели бы задать интервьюеру. Затем подумайте о своем образовании и опыте: в каких проектах вы участвовали, частью каких команд были, какие возникали трудности и конфликты.

Подготовьтесь отвечать на вопросы вроде «почему вы выбрали именно нашу компанию?». Такие вопросы обычно заставляют соискателя растеряться.

Marcelo Juchem, разработчик в Facebook

30 минут занятий в день бесспорно лучше, чем 3 часа 30 минут в неделю. Занимайтесь часто и регулярно. Нет смысла работать непрерывно по 8-10 часов, это чревато выгоранием. Планируйте небольшие занятия через удобные для вас отрезки времени в течение дня. Сделайте этот график гибким, давайте себе отдохнуть, если это необходимо (нет смысла прерываться всего на 15 минут, если вы действительно устали). Не нужно геройствовать, достаточно выработать режим, который позволит вам стабильно развиваться.

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

Не фокусируйтесь только на конечном результате — сам процесс подготовки должен приносить удовольствие. Если это не так, велика вероятность, что вы делаете что-то неправильно: по какой-то неправильной причине вы выбрали неправильную профессию.
Будьте скромны. Никто не учит то, что, как он думает, он и так знает. Никто не совершенствуется, если считает, что он и так достаточно хорош. Вы соревнуетесь сами с собой, поэтому будьте перед собой честны.

Даже если вы считаете, что достаточно подготовлены и готовы пройти собеседование, возможно, вам стоит позаниматься еще.

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

Форматы собеседований

Большая часть собеседований на работу разработчиков делится на три типа:

  1. поведенческое (психологическое)
  2. системный дизайн
  3. алгоритмы и программирование

Чаще всего проводятся интервью третьего типа. Первый тип помогает соискателю поставить себя на место рекрутера и задать себе вопросы: «Хотел бы иметь работу с этим парнем в течение всего следующего года? Выпил бы я с ним пива или пригласил бы на ланч, чтобы обсудить, как прошли выходные? Хотели бы иметь с ним дело другие представители нашего коллектива?» Собеседования типа 2 призваны проанализировать ваш прошлый опыт.

Где взять ресурсы для изучения

  • GeeksForGeeks
    Прекрасный блог, где не только рассматриваются технические задачи, но и приводятся примеры их решения.
  • Список вопросов с технических собеседований
  • Введение в алгоритмы (The MIT Press)
    Хорошая книга по алгоритмам.
  • Может пригодиться прочесть первые главы книги "Современные операционные системы" 2-е изд., дабы освежить 3в памяти процессы, потоки, контексты и тому подобное.

Как добиться прогресса

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

Другие статьи по теме

Собеседование iOS-разработчика: устные вопросы по языку Swift

Собеседование на должность программиста: вопросы по алгоритмам

Grokking The System Design Interview Video

Source: https://proglib.io/p/career-digest

Posted by: taylorhimbeyer.blogspot.com

0 Response to "Grokking The System Design Interview Video"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel