Как проверить короткое решение
Вопрос
Вы написали функцию chunk(arr, size) за минуту. Что проговорите интервьюеру, прежде чем сказать «готово»?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Пример на обычных данных: `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 ошибок.