#какэтоесть
Тем не менее первый реальный отказ от живого рекрутера я получил именно из-за уровня языка, что стало для меня неожиданно болезненным, учитывая, что о том, что это сеньорская позиция, а не мидловая, я узнал только в момент отказа (в описании вакансии было все мидлового уровня).
На технических собесах первого уровня были в основном достаточно простые задачи на java core, collections и немного про многопоточку. Задача на алгоритмы у меня была ровно один раз - на собесе на позицию сеньора в ex-российскую компанию, которая “переехала” в Сербию, мы очень мило пообщались (с минитестами и минизадачами) про паттерны, техдолг, тонкости вида порядка инициализации членов класса и блоков инициализации при наследовании. Помимо этого мне дали алгоритмическую задачку, на которой нужно было придумать (!) линейный (!!) алгоритм преобразования входящего массива данных, который надо в процессе обработки ещё и отсортировать. Эту задачу я до конца не довёл, и в итоге получил фидбэк, что да, я им очень понравился, у меня сильные знания джавы и тех дизайна и вообще все хорошо, но вот я алгоритмическую задачку не решил, поэтому они не могут меня взять. На сеньорскую, я напомню, позицию. Жопа у меня горела похлеще, чем от сотрудника службы поддержки банка с “мудрым решением” заказать себе ебалаер. Больше алгоритмы у меня нигде не спрашивали. Значит ли это, что их не нужно знать? Конечно же нет, и асимптотическую сложность нужно понимать, и общее представление иметь. Различные структуры данных знать и уметь использовать тоже надо, особенно те, что присутствуют в стандартной библиотеке языка. Надо ли надрачивать алгоритмы на литкоде? Идите нахер, ex-российская компания, переехавшая в Сербию. Да, у меня горит до сих пор. Каммон, много ли времени у вас сеньоры код пишут? Да ещё и тот, где нужно придумывать собственные алгоритмы сортировки, а не подобрать готовый, зная граничные условия и требования к производительности и потреблению памяти?
Техническое собеседование второго уровня везде проходило по-разному, но чаще всего оно было так или иначе сфокусированно на system design, приправленном общими айтишными знаниями. В одной из компаний нужно было запроектировать небольшой сервис “на бумаге” - от входящих требований и расчёта трафика, через верхнеуровневую архитектуру, до решения вопросов высокой доступности и стратегии обработки ошибок. В другой компании разговор шёл итеративно. Сначала я написал функцию обмена данными между двумя сущностями, запускаемую в однопоточном режиме. Затем мы прошлись по вопросам многопоточного исполнения этого кода, блокировок, многосервисности, уровней изоляции транзакций, индексов, репликации, партиционирования, шардирования и даже CQRS! В общем этот этап самый интересный на мой взгляд :)
Team fit интервью - это про то, насколько вы подходите в команду/компанию. Обычно проводится с продукт менеджером. Цель интервью - понять ваши сильные и слабые стороны, как специалиста, как вы решаете конфликты, поговорить про сложности в предыдущих проектах и подходы к их решению. Частично пересекается с behavioral interview. Конечно, не обошлось без факапов и на этом этапе. В одной компании мне задали вопрос вида “что я делаю, если встречаюсь с большой и непонятной задачей”. Я решил задвинуть про декомпозицию задач и все, что из неё следует, и черт меня дёрнул за язык сказать, что “ну понимаете, надо есть слона по частям”. Интервью, конечно же проходило на английском. И конечно же на стрессе я перепутал слова, сказав, что “you have to eat a bear piece by piece”… Благо интервьювер попался опытный, он достаточно быстро сообразил, что я сморозил на стрессе какую-то херню, и мы переключились на следующую тему. Но этот момент, когда ты осознаешь, что, выдав про “есть медведя кусок за куском”, ты показываешь себя истинным crazy russian, запомнится мне надолго.
О том, как готовился к различным этапам, уже в следующем посте…
Post #390
2.76K
- 🔥 43
- 👍 12