Как вы решаете задачу на live coding
Вопрос
Расскажите, как вы ведёте себя на алгоритмической секции: от получения условия до сдачи решения.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Уточнить условие и ограничения, разобрать пример
Сначала наивное решение и его сложность
Улучшение и обоснование, почему оно верно
Писать код вслух, с понятными именами
Прогнать пример и краевые случаи
Назвать итоговую сложность по времени и памяти
Что могут спросить следом
- Что делаете, если застряли?
- Как проверяете решение без запуска?
Разбор
Сначала пересказываю условие своими словами и уточняю ограничения: размер входа, диапазон значений, могут ли быть повторы и отрицательные числа. По ограничениям сразу прикидываю допустимую сложность: 10⁵ значит O(n log n) или лучше. Разбираю пример руками. Потом называю наивное решение и его сложность, это показывает, что задачу я понял, и даёт запасной вариант. Затем ищу улучшение и объясняю, почему оно корректно. Код пишу вслух, с говорящими именами, сразу думаю о long для сумм. После этого прогоняю пример по коду и проверяю краевые случаи: пустой ввод, один элемент, все равны, максимальные значения. В конце называю сложность по времени и памяти. Если застрял, проговариваю, что пробовал, и прошу подсказку: молчание хуже.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.