В общем, была задача на оптимизацию плана работ: есть набор заказов, и в каждом N тасков. Таски могут зависеть друг от друга или нет, имеют длительность и тип. Ещё есть M работников, каждый из которых может выполнять таски только определённых типов, причём, у каждого своя скорость.
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
Если все таски в заказе выполнены, фирма получает сколько-то денег. У заказа есть дедлайн, за просрочку штраф (за каждый день просрочки), который вычитается из цены заказа. И ещё фирма тратит деньги за каждый день своей работы независимо от того, как загружены её сотрудники (то есть просто платит зарплаты по сути). Ещё важен учёт праздников и выходных.
Нужно заработать на определённом наборе заказов и работников как можно больше денег. Полный текст задачи и код программы проверки есть в репозитории. Эта задача является изменённым заказом, который мы с напарником решали в реальной жизни: оптимизация работы печатных станков для типографии. Правда, тогда и мы справились так себе, и заказчик в итоге сначала захотел всё вручную сам делать, а потом и вовсе похоронил проект при смене директора.
!!! Не читайте дальше, если хотите сначала попробовать решить самостоятельно, потому что я сейчас опишу эффективные подходы и результаты.
________________________________________
Так вот. Мы с другим экспертом Андреем сразу сели и написали разные варианты, чтобы задать шкалу, по которой будем оценивать решения команд. За пару часов я собрал примитивный жадный алгоритм, который сортировал заказы по прибыльности и укладывал в сетку кое-как, это дало нам нижнюю оценку. Мой алгоритм заработал ~75 млн виртуальных рублей, мы решили для оценки поставить нижней границей 40 млн. То есть всё, что ещё ниже, оценивалось в ноль баллов за качество оптимизации.
Затем Андрей закрылся дома на три дня и вышел на свет со сложным жадным алгоритмом, который очень хитро сортировал заказы и очень хитро укладывал их в сетку, попутно выбирая разные способы этой укладки в зависимости от конкретного заказа. Это позволило заработать ~275 млн рублей. Мы сделали верхней границей для оценки 280 млн.
К сожалению, в итоге только две команды из десяти прошли нижнюю границу, заработав, соответственно, ~91 и ~105 млн. К верхней границе не приблизился никто. И у четырёх команд алгоритм вообще не смог уложить без нарушений задачи в сетку (то есть, например, произвольно менял длительности, накладывал задачи друг на друга, давал одному работнику две задачи в один момент и так далее). Важной ошибкой команд, на мой взгляд, являлся тот факт, что никто не воспользовался возможностью запустить алгоритм на несколько минут и дать ему поработать. По условиям задания, можно было тянуть до 5 минут на одну оптимизацию, но по факту решения команд отрабатывали за единицы и десятки секунд.
На самом конкурсе, пока команды работали, я решил попробовать сделать быстрое (по времени написания) но эффективное решение. Сначала попробовал жадную сортировку + доведение до лучшего варианта методом имитации отжига. В качестве нового состояния я просто менял местами заказы целиком. Этот вариант работал пару минут и дал мне около ~200 млн дохода. К слову, команда-лидер использовала такой же подход, просто не докрутила число итераций и температуру.
Ну и потом я взял готовую либу по реализации классической генетики с особями и скрещиванием. Особью был массив с приоритетами заказов (которые конечно же нужно было аккуратно уложить чистым алгоритмом). Тип скрещивания: scattered. Всего 15 поколений по 20 особей, и это за минуту-полторы давало ~230-240 млн. Считаю, что для конкурса это самый лучший выбор: пишется одним человеком за день и даёт почти максимум, при этом легко настраивается на нужную длительность работы, легко параллелится.
Ну а потом уже дома я посидел и накодил свой вариант сложного жадного с плавающим окном перебора отсортированных заказов и плавающей же укладкой по работникам. Такая штука за две минуты зарабатывает ~281 млн. Но за три дня в условиях стресса я бы такое не сделал, скорее всего.
#dev
🔥8👍2
Нейросеть очень не любит соблюдать DRY, поэтому её частенько нужно заставлять отдельной командой обернуть повторяющуюся логику в методы, вынести константы в конфиги итд.
Но вот еще забавная вещь. Я тут делаю софт для чтения данных по ModbusRTU, и кодом на питоне эмулирую устройство, чтобы читать его потом кодом на сишарпе. У устройства есть 16-битные регистры. Если нужно записать int32 или float, используются два последовательных регистра.
В общем, пишу в эмулятор, а при чтении какая-то чушь, все числа другие. Поменял порядок байт, всё равно чушь. Несколько часов отладки. Описываю нейросети проблему, она всякое пытается сделать, и нифига. В основном тоже байты местами меняет, то туда, то обратно. Нет результата.
Потом я вычитал сразу пару десятков регистров подряд и вижу, что они смещены на единицу. Проверил: и правда, в эмуляторе пишешь в регистр 2277, а при чтении это число в регистре 2278. Проверил внешней программой: ошибка именно в эмуляторе, читается правильно.
Лезу в гитхаб той питоновой библиотеки, которую нейросеть предложила. Нахожу старый закрытый issue с такой же жалобой, а там в ответ: "as intended due to historical reasons...".
Сетка даже предположить не могла, что кожаные мешки просто хрень сделали. Даже не смотрела в эту сторону, с её точки зрения библиотека должна была работать без ошибок. Так что пока нейронки не могут, так сказать, думать за пределами коробки, а мы можем.
Но когда-нибудь научатся, конечно.
#dev
Но вот еще забавная вещь. Я тут делаю софт для чтения данных по ModbusRTU, и кодом на питоне эмулирую устройство, чтобы читать его потом кодом на сишарпе. У устройства есть 16-битные регистры. Если нужно записать int32 или float, используются два последовательных регистра.
В общем, пишу в эмулятор, а при чтении какая-то чушь, все числа другие. Поменял порядок байт, всё равно чушь. Несколько часов отладки. Описываю нейросети проблему, она всякое пытается сделать, и нифига. В основном тоже байты местами меняет, то туда, то обратно. Нет результата.
Потом я вычитал сразу пару десятков регистров подряд и вижу, что они смещены на единицу. Проверил: и правда, в эмуляторе пишешь в регистр 2277, а при чтении это число в регистре 2278. Проверил внешней программой: ошибка именно в эмуляторе, читается правильно.
Лезу в гитхаб той питоновой библиотеки, которую нейросеть предложила. Нахожу старый закрытый issue с такой же жалобой, а там в ответ: "as intended due to historical reasons...".
Сетка даже предположить не могла, что кожаные мешки просто хрень сделали. Даже не смотрела в эту сторону, с её точки зрения библиотека должна была работать без ошибок. Так что пока нейронки не могут, так сказать, думать за пределами коробки, а мы можем.
Но когда-нибудь научатся, конечно.
#dev
👍9😁1
И так, Ozon Tech. #interview #dev
Наверное, первая крупная организация, которая приходит на ум, когда думаешь о работе для C#-программиста. В Озоне и правда очень много всего на шарпе. У нас туда уходили разработчики из дирекции, но и обратный случай был (когда разработчик перешёл в АСЭ из Озона). Так что у меня была одной из первых, куда я подался. Но подавался через знакомства. Хотя, я думаю, что и при обычном отклике по общим каналам мне бы написали. Эйчар отвечала быстро и охотно, но скрининг был скорее номинальным, просто по ключевым технологиям: .NET, PostgreSQL, Kafka итд.
А теперь важный дисклеймер: это первый раз в жизни, когда я пошёл на собеседование, как соискатель. И вообще, резюме я оформил вот только в мае этого года. До АСЭ я много лет работал на аутсорсе, а в АСЭ устроился по приглашению после хакатона, собеседования не было. Так что уже тимлидом я проводил собеседования, но сам их не проходил.
К сожалению, навык прохождения собеседований соотносится с настоящим умением работать программистом очень ортогонально. Я распишу своё мнение по современным процессам найма как-нибудь потом, но достаточно сказать, что для подготовки я в течение двух недель читал книжки и общался с DeepSeek, и без этой подготовки я бы собеседования нигде не прошёл. Хотя, разумеется, двухнедельное чтение книжек не сделали меня ни на йоту лучшим разработчиком, не добавили мне опыта и умений.
После первичного скрининга в Озоне три секции: технический скрининг, большая техническая секция и system design с небольшим фитом в конце (фит это общение с руководителем на предмет того, совпадаете ли вы).
Технический скрининг
Чисто разговорная секция на 40-50 минут. Интервьюер один. Задаёт вопросы общего плана по языку, структурам данных, многопоточности. Ничего неожиданного нет. Я шёл на ведущего разработчика C# (это тимлид), так что нужно быть готовым рассказывать про поколения сборщика мусора и особенности работы IO-bound операций в асинхронном контексте. Секция сугубо академически-теоретическая. Кроме языка была пара вопросов по энтерпрайз-архитектуре и по базам данных, но без копания вглубь.
С моей точки зрения для скрининга всё равно секция чрезмерно подробная, и позже на большой технической секции часть тем повторилась.
Большая техническая секция
Два интервьюера, два часа. Задачи по коду, но не на алгоритмы, а скорее на решение конкретных кейсов. Например, нужно параллельно читать из кэша и из БД (если в кэше нет), как это написать максимально эффективно. Дан шаблон, который нужно заполнить. Параллельно задавали вопросы по теории.
Одна задача по SQL (я решил только с подсказкой). Вообще с чистым SQL в современном энтерпрайзе работают мало и редко. Когда дошли до этой задачи, я честно сказал собеседующим: «В реальной работе, получив такую задачу, я бы изучил документацию по средствам СУБД, которые позволили бы мне её решить, и погонял бы тестовые запросы на предмет правильности и оптимальности». По моим ощущениям, им этот ответ не понравился, и в целом мне показалось, что оценили мои навыки в этой части низко.
И в конце кусочек код-ревью. Когда я сам проводил собеседования, это была моя любимая часть, потому что наш пример кода на ревью содержал сразу большой пласт разнообразных проблем: инъекции, ошибки асинхронности, освобождение неуправляемых ресурсов, безопасность итд. Сразу было видно, с чем человек часто сталкивался, а с чем редко.
Здесь на ревью я стал давать комментарии по кодстайлу, за которым, как тимлид, тоже регулярно следил. Но меня попросили сосредоточиться на проблемах другого рода, и по сути весь код крутился вокруг неверного использования
Понижение должности
Через пару дней эйчар написала, что на ведущего разработчика (тимлида) они не готовы меня рассмотреть, но готовы на старшего (сеньора). Запомните этот момент. Я согласился. На мой вопрос о том, ниже ли вилка, она ответить не смогла, и сказала, что обсуждать нужно с руководителем.
Наверное, первая крупная организация, которая приходит на ум, когда думаешь о работе для C#-программиста. В Озоне и правда очень много всего на шарпе. У нас туда уходили разработчики из дирекции, но и обратный случай был (когда разработчик перешёл в АСЭ из Озона). Так что у меня была одной из первых, куда я подался. Но подавался через знакомства. Хотя, я думаю, что и при обычном отклике по общим каналам мне бы написали. Эйчар отвечала быстро и охотно, но скрининг был скорее номинальным, просто по ключевым технологиям: .NET, PostgreSQL, Kafka итд.
А теперь важный дисклеймер: это первый раз в жизни, когда я пошёл на собеседование, как соискатель. И вообще, резюме я оформил вот только в мае этого года. До АСЭ я много лет работал на аутсорсе, а в АСЭ устроился по приглашению после хакатона, собеседования не было. Так что уже тимлидом я проводил собеседования, но сам их не проходил.
К сожалению, навык прохождения собеседований соотносится с настоящим умением работать программистом очень ортогонально. Я распишу своё мнение по современным процессам найма как-нибудь потом, но достаточно сказать, что для подготовки я в течение двух недель читал книжки и общался с DeepSeek, и без этой подготовки я бы собеседования нигде не прошёл. Хотя, разумеется, двухнедельное чтение книжек не сделали меня ни на йоту лучшим разработчиком, не добавили мне опыта и умений.
После первичного скрининга в Озоне три секции: технический скрининг, большая техническая секция и system design с небольшим фитом в конце (фит это общение с руководителем на предмет того, совпадаете ли вы).
Технический скрининг
Чисто разговорная секция на 40-50 минут. Интервьюер один. Задаёт вопросы общего плана по языку, структурам данных, многопоточности. Ничего неожиданного нет. Я шёл на ведущего разработчика C# (это тимлид), так что нужно быть готовым рассказывать про поколения сборщика мусора и особенности работы IO-bound операций в асинхронном контексте. Секция сугубо академически-теоретическая. Кроме языка была пара вопросов по энтерпрайз-архитектуре и по базам данных, но без копания вглубь.
С моей точки зрения для скрининга всё равно секция чрезмерно подробная, и позже на большой технической секции часть тем повторилась.
Большая техническая секция
Два интервьюера, два часа. Задачи по коду, но не на алгоритмы, а скорее на решение конкретных кейсов. Например, нужно параллельно читать из кэша и из БД (если в кэше нет), как это написать максимально эффективно. Дан шаблон, который нужно заполнить. Параллельно задавали вопросы по теории.
Одна задача по SQL (я решил только с подсказкой). Вообще с чистым SQL в современном энтерпрайзе работают мало и редко. Когда дошли до этой задачи, я честно сказал собеседующим: «В реальной работе, получив такую задачу, я бы изучил документацию по средствам СУБД, которые позволили бы мне её решить, и погонял бы тестовые запросы на предмет правильности и оптимальности». По моим ощущениям, им этот ответ не понравился, и в целом мне показалось, что оценили мои навыки в этой части низко.
И в конце кусочек код-ревью. Когда я сам проводил собеседования, это была моя любимая часть, потому что наш пример кода на ревью содержал сразу большой пласт разнообразных проблем: инъекции, ошибки асинхронности, освобождение неуправляемых ресурсов, безопасность итд. Сразу было видно, с чем человек часто сталкивался, а с чем редко.
Здесь на ревью я стал давать комментарии по кодстайлу, за которым, как тимлид, тоже регулярно следил. Но меня попросили сосредоточиться на проблемах другого рода, и по сути весь код крутился вокруг неверного использования
lock. Я увидел эту проблему, предложил решение, но не смог глубоко объяснить, какими особенностями поведения среды выполнения вызвана эта проблема.Понижение должности
Через пару дней эйчар написала, что на ведущего разработчика (тимлида) они не готовы меня рассмотреть, но готовы на старшего (сеньора). Запомните этот момент. Я согласился. На мой вопрос о том, ниже ли вилка, она ответить не смогла, и сказала, что обсуждать нужно с руководителем.
👍18❤8
Magnit Tech #interview #dev
Что? Да. У сети магазинов «Магнит» внезапно большой современный технический отдел. В обслуживании парка из 30к магазинов без развитого айти никуда. Увидел вакансию тимлида .NET, и там прямо очень похоже на то, чем я занимался в АСЭ: электронный документооборот, BPMN-системы, интеграционные потоки. А ещё можно было бы всем говорить, что работаю в Магните.
Скрининг показался чуть менее номинальным, чем в Ozon. Вообще, роль эйчаров тут была более глубокая, и эйчар присутствовала на всех секциях. Изначально должна была быть одна большая общая секция, но в итоге оказалось две.
Общая техническая и архитектурная секция
В целом, явно видна попытка провести собеседование одностадийно (с моей точки зрения это плюс). Была эйчар, старший разработчик и техлид/архитектор. Эйчар задавала вопросы по опыту и по менеджменту. Затем вступил техлид.
Вопросы местами были странными, и почти на каждый вопрос после моего ответа техлид отвечал ещё и сам. Иногда вопрос казался заковыристым, но ожидался на деле какой-то совсем школьный ответ, например:
Интервьюер:
— Скажите, а кроме EntityFramework, какие вы ещё знаете средства взаимодействия с БД?
Я (тут я подумал, что он интересуется альтернативными ORM):
— Dapper пробовали один раз, в некоторых случаях он вполне удобен, работа чуть более низкоуровневая. Ещё активно изучал Linq2Db, потенциально выглядит очень интересно, но на практике так и не удалось применить.
Интервьюер:
— На самом деле можно ещё и просто писать SQL-запросы!
И далее он пару минут рассказывает, почему SQL-запросы лучше, чем ORM. Не «чем лучше», а именно «почему лучше», то есть защищая позицию полного отказа от ORM в любых условиях. Позже в другом вопросе он защищал отказ от строгих типов при десериализации, что на мой взгляд является признаком не выстроенных процессов по согласованию контрактов.
Пару раз спросили про вещи, о которых я никогда раньше не слышал. А после собеса полез искать, и узнал, что это давным-давно deprecated. Зачем про это спрашивали? Либо просто прозондировать мой опыт (то есть, писал ли я на .NET Framework 20 лет назад), либо у них где-то используется. Второе гораздо хуже, но и первое не слишком осмысленно, на мой взгляд.
Языковая секция
Далее эйчар написала, что они совсем забыли задать мне вопросы по языку, и предложила ещё один небольшой созвон на 40 минут. В итоге вышла почти часовая полноценная языковая секция. Вопросы в основном ожидаемые, но пара странных тоже была. Если в Ozon гоняли по глубоко академической теории, то здесь иногда цеплялись за какие-то невероятно нишевые примеры использования, которые в опыт к программисту могут попасть только случайно. Из-за этого у меня осталось послевкусие, что прошёл я средненько.
Результат
Ещё через пару дней эйчар написала, что всё очень хорошо, я понравился, но, к сожалению, у них сотрудник изнутри пожелал вырасти до тимлида, и они отдали предпочтение ему. Ну, бывает. Странно, что в момент открытия вакансии этот вопрос не проработали явно с собственным же персоналом. По крайней мере это собеседование не отняло много времени и дало любопытный опыт, так что я не расстроился.
Что понравилось:
1. Роль эйчара более активная и глубокая
2. Мало стадий, в норме вообще одна
Что не понравилось:
1. Интервьюер слишком много времени посвятил тому, чтобы защищать свои собственные решения, которые он принял в компании
2. Есть признаки работы с легаси, и в целом не слишком современных технических подходов, но могу ошибаться
Что? Да. У сети магазинов «Магнит» внезапно большой современный технический отдел. В обслуживании парка из 30к магазинов без развитого айти никуда. Увидел вакансию тимлида .NET, и там прямо очень похоже на то, чем я занимался в АСЭ: электронный документооборот, BPMN-системы, интеграционные потоки. А ещё можно было бы всем говорить, что работаю в Магните.
Скрининг показался чуть менее номинальным, чем в Ozon. Вообще, роль эйчаров тут была более глубокая, и эйчар присутствовала на всех секциях. Изначально должна была быть одна большая общая секция, но в итоге оказалось две.
Общая техническая и архитектурная секция
В целом, явно видна попытка провести собеседование одностадийно (с моей точки зрения это плюс). Была эйчар, старший разработчик и техлид/архитектор. Эйчар задавала вопросы по опыту и по менеджменту. Затем вступил техлид.
Вопросы местами были странными, и почти на каждый вопрос после моего ответа техлид отвечал ещё и сам. Иногда вопрос казался заковыристым, но ожидался на деле какой-то совсем школьный ответ, например:
Интервьюер:
— Скажите, а кроме EntityFramework, какие вы ещё знаете средства взаимодействия с БД?
Я (тут я подумал, что он интересуется альтернативными ORM):
— Dapper пробовали один раз, в некоторых случаях он вполне удобен, работа чуть более низкоуровневая. Ещё активно изучал Linq2Db, потенциально выглядит очень интересно, но на практике так и не удалось применить.
Интервьюер:
— На самом деле можно ещё и просто писать SQL-запросы!
И далее он пару минут рассказывает, почему SQL-запросы лучше, чем ORM. Не «чем лучше», а именно «почему лучше», то есть защищая позицию полного отказа от ORM в любых условиях. Позже в другом вопросе он защищал отказ от строгих типов при десериализации, что на мой взгляд является признаком не выстроенных процессов по согласованию контрактов.
Пару раз спросили про вещи, о которых я никогда раньше не слышал. А после собеса полез искать, и узнал, что это давным-давно deprecated. Зачем про это спрашивали? Либо просто прозондировать мой опыт (то есть, писал ли я на .NET Framework 20 лет назад), либо у них где-то используется. Второе гораздо хуже, но и первое не слишком осмысленно, на мой взгляд.
Языковая секция
Далее эйчар написала, что они совсем забыли задать мне вопросы по языку, и предложила ещё один небольшой созвон на 40 минут. В итоге вышла почти часовая полноценная языковая секция. Вопросы в основном ожидаемые, но пара странных тоже была. Если в Ozon гоняли по глубоко академической теории, то здесь иногда цеплялись за какие-то невероятно нишевые примеры использования, которые в опыт к программисту могут попасть только случайно. Из-за этого у меня осталось послевкусие, что прошёл я средненько.
Результат
Ещё через пару дней эйчар написала, что всё очень хорошо, я понравился, но, к сожалению, у них сотрудник изнутри пожелал вырасти до тимлида, и они отдали предпочтение ему. Ну, бывает. Странно, что в момент открытия вакансии этот вопрос не проработали явно с собственным же персоналом. По крайней мере это собеседование не отняло много времени и дало любопытный опыт, так что я не расстроился.
Что понравилось:
1. Роль эйчара более активная и глубокая
2. Мало стадий, в норме вообще одна
Что не понравилось:
1. Интервьюер слишком много времени посвятил тому, чтобы защищать свои собственные решения, которые он принял в компании
2. Есть признаки работы с легаси, и в целом не слишком современных технических подходов, но могу ошибаться
👍42❤9✍1🔥1
Mindbox #interview #dev
Вакансия тимлида .NET, откликнулся через hh, единственная вакансия, где был указан доход: до 500 на руки.
Mindbox — это крупнейший в России софт для автоматизации маркетинга. Среди клиентов известные торговые сети и бренды (Комус, Петрович, Делимобиль, Афиша, даже бигтех, например Сбер Еаптека и Мегафон). Когда я готовился к другим собеседованиям, в моём пуле был очень хороший доклад по микросервисной среде от сотрудника Mindbox с конференции DotNext. В общем, не стартап-однодневка, а вполне серьёзная организация, просто известная больше в бизнесовых, а не потребительских кругах.
А ещё Mindbox — это «бирюзовая» компания. С этим термином я столкнулся впервые. Таким способом называют компании, у которых внутренняя организационная структура отвергает классические подходы с жёсткой иерархией и согласованиями. Теоретически любой человек может принять любое решение, если готов за это решение отвечать. Прозрачность зарплат внутри — все знают, кто сколько зарабатывает. Многие вопросы решаются голосованием, системой вето, дебатами с аргументацией. Принято давать не анонимную обратную связь коллегам, и в компании специально обучают, как это делать так, чтобытебе в челюсть не прилетело человека такая обратная связь развивала, а не обижала.
Короче, мечта зумера. Как в современных смешных роликах, где вчерашние школьники на звонке говорят что-то типа «Сегодня я не в ресурсе работать, пойду выпью лавандовый раф и помедитирую».
Давайте честно скажу: я сам не верю, что такая структура работает. Но, во-первых, как-то всё-таки она работает. Организация успешно функционирует, ребята делятся интересными технологиями, доходы есть. И Mindbox не единственная «бирюзовая» компания в России, на самом деле их довольно много: ВкусВилл, Буше, Qiwi, Точка итд. Во-вторых, я уверен, что есть подводные камни, но выявить их с помощью вопросов на собеседованиях у меня не получилось.
Например, с моей точки зрения при открытости зарплат всегда будут люди, которые считают, что кто-то с более высоким доходом на самом деле менее компетентен и получает такой доход незаслуженно. И даже в ряде случаев эти люди будут правы. Это создаёт негативное эмоциональное напряжение. Хуже открытой неприязни только скрытая: когда человек в лицо мило с тобой общается, а потом в кулуарах будет тебя поливать грязью. Но, когда я спросил на собеседовании, как они справляются с такого рода конфликтами, мне ответили, что у них так не бывает.
Система повышения зарплаты тоже голосованием: на некотором внутреннем портале ты публикуешь свои достижения и желаемую новую цифру, а люди апрувят или нет. Вот тут уже, как я понял, не все подряд апрувят, а, условно, руководители. То есть, иерархия всё-таки есть в разрезе количества власти и влияния на компанию и людей в ней. Да и в других голосованиях у разных сотрудников разные веса.
Должно было быть три секции:
1. Скрининг с эйчаром и обсуждение моих пожеланий
2. Встреча с техлидом, решение технической задачи, вопросы от меня по команде и продукту
3. Финальная встреча, фит, софтскиллы
На скрининге действительно больше, чем в других местах, интересовались моими пожеланиями. Не только по зарплате, но и, например, с задачами какого типа я люблю работать.
Основная секция
Начинается с моих вопросов команде. Тут как раз я больше спрашивал про оргструктуру, чем про проект. Затем дали задачу: элементарный обход дерева. Я спросил, нужен ли им обход в ширину или в глубину, ответили, что не важно. И ещё момент — разрешили пользоваться гуглом, нейросетями (!), и даже не шарить экран на время решения (я всё-таки пошарил). Ну, то есть, идея была такая: в настоящей работе мы всё-таки сидим с гуглом, нейронками и без надзора, поэтому вот решай в условиях, приближенных к естественным. Не понимаю, что именно оценивалось, и кто мог с такими вводными не решить. Хотя потом эйчар сказала, что некоторые кандидаты решают по 50 минут (я написал за 10 на yield'ах). Когда смотрели решение, поспрашивали совсем чуть-чуть по простым вещам. И погоняли по кейсам из моего тимлидского опыта по системе STAR (situation, task, action, result).
Вакансия тимлида .NET, откликнулся через hh, единственная вакансия, где был указан доход: до 500 на руки.
Mindbox — это крупнейший в России софт для автоматизации маркетинга. Среди клиентов известные торговые сети и бренды (Комус, Петрович, Делимобиль, Афиша, даже бигтех, например Сбер Еаптека и Мегафон). Когда я готовился к другим собеседованиям, в моём пуле был очень хороший доклад по микросервисной среде от сотрудника Mindbox с конференции DotNext. В общем, не стартап-однодневка, а вполне серьёзная организация, просто известная больше в бизнесовых, а не потребительских кругах.
А ещё Mindbox — это «бирюзовая» компания. С этим термином я столкнулся впервые. Таким способом называют компании, у которых внутренняя организационная структура отвергает классические подходы с жёсткой иерархией и согласованиями. Теоретически любой человек может принять любое решение, если готов за это решение отвечать. Прозрачность зарплат внутри — все знают, кто сколько зарабатывает. Многие вопросы решаются голосованием, системой вето, дебатами с аргументацией. Принято давать не анонимную обратную связь коллегам, и в компании специально обучают, как это делать так, чтобы
Короче, мечта зумера. Как в современных смешных роликах, где вчерашние школьники на звонке говорят что-то типа «Сегодня я не в ресурсе работать, пойду выпью лавандовый раф и помедитирую».
Давайте честно скажу: я сам не верю, что такая структура работает. Но, во-первых, как-то всё-таки она работает. Организация успешно функционирует, ребята делятся интересными технологиями, доходы есть. И Mindbox не единственная «бирюзовая» компания в России, на самом деле их довольно много: ВкусВилл, Буше, Qiwi, Точка итд. Во-вторых, я уверен, что есть подводные камни, но выявить их с помощью вопросов на собеседованиях у меня не получилось.
Например, с моей точки зрения при открытости зарплат всегда будут люди, которые считают, что кто-то с более высоким доходом на самом деле менее компетентен и получает такой доход незаслуженно. И даже в ряде случаев эти люди будут правы. Это создаёт негативное эмоциональное напряжение. Хуже открытой неприязни только скрытая: когда человек в лицо мило с тобой общается, а потом в кулуарах будет тебя поливать грязью. Но, когда я спросил на собеседовании, как они справляются с такого рода конфликтами, мне ответили, что у них так не бывает.
Система повышения зарплаты тоже голосованием: на некотором внутреннем портале ты публикуешь свои достижения и желаемую новую цифру, а люди апрувят или нет. Вот тут уже, как я понял, не все подряд апрувят, а, условно, руководители. То есть, иерархия всё-таки есть в разрезе количества власти и влияния на компанию и людей в ней. Да и в других голосованиях у разных сотрудников разные веса.
Должно было быть три секции:
1. Скрининг с эйчаром и обсуждение моих пожеланий
2. Встреча с техлидом, решение технической задачи, вопросы от меня по команде и продукту
3. Финальная встреча, фит, софтскиллы
На скрининге действительно больше, чем в других местах, интересовались моими пожеланиями. Не только по зарплате, но и, например, с задачами какого типа я люблю работать.
Основная секция
Начинается с моих вопросов команде. Тут как раз я больше спрашивал про оргструктуру, чем про проект. Затем дали задачу: элементарный обход дерева. Я спросил, нужен ли им обход в ширину или в глубину, ответили, что не важно. И ещё момент — разрешили пользоваться гуглом, нейросетями (!), и даже не шарить экран на время решения (я всё-таки пошарил). Ну, то есть, идея была такая: в настоящей работе мы всё-таки сидим с гуглом, нейронками и без надзора, поэтому вот решай в условиях, приближенных к естественным. Не понимаю, что именно оценивалось, и кто мог с такими вводными не решить. Хотя потом эйчар сказала, что некоторые кандидаты решают по 50 минут (я написал за 10 на yield'ах). Когда смотрели решение, поспрашивали совсем чуть-чуть по простым вещам. И погоняли по кейсам из моего тимлидского опыта по системе STAR (situation, task, action, result).
👍5
Uzum #interview #dev
Вышли на меня сами через бывших коллег, которые теперь там работают. Вакансия тимлида на Java (ага).
Uzum — это такой Яндекс/Ozon в Узбекистане. Бывшие выходцы из Сбера и Яндекса в 2022 году пришли в Узбекистан и обнаружили, что там огромный, но совершенно пустой рынок с точки зрения крутых удобных цифровых сервисов, к каким мы привыкли в России. Голубой океан, как говорят. Естественно, получили лавинообразный рост, который, как я понял, идёт до сих пор. Активно хантят новых людей, в том числе из России.
В основном устроиться туда можно через регистрацию налогового резидентства в Узбекистане. Зарплату получать в долларах (в настоящее время не ясно, плюс это или минус). А дальше уже сам решаешь, как передавать себе деньги в Россию: есть легальные, но запарные способы.
Секции на лида такие:
1. Общение с техлидом / скрининг
2. Языковая секция
3. System Design
4. Менеджмент
5. Финалка и фит с руководством, на который заглядывает CTO
На скрининге техлид сказал, что помнит меня по Цифровому Прорыву 2019 (приятно). Обсудили проекты, компанию. Я сказал, что я шарпист, а не джавист. Поскольку провести языковую секцию по шарпу у них некому, решили вообще её пропустить. Как я понял, тимлид здесь выполняет технические функции опосредованно, поэтому опыт в языке нужен, но не обязательно ровно в том, на котором пишет команда. Тем более, на джаве я всё-таки чуть-чуть кодил, просто после шарпа возвращаться на неё это как пересесть на старую Ладу с новенькой иномарки: вроде ездит, но уже давно привык к другому уровню комфорта.
System Design
Нужно было встроить функцию в существующую систему. Два сервиса отвечают медленно, а поверх них требовалось спроектировать ещё один сервис, который отвечает теми же данными быстро. Вообще, в таких условиях способа всего два: подделывать данные или накапливать. Кажется, интервьюеру не сильно было важно, как именно я думаю, и какими элементами из собственного опыта пользуюсь. Когда я размышлял вслух над вариантами решения той или иной проблемы, у меня было впечатление, что интервьюер оценивает факт такого размышления отрицательно, ожидая более быстрый шаблонный ответ.
Ещё проблем добавило то, что существующую систему никак нельзя было менять. Нельзя было добавлять нужные события к существующим сервисам, нельзя было обогащать атрибутивный состав и обновлять контракты. Но с горем пополам сошлись на чём-то, хотя послевкусие от секции осталось так себе.
Менеджмент
Вообще, я очень сильно не люблю менеджерские секции, потому что эта область не детерминирована. Окей, существуют какие-то конкретные методологии и некое подобие теории поверх деятельности по управлению процессами, но незнание этих методологий абсолютно ничего не говорит о способности человека вести команду. Как и знание.
В целом, когда интервьюер третий раз задал один и тот же вопрос, я понял, что секцию мне не зачтут, потому что я не понимаю, что именно хотят от меня услышать. Было примерно так:
Интервьюер:
— Как ты понимаешь, работает ли команда хорошо или нет?
Я:
— Во-первых, я смотрю на скорость и качество результата их работы. Эти показатели противоречат друг другу, поэтому нужно обращать внимание на баланс. Во-вторых, смотрю, как много дополнительного ручного управления требует команда, как часто нужно подключаться, чтобы решить какую-то проблему внутри.
Интервьюер:
— Окей. И всё-таки, как ты понимаешь, что команда перформит?
Я:
— Эээ, ну я уже сказал. Скорость, качество, самостоятельность.
Интервьюер:
— Да, я понял, но как всё-таки понять, нормально команда работает или нет?
Ещё я закладывал на секцию час, а потом увидел в приглашении, что планировалось полтора. У меня был следом другой собес, поэтому я честно сказал, что есть всего час (это было где-то через 40 минут после начала интервью, я заметил накладку не сразу). Поскольку интервьюер к этому моменту уже повторял одни и те же вопросы по кругу, я был уверен, что ещё полчаса нам в любом случае не нужны.
Вышли на меня сами через бывших коллег, которые теперь там работают. Вакансия тимлида на Java (ага).
Uzum — это такой Яндекс/Ozon в Узбекистане. Бывшие выходцы из Сбера и Яндекса в 2022 году пришли в Узбекистан и обнаружили, что там огромный, но совершенно пустой рынок с точки зрения крутых удобных цифровых сервисов, к каким мы привыкли в России. Голубой океан, как говорят. Естественно, получили лавинообразный рост, который, как я понял, идёт до сих пор. Активно хантят новых людей, в том числе из России.
В основном устроиться туда можно через регистрацию налогового резидентства в Узбекистане. Зарплату получать в долларах (в настоящее время не ясно, плюс это или минус). А дальше уже сам решаешь, как передавать себе деньги в Россию: есть легальные, но запарные способы.
Секции на лида такие:
1. Общение с техлидом / скрининг
2. Языковая секция
3. System Design
4. Менеджмент
5. Финалка и фит с руководством, на который заглядывает CTO
На скрининге техлид сказал, что помнит меня по Цифровому Прорыву 2019 (приятно). Обсудили проекты, компанию. Я сказал, что я шарпист, а не джавист. Поскольку провести языковую секцию по шарпу у них некому, решили вообще её пропустить. Как я понял, тимлид здесь выполняет технические функции опосредованно, поэтому опыт в языке нужен, но не обязательно ровно в том, на котором пишет команда. Тем более, на джаве я всё-таки чуть-чуть кодил, просто после шарпа возвращаться на неё это как пересесть на старую Ладу с новенькой иномарки: вроде ездит, но уже давно привык к другому уровню комфорта.
System Design
Нужно было встроить функцию в существующую систему. Два сервиса отвечают медленно, а поверх них требовалось спроектировать ещё один сервис, который отвечает теми же данными быстро. Вообще, в таких условиях способа всего два: подделывать данные или накапливать. Кажется, интервьюеру не сильно было важно, как именно я думаю, и какими элементами из собственного опыта пользуюсь. Когда я размышлял вслух над вариантами решения той или иной проблемы, у меня было впечатление, что интервьюер оценивает факт такого размышления отрицательно, ожидая более быстрый шаблонный ответ.
Ещё проблем добавило то, что существующую систему никак нельзя было менять. Нельзя было добавлять нужные события к существующим сервисам, нельзя было обогащать атрибутивный состав и обновлять контракты. Но с горем пополам сошлись на чём-то, хотя послевкусие от секции осталось так себе.
Менеджмент
Вообще, я очень сильно не люблю менеджерские секции, потому что эта область не детерминирована. Окей, существуют какие-то конкретные методологии и некое подобие теории поверх деятельности по управлению процессами, но незнание этих методологий абсолютно ничего не говорит о способности человека вести команду. Как и знание.
В целом, когда интервьюер третий раз задал один и тот же вопрос, я понял, что секцию мне не зачтут, потому что я не понимаю, что именно хотят от меня услышать. Было примерно так:
Интервьюер:
— Как ты понимаешь, работает ли команда хорошо или нет?
Я:
— Во-первых, я смотрю на скорость и качество результата их работы. Эти показатели противоречат друг другу, поэтому нужно обращать внимание на баланс. Во-вторых, смотрю, как много дополнительного ручного управления требует команда, как часто нужно подключаться, чтобы решить какую-то проблему внутри.
Интервьюер:
— Окей. И всё-таки, как ты понимаешь, что команда перформит?
Я:
— Эээ, ну я уже сказал. Скорость, качество, самостоятельность.
Интервьюер:
— Да, я понял, но как всё-таки понять, нормально команда работает или нет?
Ещё я закладывал на секцию час, а потом увидел в приглашении, что планировалось полтора. У меня был следом другой собес, поэтому я честно сказал, что есть всего час (это было где-то через 40 минут после начала интервью, я заметил накладку не сразу). Поскольку интервьюер к этому моменту уже повторял одни и те же вопросы по кругу, я был уверен, что ещё полчаса нам в любом случае не нужны.
👍18🔥5✍2❤1
На самом деле у меня для вас осталось всего две истории про #interview, но одна из них такая длинная, что я её разобью на две части. Завтра начну, а пока что интерлюдия: куда ещё подавался и как.
Т1 Иннотех
Интегратор, но с постоянными крупными клиентами типа Газпрома. Очень красивые сайты, хорошо оформленные вакансии. На DotNext пару лет назад я выиграл у них на стенде носки. Хорошие носки, долго носил, собственно поэтому и вспомнил про компанию.
Форма на сайте не позволила приложить файл с резюме. Написал на эйчарную (!) почту, там сказали подаваться через форму. Вакансия вскоре исчезла, в людях особо не заинтересованы, я не стал продолжать.
Авито
Подался через знакомство. Пришли с вакансией абсолютно мимо, что-то типа «Менеджер по техподдержке». Эйчар явно хотела просто хоть как-то ответить на резюме, раз ей его закинули, но не читала.
Я сказал, что я шарпист. Ответили, что шарписты не нужны, потому что переходят на Go. Предложили пройти собес на шарписта и переучиться на Go внутри. Интересный вариант, но я к тому моменту только начинал поиски, поэтому отказался. Go — унылейший язык, но платят за него много, может когда-то и перейду.
Северсталь
После Росатома первое время очень хотел снова в какую-то такую отрасль, чтобы заниматься промышленностью. Увидел вакансию .NET-сеньора. По всем ключевым пунктам идеально подходил, плюс есть опыт в смежной отрасли. Подался через почту на сайте, получил ответ, что не подхожу. Скорее всего, ответ автоматический, а на деле либо остановлен найм, либо ленивый эйчар.
Альфа-Банк
Полный игнор даже после подачи резюме через знакомства по программе реферралов.
Газпром
Через знакомства меня куда-то в подрядчиков закинули, но никакого эффекта это не возымело вообще.
Nedra Digital
Цифровизация бурения нефтяных скважин. На сайте и на hh очень пасофно расписано, как они ищут людей, но на самом деле не ищут. Полный игнор.
Lamoda Tech
Подавался через hh. Любопытно, что в вакансии были дополнительные пункты, которые обычно у разработчиков отсутствуют, а я по ним подходил: опыт программирования электроники, умение работать с Blazor, работа с промышленным оборудованием и т.д.
Игнор. Позже оказалось, вакансию забыли удалить.
Positive Technologies
Компания-разработчик систем компьютерной безопасности. Полный игнор.
Астра
Те, которые делают импортозамещение. Вакансия по моему стеку, подался через hh, полный игнор.
Касперский
Во всех выборках мне постоянно подсовывались вакансии Касперского. Но в прошлом году туда ушёл мой бывший начальник и, как я слышал, остался там. Руководитель он, на мой личный взгляд, крайне сомнительный, совершенно не хотелось бы снова с ним работать, поэтому я даже подаваться не стал.
______
В итоге я подался в 15 компаний. Из них от 9 был хоть какой-то отклик (60% от всех, считаю очень хорошим показателем). И в 6 были собеседования (40% от всех).
#dev
Т1 Иннотех
Интегратор, но с постоянными крупными клиентами типа Газпрома. Очень красивые сайты, хорошо оформленные вакансии. На DotNext пару лет назад я выиграл у них на стенде носки. Хорошие носки, долго носил, собственно поэтому и вспомнил про компанию.
Форма на сайте не позволила приложить файл с резюме. Написал на эйчарную (!) почту, там сказали подаваться через форму. Вакансия вскоре исчезла, в людях особо не заинтересованы, я не стал продолжать.
Авито
Подался через знакомство. Пришли с вакансией абсолютно мимо, что-то типа «Менеджер по техподдержке». Эйчар явно хотела просто хоть как-то ответить на резюме, раз ей его закинули, но не читала.
Я сказал, что я шарпист. Ответили, что шарписты не нужны, потому что переходят на Go. Предложили пройти собес на шарписта и переучиться на Go внутри. Интересный вариант, но я к тому моменту только начинал поиски, поэтому отказался. Go — унылейший язык, но платят за него много, может когда-то и перейду.
Северсталь
После Росатома первое время очень хотел снова в какую-то такую отрасль, чтобы заниматься промышленностью. Увидел вакансию .NET-сеньора. По всем ключевым пунктам идеально подходил, плюс есть опыт в смежной отрасли. Подался через почту на сайте, получил ответ, что не подхожу. Скорее всего, ответ автоматический, а на деле либо остановлен найм, либо ленивый эйчар.
Альфа-Банк
Полный игнор даже после подачи резюме через знакомства по программе реферралов.
Газпром
Через знакомства меня куда-то в подрядчиков закинули, но никакого эффекта это не возымело вообще.
Nedra Digital
Цифровизация бурения нефтяных скважин. На сайте и на hh очень пасофно расписано, как они ищут людей, но на самом деле не ищут. Полный игнор.
Lamoda Tech
Подавался через hh. Любопытно, что в вакансии были дополнительные пункты, которые обычно у разработчиков отсутствуют, а я по ним подходил: опыт программирования электроники, умение работать с Blazor, работа с промышленным оборудованием и т.д.
Игнор. Позже оказалось, вакансию забыли удалить.
Positive Technologies
Компания-разработчик систем компьютерной безопасности. Полный игнор.
Астра
Те, которые делают импортозамещение. Вакансия по моему стеку, подался через hh, полный игнор.
Касперский
Во всех выборках мне постоянно подсовывались вакансии Касперского. Но в прошлом году туда ушёл мой бывший начальник и, как я слышал, остался там. Руководитель он, на мой личный взгляд, крайне сомнительный, совершенно не хотелось бы снова с ним работать, поэтому я даже подаваться не стал.
______
В итоге я подался в 15 компаний. Из них от 9 был хоть какой-то отклик (60% от всех, считаю очень хорошим показателем). И в 6 были собеседования (40% от всех).
#dev
1👍38❤11🔥5🤯1
Т-Банк #interview #dev | часть 1 из 3
Компания, в которую я целился с самого начала. Если в другие места я иногда проходил собесы либо для тренировки, либо для получения запасных офферов, то сюда я сразу решил, что хочу попасть. Подался через знакомство. Система у них такая: собесят не на конкретную вакансию, а на должность, а потом ищут вакансию внутри. На должность тимлида надо было пройти: менеджмент, любой язык, систем дизайн, фит с руководителем и командой.
На скрининге эйчар спросил меня, готов ли я перейти на джаву. Запомните этот момент, я ответил, что не готов, и хотел бы оставаться в рамках привычного мне стека.
Перед каждой секцией эйчар высылал страницу со ссылками и рекомендациями, как готовиться, это сразу плюс. Там чаще всего были названия книг и ссылки на видеоролики с мок-собеседованиями.
Менеджмент
Опять же, я не понимаю, как его оценивать, и какой вопрос можно задать, чтобы отличить сеньор-менеджера от мидл-менеджера. Но, возможно, я как раз и не понимаю, потому что я не менеджер. В целом интервью прошло приятно, собеседующий поспрашивал про мой опыт, предложил решить некоторые кейсы. В процессе он намекнул, что тимлид, скорее всего, сам код писать не будет совсем, что меня не очень обрадовало.
Позже я узнал, что прошёл секцию на junior+. Не знаю, хорошо или плохо, вообще не понимаю, как сравнивать менеджеров, но для тимлида этого у них хватает. Ещё из Т-Банка после каждой секции поступала достаточно подробная обратная связь с рекомендациями литературы. Круто, нигде такого не было. Я был воодушевлён после этой секции и сразу купил книгу, которую посоветовали по результатам.
Языковая секция
По структуре точно такая же, как в Ozon: показывают на экране задачи, нужно решить, пишешь код сам, параллельно обсуждаете. Тут я блистал, потому что был очень хорошо готов. Я за секунды щёлкал все типовые вопросы, предугадывал уточнения интервьюера, пускался в неожиданную глубину устройства языка... Задача по SQL попалась в точности такая же, как в Ozon. Если помните, там я на ней затупил, но позже я конечно же обсудил все наилучшие варианты решения с DeepSeek и попробовал сам. Поэтому к некоторому удивлению интервьюера я лихо применил оконную функцию, вслух проговорив альтернативные способы. Кстати, здесь, в отличие от Озона, SQL-код можно было запускать и смотреть результат промежуточного запроса, это важный положительный аспект. Одна из задач была такая же, как в мок-интервью на ютубе, поэтому её я тоже знал. Потом буквально на полминуты притормозил на работе замыканий, но в итоге тоже дал верный ответ.
По собственным ощущениям я прошёл секцию идеально. Слишком идеально для человека. Слишком быстро и безошибочно на всё отвечал. Боялся, что подумают, будто бы мне подсказывал ИИ. В качестве обратной связи получил рекомендацию перечитать Рихтера, что тоже хороший знак: если тебе из рекомендаций советуют только адски задротную низкоуровневую литературу, значит, на всё более человеческое ты ответил прекрасно.
Много позже я узнал, что мне засчитали middle+. Что??? Я даже предложил эйчару совместно с каким-нибудь крупным техлидом пересмотреть запись собеса, настолько был поражён. Но в целом, это не очень важно, потому что общий грейд к тому моменту по всем секциям у меня был сеньорный. Просто непонятно и обидно.
System Design
Секция с самого начала пошла очень хорошо. Знакомый мне по пет-проектам и конкурсам домен: отслеживание курьеров на карте. Никаких абсурдных требований типа миллиарда запросов в секунду. Я с первых минут обсудил с интервьюером использование MongoDB ради геопространственных индексов, и, судя по всему, сразу же получил от него негласный респект. Удалось эффективно решить все проблемы, хорошо выбрать технологии. Никаких подводных камней, секцию прошёл на сеньора без вопросов.
Компания, в которую я целился с самого начала. Если в другие места я иногда проходил собесы либо для тренировки, либо для получения запасных офферов, то сюда я сразу решил, что хочу попасть. Подался через знакомство. Система у них такая: собесят не на конкретную вакансию, а на должность, а потом ищут вакансию внутри. На должность тимлида надо было пройти: менеджмент, любой язык, систем дизайн, фит с руководителем и командой.
На скрининге эйчар спросил меня, готов ли я перейти на джаву. Запомните этот момент, я ответил, что не готов, и хотел бы оставаться в рамках привычного мне стека.
Перед каждой секцией эйчар высылал страницу со ссылками и рекомендациями, как готовиться, это сразу плюс. Там чаще всего были названия книг и ссылки на видеоролики с мок-собеседованиями.
Менеджмент
Опять же, я не понимаю, как его оценивать, и какой вопрос можно задать, чтобы отличить сеньор-менеджера от мидл-менеджера. Но, возможно, я как раз и не понимаю, потому что я не менеджер. В целом интервью прошло приятно, собеседующий поспрашивал про мой опыт, предложил решить некоторые кейсы. В процессе он намекнул, что тимлид, скорее всего, сам код писать не будет совсем, что меня не очень обрадовало.
Позже я узнал, что прошёл секцию на junior+. Не знаю, хорошо или плохо, вообще не понимаю, как сравнивать менеджеров, но для тимлида этого у них хватает. Ещё из Т-Банка после каждой секции поступала достаточно подробная обратная связь с рекомендациями литературы. Круто, нигде такого не было. Я был воодушевлён после этой секции и сразу купил книгу, которую посоветовали по результатам.
Языковая секция
По структуре точно такая же, как в Ozon: показывают на экране задачи, нужно решить, пишешь код сам, параллельно обсуждаете. Тут я блистал, потому что был очень хорошо готов. Я за секунды щёлкал все типовые вопросы, предугадывал уточнения интервьюера, пускался в неожиданную глубину устройства языка... Задача по SQL попалась в точности такая же, как в Ozon. Если помните, там я на ней затупил, но позже я конечно же обсудил все наилучшие варианты решения с DeepSeek и попробовал сам. Поэтому к некоторому удивлению интервьюера я лихо применил оконную функцию, вслух проговорив альтернативные способы. Кстати, здесь, в отличие от Озона, SQL-код можно было запускать и смотреть результат промежуточного запроса, это важный положительный аспект. Одна из задач была такая же, как в мок-интервью на ютубе, поэтому её я тоже знал. Потом буквально на полминуты притормозил на работе замыканий, но в итоге тоже дал верный ответ.
По собственным ощущениям я прошёл секцию идеально. Слишком идеально для человека. Слишком быстро и безошибочно на всё отвечал. Боялся, что подумают, будто бы мне подсказывал ИИ. В качестве обратной связи получил рекомендацию перечитать Рихтера, что тоже хороший знак: если тебе из рекомендаций советуют только адски задротную низкоуровневую литературу, значит, на всё более человеческое ты ответил прекрасно.
Много позже я узнал, что мне засчитали middle+. Что??? Я даже предложил эйчару совместно с каким-нибудь крупным техлидом пересмотреть запись собеса, настолько был поражён. Но в целом, это не очень важно, потому что общий грейд к тому моменту по всем секциям у меня был сеньорный. Просто непонятно и обидно.
System Design
Секция с самого начала пошла очень хорошо. Знакомый мне по пет-проектам и конкурсам домен: отслеживание курьеров на карте. Никаких абсурдных требований типа миллиарда запросов в секунду. Я с первых минут обсудил с интервьюером использование MongoDB ради геопространственных индексов, и, судя по всему, сразу же получил от него негласный респект. Удалось эффективно решить все проблемы, хорошо выбрать технологии. Никаких подводных камней, секцию прошёл на сеньора без вопросов.
❤28👍3
Т-Банк #interview #dev | часть 2 из 3 (первая)
В предыдущих сериях: наш герой получил оффер от Ozon и отклонил его. Ещё были сравнительно неудачные серии интервью в Magnit Tech, Mindbox, Uzum. Однако, приобретённый опыт позволил очень круто пройти секции на тимлида в Т-Банк, куда герой и стремился. Получив грейд, он ждал заветного сообщения от эйчара. Т-Банку оставалось лишь найти вакансию внутри и провести фит...
...Но вакансий по нужному стеку не оказалось. Совсем. Эйчар ещё раз уточнил, хочу ли я перейти на джаву, потому что по джаве вроде как были. Я сказал, что не хочу. Через пару дней он предложил мне провести фит с руководительницей одной из команд отдела по работе с заявками юзеров в поддержку, но сразу предупредил, что не по моему стеку.
Фит 1
Очень бойкая руководительница, много спрашивала про опыт управления. Фактически, фит был похож на менеджерскую секцию, только более сжатую и с вопросами от меня. Команда оказалась фронтовой. Окей, у меня есть опыт фронта (хоть и не на Реакте, но догнать я бы смог, пожалуй). Занималась команда веб-приложением Т-Банка, которое с 2022 года стало кратно более популярным у любителей одной пафосной «just works» экосистемы.
Результат
Мне показалось, что нужен скорее менеджер, чем технарь, но я всё равно дал согласие. После встречи эйчар мне написал, что руководительница тоже ок. Ну всё, оффер?
Нет, утром следующего дня он снова мне написал, что она свой ок отозвала. Причины не объяснили.
Других вакансий не было. Эйчар предложил мне пройти ещё две секции: алгоритмическую и «архитектурную», и попробоваться на техлида. Я снова воодушевился. Алгоритмы я знаю, по архитектуре опыта тоже полно. Поехали.
Алгоритмическая секция
Код писать нужно было в местном редакторе без подсказок и автокомплита. Но можно было глянуть в документацию языка, я разок глянул. Две задачи решил целиком, для третьей придумал всё решение и написал 80% кода до того, как час закончился.
Задача 1
Два массива интов, могут быть разной длины. Отсортированы по возрастанию. Вывести объединение без дублей, сохранив сортировку и использовав константу дополнительной памяти.
Моё решение не сохранилось, но вот вам более красивое синтаксически, но точно такое же по смыслу решение Димы Тюрникова: MergeSortedLists. Сложность по времени:линейная .
Задача 2
У Пети сломалась клавиатура. Когда он вводит b, то вместо этого стирается последняя введенная строчная буква. Когда вводит B (большая английская бэ), то стирается последняя введенная заглавная буква. Остальные работают нормально. Дана строка из больших и маленьких английских букв, показывающая последовательность нажатия клавиш. Нужно вывести, что будет введено по факту.
Вот тоже код Димы, изменённый с учётом моего решения. То есть моё совершенно такое же: BrokenKeyboard. Сложность по времени:линейная , по памяти: линейная .
Задача 3
Дан массив неотрицательных интов. Нужно найти непрерывный подмассив с наибольшей суммой элементов такой, в котором не более двух разных типов чисел. И вывести сумму. Например можно [10,10,5,5] тут всего два типа чисел: десятка и пятерка.
Моё решение: MaxSubarraySum. Решение Димы с другим подходом: ArrayFound. И там и там сложность по времени:линейная , по памяти: константа .
«Архитектурная» секция
Пишу в кавычках, потому что, к моему ужасу, оказалось, что они так называют вторую менеджерскую секцию. Я не понимаю, почему. Вопросов по настоящей архитектуре не задавали. Поскольку систем-дизайн я уже прошёл раньше, то здесь ожидал, что будет солюшен архитектура: DDD, паттерны, low coupling / high cohesion и так далее. Эти темы я знаю хорошо, даже преподавал их студентам, поэтому был уверен, что пройду. Но это оказалась менеджерская беседа, прошёл я её предсказуемо ровно так же, как предыдущую менеджерскую: на junior+.
В предыдущих сериях: наш герой получил оффер от Ozon и отклонил его. Ещё были сравнительно неудачные серии интервью в Magnit Tech, Mindbox, Uzum. Однако, приобретённый опыт позволил очень круто пройти секции на тимлида в Т-Банк, куда герой и стремился. Получив грейд, он ждал заветного сообщения от эйчара. Т-Банку оставалось лишь найти вакансию внутри и провести фит...
...Но вакансий по нужному стеку не оказалось. Совсем. Эйчар ещё раз уточнил, хочу ли я перейти на джаву, потому что по джаве вроде как были. Я сказал, что не хочу. Через пару дней он предложил мне провести фит с руководительницей одной из команд отдела по работе с заявками юзеров в поддержку, но сразу предупредил, что не по моему стеку.
Фит 1
Очень бойкая руководительница, много спрашивала про опыт управления. Фактически, фит был похож на менеджерскую секцию, только более сжатую и с вопросами от меня. Команда оказалась фронтовой. Окей, у меня есть опыт фронта (хоть и не на Реакте, но догнать я бы смог, пожалуй). Занималась команда веб-приложением Т-Банка, которое с 2022 года стало кратно более популярным у любителей одной пафосной «just works» экосистемы.
Результат
Мне показалось, что нужен скорее менеджер, чем технарь, но я всё равно дал согласие. После встречи эйчар мне написал, что руководительница тоже ок. Ну всё, оффер?
Нет, утром следующего дня он снова мне написал, что она свой ок отозвала. Причины не объяснили.
Других вакансий не было. Эйчар предложил мне пройти ещё две секции: алгоритмическую и «архитектурную», и попробоваться на техлида. Я снова воодушевился. Алгоритмы я знаю, по архитектуре опыта тоже полно. Поехали.
Алгоритмическая секция
Код писать нужно было в местном редакторе без подсказок и автокомплита. Но можно было глянуть в документацию языка, я разок глянул. Две задачи решил целиком, для третьей придумал всё решение и написал 80% кода до того, как час закончился.
Задача 1
Два массива интов, могут быть разной длины. Отсортированы по возрастанию. Вывести объединение без дублей, сохранив сортировку и использовав константу дополнительной памяти.
Моё решение не сохранилось, но вот вам более красивое синтаксически, но точно такое же по смыслу решение Димы Тюрникова: MergeSortedLists. Сложность по времени:
Задача 2
У Пети сломалась клавиатура. Когда он вводит b, то вместо этого стирается последняя введенная строчная буква. Когда вводит B (большая английская бэ), то стирается последняя введенная заглавная буква. Остальные работают нормально. Дана строка из больших и маленьких английских букв, показывающая последовательность нажатия клавиш. Нужно вывести, что будет введено по факту.
Вот тоже код Димы, изменённый с учётом моего решения. То есть моё совершенно такое же: BrokenKeyboard. Сложность по времени:
Задача 3
Дан массив неотрицательных интов. Нужно найти непрерывный подмассив с наибольшей суммой элементов такой, в котором не более двух разных типов чисел. И вывести сумму. Например можно [10,10,5,5] тут всего два типа чисел: десятка и пятерка.
Моё решение: MaxSubarraySum. Решение Димы с другим подходом: ArrayFound. И там и там сложность по времени:
«Архитектурная» секция
Пишу в кавычках, потому что, к моему ужасу, оказалось, что они так называют вторую менеджерскую секцию. Я не понимаю, почему. Вопросов по настоящей архитектуре не задавали. Поскольку систем-дизайн я уже прошёл раньше, то здесь ожидал, что будет солюшен архитектура: DDD, паттерны, low coupling / high cohesion и так далее. Эти темы я знаю хорошо, даже преподавал их студентам, поэтому был уверен, что пройду. Но это оказалась менеджерская беседа, прошёл я её предсказуемо ровно так же, как предыдущую менеджерскую: на junior+.
👍13❤3🔥3
2ГИС #interview #dev
(UPD: чуть обновил текст, вспомнил еще часть)
Отвлечёмся на секунду от Т-Банка, там в реальности была затяжная пауза, я находился в подвешенном состоянии и не понимал, считать ли попытку устроиться туда проваленной или нет. Но параллельно никто не мешал ходить на другие собесы.
Увидел вакансию C#-разработчика в 2ГИС. О 2ГИС у меня много приятных воспоминаний. Помню, что был классный продукт, самобытный, и в него я заходил, когда информации в Яндексе не хватало. Со временем Яндекс сократил этот отрыв, задавил брендом и экосистемой. Как оказалось, 2ГИС никуда не делся, и даже растёт: 80 млн пользователей на текущий момент. А ещё карты, как я рассказывал, очень близкий мне домен по пет-проектам и конкурсам.
Этап первичной коммуникации с эйчаром пришёлся как раз на время, когда я считал, что завтра у меня будет оффер от Т-Банка. К тому же, эйчар отвечала с очень большими паузами: по несколько дней. Поэтому я, честно говоря, особо ни на что здесь не рассчитывал. Вообще думал, что она в какой-то момент забила на меня. А при первом созвоне честно предупредил, что я нахожусь в состоянии почти получения оффера от другой компании. Ха-ха.
Скрининг, к слову, был достаточно подробный, не просто по ключевым словам, а эйчар нормально расспросила об опыте, пожеланиях и так далее. Дальше планировался короткий технический скрининг, большая универсальная техническая секция и итоговый фит с руководителем.
Технический скрининг
Интервьюер сказал, что был на моем докладе на DotNext, и помнит меня. Круто, уже второй, кто узнал меня, в процессе этих собеседований. В целом он понимал, что я вроде не самозванец, поэтому пробежались с ним довольно быстро, и часть времени я позадавал вопросы о работе в компании.
Техническая секция
С моей точки зрения это был почти образцовый собес. В одной секции, не продлившейся дольше двух часов, задавали вопросы сразу и по языку, и по БД, и по архитектуре, и даже задачку на алгоритмы. Пожалуй, единственный минус — секция полностью разговорная. Код не писали, схемы не рисовали. Этого очень не хватило, и рассказывать устно алгоритмическое решение было не слишком прикольно.
Собственно, думаю, что такой разговорный стиль интервью ухудшил точность оценки хард-скиллов, поэтому я получил senior-.
Фит
Эйчар, технический руководитель, общая руководительница. Задавали вопросы по опыту, рассказывали про проект и команду. В принципе, ничего необычного. Спросили, чем хочу заниматься, а чем не хочу. Подумал, что самое неприятное в моей работе — дополнять чужой плохо спроектированный (!) код. Дополнять хорошо спроектированный это ок. Рефакторить говно в конфетку тоже ок. А вот если нужно дописать функцию, но рефакторить нельзя — это, конечно, боль.
Что понравилось
1. Роль эйчара не номинальная, задавались довольно подробные вопросы по опыту и пожеланиям
2. Собес почти в один ход, при этом спросили всё нужное
3. Интересный самобытный продукт, а сама компания при этом бигтех (2ГИС это контур Сбера)
Что не понравилось
1. Коммуникация со стороны эйчара поначалу была с огромными паузами
2. Вся основная секция сугубо разговорная, ей не хватило практических частей
3. В компании нет премий и индексации
Результат
Эйчар написала, что готовы сделать оффер, отправила анкету службы безопасности. К этому моменту Т-Банк пропал, Mindbox и Uzum отвалились. На фите спрашивали, какая сумма мне интересна, и я сказал, что меньше X вообще не буду рассматривать. Раз после этого пришли с инфой об оффере, то я логично подумал, что предложат как минимум X (так и оказалось). Поэтому ещё до конкретных цифр я уже понимал, что оффер, вероятнее всего, хороший, и был готов сразу его принять. Мне и компания нравится, и собес понравился, и вариантов других не было. Но тут вернулся Т-Банк...
(UPD: чуть обновил текст, вспомнил еще часть)
Отвлечёмся на секунду от Т-Банка, там в реальности была затяжная пауза, я находился в подвешенном состоянии и не понимал, считать ли попытку устроиться туда проваленной или нет. Но параллельно никто не мешал ходить на другие собесы.
Увидел вакансию C#-разработчика в 2ГИС. О 2ГИС у меня много приятных воспоминаний. Помню, что был классный продукт, самобытный, и в него я заходил, когда информации в Яндексе не хватало. Со временем Яндекс сократил этот отрыв, задавил брендом и экосистемой. Как оказалось, 2ГИС никуда не делся, и даже растёт: 80 млн пользователей на текущий момент. А ещё карты, как я рассказывал, очень близкий мне домен по пет-проектам и конкурсам.
Этап первичной коммуникации с эйчаром пришёлся как раз на время, когда я считал, что завтра у меня будет оффер от Т-Банка. К тому же, эйчар отвечала с очень большими паузами: по несколько дней. Поэтому я, честно говоря, особо ни на что здесь не рассчитывал. Вообще думал, что она в какой-то момент забила на меня. А при первом созвоне честно предупредил, что я нахожусь в состоянии почти получения оффера от другой компании. Ха-ха.
Скрининг, к слову, был достаточно подробный, не просто по ключевым словам, а эйчар нормально расспросила об опыте, пожеланиях и так далее. Дальше планировался короткий технический скрининг, большая универсальная техническая секция и итоговый фит с руководителем.
Технический скрининг
Интервьюер сказал, что был на моем докладе на DotNext, и помнит меня. Круто, уже второй, кто узнал меня, в процессе этих собеседований. В целом он понимал, что я вроде не самозванец, поэтому пробежались с ним довольно быстро, и часть времени я позадавал вопросы о работе в компании.
Техническая секция
С моей точки зрения это был почти образцовый собес. В одной секции, не продлившейся дольше двух часов, задавали вопросы сразу и по языку, и по БД, и по архитектуре, и даже задачку на алгоритмы. Пожалуй, единственный минус — секция полностью разговорная. Код не писали, схемы не рисовали. Этого очень не хватило, и рассказывать устно алгоритмическое решение было не слишком прикольно.
Собственно, думаю, что такой разговорный стиль интервью ухудшил точность оценки хард-скиллов, поэтому я получил senior-.
Фит
Эйчар, технический руководитель, общая руководительница. Задавали вопросы по опыту, рассказывали про проект и команду. В принципе, ничего необычного. Спросили, чем хочу заниматься, а чем не хочу. Подумал, что самое неприятное в моей работе — дополнять чужой плохо спроектированный (!) код. Дополнять хорошо спроектированный это ок. Рефакторить говно в конфетку тоже ок. А вот если нужно дописать функцию, но рефакторить нельзя — это, конечно, боль.
Что понравилось
1. Роль эйчара не номинальная, задавались довольно подробные вопросы по опыту и пожеланиям
2. Собес почти в один ход, при этом спросили всё нужное
3. Интересный самобытный продукт, а сама компания при этом бигтех (2ГИС это контур Сбера)
Что не понравилось
1. Коммуникация со стороны эйчара поначалу была с огромными паузами
2. Вся основная секция сугубо разговорная, ей не хватило практических частей
3. В компании нет премий и индексации
Результат
Эйчар написала, что готовы сделать оффер, отправила анкету службы безопасности. К этому моменту Т-Банк пропал, Mindbox и Uzum отвалились. На фите спрашивали, какая сумма мне интересна, и я сказал, что меньше X вообще не буду рассматривать. Раз после этого пришли с инфой об оффере, то я логично подумал, что предложат как минимум X (так и оказалось). Поэтому ещё до конкретных цифр я уже понимал, что оффер, вероятнее всего, хороший, и был готов сразу его принять. Мне и компания нравится, и собес понравился, и вариантов других не было. Но тут вернулся Т-Банк...
👍27🔥7