Pull to refresh

Примеры тестовых заданий для iOS-разработчиков

Reading time 3 min
Views 46K
Я воспринимаю тестовые задания как хороший и адекватный метод отбора людей (для противников этого мнения есть голосовалка в конце поста), ведь работодатель может оценить конкретно то, что и будет делать сотрудник за своим рабочим местом. И поэтому зачастую с энтузиазмом принимаюсь за их выполнение, не смотря на то, что делать их приходится по ночам. К тому же, задания обычно небольшие и их можно расценивать как написание прототипов — а прототипы писать я тоже люблю. В общем опыт положительный, а положительный настрой — великое дело.



Здесь я хотел бы поделиться примерами тестовых заданий от разных работодателей: маленьких и больших, зарубежных и отечественных. Названия компаний приводиться не будут. Каждый пример задания будет сопровождаться ссылкой на репозиторий где лежит мой вариант решения. С кодом этим, можно делать все, что угодно: использовать в проектах, исправлять, посылать пул реквесты.

Может быть кому-то это будет просто интересно, кто-то осознает к чему ему нужно готовиться и что нужно уметь, а кто-то поймет что здесь нет ничего страшного и решится отправить резюме.

Задание 1. Поиск GIF.


Внимание: в коде отсутствует API key для giphy.com — нужно вставить самому
github.com/PavelKatunin/GifSearcher
Создать приложение которое стучится по запросу в API giphy.com и достает оттуда гифки по запросу из
UITextField. Отображает анимированные гифки в UICollectionView.

Никаких ограничений по переиспользованию кода озвучено не было, поэтому смело был подключен RestKit через cocoa pods, взяты категории для инициализации UIImage с 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 или UICollectionView, кстати, работодатели могли бы придумывать что-то похитрее). Важным еще является читаемость кода и архитектура решения. Гораздо шире, но поверхностнее другие вещи обсуждаются на самом интервью. Все в целом — далеко не Rocket science, но будьте внимательны и постарайтесь оставить хотя бы один день для исправления багов, утечек памяти и отладки производительности приложения — это тоже очень важно, они хотят увидеть маленькое, но законченное приложение. Меня пару раз халатность подвела — и это тоже хороший детектор того, что человек не очень то и хочет в эту компанию.

Кстати некоторые задания выкладываются публично, тоже интересно посмотреть goo.gl/PCqa0i
Желаете показать примеры задания + решения (?) — можно поделиться в комментах.

Спасибо за внимание.

Опрос:
Only registered users can participate in poll. Log in, please.
Я участвую в интервью как кандидат и считаю, что тестовые задания
73.52% это хорошо 597
26.48% это зло 215
812 users voted. 314 users abstained.
Only registered users can participate in poll. Log in, please.
Я отбираю людей, провожу интервью и считаю, что тестовые задания
73.13% это хорошо 362
26.87% это зло 133
495 users voted. 510 users abstained.
Tags:
Hubs:
+11
Comments 16
Comments Comments 16

Articles