UNIT.City — місце, де люди працюють... КРАЩЕ! Обирай свій простір просто зараз 👉
Наталя ХандусенкоWork
8 October 2024, 13:21
2024-10-08
«Не соромтеся проговорювати з інтерв’юером навіть ті рішення, які ви не впевнені, як імплементувати». Поради Frontend Engineer, як успішно пройти лайвкодинг під час співбесіди
Деякі ІТ-спеціалісти не люблять проходити лайвкодинг співбесіди з різних причин: не звикли писати код прямо з голови або просто сильно нервують, хоча у звичайних умовах легко справляються із задачею.
Frontend Engineer Анастасія Гордєєва поділилася невеликою пам’яткою про те, як успішно пройти лайвкодинг під час співбесіди. Перший етап — «активне» розуміння задачі, а потім вже підходи її вирішення. Як приклад айтівиця розглядала задачу «напишіть функцію calcChars, яка рахує, скільки раз з’являються різні символи в рядку».
Деякі ІТ-спеціалісти не люблять проходити лайвкодинг співбесіди з різних причин: не звикли писати код прямо з голови або просто сильно нервують, хоча у звичайних умовах легко справляються із задачею.
Frontend Engineer Анастасія Гордєєва поділилася невеликою пам’яткою про те, як успішно пройти лайвкодинг під час співбесіди. Перший етап — «активне» розуміння задачі, а потім вже підходи її вирішення. Як приклад айтівиця розглядала задачу «напишіть функцію calcChars, яка рахує, скільки раз з’являються різні символи в рядку».
«Перший етап — це не про написання коду, і навіть не про продумування кроків до вирішення. Спочатку треба зрозуміти задачу», — радить Анастасія.
1. Спробуйте перефразувати умову задачі своїми словами.
На прикладі Анастасії можна було б сказати інтерв’юеру «тобто для будь-якої стрінги треба порахувати, скільки разів зустрічається кожен унікальний символ».
«Це здається марним, але насправді нам часто здається, що ми зрозуміли задачу. Хоча насправді ми щось упустили. І якщо одразу не проговорити умови, можна витратити багато часу не на те», — зауважила айтівиця.
2. Зрозуміти, які дані має задача на вході, і які очікує на виході.
Тобто на цьому прикладі: які аргументи буде приймати функція calcChars і що вона буде повертати.
Frontend Engineer каже, що на цьому етапі можна проговорити з інтерв’юером, що функція буде приймати тільки строку (і тільки одну), а повертати об'єкт типу { character: count }.
«Водночас тут важливо вести активну розмову з інтерв’юером, а не просто ставити його перед фактом. Про вхідні аргументи спитайте, чи відповідає це його очікуванням. Про тип ретурна теж — можна описати плюси об’єкта, але дослуховуватися до інтерв’юера, можливо, в нього будуть аргументи проти», — наголосила Анастасія.
3. Продумати edge-кейси.
Радить поставити собі наступні питання. Чи буде функція рахувати пробіли? Що робити з uppercase-символами? Що повертати при пустому рядку на інпуті? Та інші.
4. Скласти кілька прикладів.
Можна прямо в кодовому редакторі.
«Цими прикладами ми фіксуємо все, що проговорили вище — тобто інпути, аутпути та едж-кейси», — додала айтівиця.
Можна прямо коментарями або псевдокодом у кодовому редакторі описати покроково, що треба зробити для досягнення поставленого результату.
«Це додасть вам упевненості, адже під час живого інтерв’ю дуже легко розгубитися. Також менш очевидним плюсом розбиття на підзадачі буде те, що ви зможете скласти гарне враження навіть якщо не вирішите задачу», — каже Анастасія.
2. Написати код рішення.
3. Рефактор та обговорення.
Це дуже важливий крок, на який більшість «забиває».
«Як у повсякденній роботі, так і (особливо) під час інтерв’ю, треба спробувати покращити код. Задайтесь питаннями: „наскільки код читабельний“, „наскільки він оптимальний“, „наскільки легко його зрозуміти“. Не соромтеся проговорювати з інтерв’юером навіть ті рішення, які ви не впевнені, як імплементувати. Наприклад, ви можете сказати: „У цьому місці я б спробував загуглити regexp, який робить те і те“. Також на цьому етапі є місце для дискусії. Можна вголос подумати про трейдофи між перформансом коду та його читабельністю, наприклад», — радить айтівиця.
У коментарях до допису Анастасії айтівці надали свої власні поради щодо лайвкодінгу.
«До порад щодо, як себе поводити під час лайвкодингу, хотів би додати, що треба не мовчати, а вголос пояснювати, що і чому ти робиш. Тому що це єдиний спосіб показати тому, хто дивиться на ваш лайвкодинг, як ви думаєте», — порадив Senior Java Developer Ігор Урденко.
«Ключове тут задавати питання, але багато питань буде означати чи спробу виграти час, чи брак досвіду або ініціативності. З власного досвіду з обох сторін можу сказати, що лайвкодинг не про вирішення задачі. Лайвкодинг про підхід до вирішення, назви змінних, використання шорткатів і тощо. Часто навіть сидиш і вболіваєш за кандидата: давай, кандидат41, ти молодець!!! А буває таке, що кандидат вирішує задачу, а ти потім у фідбек пишеш „immature coding style, bad practice“», — додав Senior Software Engineer Антон Гусєв.
«Як хтось казав, писати код треба в останню чергу, спочатку потрібно зрозуміти задачу, описати послідовність дій, не використовуючи ніякої мови програмування, а вже потім писати код, коли є алгоритм», — написав Frontend Web Developer Дмитро Александров.
«Як висновок хочу наголосити, що вирішення задачі під час інтерв’ю тільки частково складається з написання коду. Вам треба показати інтерв’юеру ваш мисленнєвий процес, ваш підхід до вирішення задач, вашу гнучкість, відкритість до комунікацій. Дуже багато чого можна про себе показати, якщо правильно підходити до інтерв’ю», — підсумувала Анастасія Гордєєва.
Три речі, як варто робити техфахівцям на співбесідах, аби підвищити шанси на отримання офферу — поради кар’єрної консультантки, що прослухала понад 700 співбесід