Python

Алгоритмические собеседования в IT компаниях

Здравствуйте, подскажите пожалуйста, можно ли использовать встроенные функции ЯП во время алго. собеса или же я должен писать весь алгоритм самостоятельно? Например во многих языках есть встроенная функция сортировки, можно ли ее использовать при решении задач?
Везде по-разному. Зависит от профиля конторы и от собеседующего. А что за компания?

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

Мне попадались разные случаи, в том числе:
  • Знание алгоритмов нужно, но "трохи для сэбэ", т.к. всё равно, всё уже реализовано. Спросят, как бинарным поиском элемент найти, и чем отличается хэшмэп от тримэпа, и на том - всё.
  • Алгоритмы используются настолько обширно, что бесполезно спрашивать знание конкретных реализаций, всё равно по ходу работы придётся креативить и искать. В таких местах могут спросить какой-то кейс и посмотреть, как рассуждаешь.
  • Тест на конечный результат с ограничением времени. Дают комп без интернета, среду без библиотек, и как хочешь, так пиши. А задачи - типа найти 10 младших цифр от 100500-го члена быстро растущей последовательности. На минуту опоздал - прошу на выход, следующий, заходи. Тут хорошее решение не нужно, нужен быстро написанный одноразовый код, работающий более-менее сносно. Например, прикладной уровень алготрейдинга (не движок, а именно сами алгоритмы - они быстро устаревают, поэтому в них не вкладываются).
  • Проект, где надо быстро вникнуть в специфику заказчика и протоптать дорогу, например, пресейл. Дают тест на вещи, которые видишь в первый раз, например, несуществующий язык, и надо на нём что-то сделать. Сам по себе алгоритм прост, но сложность - реализовать его левой пяткой через правое ухо на кривом языке (впрочем, это можно сказать и о C++ с его тихими выходами за границы массивов, молчаливым преобразованием типов, когда не надо, и отсутствием нормальных средств абстракции).
  • Проект по покраске травы в зелёный цвет. Алгоритмы спрашивают, только чтобы выпендриться и самим себе показать, что они не просто джамшуты от ИТ, а что-то умеют. Любят щеголять названиями (принцип такого-то, алгоритм сякого-то, ...), а в сути плохо разбираются, т.к. им в работе это на самом деле не требуется. Попадались кадры, которые путают, например, O(n log n) и просто O(log n), причём, устойчиво. Поправишь его один раз, вроде, признает, а через 5 мин - опять сказка про белого бычка.
  • Разновидность предыдущего с косплеем под гугл. "Сколько мячиков влезет в автобус", "почему люки круглые" и другой трэш. Из таких мест надо валить сразу, вспомнив о срочном деле.
Юрий Тихонов
Юрий Тихонов
87 571
Лучший ответ
Если требования к сотруднику гласят: "знание алгоритмов", то конечно нужно понимать и уметь самостоятельно писать алгоритмы.
Вова+Инна Аникины понял, спасибо
На собеседованиях просят самому реализовать тот или иной алгоритм. Поэтому .sort написать не прокатит)
Легче всего выучить какой-либо один алгоритм сортировки и заранее подготовить ответ на вопрос "Почему вы решили взять именно этот алгоритм?"