Как стать автором
Обновить
getmatch
Рассказываем о том, как строить карьеру в IT

[Карьера в IT] Практические примеры и полезные ссылки: готовимся к каждому этапу технического собеседования

Время на прочтение5 мин
Количество просмотров22K

В прошлом материале нашей серии «Карьера в IT» мы рассказывали, как пройти собеседование на софт-скилы. В этом перейдем к более конкретным и техническим пунктам собеседования — алгоритмическим задачам, платформенной секции и проектированию систем. Расскажем об этих секциях в общем, не сосредотачиваясь на одной технологии, дадим полезные практические советы и ссылки, которые помогут в подготовке.

Алгоритмические задачи

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

Вам нужно:

  • Освоить основные структуры данных.

  • Уметь быстро оценить асимптотическую сложность алгоритма.

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

Для подготовки с нуля можно действовать по следующей схеме:

  1. Посмотреть на ютубе видео HackerRank `Cracking the Coding Interview` Series или Tushar Roy.

  2. Решать задачи на LeetCode.

  3. Разбирать решенные задачи на GeeksforGeeks.

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

На Leetcode можно купить платный тариф и выбирать задачки от конкретной компании, например, Amazon. Это поможет, если собеседуетесь в известную зарубежную фирму. Кстати, у нас в боте много вакансий, в том числе в такие компании, с удаленкой и релокейтом.

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

От числа прорешанных алгоритмических задач сильно зависит процент успеха на алгоритмической секции.

Писать лучше всего на том языке, который вы хорошо знаете. Но пусть он будет достаточно популярным — например, лучше выбрать не Kotlin или Scala, а их прародителя Java. Стандартом считается C++, Python, Java и C# — лучше тренировать алгоритмическое собеседование именно на них.

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

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

Платформенная секция

Язык и среда. Нужно знать основные особенности языка, под который вы разрабатываете. Говорить про ООП и ФРП, управлять переменными, работать со структурами данных, потоками и распределенными вычислениями, управлять памятью. И знать тонкости — чем их больше, тем легче на стартапных собеседованиях, где любят спрашивать странные вещи. Например, могут спросить — «есть переменные а и b, мы переменной a присвоили значение b, потом b поменяли — что будет?». Нужно знать, как ответить в зависимости от языка.

Платформа. Фреймворк, на котором мы разрабатываем: Android, Java-машина в целом, все что угодно. Frontend, библиотеки вокруг него, умение работать с UI и расширениями. Фишки последних версий ОС, окружение библиотек — все, что пригодится в работе. Допустим, если вы Android-разработчик, но застряли в старом Android из-за работы с кассовыми терминалами, неплохо заглянуть в новости и послушать подкасты о том, что в новом Android происходит.

Здорово будет знать модные фреймворки и библиотеки. Понимать, как работать с потоками и реактивностью, зависимостями, хранением данных. Как происходит deploy и взаимодействие с БД. Например, у мобильного разработчика могут спросить, в каком случае имеет смысл внедрять Realm  NewSQL — базу данных с возможностью кеширования в сеть, а не только на девайс. И вы должны иметь четкий ответ.

Архитектура приложения. Как задизайнить API и продемонстрировать работу той или иной фичи, обеспечить надежность, масштабируемость и тестируемость. Часто просят задизайнить какой-нибудь модуль чата, и обязательно спросят про общение с бэкендом. Или могут дать задачу смоделировать модуль аналитики: нарисовать блоки и показать навыки проектирования.

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

Как лучше готовиться

Проектирование систем

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

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

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

Из интересного нужно знать:

Вот еще парочка полезных ссылок по этой секции интервью:

Как облегчить подготовку

Теперь еще несколько простых советов, которые кажутся очевидными, но могут помочь:

  • Найдите единомышленников и учитесь с ними вместе: решайте задачки, обменивайтесь ссылками, общайтесь по теме, делитесь результатами собеседований.

  • Сформируйте план изучения материалов и поставьте самому себе дедлайны — они очень мотивируют. Можно завести трекер прогресса, с ним вы будете наглядно видеть свои достижения.

  • Награждайте себя за старания. Не забывайте, что возможность устроиться на работу мечты — абстрактная мотивация, а мозг хочет чего-то более конкретного.

  • Непосредственно перед собеседованием не нагружайте себя — отдохните, перезагрузитесь и идите туда со свежей головой.

  • Выписывайте вопросы из прошлых интервью и используйте их во время подготовки.

  • Помните, что не все советы работают. Экспериментируйте, и если вам что-то не подходит — не делайте этого.

Полезные ссылки

Теги:
Хабы:
Всего голосов 15: ↑13 и ↓2+11
Комментарии2

Публикации

Информация

Сайт
getmatch.ru
Дата регистрации
Численность
51–100 человек
Местоположение
Россия