Уже много лет IT компании проводят алгоритмические собеседования при найме технических специалистов. Подход введенный в FAANG плавно перетек в большинство крупных компаний. Яндекс, Авито, Т-Банк и многие другие хотят проверить алгоритмические знания кандидатов. Но на практике такое собеседование оказывается бесполезным созвоном на 45 минут, который ничего не говорит о кандидате.

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

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

Кто-то может сказать: “О, человека не приняли в компанию из-за алгоритмов и он решил обидеться и сказать всем, что алгоритмы бесполезны”. Отчасти это так и было, но я решил не останавливаться на своем чувстве несправедливости и пошел дальше: адаптировал алгоритмы в компании, прошел все этапы в Google и даже решал алгоритмы на протяжении года.

Все это помогло мне понять, что многие двигаются не туда, когда решают спрашивать деревья и графы на своих интервью.

Но все это отдельными статьями, ссылки на которые я приложу сюда позже.

Сейчас я просто хочу рассказать свою историю.


Собеседование, которое меня обидело

Моя карьера началась в 2015 году. Меня взяли Java джуном в небольшую аутсорс-компанию, потому что я знал немного базы по Java, мог адекватно задавать вопросы и, наверное, не сильно бесил своего начальника.

Проработав над не очень интересными задачами около года, я решил, что пора дерзать — я должен стать “матерым” разработчиком и ходить под знаменем самого популярного IT-бренда России.

В то время на российском рынке «царем» IT считался «Яндекс». Попасть в компанию было сложно: вас ожидало нескольких этапов, первым из которых было решение алгоритмических задач.

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

Мы договорились, что встретимся на собеседовании через 10 дней, и я начал подготовку. Воспользовавшись советом HR, я пошел на Leetcode — самую популярную площадку для тренировки алгоритмов и решал все задачи подряд.

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

На второй день было понятно, что мне не хватит времени на подготовку. Мало того, впереди меня ждали еще собеседования по андройд, систем дизайну и проектированию на Java.

Внимательные читатели уже поняли, что это то самое собеседование, которое я провалил. Но давайте я расскажу детали позора.

Настал день собеседования, меня посадили в кабинет-переговорку, поставили передо мной ноутбук и связали меня с моим интервьюером. Я удивился, что не будет личного присутствия, но удаленный формат общения меня немного расслабил.

Мне скопипастили задачу в онлайн whiteboard, по сути своей задача была на работу с массивами, и это единственная тема которую я успел разобрать.

Стресс нарастал и я взял мимолетные две минуты на то чтобы прочитать и понять задачу. Проговорил ее несколько раз вслух. Получил пример входных и выходных данных, но так и не понял как ее решить. Я пытался задавать вопросы, получал подсказки и даже придумал какую-то эфемерную последовательность действий.

На это ушло слишком много времени. Мой интервьюер со словами: “Решай, у тебя есть все что нужно” пропал с экрана монитора за дверь московского опенспейса. Поставил он на мне крест, подумал что я все понял, или просто ушел за водой, я не знаю.

Когда он вернулся на нашем общем экране был корявый, точно забагованный алгоритм, а на моем лице — апатия.

Со мной попрощались и я стал ждать следующего “судью”.

Все остальные этапы прошли сносно, но мысль “я провалился” оставалась у меня с конца того звонка до вежливого отказа от HR через неделю.

С тех пор я пытался не связывался с алгоритмами.

Ты должен был бороться со злом, а не примкнуть к нему

Прошло три года. За это время я успел поработать над большими проектами в B2B и B2C, из бэкенда мигрировал в андроид-разработку, делал крутой видеоплеер, а затем ушел в маленькую криптокомпанию.

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

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

йоу как ты смотришь на вариант с тем, чтобы я тебя порекомендовал на этой неделе? Как раз на след. неделю тебе смогут запланировать тех. собес )

Я человек простой — плыть по течению это мое, но вот такие “пинки” я никогда не игнорировал.

Собеседование должно было состояться через неделю.

На этот раз не было гнетущего взгляда собеседующего, даже временного, так как всё делалось в автоматизированном сервисе. Все мои действия записывались в реальном времени. Сначала я переживал, что некому задать вопрос, но это было не нужно. Задача была на массивы, которые я зарешал и зазубрил наизусть: «Переверните все слова в массиве без знаков пунктуации».

Главное отличие от прошлой подготовки к собеседованию — я правильно решил задачу на собеседовании и получил хорошую инъекцию эндорфина от своего успеха.

