Я сприймаю тестові завдання як хороший і адекватний метод відбору людей (для противників цієї думки є голосовалка в кінці посту), адже роботодавець може оцінити конкретно те, що і буде робити співробітник за своїм робочим місцем. І тому часто з ентузіазмом приймаюся за їх виконання, не дивлячись на те, що робити їх доводиться ночами. До того ж, завдання зазвичай невеликі і їх можна розцінювати як написання прототипів - а прототипи писати я теж люблю. Загалом досвід позитивний, а позитивний настрій - велика справа.
Тут я хотів би поділитися прикладами тестових завдань від різних роботодавців: маленьких і великих, зарубіжних і вітчизняних. Назви компаній наводитися не будуть. Кожен приклад завдання буде супроводжуватися посиланням на репозитарій де лежить мій варіант вирішення. З кодом цим, можна робити все, що завгодно: використовувати в проектах, виправляти, посилати пул реквести.
Може бути комусь це буде просто цікаво, хтось усвідомлює до чого потрібно готуватися і що потрібно вміти, а хтось зрозуміє що тут немає нічого страшного і зважиться відправити резюме.
Завдання 1. Пошук GIF.
Увага: у коді відсутній API key для giphy.com - потрібно вставити самому
github.com/PavelKatunin/GifSearcher
Створити додаток, який стукає за запитом в API giphy.com і дістає звідти гіфки за запитом з
UITextField. Показує анімовані гіфки у UICollec View.
Ніяких обмежень щодо перекористування коду озвучено не було, тому сміливо був підключений RestKit через cocoa pods, взяті категорії для ініціалізації U^ mage з Gif і написана нескладна логіка.
Скріншоти
Завдання 2. Пошук картинок.
github.com/PavelKatunin/GoogleImagesSearcher
Тут примітного те, що написання коду потрібно було демонструвати через скайп протягом приблизно години, але доробити можна було потім. Так само було заборонено використовувати сторонні бібліотеки - тільки NSURLConnection - тільки хардкор. Потрібно було використовуючи Api Google за запитом діставати картинки і відображати їх в UITableView. Так що був створений базовий клас для запитів реалізує NSOperation і пара конкретних реалізацій запитів.
Скріншоти
Завдання 3. Пошук найчастішого символу ASCII послідовності.
github.com/PavelKatunin/AsciiSymbolsCounter
Потрібно знайти найчастіший символ в ASCII рядку, при цьому ми ніяк не обмежені по пам'яті.
Ще все це потрібно було розпараллелити на 2 потоки.
Завдання 4. Маленький браузер.
github.com/PavelKatunin/TinyBrowser
Написати найпростіший браузер з адресним рядком, відображенням прогрес бару при завантаженні і можливістю ходити назад і вперед по історії, не поділяється використання WKWebView. Додатково до цієї справи було реалізовано пошук з адресного рядка та кілька тестів.
Скріншоти
У роботі ще кілька тестових завдань, які я теж збираюся викласти в open source якщо це комусь буде цікаво.
Що в середньому.
Бувало і так, що просили просто написати контролер c UITableView з фіктивними даними, але при цьому демонструвати свій екран. Але зазвичай роботодавець хоче впевнитися в тому, що ви в змозі взаємодіяти з серверним API, завантажувати щось в бекграунді і відображати на UI (Часто це всюдисущі UITableView або UICollec^ View, до речі, роботодавці могли б придумувати щось викрадше). Важливим ще є читаність коду та архітектура рішення. Набагато ширше, але поверхневіше інші речі обговорюються на самому інтерв'ю. Все в цілому - далеко не Rocket science, але будьте уважні і постарайтеся залишити хоча б один день для виправлення багів, витоків пам'яті і налагодження продуктивності програми - це теж дуже важливо, вони хочуть побачити маленький, але закінчений додаток. Мене пару раз халатність підвела - і це теж хороший детектор того, що людина не дуже то і хоче в цю компанію.
До речі деякі завдання викладаються публічно, теж цікаво подивитися goo.gl/PCqa0i
Бажаєте показати приклади завдання + рішення (?) - можна поділитися в коментах.
Дякую за увагу.
Опитування:
Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.
Я беру участь в інтерв'ю як кандидат і вважаю, що тестові завдання
73.52% це добре 597
26.48% це зло 215
Проголосували 812 користувачів. Утрималися 314 користувачів.
Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.
Я відбираю людей, проводжу інтерв'ю і вважаю, що тестові завдання
73.13% це добре 362
26.87% це зло 133
Проголосували 495 користувачів. Утрималися 510 користувачів.
