Устроиться Frontend-разработчиком в Т-Банк
Итак. Каждый раз у меня были какие-то абстрактные цели - подтянуть то ,подтянуть это ,выучить что-то и т.д. Но не было видения ,куда я с этими полученными знаниями и навыками буду двигаться и где они мне действительно помогут больше заработать.
Сейчас это видение появилось. В рамках этой цели я беру прицел на конкретную компанию ,а именно Т-Банк. Почему именно он?
- Конкурентная ЗП по рынку
- Хорошие перспективы роста и прозрачные процессы в повышении грейда
- Хорошие ежегодовые декабрьские премии (по слухам от 2 до 4 окладов)
- Опыт работы в крупном финтех секторе (галка в резюме)
- Большая библиотека внутренних курсов для повышения хард и софт-скиллов
- Самое крупное Angular-комьюнити в РФ (мощная прокачка Angular-стека)
- Возможность прокачать FrontOps и архитектурные скиллы на реальных проектах
- Присутствует офис в моем городе (после 5 лет удаленки для меня это глоток свежего воздуха)
- Есть внутренние льготные программы кредитования и ипотеки + бонусы
Основные факторы для меня:
- Возможность получать хорошую зарплату здесь и сейчас
- Возможность расти и получать еще больше
- Повышение стоимости себя как специалиста на рынке IT
- Закрепление статуса Senior-разработчика (сейчас ощущение ,что я middle с 8 лет опыта ,психологический момент)
- Надежная и перспективная компания с кучей плюшек
Совсем недавно я решил пробовать туда пособеситься. Прошел только 2 этапа из 5. Небольшие выжимки из того что спрашивали:
Этап с HR
Спрашивали о последнем опыте. О том ,какие сложные задачи решал ,какими решениями могу гордиться. Есть ли у меня на текущий момент офферы на руках (возможно положительный ответ повлиял бы на график собеседований). Чего я жду от новой компании. Над какими проектами интересно было бы поработать. Далее была секция моих вопросов. Как расти внутри компании ,как устроены последующие этапы собеседования и оценка ,какие премии есть ,какие бонусы как работнику банка и т.д.
Помимо прочего уточнили ,готов ли я к гибридному формату работы. Степень гибридности определяется уже внутри конкретной команды индивидуально. Каких-то регламентов общепринятых у них нет.
Также выяснил ,что IT ипотеку с этой компаний мне взять не удастся ,тк даже находясь в офисе своего города (регион) ,я все равно числюсь с фирме с юр. лицом в Мск ,и соответственно не попадаю под требования IT ипотеки этого года (2024).
Затем последовала техническая мини-секция из 15 самых стандартных вопросов по JS (аля чем отличается стрелочная функция от обычной и тд) ,уровня джун. Видимо чтоб заранее отсеять самых некудышных соискателей.
Этап пройден ,назначена дата следующего - по Angular и JS.
Этап по Angular/JS
Здесь были вопросы по чистому JS с большим упором на понимание асинхронности. Задачки аля - что выведется в консоль и в какой последовательности с промисами и таймерами. Был интересный момент рекурсивного вызова асинхронной функции ,проверялось понимание того ,что происходит с потоком JS в этот момент. Из этого пошли вопросы про то ,как работают очереди в JS ,про их приоритеты и влияние на очередь рендера.
Далее практическая задачка на JS ,где нужно было написать свою реализацию паттерна EventEmitter. Задача разделилась на 2 или 3 этапа ,с каждым их которых появлялись новые требования к нему. В конце вопрос - что бы я улучшил в текущим решении.
Следом начали говорить про RX ,ему достаточно много внимания было уделено. Была дана задачка в ваакуме ,где решение нужно было построить на RX потоках и операторах. Задачу сейчас к сожалению не вспомню уже ,но она была не сложная. По мере решения были теоретические вопросы про HOO и некоторые функции типа forkJoin и zip ,а так же разницу горячих и холодных потоков. Еще был вопрос про разницу между типами Subject.
По секции Angular дали код какого-то компонента ,в котором нужно было исправить ошибки и сделать его лучше. Основные ошибки были в отсутствии стратегии CD OnPush и отсутствия DI. В ходе исправления были вопросы про то ,как работают CD и DI в ангуляре. Про CD ожидали услышать про зоны и триггеры CD в стратегии OnPush. Про DI вопросы про то ,как angular ищет зависимости и какие декораторы существуют. Обсудили немного новый Control Flow API. Так же был вопрос про хуки жизненного цикла ,практически про все кроме ngDoCheck.
Этот этап был запланирован на 1.5 часа ,а по факту прошел 2.5. Полагаю ,что интервьювер пошел мне на встречу и довел секцию до конца ,иначе мог бы завершить где-то на секции по RX и не засчитать баллы за задачу по Angular. Тут вывод такой ,что нужно следить за временем и стараться рассказывать про что-то попроще.
В целом этап был пройден ,оценка была хорошая. По фидбеку предложили повторить HOO в RX и асинхронность в JS.
Следующий этап - алгоритмы
Этап по алгоритмам
На этот этап выделяется 1ч. За это время нужно решить 2 задачи. Первую дают легкую ,вторую посложнее.
Мне в качестве первой попалась задача ,где нужно было найти симметрическую разницу между двумя отсортированными массивами чисел и вернуть эту разницу в виде массива отсортированных чисел.
Вначале я убедился в том ,что правильно понял условия задачи и начал размышлять. Вначале писал псевдокод ,в котором пытался выразить свой алгоритм. Но идей особо не было. Единственное за что я зацепился - это что можно среди 2 массивов отбросить концы ,в которых некоторый ряд чисел точно не встречается в другом. Здесь можно просто сравнить индексы нулевых и последних элементов и двигать указатели с начала и конца. В целом на базе этого решения и строится само решение ,но я не допер сразу ,как его применить на оба массива целиком и сразу. Интервьювер навел на мысль ,что указатели можно использовать не только для концов массивов ,но и в целом для одновременного обхода обоих в рамках одного цикла. Здесь была получена первая подсказка ,за которую ,я думаю ,мне сняли балл.
Разобравшись с алгоритмом ,суть которого заключалась в сдвиге указателей в обоих массивах и поиска чисел <= i из противоположного массива ,я приступил к написанию кода. В реализации было много ошибок. На одну ключевую ошибку интервьювер мне указал сразу перед запуском кода ,где я неверно написал условие для выхода из цикла. К этому моменту время собеседования подходило к концу. Мы запустили код и все равно попали в бесконечный цикл. Я понимал ,что проблема была в логике инкрементов указателей ,но никак не мог найти ,где конкретно. Казалось ошибка была в if else ,где я не учел ,что else в случае условия (a > b) означает обратное условие (a <= b) ,где кейс с = как раз мне все портил. Но исправив эту ошибку ,я вышел за лимит по времени работы алгоритма. То есть где-то была все равно ошибка ,которая заставила цикл произвести кучу лишних итераций. В общем на этом собеседования было закончено. Общее время было 1.15 минут ,и была решена только одна задача ,с кодом ,который не прошел тесты (но с правильным алгоритмом).
Конец
Следующий этап по System Design не назначается ,тк меня забраковали на этапе по алгоритмам ,несмотря на то ,что секция по Angular/JS была пройдена хорошо. Из чего можно сделать вывод ,что алгоритмам там уделяют серьезное внимание. Я не знаю точно порога прохода этого этапа ,но кажется ,что это минимум 1 задача решенная без подсказок и с работающим кодом. И возможно часть решенной второй или хотя бы выражение мысли по поводу реализации.
---------------------
Однако это в любом случае положительный опыт. Я понял ,где у меня проблемы в JS и что прорешать несколько задачек на leetcode недостаточно ,чтоб пройти секцию по алгоритмам ,не смотря на то ,что задачки там позиционируются как легкие. Мне нужно очень хорошо подтянуть знания и навыки по алгоритмам ,чтобы в будущем пройти эту часть.
В этой компании после провального собеседования можно попробовать свои силы снова спустя пол года. Поэтому срок этой цели соответствующий. К маю следующего года я должен быть готов на 100% ко всем секциями этих собеседований.
Обидно ,что не дошел до секции System Design и так и не узнал ,какие вопросы могут на ней встретиться. Но есть примерное представление и материалы для подготовки.
По каждому этапу собеседований я заведу отдельную техническую цель ,где буду вести дневник подготовки.
Критерий завершения
Оффер 350+ на руках
Личные ресурсы
Время!
-
Этап с HR пройден
-
Этап по JS/Angular пройден
Отдельная цель по JavaScript для подготовки прохождения этапа по JS/Angular
-
План Б - этап JS/React пройден
-
Этап по алгоритмам пройден
Отдельная цель по этому этапу для подготовки прохождения этапа по алгоритмам.
Стоимость этапа — 85000 ₽
-
Этап по System Design пройден
Отдельная цель по этому этапу для подготовки прохождения этапа по System Design
Стоимость этапа — 85000 ₽
-
Этап знакомства с командами пройден
-
Мэтч с командой случился
-
Договоренность по ЗП достигнута
-
Оффер получен
- 235
- 22 октября 2024, 12:29
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением