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

1656594501 5 veshhej kotorye nuzhno znat na sobesedovanii po programmirovaniyu

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

Это неполный список в моей голове все время крутились вопросы.

  • «Должен я разговаривать через свой код?»
  • Как часто я должен общаться с интервьюером?
  • «Боже, я забыл создать экземпляр своей переменной! Я обречен?!
  • «Что думает интервьюер о моем ответе?»
  • «Нормально ли, если я сделаю это?»

… И список можно продолжать…

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

Вы идете на собеседование о работе своей мечты, о чем мечтали с 12 лет. И все сводится к тому, чтобы произвести впечатление на кого-то, кого вы никогда не встречали в течение 60 минут.

Борьба реальный.

fRE4M8Gp8MTRC1ooyML5iKI7LEUMnZW8g2HQ
5 вещей, которые нужно знать на собеседовании по программированию

1. Всегда думайте вперед

Часто вы услышите, как интервьюер спрашивает: «Ладно, я думаю, это выглядит хорошо. Теперь, как бы вы улучшили этот код?

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

  • качество кода
  • некоторые проблемы/узкие места, которые не были затронуты во время сессии планирования алгоритма
  • как бы вы масштабировали существующее решение.

То, что вы устранили проблему, не означает, что вы автоматически получите предложение.

К примеру, если вы посмотрите на этот фрагмент кода ниже, что он делает? Как бы вы его улучшили? Что может послужить причиной его поломки?

Дайте мне знать в комментариях ниже. Я хотел бы услышать ваши мысли.

EKduuV3oP0zm6uy6D0Emw1N-qYuaXY4iNXhJ
Код на Python для выполнения X

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

Что это означает в сеансе кодирования

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

2. Существует более одного ответа

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

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

Более того, я ищу, насколько этот человек умен, как получается решение и о каких других творческих решениях может думать этот человек.

Упражнение по программированию, чтобы проиллюстрировать мое мнение:

Объединить два отсортированных связанных списка. (Это связано с Leetcode, если вы хотите попытаться решить). В основном, вы можете решить это несколькими способами:

  1. Поместите все узлы в массив и отсортируйте его. Затем создайте указатель и свяжите каждый элемент массива вместе.
  2. Объедините их с помощью манипуляции указателем. Сравните оба, отслеживая, какие меньше, а затем верните результаты в конце.

Какие еще способы вы можете придумать?

3. ООП не мертв

Объектно-ориентированное программирование не умерло. Для некоторых людей это отношения любви и ненависти, но ценный навык. Это один из основных навыков – техника программирования, которую должен знать каждый программист.

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

Однако способность превращать сложные проблемы в более простые, управляемые фрагменты с помощью объектно-ориентированного программирования является редким и ценным навыком.

Написать код для понимания компьютерами легко. Написать код для людей сложно.

4. Сделайте свой резюме

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

QbcB5YncUosOgfCJGmgKSppqJycrZgu7DNqP
Кредиты Futurama и Imgflip.com

Ваше резюме – это ваша визитная карточка. Это первое впечатление компании о вас.

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

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

5. Общайтесь рано и общайтесь часто

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

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

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

Интервью по программированию ищет обоих тяжело и мягкие навыки. Отсутствие того или иного означает определенное нет. Для получения дополнительной информации я написал здесь более подробную статью о том, как улучшить soft skills инженера-программиста.

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

Что это означает в сеансе кодирования

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

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

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

Что это означает в сеансе кодирования

Давайте сравним эти два фрагмента кода:

Lwqu31M8Y-13NQxjiEciOdHYB75i7g4kU7Mx
Обход матрицы

По-моему, я думаю, что правая сторона выглядит гораздо чище и намного легче для понимания. Тогда я могу уделить время для реализации getNeighborsили isEmptyзависимо от того, что от меня требуют.

Здесь важно то, что абстракция помогла сохранить мой код чистым, легким для чтения и пониманием. Кто не любит есть свой торт и тоже его есть?

Почему я хочу поделиться своим опытом?

Мне чудом удалось преодолеть препятствия и найти путь к работе своей мечты. Это отнюдь не мой способ хвастаться. Это совсем не мои намерения.

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

Надеюсь, эти советы помогут другому соискателю работы! Удачи! ?

Если вам понравилась эта статья, вот еще несколько рекомендованных статей, которые я написал:

Рекомендуемые ресурсы и инструменты

  • Элементы интервью по программированию: отлично подходит для более сложных проблем с кодированием
  • Интервью с расшифровкой кода: отлично подходит для освещения основ CS
  • OneNote: я использую это для хранения всех фрагментов кода
  • Evernote: для всего остального
  • CodeRunner: Мне нравится это приложение для Mac! Я использовал это несколько раз для запуска специальных скриптов/функций Python, и это работает очень хорошо. ?
  • Jobscan: Друг управляет этой компанией. Я слышал много интересных вещей, и вы должны попробовать их для инструмента проверки резюме.
  • Refdash: управляет куча бывших сотрудников Google. Качество имитационных интервью здесь? Интервьюеры – бывшие сотрудники Google. Очень рекомендую попробовать их.
  • CodePath: некоммерческая организация, которая помогает людям подготовиться к карьере в области технологий. Натан и Тим — прекрасные люди, и я многому научился у них. Сообщество очень полезно, и каждый готов помочь.
  • Маркеры для точной точки: возьмите их на собеседование. Я очень рекомендую их!

Чжиа Чонг – инженер-программист в Twitter. Он работает в команде Ads Measurement в Сиэтле, измеряя влияние рекламы и рентабельность инвестиций для рекламодателей.

Вы можете найти его в Twitter и LinkedIn.

Добавить комментарий

Ваш адрес email не будет опубликован.