Нужно ли программисту знать алгоритмы? Конечно! Чтобы проходить собеседования. Ну ладно, как минимум, это интересно и помогает не делать алгоритмический бред. Например, автор библиотеки confusable_homoglyphs решил, что делать двоичный поиск по связанному списку – очень быстро и круто. Так вот, нет. Это одна из причин, почему мне пришлось делать homoglyphs (подробно об этом всём в моем посте).

  • Data Structures & Algorithms – очень занимательный иллюстрированнй гайд по основам алгоритмов: O-нотация, жадные алгоритмы, сортировка, структуры данных, деревья. А потом можно проверить себя там же на странице Interview Questions. К сожалению, ориентроваться между страницами этого туториала довольно сложно.

Вообще, откопал я это в FAQGURU на Github, и там есть ещё немного интересных топиков. По git и SQL, например. Ну да идём дальше. Хотите немного книжек?

  • Jeff Erickson – Algorithms. Книжка бесплатная, подробная, с доказательствами корректности и вычислением big O.

  • Cracking the coding interview – больше про конкретные задачи, но особо стоит отметить первые несколько глав про собеседования в крупные компании. Это те самые оторванные от реальности собеседования, с которыми многие умные люди борятся, но что поделать. Можете почитать комментарии к видео автора книги и проникнуться.

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