Независимо от того, программируете ли вы с тех пор, как ваши пижамы были на ногах, или вы стоите на пороге своей первой послешкольной охоты на работу, техническое собеседование может стать ужасным препятствием между вами и работой вашей мечты.
Но не бойтесь - просто будьте готовы продемонстрировать свои навыки. Ниже вы найдете несколько советов, которые помогут вам в любом техническом собеседовании.
Перед интервью
Получить книгу
Как можно раньше, до вашего собеседования (хотя я справился всего за две недели), начните готовиться. Работа с подготовительной книгой не только освежит ваши знания об алгоритмах и структурах данных, но и вернет вам подход к решению проблем.
Самое главное, выбрать правильную подготовительную книгу для вашего уровня и интересов. Взлом собеседования по кодированию - это отличный ресурс, но если вы еще не достаточно опытный программист, он не восполнит опыт. Если вы только начинаете, есть другие книги, из которых вы получите больше пробега, такие как « Программируемые интервью»: «Секреты получения вашей следующей работы» . И есть много более специализированных и продвинутых книг для тех, у кого больше опыта.
Практика делает совершенным
Мало что побеждает панику, как это делает практика, поэтому начинайте доску, когда это возможно, даже очень маленькие проблемы. Кодовые книги интервью предлагают почти бесконечные типовые проблемы, но вы также можете использовать проблемы, над которыми вы уже работаете. Задайте себе проблему (или попросите технически настроенного друга изложить ее вам для более реалистичной настройки), наметьте вашу стратегию и поместите маркер на доску для стирания. Чем удобнее вы будете отмечать эту пустую доску дома, тем меньше будете колебаться на собеседовании.
Если у вас мало времени и вы хотите быстро преодолеть трудности, вы можете добавить давления, которого не будет на самом собеседовании. Если вы дадите себе ограничение по времени или попросите кого-то, кого вы уважаете, играть роль интервьюера, реальная сделка будет выглядеть как кусок пирога.
Не перегружай себя
Когда вы планируете интервью, не забудьте оставить между ними хотя бы пару часов. Это звучит как проблема первого мира, но каждый раз, когда у меня было несколько интервью в день, я не выступал так хорошо, как мог. Я либо беспокоился о том, чтобы добраться до следующего вовремя, либо я уже исчерпал свою логику за несколько часов до этого.
Ох, и поспи немного. Это звучит так, как сказала бы твоя мама, но есть несколько вещей, которые отбросят тебя из игры, как лишение сна. Это сравнимо с появлением пьяного.
В интервью
Быть готовым ко всему
Как только вы дойдете до собеседования, вы должны быть готовы к нескольким видам решения проблем. Ваши интервьюеры могут попросить вас рассказать о том, как вы решите проблему, они могут открыть компьютер и попросить вас помочь им в создании кода, или они могут попросить вас написать код самостоятельно на доске. Будьте готовы к изменениям и не запутайтесь в деталях! Независимо от того, какой метод используют ваши интервьюеры, они проверяют ваши навыки решения проблем.
Задавать вопросы
Когда вы столкнетесь с проблемой, продумайте ее и убедитесь, что вы полностью понимаете, что вас просят вернуть. Не бойтесь задавать вопросы заранее, если что-то неясно. Например, если есть крайние случаи, спросите, как ваши интервьюеры хотят, чтобы с ними обращались. Вы должны бросить исключение? Перерыв?
Также обязательно задавайте процедурные вопросы, чтобы понять, что ищут интервьюеры и каковы ваши ограничения - например, «Есть ли конкретный язык, на котором вы хотели бы, чтобы я дал вам свое решение?» Или «Могу ли я предположить, что у меня есть доступ? в любую библиотеку Python?
И не делайте предположений. Даже если вы уверены, что это безопасно, громко упомяните, о чем вы думаете, чтобы интервьюеры сообщили вам, если что-то упустили.
Не торопитесь
Как только вы поймете вопрос, который вам задают, не бойтесь потратить минуту на обдумывание и обработку, прежде чем приступить к решению проблемы. Пока вы не сталкиваетесь с быстрыми, основанными на знаниях вопросами, пауза после того, как вам задают вопрос, это хорошая вещь. Конечно, убедитесь, что вы не потратите 10 минут, чтобы решить это, не сказав ни слова! Смысл в том, чтобы использовать свое время заранее, чтобы структурировать свой подход, а не пытаться написать весь код в своей голове, прежде чем прикоснуться маркером к доске.
Подумай большую картину
Сначала подумайте об общей картине проблемы. Хорошо псевдокодировать всю структуру, если вы говорите интервьюерам, что вы делаете, и что вы намереваетесь вернуться и на самом деле закодировать это позже. Это хороший способ снять проблему, чтобы у вашего мозга было больше возможностей для обработки. Это также поможет, если у вас не хватит времени в конце; интервьюеры, по крайней мере, узнают, как вы планировали завершить задание, даже если вы не дошли до деталей.
Кроме того, сначала не беспокойтесь о том, чтобы найти наиболее эффективный способ решения проблемы, если только он не возникнет у вас в голове. Прибейте менее эффективное решение, а затем обсудите, почему оно не идеально. Затем, если у вас есть время или вы найдете лучший способ его решения, перейдите к более дружественному времени или пространственному алгоритму. Даже если у вас есть время, чтобы закончить свою менее эффективную версию, а затем объяснить, как вы это сделаете лучше, это неплохой ответ.
Talk Out
Самое главное: поговорить. Приведите ваших интервьюеров вместе с вами в решении ваших проблем. Это может быть так же просто, как изложить, что вы собираетесь делать, когда вы это делаете («Итак, мне понадобится цикл for для итерации по всем пунктам в этом списке») или поставить проблемы себе, как вы go («Это означает, что мне нужен лучший способ доступа к информации; хм, я вернусь к этому позже»).
Обсуждение вашего мыслительного процесса дает вашим интервьюерам представление о том, как вы думаете, и в этом суть интервью. Даже если вы думаете, что ваше решение удивительно, им лучше знать, как вы подошли к проблеме и получили свой ответ, чем видеть полноценный ответ и не иметь представления о том, что привело вас туда. Это также дает интервьюерам возможность помочь вам, если вы застряли или идете по пути, который зашел в тупик.
Принесите свои навыки людей тоже
То, что ты идешь на инженерную работу, не означает, что ты можешь расслабиться и быть ответственным. Я слышал ужасные истории о фантастических программистах, которые не были наняты, потому что они не подходили культуре или имели плохое отношение. Я уверен, что у вас тоже. Не будь таким человеком.
Любопытство и энтузиазм ценятся в любом сотруднике, и разработчики ничем не отличаются. Спросите об инженерной команде компании, ее стеке и самых сложных проблемах, которые он решает для продукта. Конечно, есть тонкая грань между энтузиазмом и шутом, так что держите это искренне, но каждый любит кандидата, который интересуется продуктом, над которым он или она будет работать.
Узнать что-то новое
Наконец, одна вещь, которую респонденты чаще всего упускают, это возможность обучения. Надеюсь, вы узнаете что-то новое в каждом интервью - вы приобретете новую идею или новый инструмент, или получите представление об интересных продуктах и технологиях. Чем больше вы будете думать о своих собеседованиях, тем ценнее будет время в долгосрочной перспективе.