Подробная инструкция для разрабов по подготовке к собеседованию

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

0

Обсудить

В закладки

Чтоб создатели ощущали себя уверенно на собеседовании в хоть какой организации (будь то маленькой стартап либо большой всемирно узнаваемый проект IT-сферы), мы отыскали и перевели вам исчерпающую аннотацию по подготовке к “coding interview”.

Создатель статьи, Ариэль Камю — основоположник Microverse, удаленной школы разрабов ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств), которая базируется в Сан-Франциско и бесплатна для всех учеников, которые пока не отыскали работу. С оригиналом статьи можно ознакомиться по ссылке https://medium.freecodecamp.org/the-ultimate-guide-to-preparing-for-the-coding-interview-183251ee36c9

*В заданиях статьи создатель несколько раз ссылается на книжку Gayle Laakmann McDowell’s “Cracking the Coding Interview”. Издание на российском языке можно отыскать в Вебе под заглавием «Судьба программера. Как устроиться на работу в Гугл, Microsoft либо другую ведомую IT-компанию».

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

Чем меньше компания, тем проще структура собеседований. Маленькие конторы и стартапы, как правило, проводят 1-2 собеседования (интерактивные собеседования при помощи таковых инструментов, как Сodepen и IDE, либо whiteboard interview (когда перед кандидатом ставят маркерную доску либо дают лист бумаги и требуют написать код на их) либо дают маленькой проект, который вы должны будете выполнить без помощи других.

Большие компании, такие как Гугл либо Facebook, начинают с телефонных собеседований с менеджером по персоналу и техническими спецами (где вы выполняете задания по написанию кода), опосля чего же перебегают уже к очным собеседованиям.

Задание № 1: прочитайте раздел «Форматы собеседования» (https://github.com/yangshun/tech-interview-handbook/blob/master/non-technical/interview-formats.md) в «Руководстве по техническому собеседованию», сделанном сотрудником Facebook Яншуном Тэем, чтоб осознать, как различные компании структурируют свои собеседования.

Независимо от структуры и количества собеседований, вы должны быть готовы к последующим типам вопросцев:

  • Технические вопросцы
  • Проектирование систем
  • Поведенческие вопросцы

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

Технические вопросцы

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

А означает вы уже должны быть знакомы с таковыми платформами, как Hackerrank, Learneroo и Leetcode, изучить структуры данных и методы. Даже в процессе поиска работы продолжайте раз в день практиковаться с Leetcode (подробнее о этом позднее).

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

Когда дело касается определенных технологий, языков и систем, у вас должен быть неплохой опыт в том стеке, который вы себе избрали. В Microverse, школе для удаленных разрабов программного обеспечения, которая бесплатна до того времени, пока вы не устроитесь на работу, мы преподаем Ruby, Ruby on Rails, JavaScript и React, но по сути, не имеет значения, что вы выберете, пока вы не разберетесь в определенном стеке и не станете вправду неплохи в нем.

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

Дальше мы будем также употреблять книжку Gayle Laakmann McDowell’s “Cracking the Coding Interview”. Если у вас еще нет таковой книжки, я настоятельно рекомендую ее приобрести либо попробовать отыскать в местной библиотеке.

Задание № 2: прочитайте VI раздел книжки “Cracking the Coding Interview”, который именуется «Технические вопросцы».

Задание № 3: чтоб освежить информацию о структурах данных и методах, сделайте ТОЛЬКО 1-ое задание по кодированию в любом разделе (т.е. матрица, динамическое программирование, геометрия, графика, хэш-таблица и т. д.) данной для нас странички — https://github.com/yangshun/tech-interview-handbook/tree/master/algorithms, используя избранный вами язык.

Вы будете употреблять новейшую платформу под заглавием Leetcode. На страничке «Управления по техническому собеседованию» также содержится обзор каждой структуры данных либо метода на вариант, если для вас пригодятся подсказки. Прочитайте его, до этого чем пробовать выполнить задание по кодированию.

Задание № 4: найдите ресурсы, на которых вы можете проверить себя в более всераспространенных концептуальных вопросцах о разных разработках, которые вы понимаете. Если вы не разбираетесь в каком-то направлении, используйте Гугл и изучите этот вопросец, до этого чем пробовать отыскать решение.

Вот несколько примеров «концептуальных вопросцев» для различных языков программирования, которые мы преподаем в Microverse. Если вы работаете на тех же языках, не стесняйтесь употреблять эти ссылки. Также вы сможете употреблять эти веб-сайты, чтоб осознать, какие похожие ресурсы для вас необходимо отыскать в Вебе. Имейте в виду, что концептуальные вопросцы различаются от заданий по программированию тем, что они наиболее теоретичны, другими словами для вас не придется писать код, чтоб на их ответить (почти всегда).

методы и структуры данных (максимум 45 минут)

https://www.geeksforgeeks.org/commonly-asked-algorithm-interview-questions-set-1/

https://www.geeksforgeeks.org/commonly-asked-data-structure-interview-questions-set-1/

Ruby & Rails (максимум 45 минут)

https://www.toptal.com/ruby/interview-questions/

https://www.upwork.com/i/interview-questions/ruby/

https://rubygarage.org/blog/how-to-interview-your-ruby-on-rails-developer

html & CSS (максимум 45 минут)

https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/css-questions.md

https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/html-questions.m

JavaScript (максимум 45 минут)

https://www.toptal.com/JavaScript/interview-questions

https://www.codementor.io/nihantanu/21-essential-JavaScript-tech-interview-practice-questions-answers-du107p62z

https://github.com/yangshun/front-end-interview-handbook/blob/master/questions/JavaScript-questions.md

React (максимум 45 минут)

https://www.edureka.co/blog/interview-questions/react-interview-questions/

https://www.toptal.com/react/interview-questions

Чтоб не затягивать с этими заданиями, установите ограничение по времени в 45 минут для всякого набора вопросцев. Не стесняйтесь предложить другу поработать над этими вопросцами вкупе. Вы сможете отвечать по очереди и разъяснять ответы друг другу.

Не запамятовывайте проводить тренировочные собеседования, чтоб приготовиться к настоящим (подробнее о этом позднее), и продолжать практиковаться в ответах на подобные вопросцы даже в процессе поисков работы.

Задания по проектированию систем

В этих типах заданий наниматели представляют определенный продукт (к примеру, социальную сеть, поисковую машину, генератор маленьких ссылок), и требуют вас спроектировать для него систему и архитектуру.

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

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

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

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

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

Задание № 5: прочитайте главу 9 книжки «Cracking the Coding Interview».

Пожалуйста, прочитайте «Пример задачи», но пока не пытайтесь отвечать на «Вопросцы собеседования».

Задание № 6: Донн Мартин, технический менеджер Facebook, сделал очередной превосходный открытый ресурс, чтоб посодействовать людям готовиться к собеседованиям. Прочитайте раздел «Как приготовиться к вопросцам по проектированию систем на собеседовании». (https://github.com/donnemartin/system-design-primer #how-to-approach-a-system-design-interview-question).

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

Задание № 7: прочитайте о 4 различных методах масштабирования системы:

Масштабируемость для чайников — Часть 1: Аналоги HTTP://www.lecloud.net/post/7295452622/scalability-for-dummies-part-1-clones

Масштабируемость для чайников — часть 2: База данных

http://www.lecloud.net/post/7994751381/scalability-for-dummies-part-2-database

Масштабируемость для чайников — часть 3: Кэш

http://www.lecloud.net/post/9246290032/scalability-for-dummies-part-3-часть 4: Асинхроннность

HTTP://www.lecloud.net/post/9699762917/scalability-for-dummies-part-4-asynchronism

Задание № 8: Прочитайте о разных компонентах каждой программной системы (для вас не надо разбираться во всех деталях, но вы должны знать о разных компонентах и концепциях):

Domain Name System (DNS)

https://github.com/donnemartin/system-design-primer #Domain-name-system

Content Delivery Network (CDN)

https://github.com/donnemartin/system-design-primer #content-delivery-Network

Load Balancer

https://github.com/donnemartin/system-design-primer #load-balancer

Reverse proxy

https://github.com/donnemartin/system-design-primer #reverse-proxy-web-server

Application layer

https://github.com/donnemartin/system-design-primer #application-layer

компании, которые для вас нравятся, из этого перечня — https://github.com/donnemartin/system-design-primer #company-architectures и прочитайте о их архитектурах.

Задание № 10: поглядите ответы на последующие два вопросца проектирования:

URL Shortener

HTTP://blog.gainlo.co/index.php/2016/03/08/system-design-interview-question-create-tinyurl-system/

Collaborative Editor

HTTP://blog.gainlo.co/index.php/2016/03/22/system-design-interview-question-how-to-design-Гугл-docs/

Это подробные ответы, и они непревзойденно подходят для вакансий исходного уровня. Если для вас любопытно, что ожидается от наиболее опытнейших разрабов, посмотрите на этот наиболее непростой ответ на вопросец о проектировании URL Shortener — https://github.com/donnemartin/system-design-primer/blob/master/solutions/system_design/pastebin/README.md

Задание № 11: Изберите любые 2 вопросца из этого перечня заданий по проектированию (https://github.com/yangshun/tech-interview-handbook/tree/master/design #specific-topics) и письменно либо в любом редакторе текста попробуйте ответить на их, как если б вы были на реальном собеседовании. Я рекомендую для вас испытать создать это с другом либо сотрудником, чтоб вы могли помогать друг дружке.

Примечание: я советую для вас делать задания с другом либо сотрудником, поэтому что некие из этих вопросцев могут быть очень сложными, ну и сам процесс обучения весьма непрост. Совместное обучение (педагогический процесс, в результате которого учащиеся под руководством учителя овладевают знаниями, умениями и навыками) – главный принцип Microverse: у нас нет учителей и аудиторий, наши студенты распределяются в маленькие команды и занимаются совместным удаленным программированием. Как говорит шведская пословица: общая удовлетворенность — это двойная удовлетворенность, общее горе — половина горя.

Поведенческие вопросцы

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

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

Этот раздел предназначен для того, чтоб посодействовать для вас просто ответить на хоть какой из этих вопросцев.

Задание № 12: прочитайте раздел V книжки “Cracking the Coding Interview», который именуется «Поведенческие вопросцы».

Задание № 13: при помощи Гугл Docs заполните «Таблицу для подготовки к собеседованию», которая описана в книжке. Совершенно, если вы будете употреблять в главном программные проекты, но, если есть какая-либо поведенческая ситуация, которая будет показательна (проявит ваши лидерские свойства), добавьте этот непрограммный проект при заполнении таблицы.

Задание № 14: следуя методологии SAR (Ситуация, действие, Итог) и общим советам из книжки, запишите и добавьте ответы на вопросцы из книжки (т. е. «слабенькие стороны» и «поведайте о для себя»), также все вопросцы в разделе «Общие» этого перечня (https://github.com/yangshun/tech-interview-handbook/blob/master/non-technical/behavioral.md) к документу Гугл из предшествующего задания.

Поделитесь ссылкой на Гугл Docs с сотрудниками и друзьями и попросите их откомментировать и бросить отзывы к вашим ответам — постоянно полезно услышать Мировоззрение со стороны. Помните, что ваши ответы должны быть естественными!

Остальные вопросцы

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

Вопросцы, которые стоит задать

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

Задание № 15: прочитайте вопросцы из этого перечня (https://github.com/yangshun/tech-interview-handbook/blob/master/non-technical/questions-to-ask.md) и используйте их на собственных будущих собеседованиях.

Психические трюки

Вот некие остальные психические советы, которые посодействуют для вас расположить к для себя нанимателя на собеседовании — https://github.com/yangshun/tech-interview-handbook/blob/master/non-technical/psychological-tricks.md.

Советы по ведению переговоров

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

Задание № 16: прочитайте эти 10 правил ведения переговоров и возвращайтесь к ним каждый раз, когда для вас необходимо условиться о работе — https://github.com/yangshun/tech-interview-handbook/blob/master/non-technical/negotiation.md.

Обратите внимание — в 2-ух верхних ссылках данной для нас статьи — наиболее подробное описание всякого из правил.

Тренировочные собеседования

Проводить тренировочные собеседования, до этого чем перейти к настоящим, — хорошая мысль! Вы не только лишь будете более уверенно отвечать на более всераспространенные вопросцы, да и поймете, как управляться с покрыты общей оболочкой, чтоб ощущать себя на собеседовании тихо и сконцентрированно.

Вот обычная электрическая таблица, которую мы используем для проведения тренировочных собеседований в Microverse: https://docs.Гугл.com/spreadsheets/d/1t_228bDllazltWrq7WrLaKCs3dHXlGHBybWz9nnRvSc/edit #gid=2041017957.

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

Для вас необходимо отлично разбираться в том, о чем вы будете спрашивать собственного друга, потому издержите пару часиков на подготовку к тренировочному собеседованию. Используйте Гугл, чтоб отыскать среднее решение либо ответ на любой вопросец (в особенности вопросцы кодировки). Так вы можете направлять собственного напарника, пока он не отыщет верное решение.

Примечание: мы также советуем для вас испытать попрактиковаться в ответах, в особенности поведенческих, перед зеркалом либо с резиновым утенком (https://rubberduckdebugging.com/) перед тем, как проводить тренировочное собеседование.

Есть две платформы, на которых мне нравится отыскивать людей и проводить тренировочные собеседования. Может быть, вы тоже возжелаете испытать: Pramp (https://www.pramp.com/#/) и Interviewing.io (https://interviewing.io/).

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

Материал размещен юзером.
Нажмите клавишу «Написать», чтоб поделиться воззрением либо поведать о своём проекте.

Написать

Источник

0 Comments

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>