Какой самый неправильный вывод я сделал из этой ситуации? Правильно — нужно внедрять подобное у себя, потому что это быстро и приносит удовольствие. А если ты разработчик и не получаешь хороших эмоций от своих решений, то ты плохой специалист.

Сама наивность.

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

Я не задумываясь взял свою любимую задачу «Найти k максимальный элемент в списке» и взял ее как практическую задачу вдобавок к теории, которую я спрашивал.

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

После одного из таких собеседований, один из кандидатов, которого я мучал этой задачей и я вышли из переговорки и состоялся следующий диалог:

Он:   А зачем ты меня это спрашивал, как тебе это помогло
Я:   Я смотрел на то как ты пишешь код и задаешь вопросы
Он:   А не легче было написать какой-нибудь код, который что-то делает полезное в рамках приложения
Я:   У моей задачи есть решение, мне важно чтобы ты его нашел

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

Момент, когда я понял, что алгоритмы адаптируются неправильно

Мы возвращаемся в (почти) настоящее время, в 2022 году я взял выше и собеседовался в Google

На этот раз я был настроен на успех, для подготовки я взял два месяца. При этом у меня не было работы, поэтому алгоритмами я занимался по восемь часов в день. За два месяца я решил 300+ задач, с упором на средние и сложные — других Google не спросит.

На тот момент алгоритмы плотно уже въелись в IT-культуру бигтеха СНГ, так что у меня была возможность попрактиковаться. Я подавался на собеседования везде, где были алгоритмы, и без особых проблем их проходил. Мне давали хорошие отзывы и офферы, но я чувствовал себя мошенником — я не считал себя крутым специалистом, я просто уделил кучу времени алгоритмам.

Однако мой фокус был именно на собеседовании в Google. Я стремился к точке отсчета, чтобы понять, как они проводят собеседования.

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

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

На этом моменте стоит сказать что мое мнение сугубо субъективное, я пытаюсь собрать больше точек зрения, поэтому недавно на подкасте я поговорил с моим соведущим Игорем Климовым про его мнение на этот этап собеседований 

Игорь работал в VK и тоже в одно время со мной собеседовался в FAANG, мы вместе готовились к собеседованиям. Что уж там, мы даже приходили на канал Mobile Developer, чтобы побатлиться и порешать задачи перед большой публикой (Игорь победил, я считаю)

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

А вот пример, почему алгоритмы полезны…

Ровно такой комментарий я ожидаю от вас под этой статьей, поэтому пишите, не стесняйтесь. Даже если я найду аргументы на ваше мнение, я постараюсь дать самый конструктивный ответ и привести пример, как это можно сделать по другому.

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

Лень сделала много, вся индустрия айти делается на столпах оптимизаций и капитализма. Та же лень внесла алгоритмы в современные хайринг воронки — тут тебе и 3000+ готовых задач разной сложности и отсутствие инструментов для собеседования — открыл блокнот и решай проблемы, а мы уже скажем правильно ты это сделал или нет.

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

Если у вас в собеседованиях есть алгоритмы, спросите себя: “Если кандидат уже успешно прошел все остальные этапы, давать ли ему задачу с Leetcode” А даже если решили дать, представьте что он ее не решил. Стал ли он после этого плохим специалистом?

Эндшпиль

Круто что вы дочитали до этого момента, вот вам за это картинка (там кстати еще два полных месяца в 2022 году, это момент подготовки в Google)

Год страданий
Год страданий

На ней мой эксперимент: “А буду ли я крутым специалистом, если буду продолжать решать алгоритмы каждый день в течении года”.

Этот эксперимент я делал ради вас, прошу не повторять, все трюки уже выполнены и не очень впечатляют.

Какие выводы за этот прекрасный год я сделал:

  1. на дворе 2024 год, я все забыл

  2. это нужно только для собеседований

  3. я не стал круче, наоборот, иногда я пытаюсь “сделать алгоритм” там, где это не нужно

  4. компании плохо адаптируют алгоритмическую секцию

Что в алгоритмах дает вам понять, что человек классный специалист? Что даст вам понять, что он готов расти? Как алгоритмы позволяют брать на себя ответственность? Зачем и как правильно внедрять алгоритмы?

Эти вопросы мы частично разобрали на подкасте 

и на оставшиеся я подробно отвечу в следующих статьях, поэтому подписывайтесь, чтобы не пропустить!

