Тестові завдання для фронтенд-розробників: приклади з українських компаній
Фронтенд зараз є найбільш конкуретним напрямом на українському IT-ринку: за даними DOU, на одну позицію претендує в середньому 100 кандидатів. При цьому кількість вакансій тримається на рівні
Одна з можливостей проявити себе і продемонструвати експертизу роботодавцю — це виконання тестового. Тож редакція DOU поспілкувалася з українськими компаніями, які наймають Front-end спеціалістів, і отримала приклади реальних тестових завдань для різних рівнів. А також розпитала, на що роботодавці звертають увагу, оцінюючи виконані проєкти, і якими бувають причини відмов.
Приклади тестових завдань
ZONE3000
У нашому проєкті тестові завдання стосуються насамперед TypeScript. Оскільки ми розробляємо бібліотеки компонентів, важливо, щоб людина вміла експресивно описати API.
Кандидат має описати тип для пропсів компонента. Якщо variant = uncontrolled
, то onChange
— обов’язкова пропсу, а value
— заборонена. І навпаки, якщо variant = controlled
, то value
— обов’язкова, а onChange
— заборонена. Користувач компонента повинен розуміти, що якщо він передав variant = controlled
, то він має передати value
, а не onChange
, і отримати відповідну помилку на це.
import * as React from "react"; // Describe props for this component type Controlled = { variant: 'controlled'; onChange: () => void; }; type Uncontrolled = { variant: 'uncontrolled'; value: string; }; type Props = Controlled | Uncontrolled; export const Textfield = (props: Props) => { if (props.variant === "controlled") { return <input type="text" onChange={props.onChange} />; } if (props.variant === "uncontrolled") { return <input type="text" value={props.value} />; } };
У компонента React вже прописана невелика логіка. Ми звертаємо увагу на те, чи зможе людина скористатися підказками, які закладені в самому завданні. Більшість кандидатів з наскоку не можуть виконати це завдання. Залежно від того, які передаються властивості, типи змінюються. Зазвичай типи й компоненти простіші, але у нас таких ситуацій багато.
Ми дозволяємо кандидатам скористатися гуглом, але потрібно дати доступ до екрана. Дивлячись на те, як спеціаліст гуглить, ми розуміємо, як він мислить.
Більшість фронтенд-розробників уже працювали з TypeScript, і наша мета не в тому, щоб перевірити знання мови програмування, а побачити, як кандидат розв’язує задачі, з якими він, найімовірніше, не стикався раніше. Одного разу ми співбесідували спеціаліста з багатьма роками досвіду. Він не знав, як розв’язати задачу, і ми дозволили йому погуглити. Утім він дуже швидко здався. На цьому інтерв’ю закінчилося.
На нашому проєкті задачі такі, що потрібна наполегливість у пошуку рішень. Ми не шукаємо рокстарів і розуміємо, що мало хто працював з бібліотекою 40 годин на тиждень. Але нам важливо, щоб людина підсилювала команду, а не навпаки.