Эй, Хаброжитель, приветствую тебя! Буду признателен ко всем твоим фидбэкам.
Небольшая предыстория
В 2019 году увлёкся iOS-разработкой и решил попробовать попасть на курс от Mail.ru в их Технопроект с нашим ВУЗом. Закончил данный курс с отличием. Огромное спасибо Диме и Гена за отличный курс. После этого курса начал активно посещать митапы iOS-разработчиков. Летом особо не прогал под iOS. Осенью все же надумал найти работу в этой сфере и развиваться дальше. Решил начать с небольших компаний, поэтому нагуглил топ-100 аутсорс компаний по разработке приложений. Написал всем компаниям, которые находились в Москве.
Из приблизительно 70 компаний ответили около 15 и где-то 3-4 пригласили на интервью.
Первое интервью как и полагалось завалил, ибо не знал, что там будет и как готовиться. На втором интервью выдали тестовое задание, не сложное, но т.к. особого опыта не было, больше времени убил на то, чтобы разобраться как это реализовать и к дедлайну не успел написать полностью рабочий код. Огромное спасибо ребят, с которыми было первое интервью, потому что они скинули материалы и список теоретических вопросов, которые нужно знать. На третьем собесе ребята сказали, что у них сейчас нет возможности, т.к. им срочно нужно закончить проект и что они готовы взять где-то через месяц, если захочу или же не найду другую работу.
В это время нашел курс по iOS-разработке от Яндекса и прошел его.
Собеседования в Яндексе
В начале декабря был на митапе в Яндексе для джунов. Всем гостям раздали QR-коды для прохождения первого алгоритмического собеса. Там было 3 задачи на 2 часа без перерыва.
Задачи:
- Вводится n и нужно посчитать сумму всех чисел от 1 до n < 1000000, где цифры не встречаются более одного раза.
- Есть доска M x N (2<M,N<1000000) есть белая и черная лошадь. На входе начальная точка черной и белой лошади. Нужно совершить минимальное кол-во ходов, чтобы они оказались в одной точке и вывести это кол-во.
- Вводиться 2 числа N-кол-во чисел в массиве и M-сумма подмассива. Нужно найти подмассив с минимальным кол-во чисел, сумма которой равнялась M, в противно случае нужно вывести что-то другое (не помню).
Есть ограничения по времени и по памяти.
Пока ждал результаты получил оффер в другую компанию, попросил у них неделю на обдумывание, и в последний день этой недели получил письмо от Яндекса. В письме говорилось, что успешно прошел первый этап и приглашают на второй собес. К большому сожалению, не уточнили какая секция будет алгоритмическая или платформенная. Т.к. поверил в свои силы решил отказаться от оффера и приостановить все другие собесы и отдаться на подготовку и прохождения в Яндекс. Достал книжку cracking coding interview, из которой решал задачки в ноябре и стал прорешивать все задачи без ноута на листочке, и забил на универ, чтобы успеть за эту недели. Не хватило времени на все задачи, а последний день перед интервью поботал платформенную часть.
Второе собеседование: В начале собеса сказали, что сейчас будет алгоритмическая секция. Интервью проводил Валера из команды Диска. Собес был суперским, очень понравилось.
Задачи: Сначала поговорили обо всем о чем можно было бы пообщаться на эту тему (Чем отличаются статические языки от динамических?, пару вопрос про каждый тип языков, классы, структуры, стек, куча, массив, список, хеш-таблица, очереди, деревья, графы, про сложности алгоритма, и т.д.). Потом перешли на решение задач.
- Есть пять человек: Т, М, А, Л, Д. Они стоят в очереди за магической колой, т.е. тот, кто выпивает его удваивается. На входе n номер следующего, кто должен выпить колу. Нужно найти того, кто будет n-ным.
Идея решенияЛучшее решение это hashmap, сам решил через арифметику, т.е. вывел формулу, которая посчитала бы это. //Рассказал всю идею того, как решал бы, потом дал оценку по времени и по памяти, а когда начал писать код, то интервьюер сказал, что он все понял и что код я ему точно напишу так, что давай перейдём к следущей задаче, т.к. у нас осталось чуть больше 20 минут
- Есть бинарное дерево поиска. Нужно найти сумму элементов лежащих в сегменте от L до R. Функция на вход получает корневой элемент, левую и правую границу. Тогда уточнил и узнал, что элементы не повторяются и границы включены.
Идея решенияДелал через рекурсию. (можно через цикл, но рекурсия проще), опять же сложность алгоритма и т.д.
Где-то ближе к новому году получил письмо об успешном прохождении данного этапа. В 20х числах января связался с HR-ом она сказала, что осталось последнее собеседование (платформенная секция) и назначили дату на следущий день после последнего экзамена. В новогодние праздники и во время сессии готовился еще к собесу. Одним словом было сложно готовится и к экзамена, и к собесу.
Пришел на собес, его проводил Слава из Браузера. Немного пообщались об алгоритмической секции. Дальше он попросил написать схематично код, который реализовывал бы работу многопоточности. Так как до это особо не приходилось работать с многопоточностью, то за счет неожиданности попал в ступор минут на 20-30, просто не думал, что придется писать код. По теории отвечал не плохо, но были проблемы с реализацией. При всем при этом собес очень понравился. Мы не успели реализовать то, что он просил, поэтому Слава предложил дорешать, и нам пришлось сделать это в коридоре, потом немного пообщались. Это было суперски, потому что некоторые ребята ориентируются строго по времени. Через недели две написали, что провалил собес. Было очень обидно т.к. готовился и очень-очень сильно хотел попасть.
Огромный минус собеседований в Яндексе заключается в том, что им неважно попадешь ли ты к ним или нет. Из-за чего они часто игнорят тебя или забывают написать письмо с результатом/(о назначении) собеседования и тебе самому приходится постоянно писать/звонить, чтобы что-то узнать.
Собеседование в МегаФоне
Самое лайтовое и немного не понятное собеседование из всех, что приходилось проходить в крупных компаниях. Собес длился где-то минут 20-30. Пообщались о том, что умею, чем увлекаюсь, какие оценки получаю в универе и т.д. Не было ни одного вопроса по платформе и алгоритмам. Этот собес, скорее всего, тоже не прошел, ибо никакой информации не получил.
Потом общался со многими, компаниями, но из-за того, что нет коммерческого опыта большинство компании теряли интерес и не приглашали на интервью. Наконец-то, где-то в 20х числах марта некоторые компании назначили собес, но потом из-за сложившейся ситуации с самоизоляцией пришлось их приостановить на неопределенное время.
Самоизоляция говорит: «Нет очным собеседованиям!»
Собеседование в Сбербанк
Было два телефонных интервью, где рассказывал о своих интересах, о том почему решил попробовать попасть в Сбербанк, пару теоретических вопросов связанных с iOS и в общем о программировании. Первое и второе интервью прошел, назначили дату для прохождения очного (последнего этапа) собеса, который из-за режима самоизоляции провели по скайпу. Отлично провели собес со Славой, просто пообщались полностью по платформенной части. Через пару дней пришло письмо о том, что успешно прошел собес, но в данной команде нет месте, поэтому предложат кандидатуру в другую команду. Через 2-3 дня пришло еще одно письмо о том, что набор на стажировку у них закрылся.
Собеседование в ВТБ
Проходил его параллельно с собесом в Сбербанк. Первое интервью было по телефону, потом был небольшой «тест», где нужно было ответить на пару вопросов связанных об опыте и знаниях в программировании и т.д. Потом было еще одно телефонное интервью. Далее был тест из 6 блоков на час.
Прошел их успешно, потом провели заключительный этап собеседования с Мишей. Т.к. сказали, что будет просто платформенная часть и вряд ли будет что-то еще, то особо не готовился. На интервью общались с Мишей об алгоритмах, о структурах, о сети, о многопоточности и т.д. Интервью проходило больше часа, но было очень интересно и классно.
Где-то через неделю позвонили и поздравили с успешным прохождением отбора на стажировку.
На днях подписал договор и получил пропуск и технику. Стажировка должна была пройти в офисе, но в поседений момент все же, к огромному сожалению, перевели на удаленку.
Заключение
Параллельно проходил курс по iOS-разработке на CoursEra, но из-за того, что сейчас началась сессия и стажировка, пришлось приостановить активность на CoursEra.
Советы, которые могут помочь при поиске первой работы в IT
- Нужно хорошо разбираться в теории, ибо научиться кодить не сложно.
- Откликайтесь на вакансии middle/senior, т.к. найти вакансию intern/junior почти невозможно найти.
- Если есть возможность попасть на собеседование, то идите, потому что это поможет вам поднять ваши скилы. (Даже если мало что знаете)
- Изучите компанию, в которой будете проходить собеседование и покажите интервьюеру свою заинтересованность работать у них.
- Обязательно спрашивайте о том, что вас лично интересует и что хотели бы узнать о рабочем процессе.
- Когда чего-то не знаете или не помните, то задавайте уточняющие вопросы, они вам помогут. Если не смогли вспомнить, то просто скажите об это.
- Думайте открыто, ведь интервьюер больше смотрит на то, как вы думаете и как ищете выход при сложившихся ситуациях. Если вы просто скажете ответ, то это ни о чем не говорит. Когда вы открыто рассуждаете, то интервьюер видит где вы ошиблись и помогает вам, задавая наводящие вопросы.
- Прежде чем пойти на собеседование отрепетируйте его. Задавайте себе всякие вопросы связанные с тем, что должно быть и постарайтесь внятно ответить на них.
Совет компаниям
Когда вы проводите собеседования у стажеров/джунов, то давайте им какие-нибудь ссылки, где как минимум есть темы, в которых начинающий разработчик и не только должен хорошо разбирать. Из своего опыт скажу, что мне очень сильно помогли материалы, скинуты ребятами у которых было самое первое интервью. Там были только не расписанные темы, которые являются основами и ребята сказали в какой последовательность лучше изучить их.
Если будут желающие, то сделаю еще пост с самыми популярными и важными вопросами + ответы и материалы к ним.
Автор: Shamil