Алгоритмы и структуры | Нужны ли они программисту?

preview_player
Показать описание
Кому нужно учить алгоритмы и структуры данных? Для чего они нужны, и спрашивают ли о них на собеседованиях?

⚠️ Внимание! С 01.12 будет повышение цен на менторинг до 8000 грн/месяц вместо 5000 грн ⬇️

не зовут на собеседования из-за отсутствия коммерческого опыта?
мечтаете о новых вызовах и возможности работать над реальными коммерческими проектами;
👩‍💻 Тогда наш курс «Обучение на реальном проекте» специально для вас:

статус митинги с командой 2-3 раза в неделю, на которых участвует руководитель проекта, разбирает ситуации и полностью эмулирует рабочее окружение, так как это могло бы происходить на настоящей работе;
спринты;
code review;
коммерческий опыт в резюме, что повысит ваши шансы быстрее найти работу👍.
😇 БОНУС: начни обучение на проекте в сентябре и будешь приглашен на уникальную встречу лично с Сергеем Немчинским!

🌐 Оставляй заявку на Обучение на проекте прямо сейчас и получи консультацию от наших менеджеров 🚀🖥️💡Количество мест на проектах: ограничено!

Курсы для будущих JS-разработчиков:

Курсы для будущих Java-разработчиков:

Курсы для будущих С#-разработчиков:

Курсы для будущих Python-разработчиков:

🎓 Другие направления:

🎓Продвинутые курсы для состоявшихся девелоперов:


Тайминг:
00:00 - вступление
00:38 - как было раньше
03:19 - топ компании про алгоритмы
06:17 - как учить алгоритмы
Рекомендации по теме
Комментарии
Автор

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

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

DevJungles
Автор

Едва ли мне это пригодится и, тем не менее, огромное спасибо за глоток свежего воздуха!)

borisisavnin
Автор

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

panzerlo
Автор

Что такое unit testing и есть ли у вас (FoxMindEd) обучение по unit testing для программистов? Буду очень рада если Сергей Немчинский ответит.

avramenkolana
Автор

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

А вот каргокульт штука забавная. За мной как-то с неделю бегал рекрутёр яндекса, при этом искренне удивляясь, чего это я не хочу задротить алгоритмы (мы вам и материалы для подготовки дадим!) и проходить несколько раундов цирка с понями.
Я тоже искренне удивлялся, ибо так и не смог понять, зачем на позицию девопса надо гонять по алгоритмам.

redneck_prm
Автор

в принципе, согласен.
Есть бигтех (фаанг + топ корпы типа убер, майкрософт ИТД), который может спрашивать на интервью что угодно, люди всё равно туда будут идти, потому что 1) престиж 2) зарплаты 3) более интересные задачи. Я знаю, что в бигтехе очень любят DSA (data structures & algorithms), но это тот уровень DSA, который можно освоить за неделю (если не за пару дней), к тому же это будет о том, что используется: array vs linked list vs dynamic array, graphs, trees и всё такое. Из алгоритмов там вообще раз-два и всё -- бинарный поиск, проход в глубину, проход в ширину и может что-то ещё. Главное, что тебе дают знания DSA -- это понимание твоего инструмента, даже если это python, в котором всё очень сильно видоизменено. Ты осознаешь, как работает компьютер и почему что-то является плохой идеей, а что-то хорошей. Шанс того, что на средней работе крудилы тебе это пригодится, довольно небольшой. В бигтехе вроде иначе. В системном программировании и эмбеддед абсолютно точно пригодится, без вариантов.
Что касается "coding interview", это же вообще другое понятие =) какая-то часть программистов тупо сделала карго-культ с бигтеха, типа гугл делает, поэтому он гугл -- мы тоже будем делать и станем как гугл. Конечно, они ошибаются. Конечно, на работе на укр аутсорсе вам эти знания не пригодятся. Но что ещё хуже, это то, что довольно часто вместо алгоритмических интервью со стандартными вопросами про DSA будут попадаться конченные со своими конченными leetcode-style задачами. Литкод вообще зло (практически ничего общего с реальными задачами, всё делается чтобы зафорсить вас купить платную подписку (ну а на что им жить)), а их задачи и лайв-кодинг ещё хуже. Вот это прям red flag за зарплату в 500-1000-2000$.
Подведя итог: если я хочу в бигтех и готов помучиться за определенные бенефиты (даже до уровня регулярного решения литкода), это не означает, что то же самое можно/нужно практиковать при устройстве не в бигтех. Сами по себе DSA учить обязательно если вы хотите стать системным программистом, по желанию -- если практическим.