Комментарии (24)


  1. ganqqwerty
    05.08.2024 12:15
    +13

    А вот пример, почему алгоритмы полезны. Есть у тебя вакансия. На нее нужен один человек и на нее скажем 800 претендентов. Хрюши отсеяли тех, кто вообще ни в какие ворота и теперь претендентов 300. Кто-то из команды или нанимающий менеджер почитал резюмешки, и теперь их 100. Надо чтобы осталось хотя бы человек 15, с которыми можно будет по-человечески поговорить часа два. Как это сделать?

    Ну вот есть статистика, что если взять сотню чуваков со знанием алгоритмов, 70 из них не вылетят после первого полугода. А если случайную сотню - то 20. Почему так? Да хрен его знает, наверное, как-то связано. Если бы вместо алгоритмов там было жонглирование или решение задачек на стулья с пиками пинг-понговые шарики - задавали бы задачки на пинг-понговые шарики.

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


    1. DarthVictor
      05.08.2024 12:15
      +2

      Ну вот есть статистика, что если взять сотню чуваков со знанием алгоритмов, 70 из них не вылетят после первого полугода. А если случайную сотню - то 20. Почему так? Да хрен его знает, наверное, как-то связано.

      У меня сейчас скорее не 70 и 20, а 90 и 80. Да и в целом довольно смешной выглядела ситуация в том же Яндексе в году 17-м, когда джуны умели решать алгоритмические задачи, а начальники и авторы многих вполне успешно работавших сервисов честно признавали, что нет. То есть умение решать алгоритмические задачи на собеседовании не очень коррелирует даже с умением решать алгоритмические задачи на работе. Потому что в одном случае нужно уметь быстро вспомнить одно из типовых решений, а в другом - медленно и вдумчиво выбрать из нагугленных решений. Да, кругозор полезен, чтобы как минимум знание что гуглить. И пока люди специально не готовились к алгособесам от них был толк. Они позволяли понять этот самый кругозор. Проблема началась, как только к собеседованиям стали массово готовится. Теперь они показывают только усидчивость.


  1. ganqqwerty
    05.08.2024 12:15

    Воспользовавшись советом HR, я пошел на Leetcode — самую популярную площадку для тренировки алгоритмов и решал все задачи подряд.

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


  1. wataru
    05.08.2024 12:15
    +4

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

    Да, копировать интервью у ФААНГа, если вы не ФААНГ - глупость и карго-культ. То, что отлично работает там, не обязательно лучший вариант в других местах.

    Если бы ваша статья прямо содержала "в маленьких компаниях", я бы целиком и полностью согласился с вашей статьей. А так выглядит, что вы считаете, что и ФААНГам стоит от них отказаться. И с этим я категорически не согласен. У меня даже целая статья есть на тему того, что алгоритмические собеседования для ФААНГов и других больших компаний нужны: https://habr.com/ru/articles/774862/

    Сами по себе они не так уж и плохи. Алгоритмы действительно пригождаются, особенно в ФААНГах, так что проверяется весьма релевантный навык. Плюс, программиста заставляют писать код - эта часть обязательно должна быть в любом интервью.

    Разве что false negative у алгоритмических интервью побольше каких-нибудь других типов. Но зато они с лихвой это компенсируют масштабируемостью и низким false positive, что ФААНГам важно в в первую очередь.

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

    Всегда стараюсь делать именно так. Но, к сожалению, редко когда можно взять рабочую проблему, абстрагировать и ужать ее, чтобы можно было дать это на интервью. Поскольку задачи постоянно утекают и их приходится ротировать, далеко не всегда можно так сделать. Поэтому появляются чуть более абстрактные и, возможно, искусственные задачи.


  1. nail777
    05.08.2024 12:15
    +3


  1. amazingname
    05.08.2024 12:15
    +4

    По моему опыту, основная причина провальности лайвкодинга - привычный способ мыслить. Обычно если программист видит алгоритмическую задачу, он думает о ней, визуализирует проблему, получает ощущение охвата проблемы, ее осознания, потом его мысли блуждают вокруг и в какой-то момент из ничего выскакивает видение решения. Сделать это под стрессом невозможно - мозг пугается, все время сбрасывается и не входит в нужное состояние.

    Для того чтобы решить задачу на собесе нужно уметь мыслить как чат GPT - сразу с ходу генерить и озвучивать идеи и постепенно приходя к решению.

    Чтобы подготовитсья, я делал так. Брал не сложную задачу с литкода и вместо того чтобы думать о ней начинал сразу в слух ее обсуждать, пытаясь найти решение (второй этап - обсуждать еще и на английском). Таким образом удается перестроить мышление с образного на вербальное. Дальше, на собесе когда предлагают ливкодинг, сразу начинаешь обсуждать задачу, это нравится интервьюеру, он участвует и ждет, через какое-то время надо выйти на решение. До решения задач на собес гугла я не дошел, но после этой тренировки вербального мышления, задачи типа обхода бинарного дерева или ревью кода на собесе перестали быть катастрофой.


  1. menelion_elensule
    05.08.2024 12:15

    Наконец-то хоть кто-то про это написал, спасибо вам! Считаю, что лучшее собеседование (да, сам проходил успешно именно такие) — это тестовое задание для отсева, причём желательно похожее на то, что человек будет делать на работе, а потом интервью с просьбой написать кусок кода, спроектировать БД или что-то такое же, максимально приближенное к области работы. Понимаю аргументы автора комментариев выше, что для реально большой компании с 800 человек на место это не работает (наверное). Но я не знаю ничего более стрессового, чем алгоритмические задачи на собеседовании. Хуже этого — только алгоритмические задачи на бумажке.


    1. Alexandroppolus
      05.08.2024 12:15
      +7

      Наконец-то хоть кто-то про это написал

      В смысле "наконец-то"? За последний год штук 5 таких статей было.

      Тестовое задание считается ещё более спорным и ненавистным (для многих) пунктом.

      А насчет бумажки вы зря, там зато не надо дебажить под ключ, бумажка простит всякие мерзкие ошибки на единицу и прочие корнер-кейсы.


    1. kimisa
      05.08.2024 12:15
      +1

      Тестовое задание хорошо, если вы выбираете из 2х компаний. Ну и если оно рассчитано не больше, чем на 2 часа. Но и тут есть но - для вас эта задача может занять 2 часа, т.к. вы часто кодите в этом направлении. А для другого в 3 раза больше, т.к. он кодил в другом направлении.


  1. menelion_elensule
    05.08.2024 12:15
    +2

    P.S. Уважаемый автор, если я вас случайно минуснул, извините, ради всех богов, — accessibility Хабра оставляет желать много лучшего, и разработчики обе кнопки пометили как «Голосование» (спасибо, очень полезно).


  1. 40oleg
    05.08.2024 12:15
    +3

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


    1. Oceanshiver
      05.08.2024 12:15
      +3

      Как инструмент отсева он примерно так же хорош, как и просто случайно выбрать 15 резюме из 100. Где гарантии, что люди, прошедшие отсев алгоритмами, умеют только в алгоритмы, потому что месяцами учили только их, а в работе они "не очень"?


      1. wataru
        05.08.2024 12:15
        +1

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

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

        Плюс, если алгоритмическая задача, таки, попадется (а в ФААНГах они попадаются, я на личном опыте знаю), то такой человек ее решит, а не напишиет наивное плохое решение даже не задумываясь, что тут какой-то этот ваш алгоритм вообще нужен.


      1. geotech
        05.08.2024 12:15

        Ваше утверждение кажется мне контринтуитивным. У нас есть 100 резюме из них нам нужны 5 программистов с хорошей базой программирования. Известно, что 20 из всех резюме хоть сколько-то годны в разной степени, а остальные "грузчики". Наша задача нанять лучших. При отсеивании мы гарантированно будем выбирать из 20 тех, кто хоть сколько-то умеет программировать, при случайно выборке в 15 мы в даже в самом лучшем варианте, когда все 15 из тех 20, что на что-то способны, мы, возможно, убрали из выборки 5 самых лучших. Даже если не придираться к числам, отсев будет всегда давать лучше результаты. Ну и явление "в работе они "не очень"" - при случайном отборе будет проявляться чаще.


  1. Neikist
    05.08.2024 12:15
    +1

    Я был единственным андройд разработчиком

    Я бы понял написание "андройд" от кого угодно, но не от андроид разраба... И встречаю все чаще и чаще такое написание. Что вообще происходит?


    1. Radisto
      05.08.2024 12:15

      В английском это дифтонг и типа один гласный. Таким образом можно подчеркнуть ориджинал проноунсэйшн и хай лэвэл. До́быча, компа́с, не плавают, а ходят.


      1. flx0
        05.08.2024 12:15
        +2

        Только суффикс -оид вообще не английский, какой тут, к хренам, ориджинал прононсиейшн? Да в английском там никакого "й" даже близко не звучит. В отличие от того же биткойна, который в обратную сторону почему-то любят коверкать.


    1. AYamangulov
      05.08.2024 12:15

      А еще повсеместно входящее в оборот "мозайка" - не пойму, что это, бабка Деда Мазая?


  1. geotech
    05.08.2024 12:15
    +1

    В крупную компанию и устоявшийся проект нужны рабочие "пчелки", ничего личного - просто бизнес. Алгоритмические задачи подразумевают подготовку, усидчивость, и IQ не ниже среднего, а также мотивированность и целеустремленность. То есть такие сотрудники смогут решать хорошо сформулированные "простые" задачи. Чтобы не брать совсем "роботов" требуют вести какой-никакой диалог, а также, всякие там, софт скиллы. Последний рубеж - вайб-тест, или насколько кандидат подойдет команде и компании по вайбу. Все вышеперечисленное - это легко тренируемые навыки, разное время может потребоваться, но 1 года хватит на подготовку в любую крупную компанию мира на должность миддла. Для синьоров есть еще предметная специфика - ее уже трудно натренировать - это, в основном, опыт.

    ЗЫ: я не прошел ни одного собеседования, что у меня были :(


  1. Batalmv
    05.08.2024 12:15

    Читая такие попытки рефлексирования, я вот хочу понять. Вот мы, или они, ищем программиста. Вот как его проверить?

    Всем хочется, чтобы и код полезный писал, и работящий был, и "спикал" на всякий случай. Но проблема в том, что это надо проверять.

    А программист - это ж не грузчик. Качество написания кода зависит от того, как он думает, что знает, какой имеет опыт, как он реагирует на ранее допущенные ошибки

    ---------------

    Иногда мне кажется, что люди, и даже сами програмисты смотрят на себя, как на грузчиков. Вот я не применяют в работе напрямую - значит мне не надо. А то, что это сформировало твое мышление и ты уже полузуешься чем-то не особзнавая этого - это не важно.

    Вот автор статьи решал алгоритмы - это же наверняка его развивало, прокачивало "думалку". Может и нет, я не знаю, может он заучивал решения. Но он для себя пользы не видит. Ну ОК, в итоге каждый приходит сам к тому, кто он есть


  1. viordash
    05.08.2024 12:15

    а если бы у работодателя была возможность увольнять "по щелчку", не стали бы эти этапы интервью лишними? Я к тому что, достаточно провести устное тех-интервью и определив что кандидат более-менее подходит брать сразу на работу. Не подошел, до свидания.


    1. wataru
      05.08.2024 12:15

      Нет. Ибо даже хорошие кандиадаты довольно долгое время въезжают в кодовую базу, и по началу все работники будут очень мало продуктивны. Потом, когда зерна от плевел отсеются уже пара месяцев и прошло. И это 2 месяца потерянного времени, а не только 2 зарплаты. Плюс у больших компаний будет оплата переезда и стартовый бонус. Это еще несколько зарплат. Но потерянное время, конечно, компании дороже.


  1. Politura
    05.08.2024 12:15

    1. на дворе 2024 год, я все забыл

    2. это нужно только для собеседований

    3. я не стал круче, наоборот, иногда я пытаюсь “сделать алгоритм” там, где это не нужно

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

    2. Любое перекладывание джосонов, это алгоритм. Где также можно напортачить. Навык решения алгоритмических задач дает меньше шансов этого сделать. Практический пример: так уж сложилось, что попал в крупную компанию, где литкодовского этапа не было, был как-раз приземленный: бакендщику дают написать сервис под заданные параметры за полтора часа, а потом еще час обсуждений с пятью человекама того, что получилось и на околозаданные темы, включая систем дизайн и прочее. Так вот, после опыта литкода, делая код ревью я частенько заворачивал код, когда, например, в цикле запрашиваются одни и те-же тяжелые данные, которые можно было запросить один раз за пределами цикла. Или, например, когда какой-то метод в цикле вызывает метод другого класса, а тот метод опять-же в цикле берет из базы, или из стороннего сервиса данные, которые есть у вызывающего, так что можно было их просто передавать в метод. Таких вещей просто море и у сеньеров и у тех, кто даже еще выше. А если есть опыт алгоритмических задач - глаз их ловит на лету.

    3. Это всего-лишь один из навыков, который полезен в работе.


    1. Neikist
      05.08.2024 12:15
      +1

      Честности ради - второй пункт глаз цепляет у многих и без сидения над задачами по дп или на графы. В остальном спорить не буду, литкод скорее полезен (ну или если в вузе это все изучалось хорошо).