Livecoding… Це дійство нагадує один із найжорсткіших видів іспитів. З тих, де необхідно відразу вирішити завдання біля дошки. Та ще й перед незнайомою аудиторією. Або як виступ на сцені з імпровізацією. Стає страшно від однієї думки про це!.. Втім, є люди, котрі ловлять від цього кайф. А тих, хто не ловлять, можна просто навчити тримати удар. Як і все в цьому світі, навичка проходження Livecoding'ів розвивається за допомогою завзятих тренувань. Коротко підсумуємо та трохи розширимо те, що говорив у відеолекції Андрій Латишев.
Алгоритм проходження Livecoding'у
Livecoding може бути віддаленим (потрібно розшарити свій екран) або очним.
Отже, ситуація: вам дають умову завдання, включають комп'ютер, стають за спиною (або підключаються до вашого екрану) і дивляться, як ви тремтячими пальцями починаєте набирати код… Стривайте, не поспішайте його набирати: спочатку зробіть таке.
1. Зупиніться та усвідомте умову завдання.
Спочатку просто вдумайтеся в умову завдання та спробуйте зрозуміти, чого в принципі від вас хочуть. Обов'язково поставте уточнюючі питання, щоб точно з'ясувати, чи правильно ви його зрозуміли.
2. Подумайте, яке рішення буде оптимальним.
Спробуйте вигадати різні рішення, а не лише одне. Оцініть тимчасову та просторову складність кожного рішення та виберіть найбільш оптимальне (яке може бути реалізовано зараз і буде найшвидшим). Паралельно озвучуйте перебіг своїх думок. Якщо раптом щось піде не так від хвилювання, принаймні зрозуміло, що ви взяли правильний напрямок.
3. Починайте програмувати!
Коли пишете код, намагайтеся, щоб він відповідав принципам SOLID\KISS\DRY. Обов'язково пояснюйте кожен рядок коду через причину, згадану вище. До речі, іноді вам можуть і дати підказку, зазвичай — за допомогою навідних питань.
Стаття для повторення найкращих практик Java-програмування: Короткий довідник з найкращих практик в Java
4. Створіть Unit-тест для перевірки рішення.
Це набагато солідніше, ніж використовувати System.out.println(). Втім, ви вже знаєте.
Про що не можна забувати під час Livecoding'у
- Говоріть уголос! Озвучуйте свої думки, сам процес мислення.
- Якщо ви не можете придумати класу або змінним адекватні імена та сильно затупили на цьому етапі, краще скажіть про це.
- Але все ж таки намагайтеся писати код відповідно до промислових стандартів, а не навчальних. Ось стаття-нагадування.
І більш офіційний ораклівський документ
- Завжди думайте про пограничні випадки, перевірки, продуктивність.
- Не перевіряйте свій код за допомогою працюючої програми. По можливості використовуйте модульні тести.
Приклади завдань на Livecoding'у
Насправді їх може бути дуже багато. Тим не менш, за наведеними нижче прикладами можна зрозуміти загальний напрямок. Зазвичай це навчальні завдання, з якими ви неодноразово стикалися.
- Прості завдання.
Такі завдання часто просять написати в док-файлі або просто на аркуші паперу.
Приклади:
Обернути масив (введення: [1,4,3,9,0], на виході: [0,9,3,4,1]) Обчислити факторіал (ітеративно \ рекурсивно) Перевірити можливість складання другого слова з літер першого введення: слово1 = "abc" слово2 = "acb" виведення: правда введення: слово1 = «abc» слово2 = «мистецтво» виведення: брехня - Завдання на онлайн-платформі на кшталт Codility. Наприклад, завдання на алгоритми або Streams API
- Складні завдання під час вашої присутності в офісі. Мабуть, найстресовіший варіант. Тут може бути будь-що.
Статті, де можна зустріти цікаві завдання для співбесід:
Поради
- Підготуйте Gradle- або Maven-проєкт заздалегідь.
- Використовуйте гарячі клавіші IntelliJ IDEA.
- Подумайте, як ви тестуватимете код, якщо вам потрібні випадкові значення.
- Подумайте про випадок, коли потрібно зробити запит до стороннього сервісу, а цей сервіс недоступний.
- Подумайте про випадки, коли ви маєте список визначень «команд».
Наприклад, у вас є команда "додати" — збільшити значення, "мінус" — зменшити, "очистити" — скинути. Як ви будете виконувати їх у коді, і ваш код повинен бути розширюваним.
Платформи для підготовки до Livecoding'у
План підготовки
Щоб звикнути та не боятися Livecoding'у, потрібно створювати міні-стресову ситуацію під час підготовки до такого типу співбесід.
- Вирішуйте одне завдання раз на пару днів.
- Озвучуйте хід думок під час вирішення завдання вголос.
- Одне з десяти вирішених завдань вирішуйте з увімкненою відеокамерою та проговорюйте рішення. Потім подивіться на помилки.
- Завжди дороблюйте вирішення завдання.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