hunterxvovik
Автор

Привет!
хочу задать вопрос касательно роботы.
Начал работать чуть больше года назад, чувствую что продвинулся по своим знаниям. И думаю стоит ли мне пробовать проходить различные собеседования в другие компании на свою позицию таким образом тренеруясь и понимая что требуют в других компаниях. Или же стоит просто больше уделять время работе и учится в своем направление?
Если кто подскажет по своему опыту буду благодарен)

viachezavad
Автор

Немчинский почему ты не снимаешь на этот канал ??? Где IT news??

Panda-stroka
Автор

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

dxzdfks
Автор

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

Anton-rufq
Автор

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

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

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

gxzbeck
Автор

Вчіть алгоритми, якщо навіть не пригодиться, це дуже цікаво

hamadmiral
Автор

Здрасте, при работе на С/С++ на реальном железе типа ARM процессоры и т.д. критична скорость загрузки и обработки - тут как раз и нужно понимание что работает быстрее

alexejvasko
Автор

алгоритми типу сортування або 2-3 дерев чи подібні штуки вони дійсно не потрібні більшості программістів. Але розуміння в принципі що таке складність алгоритму - це треба. Бо практично я зустрічав коли люди не задумуючись робили код який виконувався нормально на невеликих базах, а на більших вмирав просто тому що людина там зробила O(n^4) де можна було зробити щось +/- лінійне витративши 5-10 хв на подумати. та й квадратичні замість лінійних багато хто ліпить не задумуючись, хоча принаймні на хвилинку подумати який порядок розміру вхідних даних.

TwilightSun
Автор

как часто на интервью задают задачи связанные с динамическим программированием?

habalgarmin
Автор

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

stanislawhein
Автор

Шикарно коли про такі речі починають питати фронтів

nickmet
Автор

Не согласен, с тем что не нужны, если говорить о нагруженных приложениях. Не раз видел хранение уникальных значений в массивах, поиск перебором в сортированных массивах, инициализацию пустых векторов для хранения больших объемов и т.д. Зачастую чтобы правильно применить библиотечную функцию надо понимать её контракты (например бинарный поиск требует отсортированных данных) - это знание алгоритмов. А знание структур поможет в представлении данных и повысит производительность работы с ними.
Как пример можно привести телефонный справочник на миллион записей:
Решение в лоб использовать массив для хранения всей информации и поиск нём перебором, но как вариант использовать хэшмапу для хранения или бинарный поиск для того же массива и как неожиданно всё начинает работать быстрее)) Также сюда можно включать и алгоритмы кэша, т.к. не всегда тот же ЛРУ является оптимальным решением, а некоторые форсят его очень сильно. Если сюда ещё накинуть историю про то что иногда тот же хэшсет несёт ещё и семантическую нагрузку в виде "Эти значения уникальны" получаем неплохой выхлоп со знаний алгосов и структур. Короче кейсов очень много, хоть и используются они редко, хотя бы базовые знания нужны, если цель стоит чуть выше чем кодер средней руки.
З.Ы.
Если цель просто покрасить кнопку, то офк лучше потратить это время на изучения CSS и HTML

RealBlank
Автор

Немчинский: -пример, когда мне пригодиться?
Ответ: когда, придумаешь курсы по алгоритмам и сд тогда и пригодиться!

roma.
Автор

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

vladimirrus