Reflendey, почему? Код Хаффмана - одна из первых изучаемых тем среди алгоритмов. Для реализации нужен навык манипулирования бинарным деревом, что тоже не самая сложная технология. Во всяком случае мне другие знакомые программисты говорили обязательно научиться работать с бинарным деревом.
Ну вопрос просто насколько глубоко с ним работать, может и просто бинарного поиска достаточно. C точки зрения применимости вероятность что придется что-то кодировать вручную достаточно невелика, и скорее всего будет взята готовая библиотека как черный ящик. А что не используется - забывается. К тому же неправильно будет думать, что большинство разработчиков в принципе в хорошей алгоритмической форме.
А вот какие-нибудь базовые алгоритмы на графах DFS/BFS/алгоритм Дейкстры могут постоянно всплывать. Но может у меня искаженное восприятие, хз.
Reflendey, наверное, соглашусь, что на практике будет использоваться готовая реализация, если только это не "узкое место". Однако более философский вопрос: может ли программист считаться готовым к решению рабочих задач, если он не может реализовать учебную задачу?
Смотря насколько учебная задача пересекается с его предметной областью. В случае алгоритма Хаффмана, если задачи не подразумевают активную работу со всевозможными алгоритмами сжатия и кодирования, то почему нет?
Если говорить же об общей алгоритмической подготовке, в предположении, что она нужна. Ну тут хз, субъективно кажется, что это не самая популярная тема, как уже сказал. Ну то есть условно можно сказать про алгоритм хаффмана "ну там что-то про кодирование эффективное, не помню, давно читал, никогда не нуждался" и получить в итоге оффер. То есть это не настолько базовая вещь, чтобы обязательно знать. Ну и вообще обычно алгоритмические задачи на собеседованиях гораздо проще чем "стандартные алгоритмы".
Reflendey, Если говорить же об общей алгоритмической подготовке, в предположении, что она нужна. Она может быть не нужна? У меня дезориентация возникает.
Ну и вообще обычно алгоритмические задачи на собеседованиях гораздо проще чем "стандартные алгоритмы". Что такое "стандартные алгоритмы"? Какие алгоритмы спрашивают на собеседовании, если не "стандартные"?
Мб у меня сложилось неправильное впечатление. Алгоритмы, это что-то вроде законов термодинамики: не каждый физик будет ими пользоваться, но знание их обогащает интеллект любого. Спросить на собеседовании сортировку близко по уровню к вопросу о законе Ома: основы основ, хоть расчеты давно делаются автоматически. И если это примерно так, то мне (это не лично к Вам запрос, а просто рассуждения) было бы приятно знать, какие алгоритмы в действительности соответствуют закону Ома. Мне постоянно кажется, что я не эффективно изучаю материал.
Она может быть не нужна? У меня дезориентация возникает. Ну её могут хотеть, в частности потому что она положительно коррелирует с эффективностью программиста. Но для работы это достаточно часто не требуется, и целесообразнее на собеседовании проверить что-то более приземистое.
Ну просто потому что человек окажется что знает алгоритмы, любит решать задачки, а рабочие обязанности это не подразумевают. Не лучше ли взять того, кто просто хорошо знает фреймворк?
Что такое "стандартные алгоритмы"? Какие алгоритмы спрашивают на собеседовании, если не "стандартные"? app.codility.com/public-link/DataFork-test/ ну вот пример теста от конкретной конторы. Похожее можно найти и на хакерранк (среди простых задач). Задачи вроде и на алгоритмическое мышление, но вроде и не совсем. И важно скорее не знать стандартные алгоритмы, а уметь эффективно пользоваться стандартными контейнерами.
"Стандартные алгоритмы", ну это вот всякие виды сортировок и поиска путей на графах. Которые собственно на википедии и в учебниках описаны.
Алгоритмы, это что-то вроде законов термодинамики: не каждый физик будет ими пользоваться, но знание их обогащает интеллект любого. Не все разработчики имеют профильное образование. В этом и ключевое отличие
какие алгоритмы в действительности соответствуют закону Ома. Соответствуют скорее структуры данных, надо примерно представлять как в используемом языке реализованы стандартные коллекции + знание вычислительный сложности стандартных операций над ними (обращение по индексу/проверка наличия, вставка в начало/середину/конец, удаление). При этом знать реализацию этих алгоритмов уже зачастую необязательно. Ну и возможно то что выше упоминал - сортировки, бинарный поиск + DFS/BFS.
Но я не могу быть уверен, что у меня 100% адекватное представление о реальности. Ну по собеседованием тем не менее много ходил разным, поэтому не полный бред по крайней мере).
А что не используется - забывается. К тому же неправильно будет думать, что большинство разработчиков в принципе в хорошей алгоритмической форме.
А вот какие-нибудь базовые алгоритмы на графах DFS/BFS/алгоритм Дейкстры могут постоянно всплывать. Но может у меня искаженное восприятие, хз.
Однако более философский вопрос: может ли программист считаться готовым к решению рабочих задач, если он не может реализовать учебную задачу?
Смотря насколько учебная задача пересекается с его предметной областью. В случае алгоритма Хаффмана, если задачи не подразумевают активную работу со всевозможными алгоритмами сжатия и кодирования, то почему нет?
Если говорить же об общей алгоритмической подготовке, в предположении, что она нужна. Ну тут хз, субъективно кажется, что это не самая популярная тема, как уже сказал. Ну то есть условно можно сказать про алгоритм хаффмана "ну там что-то про кодирование эффективное, не помню, давно читал, никогда не нуждался" и получить в итоге оффер. То есть это не настолько базовая вещь, чтобы обязательно знать.
Ну и вообще обычно алгоритмические задачи на собеседованиях гораздо проще чем "стандартные алгоритмы".
Она может быть не нужна? У меня дезориентация возникает.
Ну и вообще обычно алгоритмические задачи на собеседованиях гораздо проще чем "стандартные алгоритмы".
Что такое "стандартные алгоритмы"?
Какие алгоритмы спрашивают на собеседовании, если не "стандартные"?
Мб у меня сложилось неправильное впечатление.
Алгоритмы, это что-то вроде законов термодинамики: не каждый физик будет ими пользоваться, но знание их обогащает интеллект любого.
Спросить на собеседовании сортировку близко по уровню к вопросу о законе Ома: основы основ, хоть расчеты давно делаются автоматически.
И если это примерно так, то мне (это не лично к Вам запрос, а просто рассуждения) было бы приятно знать, какие алгоритмы в действительности соответствуют закону Ома.
Мне постоянно кажется, что я не эффективно изучаю материал.
Она может быть не нужна? У меня дезориентация возникает.
Ну её могут хотеть, в частности потому что она положительно коррелирует с эффективностью программиста. Но для работы это достаточно часто не требуется, и целесообразнее на собеседовании проверить что-то более приземистое.
Ну просто потому что человек окажется что знает алгоритмы, любит решать задачки, а рабочие обязанности это не подразумевают. Не лучше ли взять того, кто просто хорошо знает фреймворк?
Что такое "стандартные алгоритмы"? Какие алгоритмы спрашивают на собеседовании, если не "стандартные"?
app.codility.com/public-link/DataFork-test/ ну вот пример теста от конкретной конторы. Похожее можно найти и на хакерранк (среди простых задач). Задачи вроде и на алгоритмическое мышление, но вроде и не совсем. И важно скорее не знать стандартные алгоритмы, а уметь эффективно пользоваться стандартными контейнерами.
"Стандартные алгоритмы", ну это вот всякие виды сортировок и поиска путей на графах. Которые собственно на википедии и в учебниках описаны.
Алгоритмы, это что-то вроде законов термодинамики: не каждый физик будет ими пользоваться, но знание их обогащает интеллект любого.
Не все разработчики имеют профильное образование. В этом и ключевое отличие
какие алгоритмы в действительности соответствуют закону Ома.
Соответствуют скорее структуры данных, надо примерно представлять как в используемом языке реализованы стандартные коллекции + знание вычислительный сложности стандартных операций над ними (обращение по индексу/проверка наличия, вставка в начало/середину/конец, удаление). При этом знать реализацию этих алгоритмов уже зачастую необязательно.
Ну и возможно то что выше упоминал - сортировки, бинарный поиск + DFS/BFS.
Но я не могу быть уверен, что у меня 100% адекватное представление о реальности. Ну по собеседованием тем не менее много ходил разным, поэтому не полный бред по крайней мере).