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

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

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

Задание 1. Поиск GIF.Внимание: в коде отсутствует API key для giphy.com — нужно вставить самомуgithub.com/PavelKatunin/GifSearcherСоздать приложение которое стучится по запросу в API giphy.com и достает оттуда гифки по запросу изUITextField. Отображает анимированные гифки в UICollectionView.Никаких ограничений по переиспользованию кода озвучено не было, поэтому смело был подключен RestKit через cocoa pods, взяты категории для инициализации UIImage с Gif и написана несложная логика.Скриншоты 797a14c59f12419295eb94e286e36363.png Задание 2. Поиск картинок. github.com/PavelKatunin/GoogleImagesSearcherЗдесь примечательного то, что написание кода нужно было демонстрировать через скайп в течение примерно часа, но доделать можно было потом. Так же было запрещено использовать сторонние библиотеки — только NSURLConnection — только хардкор. Нужно было используя Api Google по запросу доставать картинки и отображать их в UITableView. Так что был создан базовый класс для запросов реализующий NSOperation и пара конкретных реализаций запросов.Скриншоты 83c1173c6bc84441beb0f44c4fdd29de.png Задание 3. Поиск наиболее часто встречающегося символа в ASCII последовательности. github.com/PavelKatunin/AsciiSymbolsCounterНужно найти самый частый символ в ASCII строке, при этом мы никак не ограничены по памяти.Еще все это нужно было распаралелить на 2 потока.Задание 4. Маленький браузер. github.com/PavelKatunin/TinyBrowserНаписать простейший браузер с адресной строкой, отображением прогресс бара при загрузке и возможностью ходить назад и вперед по истории, не возбраняется использование WKWebView. Дополнительно к этому делу был реализован поиск из адресной строки и несколько тестов.Скриншоты 9ee5cbd4e6db46ca85c07e8aab85b8c0.png114f0d63e4fa4db1a168863fa8e539f8.png В работе еще несколько тестовых заданий, которые я тоже собираюсь выложить в open source если это кому-то будет интересно.Что в среднем. Бывало и так, что просили просто написать контроллер c UITableView с фиктивными данными, но при этом демонстрировать свой экран. Но обычно работодатель хочет удостовериться в том, что вы в состоянии взаимодействовать с серверным API, загружать что-то в бэкграунде и отображать на UI (Часто это вездесущие UITableView или UICollectionView, кстати, работодатели могли бы придумывать что-то похитрее). Важным еще является читаемость кода и архитектура решения. Гораздо шире, но поверхностнее другие вещи обсуждаются на самом интервью. Все в целом — далеко не Rocket science, но будьте внимательны и постарайтесь оставить хотя бы один день для исправления багов, утечек памяти и отладки производительности приложения — это тоже очень важно, они хотят увидеть маленькое, но законченное приложение. Меня пару раз халатность подвела — и это тоже хороший детектор того, что человек не очень то и хочет в эту компанию.Кстати некоторые задания выкладываются публично, тоже интересно посмотреть goo.gl/PCqa0iЖелаете показать примеры задания + решения (?) — можно поделиться в коментах.

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

Опрос:

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Habrahabr.ru