TGViewer
FAANG Master FAANG Master @faangmaster · 2.94K subscribers
Post #197 1.26K
Используете ли вы сложные алгоритмы на работе?

Типичный код, который пишет backend разработчик на Java, это:
1) boiler plate код связанный с каким-то фреймворком или библиотекой. Например, код для создания REST, RPC или какого-либо еще сервиса. Код для взаимодействия с базой, кэшом, очередью или потоком. Всяческие конфигурационные файлы и код.
2) Тривиальная бизнес логика. Это, обычно, прочитать из базы, кэша, потока, очереди или взять пришедший реквест, как-то его преобразовать (отфильтровать, трансформировать и т.д.) и положить снова в базу, очередь, поток или отправить назад реквест.

Обычно, для 1) знания каких-то алгоритмов и структур данных не требуется. Да и вообще, запоминать как это делается особого смысла нет. Все технологии и тулы быстро меняются и все эти вещи быстро гуглятся. Надо уметь гуглить и копипастить. А с появлением LLM, это вообще можно автоматизировать.
Для 2) уже нужны какие-то базовые знания структур данных и алгоритмов. Вам, скорее всего придется работать со списками, массивами, хэш-таблицами, писать циклы и if-else. Очень редко, что-то сложнее этого.

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

Но иногда все же нужно не только теоретическое знание этих алгоритмов, но и их приходится применять на работе. Чаще это делают разработчики, которые разрабатывают инфраструктуру. Это те базовые блоки и кирпичики, которые уже могут использовать backend разработчики. Это разработчики, которые разрабатывают базы данных, языки программирования, виртуальные машины, лоад балансеры, библиотеки, фреймворки, распределенные сервисы типа Elastic Search, Kafka, Cassandra и т.д.
Но иногда это приходится делать и backend разработчикам.

Лично мне приходилось писать алгоритмы для работы в графами и деревьями в FAANG. Это и поиск циклов в графе и обход дерева кода (AST Tree) с его модификацией. Несколько раз, в разных компаниях писал топологическую сортировку. Часто нужна, когда у вас есть граф зависимостей чего-либо. Также в одной компании я разрабатывал алгоритм под CUDA, который мог делать очень быстрые манипуляции с разреженными матрицами и использовал алгоритмы параллельной сортировки на тысячах ядер видеокарты. При этом я ни разу не использовал сложное динамическое программирование на работе, только на собеседованиях.
Приходилось ли вам писать или использовать сложные алгоритмы на работе на практике?
Wikipedia Abstract syntax tree tree representation of the abstract syntactic structure of source code
  • 👍 8
  • ❤ 4
  • 🔥 2
More from @faangmaster
  1. Sep 13, 2026Навье-Стоксгейт 8 сентября OpenAI заявила, что её невыпущенная модель решила одну из семи…
  2. Sep 3, 2026Uber совместно с британским стартапом Wayve запускает роботакси в Лондоне Пришла нотификац…
  3. Aug 20, 2026Новый HTTP метод QUERY Этим летом в спецификацию HTTP добавили новый метод - QUERY. Добавл…
  4. Aug 15, 2026IOI 2026 В Ташкенте прошел межнар школьников по информатике. Результаты: https://stats.ioi…
  5. Jul 30, 2026В свое время я закончил МФТИ. Относительно непростой вуз для обучения. Закончил неплохо. З…
  6. Jul 18, 2026Документалка про Java В продолжение темы документалок, вышла документалка про Java. Трейле…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →