Livecoding… Это действо напоминает один из самых жестких видов экзаменов. Из тех, где нужно сходу решить задачу у доски. Да еще и перед незнакомой аудиторией. Или как выступление на сцене с импровизацией. Становится страшно от одной мысли об этом!.. Впрочем, есть люди, которые ловят от этого кайф. Ну а тех, кто не ловят, можно просто научить держать удар. Как и все в этом мире, навык прохождения Livecoding’ов развивается посредством упорных тренировок. Кратко подытожим и немного расширим то, что говорил в видеолекции Андрей Латышев.
Алгоритм прохождения Livecoding’а
Livecoding может быть удаленным (нужно расшарить свой экран) или очным.
Итак, ситуация: вам дают условие задачи, включают компьютер (или CodePen/Sandbox), становятся за спиной и смотрят, как вы дрожащими пальцами начинаете набирать код… Постойте, не спешите его набирать.
1. Остановитесь и осознайте условие
Сначала просто вдумайтесь в условие задачи и попробуйте понять, чего в принципе от вас хотят. Обязательно задайте уточняющие вопросы (граничные случаи, тип входных данных).
2. Подумайте, какое решение будет оптимальным?
Попробуйте придумать разные решения. Оцените сложность (Big O) и выберите наиболее оптимальное. При этом озвучивайте ход своих мыслей.
3. Начинайте программировать!
Когда пишете код, старайтесь, чтобы он был чистым. Используйте понятные имена переменных (`userList` вместо `arr`). Обязательно объясняйте каждую строчку кода.
4. Проверьте решение.
Это гораздо солиднее, чем просто запустить и надеяться на удачу. Прогоните алгоритм в уме на тестовых данных.
О чем нельзя забывать во время Livecoding’а
- Говорите вслух! Озвучивайте свои мысли.
- Если вы не можете придумать переменным адекватные имена, лучше скажите об этом.
- Всегда думайте о пограничных случаях (пустой массив, null, undefined).
Примеры задач на Livecoding’е
На самом деле их может быть очень много. Обычно это задачи на логику или знание особенностей JavaScript.
- Простые задачи.
Такие задачи часто просят написать в блокноте.
Примеры:
Проверить, является ли строка палиндромом Реализовать функцию flatten (развернуть вложенные массивы) Написать свой Promise.all или Debounce функцию Задачи на замыкание (что выведет console.log в цикле с setTimeout?) - Задачи на онлайн-платформе вроде LeetCode/Codewars. Работа с массивами, строками, хэш-таблицами (Map/Set).
- Практические задачи. Например: "Сверстать карточку товара и получить данные с API", "Сделать бесконечный скролл" или "Реализовать ToDo список на React за 20 минут".
Советы
- Подготовьте окружение (настройте VS Code, установите Node.js) заранее.
- Пользуйтесь сниппетами (например, `rfce` для создания React-компонента).
- Подумайте, как вы будете обрабатывать ошибки (try/catch).
Платформы для подготовки
- LeetCode (Top Interview Questions)
- Codewars
- BigFrontEnd.dev (специализированный ресурс для фронтендеров!)
План подготовки
- Решайте одну задачу раз в пару дней.
- Проговаривайте ход мыслей вслух.
- Решайте задачи на JS, не используя готовые методы (например, отсортировать массив без `.sort()`), чтобы понимать алгоритмы.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