Ответ вслух Junior Разминка: короткие функции обновлено

Как проверить короткое решение

Вопрос

Вы написали функцию chunk(arr, size) за минуту. Что проговорите интервьюеру, прежде чем сказать «готово»?

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

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

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

Коротко

Образцовый ответ: «Сначала прогоню пример: chunk([1, 2, 3, 4, 5], 2) должен дать [[1, 2], [3, 4], [5]], последний чанк неполный. Потом крайние случаи: пустой массив даёт пустой результат, размер больше длины даёт один чанк со всем массивом.

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

  • Пример на обычных данных: `chunk([1,2,3,4,5], 2)` даёт `[[1,2],[3,4],[5]]`

  • Крайние случаи: пустой массив, размер больше длины, размер 0 или отрицательный

  • Мутирует ли вход: `slice` не мутирует, `splice` мутирует

  • Сложность: O(n) по времени и памяти

  • Что делать с некорректным `size`: бросить ошибку или вернуть пустой массив, уточнить

  • Альтернативная запись и почему выбрал эту

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

  • Что вернёт ваша функция при size = 0?
  • Как сделать ленивую версию для огромного массива?
  • Как написать тест на эту функцию?

Разбор

Образцовый ответ: «Сначала прогоню пример: chunk([1, 2, 3, 4, 5], 2) должен дать [[1, 2], [3, 4], [5]], последний чанк неполный. Потом крайние случаи: пустой массив даёт пустой результат, размер больше длины даёт один чанк со всем массивом. Отдельно размер 0 или отрицательный: в моей версии через Array.from({ length: Math.ceil(n / size) }) при нуле получится бесконечная длина и ошибка, поэтому добавлю проверку в начале и уточню, бросать ли ошибку. Дальше скажу, что вход не мутирую, потому что использую slice, а не splice. Сложность O(n) по времени и памяти. Если массив огромный и нужен поштучный проход, можно сделать генератор, который выдаёт чанки лениво».

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

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