Ответ вслух Middle Задачи на Kotlin спрашивают часто обновлено

Как решать задачу на алгоритмической секции

Вопрос

Расскажи, как ты действуешь на алгоритмической секции с момента получения задачи до сдачи решения.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала уточняю условие: формат ввода, ограничения, могут ли быть отрицательные числа или повторы. Размер входа сразу подсказывает сложность: при 10^5 нужен O(n log n), значит ищу сортировку, бинарный поиск, хеш-таблицу или два указателя.

Что должно прозвучать в ответе

  • Уточняю условие и ограничения, по ним оцениваю нужную сложность

  • Разбираю пример руками и проговариваю идею до кода

  • Сначала простое решение, потом оптимизация

  • Пишу с понятными именами и сразу думаю о типах и переполнении

  • Прогоняю на примере и краевых случаях

  • Называю итоговую сложность по времени и памяти

Что могут спросить следом

  • Что делаешь, если не знаешь решения?
  • Как проверяешь код без запуска?
  • Когда стоит писать брутфорс?

Разбор

Сначала уточняю условие: формат ввода, ограничения, могут ли быть отрицательные числа или повторы. Размер входа сразу подсказывает сложность: при 10^5 нужен O(n log n), значит ищу сортировку, бинарный поиск, хеш-таблицу или два указателя. Разбираю пример руками и вслух проговариваю идею, прежде чем писать код, чтобы интервьюер мог поправить меня рано. Если оптимальное решение не видно, называю простое, оцениваю его сложность и улучшаю. Пишу аккуратно: понятные имена, Long там, где суммы могут переполниться, быстрый ввод. Потом прогоняю код вручную на примере и на краевых случаях: пустые данные, один элемент, все одинаковые, максимальные значения. В конце называю сложность по времени и памяти и говорю, что ещё можно улучшить.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.