Соглашусь, что кодить руками структуры приходится редко, а вот выбирать их приходится ежедневно. Чтобы сделать грамотный выбор нужно знать некоторые нюансы и ограничения структур и алгоритмов: кроме того нужна банально знать, что такой алгоритм есть, чтобы загуглить его в стандартой либе. На то чтобы понимать структуры и алгоритмы, чтобы потом их грамотно выбирать одного дня не хватит я бы оценил объем необходимых усилий где-то в месяц вначале + несколько часов ежегодно размазанных по этому самому году. Кроме того рост мощности железа имеет два нюанса: - вместе с ним непропорционально вырос объем данных - облака как-то интересно на все это повлияли, что сейчас мы деплоим наши приложение на довольно слабые железяки.
Полностью согласен, самый верный ответ - алгоритмы и структуры данных нужно знать не для того, чтобы их писать с нуля, а чтобы понимать, когда и какую структуру/алгоритм использовать
Что значит для бизнес программиста? Есть такая профессия? Есть Software engineer. Зачем себя ограничивать узким коридором технологий и урезать себе базу? Бывали случаи когда после многих лет работы на высокоуровневом языке, приходилось спускаться на уровень С парсить ТСП заголовки и обфусцировать пакет и не было никаких коллекций с алгоритмами, при приходилось вручную писать. Если такая задача возникнет, что надо привлекать в проект отдельного человека? Это же бред. Разделение труда оно конечно хорошо, но не надо доводить его до абсурда )
@@-boiadeiro- Ну вы понимаете, с повышением уровня инженера, таких задач возникает больше и чаще, а времени на изучение все меньше, к тому же база по computer science и алгоритмам, которая залетела в 18 лет, сильно помогает, когда возвращаешься в эту тему в 40 лет. Ну и тут скорее вопрос, куда человек фокусируется, удовлетворять потребности рынка или развиваться как профи. Часто это не совпадает. А вообще такие задачи сильно ближе, чем многие думают.
На самом деле, задача по алгоритмам позволяет сразу комплексно оценить знания интервьюируемого. Во-первых, знание синтаксиса языка. Во-вторых, знания computer science. В-третьих, логику мышления интервьюируемого и это самый главный пункт (не просто так толковый и адекватный интервьюер акцентирует внимание на том, что нужно вслух проговаривать свои мысли и идеи). И чтобы удачно пройти алгоритмическое интервью, необязательно даже решить задачу. Достаточно показать, что ты думаешь в правильном направлении и в целом видишь какие-то паттерны. А в целом мне кажется лучше всего давать какой-то кусок кода и попросить собеседуемого отрефакторить его. Указать где ошибки, что можно оптимизировать и т.д. Потому что алгоритмы можно заучить, а тут уже только опыт поможет.
Ознакомиться с этим будет полезно, хотя бы для расширения кругозора. Но задротить литкод без цели пролезть в фаанг - это странное. А вот каргокульт штука забавная. За мной как-то с неделю бегал рекрутёр яндекса, при этом искренне удивляясь, чего это я не хочу задротить алгоритмы (мы вам и материалы для подготовки дадим!) и проходить несколько раундов цирка с понями. Я тоже искренне удивлялся, ибо так и не смог понять, зачем на позицию девопса надо гонять по алгоритмам.
У них таки есть адекватные материалы для подготовки? Курсы для школьников рассчитаны на людей с совсем другими временными ресурсами и целями. И читают их соответственно. Да вообще, преподы в вузах читают лекции так, будто располагают временем студентов, на семестр, энным количеством академических часов, а заполнять их плотно не обязательно. Можно составить учебный план так, чтобы читать лекцию с комфортом. Просто сравнить даже местные материалы Немчинского и того же Шемсетдинова. А алгоритмы - академическая тема. Тут и лекторы вальяжны, и рассчитывают на математическую подготовку студентов. Но я про СНГ-каналы. В англоязычном есть конечно и получше, со всякими индусами, но я чёт и не искал там плотно, но и не встречал ничего среднего. Либо тупа разжевывают решения лииткода, либо читают базу алгоритмов. Подробно паттерны лииткода типа скользящего окна и какие там могут быть в принципе варианты от простого к сложному, абстрактно так "правильность окна зависит от динамичных многих критериев, а не от одного статичного" - вот такого прям в ютубе и открыто не встречал. Получается, либо академическая тема, либо сборник ответов на уровне краткого изложения классиков для литературы. Но фишка в том, что литкод не всегда бьётся просто знанием того, как работает стек, не кисло было бы разобрать ряд сложных примеров.
в принципе, согласен. Есть бигтех (фаанг + топ корпы типа убер, майкрософт ИТД), который может спрашивать на интервью что угодно, люди всё равно туда будут идти, потому что 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 учить обязательно если вы хотите стать системным программистом, по желанию -- если практическим.
Вне зависимости от того, как меняется ситуация, вопрос должен ставиться не "нужно ли учить", а "как глубоко надо погружаться в алгоритмы и структуры данных". По поводу ужесточения требований думаю война повлияла меньше всего, а вот то, что в миру наплодили огромное количество разных курсов, менторства и прочего, и по понятным причинам оно все не может быть на одинаково высоком уровне + ученики все не могу быть одинаково замотивированы и готовы, к тому что их ждет. В итоге сфера наполнилась нереальным количеством "специалистов", уровень навыков которых несложно предположить. Приходится как-то их отсеивать на самых первых этапах.
алгоритми типу сортування або 2-3 дерев чи подібні штуки вони дійсно не потрібні більшості программістів. Але розуміння в принципі що таке складність алгоритму - це треба. Бо практично я зустрічав коли люди не задумуючись робили код який виконувався нормально на невеликих базах, а на більших вмирав просто тому що людина там зробила O(n^4) де можна було зробити щось +/- лінійне витративши 5-10 хв на подумати. та й квадратичні замість лінійних багато хто ліпить не задумуючись, хоча принаймні на хвилинку подумати який порядок розміру вхідних даних.
Здрасте, при работе на С/С++ на реальном железе типа ARM процессоры и т.д. критична скорость загрузки и обработки - тут как раз и нужно понимание что работает быстрее
быстрее работают массивы и последовательный доступ к памяти, а все эти O(N) это не про быстрее. не сложно представить случай когда квадратичный алгоритм будет быстрее линейного, потому что коэффициенты перед О тоже важны.
@@ИванИванов-у3ч4м Даже чтобы дсончики перекладывать, тут уже вопросик, сколько запросов в секунду этих джсончиков сможет обслужить ваше детище. Парсинг дсончиков также тратит ресурсы. Реакты и Ангуляры просто поляжут с этим огромным статик бандлом как на стороне сервера (дохрена отдавать и рендерить, что отнимает процессорное время), так и на клиенте (также процессорнное время на рендер всего этого графония в однопотоке)
Знания алгоритмов и структур нужны всем кто пишет продакшн код. Простой пример: заменил в питоне list на set и программа, которая работала часы работает секунды.
Многие обижаются что сейчас никто не нанимает джунов на работу и что сломана система найма, но проблема в другом. Проблема в том что на одно место претендует около 500 людей, не способных решать задачи и не знающих что такое банальный http. Вопросы на алгоритмы и сети помогают отсеять людей, которые просто пришли на теплое место без желания развиваться. Чтобы выучить один лишь питон или условный реакт много ума не надо, думаю с этим справится практически любой и за такие скромные знания работадатель платить большие деньги точно не готов. Поэтому я думаю что чтобы стать программистом нужно долго и упорно учиться и приложить не мало усилий
Не согласен, с тем что не нужны, если говорить о нагруженных приложениях. Не раз видел хранение уникальных значений в массивах, поиск перебором в сортированных массивах, инициализацию пустых векторов для хранения больших объемов и т.д. Зачастую чтобы правильно применить библиотечную функцию надо понимать её контракты (например бинарный поиск требует отсортированных данных) - это знание алгоритмов. А знание структур поможет в представлении данных и повысит производительность работы с ними. Как пример можно привести телефонный справочник на миллион записей: Решение в лоб использовать массив для хранения всей информации и поиск нём перебором, но как вариант использовать хэшмапу для хранения или бинарный поиск для того же массива и как неожиданно всё начинает работать быстрее)) Также сюда можно включать и алгоритмы кэша, т.к. не всегда тот же ЛРУ является оптимальным решением, а некоторые форсят его очень сильно. Если сюда ещё накинуть историю про то что иногда тот же хэшсет несёт ещё и семантическую нагрузку в виде "Эти значения уникальны" получаем неплохой выхлоп со знаний алгосов и структур. Короче кейсов очень много, хоть и используются они редко, хотя бы базовые знания нужны, если цель стоит чуть выше чем кодер средней руки. З.Ы. Если цель просто покрасить кнопку, то офк лучше потратить это время на изучения CSS и HTML
К сожалению могут спросить гораздо больше чем простое понимание структур данных, могут дать задачку на обход дерева (напишите код для сериализации-десереализации) или какое нибудь банально инвертирование списка за один проход.
Ну да. Да ну их нафиг алгоритмы. А потом видишь квадратичную хрень в коде: for x in vec: last = 0 for i, v in enumerate(vec): if v == x: last = i .... А почему у нас все так медленно работает? А кто это сделал? А чо пайтон такой медленный? А то что мидл на десять строчек накатал два алгоритма со сложностью факториал, а синьор это пропустил, виноват конечно ЯП.
Попадались ролики с задачами собесов в европейские компании - так это выходит далеко за пределы О(н) и рекурсии. Попадались задачи на знание вполне конкретных алгоритмов. Я думал, что речь шла о компаниях, где работали с текстами, семантикой и всяком таком, ну а про то, что интервьюер (ч)удак - как-то не подумал.
Привет! хочу задать вопрос касательно роботы. Начал работать чуть больше года назад, чувствую что продвинулся по своим знаниям. И думаю стоит ли мне пробовать проходить различные собеседования в другие компании на свою позицию таким образом тренеруясь и понимая что требуют в других компаниях. Или же стоит просто больше уделять время работе и учится в своем направление? Если кто подскажет по своему опыту буду благодарен)
Возможно, к Алгоритмам и Структурам данных добавятся вопросы о Шаблонах, Рефакторинге Хотелось бы, чтобы наши приложения работали не хуже, чем от американских и европейских специалистов
6:08 а потом идем на тот же Leetcode, пробуем решить задачу хотя бы уровня Medium и удивляемся, насколько это "ничего сложного"😂. Но так да, знание абсолютно бесполезное на практике, если только не в Faang'е каком-нибудь работать.
Если хотите работать в компании уровня яшка/тинек/сбердевайсы и зарабатывать там верхнюю границу вилки, то экспертно знать и уметь в АиСД - необходимость
Я с++ разработчик, последние несколько лет занимаюсь высоконагруженными приложениями. И в этой области не просто нужно знание алгоритмов и структур данных, но так же понимание как эти алгоритмы будут исполняться на железе. Например линейный поиск в списке и в динамическом массиве имеет сложность О(n). Но на деле поиск в массиве оказывается многократно быстрее, потому что более эффективно используются процессорный кеш. И все эти нюансы спрашивают на собеседованиях.
Как минимум алгоритмы и структуры данных качают твои инженерные скилы, и понимание, как все работает под капотом. как максимум мы хоть и не пишем их ежедневно, но делаем выбор в пользу одних или других. Не смотря на возросший объём вычислительных мощностей возросло и количество обрабатываемых данных и более того, растёт постоянно, а вот компенсирующего увеличения вычислительных мощностей сейчас уже нет. В общем полная чушь, что знание алгоритмов и структур данных на уровне сеньора не нужны. Очевидно, что нужны и ещё как, причём не на уровне топ разраба...
Я недавно проходил собеседование на позицию Java dev junior, меня спросили про GoF паттерны) Не смотря на то, что в Foxminded по ним есть целый курс, который нацелен на миллов)
Я бы сказал, что это ещё зависит от области, например в эмбеддит разработке знание алгоритмов и структур данных очень даже полезно, с учётом того, что тут С или С++, почти не исползуются сторонние библиотеки (для экономии памяти) и одновременно есть требования как к скорости работы на медленных микроконтроллерах, так и к потребляемой памяти измеряемой килобайтами.
Без алгоритму дій навіть борщ неможливо приготувати. Неважливо яка інтерпретація алгоритму. Головне, як миркує людина: алгоритмічно чи ні. Алгоритм = архітектура мислення.
Дожились. Сначала математика не нужна, потом университут, а сейчас и алгоритмы. Специалист должен это знать, а не просто, как говорится, нахвататься вершков, и быть дипломированным бараном не знающим как устроены встроенные функции.
ага так и запишем, прежде чем браться за html и css, нужно как минимум получить Ph.D. и вообще понять как мир устроен, да? Вакансии где реально нужны такие глубокие фундаментальные знания это очень маленький процент. Это безусловно плюс если человек имеет такие знания, но говорить что они всем нужны это бред
Ну эт типа для солидных специалистов нужно конечное наверно, но явно не все же будут солидными супер специалистами. Тут дело такое, что может кому-то и география не нужна, потому что кучер всё равно довезёт куда надо 😂
Клоунада и снобизм🤡 Уже жду как какой-то КПИшник будет спрашивать это у меня и такой "фиии, как это так ты не знаешь базу, поприходили вот эти, без профильного образования и ещё хотят оффер" :) А по факту, пока я 50 часов изучал жава фреймворки и проект по ним, ни разу мне это не нужно было... . Ну а зачем же спрашивать про @getMapping, если можно спросить про фундамент и базу? "И если человек не знает фундамента и базы то как он может писать код?" 🤡🤡🤡
Можно и программирование не изучать , кому это сейчас нужно? Давно есть no code решения. Зачем мне ваш SQL - это прошлый век, я все таблички в excel храню как нормальные люди.
Сейчас работодатели требуют знания алгоритмов и структуры данных. В нашей школе фоксмайндед мы открыли курсы по этим навыкам. Несите свои бабки лохи. Завтра работодатели будут спрашивать как правильно курить. Несите свои бабки лохи и в нашей школе фоксмайндед мы научим вас курить. Ясно понятно.
Не согласен с Сергеем Немчинским. Знание алгоритмов и структур данных, является критичны. Наличие алгоритмических знаний, является очень полезны для программиста, по следующим критериям Знание алгоритма Позволяет писать более эффективный и структурированный код. Алгоритмы и структуры данных определяют, как будет работать код, и от того, насколько эффективно реализован код, зависит скорость и производительность программы. Программист, знающий алгоритмы и структуры данных, будет выбрать оптимальный способ решения задачи особенно, в коммерческих проектах, где у заказчика главным требованием выступает производитель разработанного софта. Наличие алгоритмических знаний и практики, при подходе к написанию любого проекта, любой сложности, даёт преимущества программисту, который понимает как писать свободный разнонаправленный уникальный и эффективны код, без всяких привязок к шаблону и копиипастингу.
Всё от области деятельности зависит и даже языка. Если кодишь хитрожопый научный софт, высоконагруженные системы и т.п., то да, алгоритмы нужны. Остальные 95% разработчиков не применят ни одного алгоритма в своей практике за всю жизнь.
👨💻 После Senior ВСЕ? Как программисту развиваться после Senior и куда двигаться в айти? 👉 th-cam.com/video/NnM1Od1TKdA/w-d-xo.html
Соглашусь, что кодить руками структуры приходится редко, а вот выбирать их приходится ежедневно. Чтобы сделать грамотный выбор нужно знать некоторые нюансы и ограничения структур и алгоритмов: кроме того нужна банально знать, что такой алгоритм есть, чтобы загуглить его в стандартой либе.
На то чтобы понимать структуры и алгоритмы, чтобы потом их грамотно выбирать одного дня не хватит я бы оценил объем необходимых усилий где-то в месяц вначале + несколько часов ежегодно размазанных по этому самому году.
Кроме того рост мощности железа имеет два нюанса:
- вместе с ним непропорционально вырос объем данных
- облака как-то интересно на все это повлияли, что сейчас мы деплоим наши приложение на довольно слабые железяки.
В точку. Это инженерный подход. Чтобы выбирать даже готовые решения, надо понимать, как они реализованы. К сожалению, многие это упускают
Полностью согласен, самый верный ответ - алгоритмы и структуры данных нужно знать не для того, чтобы их писать с нуля, а чтобы понимать, когда и какую структуру/алгоритм использовать
Наверное для чисто бизнесс программиста они не нужны, но есть ряд направлений в программировании где они нужны обязательно без вариантов.
Например? Напиши более развернуто свою мысль
Что значит для бизнес программиста? Есть такая профессия? Есть Software engineer. Зачем себя ограничивать узким коридором технологий и урезать себе базу? Бывали случаи когда после многих лет работы на высокоуровневом языке, приходилось спускаться на уровень С парсить ТСП заголовки и обфусцировать пакет и не было никаких коллекций с алгоритмами, при приходилось вручную писать. Если такая задача возникнет, что надо привлекать в проект отдельного человека? Это же бред. Разделение труда оно конечно хорошо, но не надо доводить его до абсурда )
@@RomanKostyrko такие задачи у 0,1% рынка
@@-boiadeiro- Ну вы понимаете, с повышением уровня инженера, таких задач возникает больше и чаще, а времени на изучение все меньше, к тому же база по computer science и алгоритмам, которая залетела в 18 лет, сильно помогает, когда возвращаешься в эту тему в 40 лет. Ну и тут скорее вопрос, куда человек фокусируется, удовлетворять потребности рынка или развиваться как профи. Часто это не совпадает.
А вообще такие задачи сильно ближе, чем многие думают.
@@hunter4thompson225например кто пишет библиотеки, где скорость критически важна
На самом деле, задача по алгоритмам позволяет сразу комплексно оценить знания интервьюируемого. Во-первых, знание синтаксиса языка. Во-вторых, знания computer science. В-третьих, логику мышления интервьюируемого и это самый главный пункт (не просто так толковый и адекватный интервьюер акцентирует внимание на том, что нужно вслух проговаривать свои мысли и идеи).
И чтобы удачно пройти алгоритмическое интервью, необязательно даже решить задачу. Достаточно показать, что ты думаешь в правильном направлении и в целом видишь какие-то паттерны.
А в целом мне кажется лучше всего давать какой-то кусок кода и попросить собеседуемого отрефакторить его. Указать где ошибки, что можно оптимизировать и т.д. Потому что алгоритмы можно заучить, а тут уже только опыт поможет.
Ознакомиться с этим будет полезно, хотя бы для расширения кругозора.
Но задротить литкод без цели пролезть в фаанг - это странное.
А вот каргокульт штука забавная. За мной как-то с неделю бегал рекрутёр яндекса, при этом искренне удивляясь, чего это я не хочу задротить алгоритмы (мы вам и материалы для подготовки дадим!) и проходить несколько раундов цирка с понями.
Я тоже искренне удивлялся, ибо так и не смог понять, зачем на позицию девопса надо гонять по алгоритмам.
У них таки есть адекватные материалы для подготовки? Курсы для школьников рассчитаны на людей с совсем другими временными ресурсами и целями. И читают их соответственно. Да вообще, преподы в вузах читают лекции так, будто располагают временем студентов, на семестр, энным количеством академических часов, а заполнять их плотно не обязательно. Можно составить учебный план так, чтобы читать лекцию с комфортом. Просто сравнить даже местные материалы Немчинского и того же Шемсетдинова. А алгоритмы - академическая тема. Тут и лекторы вальяжны, и рассчитывают на математическую подготовку студентов. Но я про СНГ-каналы. В англоязычном есть конечно и получше, со всякими индусами, но я чёт и не искал там плотно, но и не встречал ничего среднего. Либо тупа разжевывают решения лииткода, либо читают базу алгоритмов. Подробно паттерны лииткода типа скользящего окна и какие там могут быть в принципе варианты от простого к сложному, абстрактно так "правильность окна зависит от динамичных многих критериев, а не от одного статичного" - вот такого прям в ютубе и открыто не встречал. Получается, либо академическая тема, либо сборник ответов на уровне краткого изложения классиков для литературы. Но фишка в том, что литкод не всегда бьётся просто знанием того, как работает стек, не кисло было бы разобрать ряд сложных примеров.
@@RedkeiGost из того, что вспоминается, эти материалы сводились к "почитайте книжки такие то, порешайте литкод"
в принципе, согласен.
Есть бигтех (фаанг + топ корпы типа убер, майкрософт ИТД), который может спрашивать на интервью что угодно, люди всё равно туда будут идти, потому что 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 учить обязательно если вы хотите стать системным программистом, по желанию -- если практическим.
смотря какой фабрик
Вне зависимости от того, как меняется ситуация, вопрос должен ставиться не "нужно ли учить", а "как глубоко надо погружаться в алгоритмы и структуры данных".
По поводу ужесточения требований думаю война повлияла меньше всего, а вот то, что в миру наплодили огромное количество разных курсов, менторства и прочего, и по понятным причинам оно все не может быть на одинаково высоком уровне + ученики все не могу быть одинаково замотивированы и готовы, к тому что их ждет. В итоге сфера наполнилась нереальным количеством "специалистов", уровень навыков которых несложно предположить. Приходится как-то их отсеивать на самых первых этапах.
Едва ли мне это пригодится и, тем не менее, огромное спасибо за глоток свежего воздуха!)
чушь не пиши, глоток ему, глотай всякую чушь
Немчинский почему ты не снимаешь на этот канал ??? Где IT news??
Є окремій українськомовний канал, от там іт-новини можна знайти
@@kirillperov3843 а на русском можно я не очень понял
алгоритми типу сортування або 2-3 дерев чи подібні штуки вони дійсно не потрібні більшості программістів. Але розуміння в принципі що таке складність алгоритму - це треба. Бо практично я зустрічав коли люди не задумуючись робили код який виконувався нормально на невеликих базах, а на більших вмирав просто тому що людина там зробила O(n^4) де можна було зробити щось +/- лінійне витративши 5-10 хв на подумати. та й квадратичні замість лінійних багато хто ліпить не задумуючись, хоча принаймні на хвилинку подумати який порядок розміру вхідних даних.
Здрасте, при работе на С/С++ на реальном железе типа ARM процессоры и т.д. критична скорость загрузки и обработки - тут как раз и нужно понимание что работает быстрее
Сколько вас таких, сыновей маминых подруг? Мы все тут кнопочки красим и джсончики перекладываем
@@ИванИванов-у3ч4м зеленые деревья покрасили в желтый запах... летит боком... ))))
быстрее работают массивы и последовательный доступ к памяти, а все эти O(N) это не про быстрее. не сложно представить случай когда квадратичный алгоритм будет быстрее линейного, потому что коэффициенты перед О тоже важны.
@@ИванИванов-у3ч4м Даже чтобы дсончики перекладывать, тут уже вопросик, сколько запросов в секунду этих джсончиков сможет обслужить ваше детище. Парсинг дсончиков также тратит ресурсы. Реакты и Ангуляры просто поляжут с этим огромным статик бандлом как на стороне сервера (дохрена отдавать и рендерить, что отнимает процессорное время), так и на клиенте (также процессорнное время на рендер всего этого графония в однопотоке)
Я когда решал задачи на литкоде, более подробно понял синтаксис моего языка. Мне кажется, что только для этого и можно решать задачи по алгоритмам
согласен, приучает избегать ошибки в синтаксисе, и разбирать более крутые решения
Хороший аргумент.
Знания алгоритмов и структур нужны всем кто пишет продакшн код. Простой пример: заменил в питоне list на set и программа, которая работала часы работает секунды.
Многие обижаются что сейчас никто не нанимает джунов на работу и что сломана система найма, но проблема в другом. Проблема в том что на одно место претендует около 500 людей, не способных решать задачи и не знающих что такое банальный http. Вопросы на алгоритмы и сети помогают отсеять людей, которые просто пришли на теплое место без желания развиваться. Чтобы выучить один лишь питон или условный реакт много ума не надо, думаю с этим справится практически любой и за такие скромные знания работадатель платить большие деньги точно не готов. Поэтому я думаю что чтобы стать программистом нужно долго и упорно учиться и приложить не мало усилий
Шикарно коли про такі речі починають питати фронтів
Не согласен, с тем что не нужны, если говорить о нагруженных приложениях. Не раз видел хранение уникальных значений в массивах, поиск перебором в сортированных массивах, инициализацию пустых векторов для хранения больших объемов и т.д. Зачастую чтобы правильно применить библиотечную функцию надо понимать её контракты (например бинарный поиск требует отсортированных данных) - это знание алгоритмов. А знание структур поможет в представлении данных и повысит производительность работы с ними.
Как пример можно привести телефонный справочник на миллион записей:
Решение в лоб использовать массив для хранения всей информации и поиск нём перебором, но как вариант использовать хэшмапу для хранения или бинарный поиск для того же массива и как неожиданно всё начинает работать быстрее)) Также сюда можно включать и алгоритмы кэша, т.к. не всегда тот же ЛРУ является оптимальным решением, а некоторые форсят его очень сильно. Если сюда ещё накинуть историю про то что иногда тот же хэшсет несёт ещё и семантическую нагрузку в виде "Эти значения уникальны" получаем неплохой выхлоп со знаний алгосов и структур. Короче кейсов очень много, хоть и используются они редко, хотя бы базовые знания нужны, если цель стоит чуть выше чем кодер средней руки.
З.Ы.
Если цель просто покрасить кнопку, то офк лучше потратить это время на изучения CSS и HTML
👍 из другой страны бывшего СССР🙏
😢
К сожалению могут спросить гораздо больше чем простое понимание структур данных, могут дать задачку на обход дерева (напишите код для сериализации-десереализации) или какое нибудь банально инвертирование списка за один проход.
Вчіть алгоритми, якщо навіть не пригодиться, це дуже цікаво
Немчинский: -пример, когда мне пригодиться?
Ответ: когда, придумаешь курсы по алгоритмам и сд тогда и пригодиться!
Ну с точки зрения ява ентерпрайза все верно Сергей говорит. В других местах может и надо алгоритмы и структуры знать
Что такое unit testing и есть ли у вас (FoxMindEd) обучение по unit testing для программистов? Буду очень рада если Сергей Немчинский ответит.
Уже есть, юнит тестирование для джава
Когда видимо про кукотлин?
Ну да. Да ну их нафиг алгоритмы. А потом видишь квадратичную хрень в коде:
for x in vec:
last = 0
for i, v in enumerate(vec):
if v == x:
last = i
....
А почему у нас все так медленно работает? А кто это сделал? А чо пайтон такой медленный?
А то что мидл на десять строчек накатал два алгоритма со сложностью факториал, а синьор это пропустил, виноват конечно ЯП.
Попадались ролики с задачами собесов в европейские компании - так это выходит далеко за пределы О(н) и рекурсии. Попадались задачи на знание вполне конкретных алгоритмов.
Я думал, что речь шла о компаниях, где работали с текстами, семантикой и всяком таком, ну а про то, что интервьюер (ч)удак - как-то не подумал.
Наверное плохо покупают курс 'алгоритмы и структуры данных'
Типа у нас мало курсов и нечего продавать :) Я рассказьіваю то, что усльішал на рьінке. Ваше дело - слушать мои слова или нет.
Хз, очень редко. Тим лид по java, azure, sap, etc. На собеседовании спрашиваю только солид
Привет!
хочу задать вопрос касательно роботы.
Начал работать чуть больше года назад, чувствую что продвинулся по своим знаниям. И думаю стоит ли мне пробовать проходить различные собеседования в другие компании на свою позицию таким образом тренеруясь и понимая что требуют в других компаниях. Или же стоит просто больше уделять время работе и учится в своем направление?
Если кто подскажет по своему опыту буду благодарен)
Ут речь больше о компаниях, которые используют алгоритмические собеседования в виде лайвкодинга. А сами задачи берут из литкода
Возможно, к Алгоритмам и Структурам данных добавятся вопросы о Шаблонах, Рефакторинге
Хотелось бы, чтобы наши приложения работали не хуже, чем от американских и европейских специалистов
Ну как бы нет. Эта вся фигня научит тебя в таких решениях, который ты бы доходил может несколько дней
6:08 а потом идем на тот же Leetcode, пробуем решить задачу хотя бы уровня Medium и удивляемся, насколько это "ничего сложного"😂. Но так да, знание абсолютно бесполезное на практике, если только не в Faang'е каком-нибудь работать.
Не поверите, в FAANG тоже большинство фигачит обычные Enterprice приложения 😁
Если хотите работать в компании уровня яшка/тинек/сбердевайсы и зарабатывать там верхнюю границу вилки, то экспертно знать и уметь в АиСД - необходимость
В Яндексе зарплаты не топ
Я с++ разработчик, последние несколько лет занимаюсь высоконагруженными приложениями. И в этой области не просто нужно знание алгоритмов и структур данных, но так же понимание как эти алгоритмы будут исполняться на железе. Например линейный поиск в списке и в динамическом массиве имеет сложность О(n). Но на деле поиск в массиве оказывается многократно быстрее, потому что более эффективно используются процессорный кеш. И все эти нюансы спрашивают на собеседованиях.
как часто на интервью задают задачи связанные с динамическим программированием?
Может вы имели ввиду работу с кучей(Динамическое выделение памяти)?
Как минимум алгоритмы и структуры данных качают твои инженерные скилы, и понимание, как все работает под капотом.
как максимум мы хоть и не пишем их ежедневно, но делаем выбор в пользу одних или других.
Не смотря на возросший объём вычислительных мощностей возросло и количество обрабатываемых данных и более того, растёт постоянно, а вот компенсирующего увеличения вычислительных мощностей сейчас уже нет.
В общем полная чушь, что знание алгоритмов и структур данных на уровне сеньора не нужны. Очевидно, что нужны и ещё как, причём не на уровне топ разраба...
Я недавно проходил собеседование на позицию Java dev junior, меня спросили про GoF паттерны) Не смотря на то, что в Foxminded по ним есть целый курс, который нацелен на миллов)
Якийсь місяць тому довелося писати свою реалізацію Queue.
Смотря на каком проекте. Пройтись по основным структурам и алгосам лишним не будет.
Меня про Big O спрашивали еще года 3-4 назад в извесную компанию е**м
не прошёл что ли? =)
па?
@@artivlev да
а что за класс Е?(погуглил, может усерднее искать?) th-cam.com/video/wCmZxFla-dk/w-d-xo.html
А как же новый нейронные связи и развитие горизонтов видения?!
тебе это не светит
@@SvetlanaTarasova-h9f это вообще к чему было написано/сказано?
Не ищите фронтенд разработчиков в команду?)))))))))))))))))))))))))))
Алгоритмы нужны интервьюерам чтобы на собеседовании "понять" что вы подходите по вакансии. Думаю комментировать не нужно, все и так все понимают.
Я бы сказал, что это ещё зависит от области, например в эмбеддит разработке знание алгоритмов и структур данных очень даже полезно, с учётом того, что тут С или С++, почти не исползуются сторонние библиотеки (для экономии памяти) и одновременно есть требования как к скорости работы на медленных микроконтроллерах, так и к потребляемой памяти измеряемой килобайтами.
Форм форм, шлеп шлеп
Ты будешь только с графами неделями еб...ся, потом с деревьями столько же. Какой один день?
типичный Немчинский )
Сортировка пузырьком наше всё.
Особенно любят спрашивать про алгоритмы бэкендеры, когда собеседуют на позицию фронтенда.
Без знаний алгоритмов не построить мощную, быструю и надежную базу данных.
Как часто необходимо это делать? Мне за 10+ лет опыта в веб-разработке ни разу.
@@infernaLepiCwizarD в банковской сфере часто требуется от разбработчиков БД
можно взять готовую ))) есть бесплатные (например Postgres)
нет, они просят реализовать
Хотел бы я на курсе поучится, но не в той стране родился((
я тоже родился не в той стране. всегда можно все исправить
@@SergeyNemchinskiy я постараюсь
Интересное название........
Насколько я знаю, в программировании это - Основа Основ,,,,,,,,,
Всем Адекватности мира и добра
Высшее образование с этого начинается, да.
Без алгоритму дій навіть борщ неможливо приготувати.
Неважливо яка інтерпретація алгоритму. Головне, як миркує людина: алгоритмічно чи ні.
Алгоритм = архітектура мислення.
Вопрос из разряда: «а нужен ли кислород для жизнедеятельности организма?» :):)
Получается, с 90х годов по 20е СНГ-индустрия жила без кислорода.
Большинству организмов на планете Земля кислород токсичен и приводит к гибели))) В основном нужен многоклеточным и то не всем))))
скорее "нужно ли специально кушать двухвалентное железо, и нужно ли оно организму"
Какой плохой звук...
Люкі круглые. шоб быть похожімі на О большое
Дожились. Сначала математика не нужна, потом университут, а сейчас и алгоритмы. Специалист должен это знать, а не просто, как говорится, нахвататься вершков, и быть дипломированным бараном не знающим как устроены встроенные функции.
ага так и запишем, прежде чем браться за html и css, нужно как минимум получить Ph.D. и вообще понять как мир устроен, да? Вакансии где реально нужны такие глубокие фундаментальные знания это очень маленький процент. Это безусловно плюс если человек имеет такие знания, но говорить что они всем нужны это бред
@@maxxxwkHTML и CSS это даже не языки программирования
Знать то можно, только на практике это не применимо, ибо как говорил автор, нынче всё это встроено в языки. Выходит знание ради знания.
Ну эт типа для солидных специалистов нужно конечное наверно, но явно не все же будут солидными супер специалистами. Тут дело такое, что может кому-то и география не нужна, потому что кучер всё равно довезёт куда надо 😂
Клоунада и снобизм🤡
Уже жду как какой-то КПИшник будет спрашивать это у меня и такой "фиии, как это так ты не знаешь базу, поприходили вот эти, без профильного образования и ещё хотят оффер" :)
А по факту, пока я 50 часов изучал жава фреймворки и проект по ним, ни разу мне это не нужно было... . Ну а зачем же спрашивать про @getMapping, если можно спросить про фундамент и базу? "И если человек не знает фундамента и базы то как он может писать код?" 🤡🤡🤡
Можно и программирование не изучать , кому это сейчас нужно? Давно есть no code решения. Зачем мне ваш SQL - это прошлый век, я все таблички в excel храню как нормальные люди.
😞
собесился в крупную российскую ИТ компанию, провалился на алгоритмах,
аналогичные истории от коллег, которые собесились в другие крупные компании
Все как обычно: запад учатся создавать новые технологии а СНГ и третие страны мира учатся пользоваться этими технологиями
В окопе все нужно
Сейчас работодатели требуют знания алгоритмов и структуры данных. В нашей школе фоксмайндед мы открыли курсы по этим навыкам. Несите свои бабки лохи.
Завтра работодатели будут спрашивать как правильно курить. Несите свои бабки лохи и в нашей школе фоксмайндед мы научим вас курить. Ясно понятно.
Не согласен с Сергеем Немчинским. Знание алгоритмов и структур данных, является критичны. Наличие алгоритмических знаний, является очень полезны для программиста, по следующим критериям
Знание алгоритма
Позволяет писать более эффективный и структурированный код. Алгоритмы и структуры данных определяют, как будет работать код, и от того, насколько эффективно реализован код, зависит скорость и производительность программы. Программист, знающий алгоритмы и структуры данных, будет выбрать оптимальный способ решения задачи особенно, в коммерческих проектах, где у заказчика главным требованием выступает производитель разработанного софта. Наличие алгоритмических знаний и практики, при подходе к написанию любого проекта, любой сложности, даёт преимущества программисту, который понимает как писать свободный разнонаправленный уникальный и эффективны код, без всяких привязок к шаблону и копиипастингу.
так все таки является критичным или является очень полезным?) Полезным - безусловно, но не критично(для большинства) это точно
Всё от области деятельности зависит и даже языка. Если кодишь хитрожопый научный софт, высоконагруженные системы и т.п., то да, алгоритмы нужны. Остальные 95% разработчиков не применят ни одного алгоритма в своей практике за всю жизнь.