Готовимся к собеседованию 2. Реальные задания.
Правила форума
Информация о разделе и рекомендации по созданию тем: viewtopic.php?f=18&t=1036
Информация о разделе и рекомендации по созданию тем: viewtopic.php?f=18&t=1036
Готовимся к собеседованию 2. Реальные задания.
Всем привет! Как и обещал, выкладываю тестовые задания которые дают рекрутеры/работодатели при устройстве на работу. Задания почти (кроме двух) на должность Junior. На джуна всегда дают тестовые задания. На Midle уже как повезёт. Senior'ам очень и очень редко. В общем я бы мог написать много, но за подробностями/советами стучим в личку. Так же если нужно то помогу подготовится к собеседованию и составить резюме. Единственное с чем не смогу помочь это тем кто решил посвятить себя геймдеву.
Задания собирались из тех людей которые обращались за помощью, так что отдельное им спасибо за предоставленный материал.
P.S. материал надеюсь будет время от времени пополняться и если у кого то он есть то пожалуйста поделитесь, думаю всем интересно.
P.S.S. от себя ещё скажу что уровень заданий отличается от компаний и географического положения (города) где собираетесь проходить собеседование.
Задания собирались из тех людей которые обращались за помощью, так что отдельное им спасибо за предоставленный материал.
P.S. материал надеюсь будет время от времени пополняться и если у кого то он есть то пожалуйста поделитесь, думаю всем интересно.
P.S.S. от себя ещё скажу что уровень заданий отличается от компаний и географического положения (города) где собираетесь проходить собеседование.
Последний раз редактировалось rezak90 03 сен 2013, 21:27, всего редактировалось 1 раз.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
GEO TASK (Android Junior)
Приложение состоит из 3х экранов
1. Сплеш (картинка с неоднородным фоном на весь экран)
2. Активити ввода начальной и конечной точки
Содержит:
а) 2 таба Откуда и Куда.
Внутри таба:
• Поле ввода для поиска при вводе геоенкодер определяет вариант и координаты (до 7 штук)
• Список найденных вариантов (видимы 3 шт остальное скролл). Клик по элементу выбирает его.
• Карта показывает место выбранного варианта на карте
б) Кнопка поиска пути. При нажатии переход
на Форму результата.
3. Форма результата:
Карта, смасштабированная таким образом что включает:
• Местоположение пользователя по геолокации
• Путь от точки Откуда в точку Куда, полученный с помошью прямого запроса (HTTP GET) к Google сервису DirectionsAPI (https://developers.google.com/maps/docu ... irections/).
Ответ от DirectionsAPI принимаем в виде JSON. Нас интересуют только координаты детали пути не важны. Отрисовываем в виде Polyline черного цвета.
После получения ответа от сервиса выше карты пишем:
Found или Unknown в зависимости от ответа Google.
Общие требования:
Портрет и ландшафт
Разрещения от 480х800 до 1080х1920
Android 2.3 4.2
Желательно оформление в стиле Android 4.x (Actionbar etc)
Facebook Client (Android Junior)
Реализовать приложение, которое подключается к публичному API произвольной соц. сети (предпочтительно FB/VK) или к другому сервису, который может отдать данные для их последующего отображения.
Если сервис отдает данные с координатами (например, instagram/foursquare), сделать возможность отображения полученных данных на карте.
Приложение должно:
1. Выводить список друзей/follower/фотографов, с фотографиями и минимальным описанием.
2. Выполнять просмотр более детальной информации/списка фотографий.
3. Выполнять просмотр больших фотографий (фотографии должны кешироваться на устройстве).
Network Android Miner (Android Junior)
Описание:
Реализовать Android-игру Miner, которая позволяет играть двум людям по сети.
Требования к исполнению:
1. Java SE 6.0
2. Использование сторонних библиотек запрещено.
3. Ожидаемый результат: исходные коды, исполняемый/установочный apk-файл.
4. Ограничение работы программы по объёму используемой памяти – 32 М
5. Визульный интерфейс реализовывать с помощью стандартные компоненты Android
6. Работу по сети реализовывать с помощью пакета android.bluetooth.
7. Размер игрового поля конфигурируется(Допустимые значения: 32х32, 64х64, 128х128, 256х256)
8. Максимальное количество мин выставленных «Минером» не должно превышать половину количества игровых клеток на поле.
Постановка задачи:
1. Игра начинается с того, что один игрок создает Bluetooth-сервер в своем приложении. Второй игрок соединяется с первым.
2. После успешного соединения выпоняется пункт 3.
3. В приложении есть 2 кнопки: «Be a miner», «Be a sapper». Любой из игроков может выбрать себе соответствующую роль. Но 2 саперов или 2 минеров одновременно быть не может.
4. После выбора роли «Минер» игрок получает доступ к игровому полю(до этого оно должно быть неактивным) и может расставлять мины на свое усмотрение. Плюс в окне игры «Минера» пояляется кнопка «Finish setting of the mines»
5. В случае установки максимального количества мин на поле дожен выводится диалог «Reached maximum number of mines» и игра должна переходить к пункту 7.
6. После завершения установки мин игрок может нажать кнопку «Finish setting of the mines» и передать ход «Саперу», как результат активируется игровое в окне «Сапера».
7. Сапер приступает к игре, как в обыной игре «Сапер»
8. Условие победы «Сапера», если он открывает все мины, «Минера» в противоположном случае.
9. После завершения игры выводится диалог на оба устройства, приветствующий победившего игрока.
Приложение состоит из 3х экранов
1. Сплеш (картинка с неоднородным фоном на весь экран)
2. Активити ввода начальной и конечной точки
Содержит:
а) 2 таба Откуда и Куда.
Внутри таба:
• Поле ввода для поиска при вводе геоенкодер определяет вариант и координаты (до 7 штук)
• Список найденных вариантов (видимы 3 шт остальное скролл). Клик по элементу выбирает его.
• Карта показывает место выбранного варианта на карте
б) Кнопка поиска пути. При нажатии переход
на Форму результата.
3. Форма результата:
Карта, смасштабированная таким образом что включает:
• Местоположение пользователя по геолокации
• Путь от точки Откуда в точку Куда, полученный с помошью прямого запроса (HTTP GET) к Google сервису DirectionsAPI (https://developers.google.com/maps/docu ... irections/).
Ответ от DirectionsAPI принимаем в виде JSON. Нас интересуют только координаты детали пути не важны. Отрисовываем в виде Polyline черного цвета.
После получения ответа от сервиса выше карты пишем:
Found или Unknown в зависимости от ответа Google.
Общие требования:
Портрет и ландшафт
Разрещения от 480х800 до 1080х1920
Android 2.3 4.2
Желательно оформление в стиле Android 4.x (Actionbar etc)
Facebook Client (Android Junior)
Реализовать приложение, которое подключается к публичному API произвольной соц. сети (предпочтительно FB/VK) или к другому сервису, который может отдать данные для их последующего отображения.
Если сервис отдает данные с координатами (например, instagram/foursquare), сделать возможность отображения полученных данных на карте.
Приложение должно:
1. Выводить список друзей/follower/фотографов, с фотографиями и минимальным описанием.
2. Выполнять просмотр более детальной информации/списка фотографий.
3. Выполнять просмотр больших фотографий (фотографии должны кешироваться на устройстве).
Network Android Miner (Android Junior)
Описание:
Реализовать Android-игру Miner, которая позволяет играть двум людям по сети.
Требования к исполнению:
1. Java SE 6.0
2. Использование сторонних библиотек запрещено.
3. Ожидаемый результат: исходные коды, исполняемый/установочный apk-файл.
4. Ограничение работы программы по объёму используемой памяти – 32 М
5. Визульный интерфейс реализовывать с помощью стандартные компоненты Android
6. Работу по сети реализовывать с помощью пакета android.bluetooth.
7. Размер игрового поля конфигурируется(Допустимые значения: 32х32, 64х64, 128х128, 256х256)
8. Максимальное количество мин выставленных «Минером» не должно превышать половину количества игровых клеток на поле.
Постановка задачи:
1. Игра начинается с того, что один игрок создает Bluetooth-сервер в своем приложении. Второй игрок соединяется с первым.
2. После успешного соединения выпоняется пункт 3.
3. В приложении есть 2 кнопки: «Be a miner», «Be a sapper». Любой из игроков может выбрать себе соответствующую роль. Но 2 саперов или 2 минеров одновременно быть не может.
4. После выбора роли «Минер» игрок получает доступ к игровому полю(до этого оно должно быть неактивным) и может расставлять мины на свое усмотрение. Плюс в окне игры «Минера» пояляется кнопка «Finish setting of the mines»
5. В случае установки максимального количества мин на поле дожен выводится диалог «Reached maximum number of mines» и игра должна переходить к пункту 7.
6. После завершения установки мин игрок может нажать кнопку «Finish setting of the mines» и передать ход «Саперу», как результат активируется игровое в окне «Сапера».
7. Сапер приступает к игре, как в обыной игре «Сапер»
8. Условие победы «Сапера», если он открывает все мины, «Минера» в противоположном случае.
9. После завершения игры выводится диалог на оба устройства, приветствующий победившего игрока.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
Тестовое задание Android Junior
1) Клиент для сервиса http://jpg.to
Задача:
Разработать клиентское приложение для сервиса http://jpg.to . Смысл сервиса состоит в том что он выдает по url http://ЛЮБОЕ_СЛОВО.jpg.to картинку, которая логически соответствует подставленному слову. Приложение должно иметь форму для ввода слова, кнопку поиска и компоненту для отображения результата.
Требования по функционалу:
1. Поддержка русских символов;
2. Проверка на корректность ввода;
3. Сохранение полученного изображения по желанию пользователя;
4. Вести историю последних 10 запросов;
5. Возможность подбора случайных слов-картинок;
Тестовое задание Android Junior
2) Виджет для рабочего стола
Задача:
Разработать простой виджет рабочего стола, для отображения погоды на сегодняшний день. Источником данных может быть любой интернет-сервис: например http://informer.gismeteo.ru/ (смотреть раздел xml-информер).
Требования по функционалу:
1. Размер виджета должен быть 4х1 ячеек;
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные»
Тестовое задание Android Middle
1) Простой клиент для социальной сети.
Задача:
Разработать клиентское приложение для просмотра своих фотоальбомов в социальной сети (на выбор facebook или vkontakte).
Требования по функционалу:
1. Логин/форма входа для авторизации в соц. сети.
2. Список фотоальбомов: таблица со списком. Ячейка таблицы – миниатюра обложки альбома и его название. Миниатюры должны подгружаться асинхронно, на время подгрузки отображать индикатор круглый загрузки.
3. Фотографии: таблица со списком фотографий. Ячейка таблицы – миниатюра фотографии, ее название, дата загрузки. Миниатюры также должны загружаться асинхронно. При нажатии на миниатюру открывается окно ее просмотра.
4. Просмотр фотографии на весь экран. Реализовать отображение дополнительной информации по фотографии.
5. Поддержка навигации по фотографиям в полноэкранном режиме с помощью жестов.
Тестовое задание Android Middle
2) Виджет для рабочего стола
Задача:
Разработать простой виджет рабочего стола, для отображения случайной картинки с сервиса http://demotivators.to/ .
Требования по функционалу:
1. Размер виджета должен быть не мене 3х3 ячеек и предусматривать растягивание.
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные».
3. Предусмотреть конфигутор виджета с настройками частоты обновления демотиваторов и лимита загружаемых данных в сутки.
4. По тапу на картинке должна стартовать Activity с возможностью полноэкранного просмотра демотиватора, просмотра комментариев и рейтинга, а также возможностью сохранить картинку.
5. Реализовать логику получение данных с помощью Service.
1) Клиент для сервиса http://jpg.to
Задача:
Разработать клиентское приложение для сервиса http://jpg.to . Смысл сервиса состоит в том что он выдает по url http://ЛЮБОЕ_СЛОВО.jpg.to картинку, которая логически соответствует подставленному слову. Приложение должно иметь форму для ввода слова, кнопку поиска и компоненту для отображения результата.
Требования по функционалу:
1. Поддержка русских символов;
2. Проверка на корректность ввода;
3. Сохранение полученного изображения по желанию пользователя;
4. Вести историю последних 10 запросов;
5. Возможность подбора случайных слов-картинок;
Тестовое задание Android Junior
2) Виджет для рабочего стола
Задача:
Разработать простой виджет рабочего стола, для отображения погоды на сегодняшний день. Источником данных может быть любой интернет-сервис: например http://informer.gismeteo.ru/ (смотреть раздел xml-информер).
Требования по функционалу:
1. Размер виджета должен быть 4х1 ячеек;
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные»
Тестовое задание Android Middle
1) Простой клиент для социальной сети.
Задача:
Разработать клиентское приложение для просмотра своих фотоальбомов в социальной сети (на выбор facebook или vkontakte).
Требования по функционалу:
1. Логин/форма входа для авторизации в соц. сети.
2. Список фотоальбомов: таблица со списком. Ячейка таблицы – миниатюра обложки альбома и его название. Миниатюры должны подгружаться асинхронно, на время подгрузки отображать индикатор круглый загрузки.
3. Фотографии: таблица со списком фотографий. Ячейка таблицы – миниатюра фотографии, ее название, дата загрузки. Миниатюры также должны загружаться асинхронно. При нажатии на миниатюру открывается окно ее просмотра.
4. Просмотр фотографии на весь экран. Реализовать отображение дополнительной информации по фотографии.
5. Поддержка навигации по фотографиям в полноэкранном режиме с помощью жестов.
Тестовое задание Android Middle
2) Виджет для рабочего стола
Задача:
Разработать простой виджет рабочего стола, для отображения случайной картинки с сервиса http://demotivators.to/ .
Требования по функционалу:
1. Размер виджета должен быть не мене 3х3 ячеек и предусматривать растягивание.
2. Виджет должен предусматривать наличие кнопки с функционалом «Обновить данные».
3. Предусмотреть конфигутор виджета с настройками частоты обновления демотиваторов и лимита загружаемых данных в сутки.
4. По тапу на картинке должна стартовать Activity с возможностью полноэкранного просмотра демотиватора, просмотра комментариев и рейтинга, а также возможностью сохранить картинку.
5. Реализовать логику получение данных с помощью Service.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
Тестовое задание Android Senior
1) Приложение для роботы с контактами адресной книги и соц. сетями.
Задача:
Реализовать возможность, с помощью приложения, вручную (возможно также автоматически) изменять аватарки контактов из адресной книги. Аватарка контакта из адресной книги устройства (Google account) должна быть синхронизирована с соответсвующей аватаркой пользователя в соц. сети vkontakte или facebook.
Требования по функционалу:
1. Отображение списка контактов из адресной книги устройства.
2. Для выбранного контакта отобразить новое окно с доступными действиями и отображением полной информации о контакте.
3. Логин/форма входа для авторизации в соц. сети.
4. Отображение списка друзей пользователя в соц. сети.
5. Если контакта нету в друзьях пользователя , то осуществить поиск по пользователям соц. сети, и предложить найти его. Если соответствующий пользователь найден, то «украсть
6. его аватарку» и предложить добавить в друзья в соц. сети.
7. Полученную фотографию «примерить» к контакту и предложить сохранить или отменить изменения.
8. В приложении показать умения использовать Services,Threads, Content Providers и т.п.
9. Приложение должно быть написано с использованием Android SDK 4.*
10. При разработке UI использовать Android Design Guidelines.
11. Реализация автоматической синхронизации аватарок будет большим плюсом.
1) Приложение для роботы с контактами адресной книги и соц. сетями.
Задача:
Реализовать возможность, с помощью приложения, вручную (возможно также автоматически) изменять аватарки контактов из адресной книги. Аватарка контакта из адресной книги устройства (Google account) должна быть синхронизирована с соответсвующей аватаркой пользователя в соц. сети vkontakte или facebook.
Требования по функционалу:
1. Отображение списка контактов из адресной книги устройства.
2. Для выбранного контакта отобразить новое окно с доступными действиями и отображением полной информации о контакте.
3. Логин/форма входа для авторизации в соц. сети.
4. Отображение списка друзей пользователя в соц. сети.
5. Если контакта нету в друзьях пользователя , то осуществить поиск по пользователям соц. сети, и предложить найти его. Если соответствующий пользователь найден, то «украсть
6. его аватарку» и предложить добавить в друзья в соц. сети.
7. Полученную фотографию «примерить» к контакту и предложить сохранить или отменить изменения.
8. В приложении показать умения использовать Services,Threads, Content Providers и т.п.
9. Приложение должно быть написано с использованием Android SDK 4.*
10. При разработке UI использовать Android Design Guidelines.
11. Реализация автоматической синхронизации аватарок будет большим плюсом.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
Прошу прощения, а "ответов" (типовых решений) на эти задания нет?
Re: Готовимся к собеседованию 2. Реальные задания.
Все эти задания когда либо кто то решал (я или те кто мне его давали). Но не вижу смысла делиться решениями, та и сомневаюсь что они сохранились. Смысл этого топика, что бы вы готовили себя сами посмотрев предварительно то что вас ждет и чего ожидать на собеседовании.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
Сколько дается времени на решение одной задачи для юниора?
Re: Готовимся к собеседованию 2. Реальные задания.
Когда как. От полудня до 1 недели. А иногда говорят когда сделаешь тогда и приходи. Все зависит от конторы.sgtraf писал(а):Сколько дается времени на решение одной задачи для юниора?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Готовимся к собеседованию 2. Реальные задания.
И на всякий случай прочтите мой пост - viewtopic.php?f=53&t=1735#p11836
Последний раз редактировалось Mikhail_dev 23 сен 2014, 22:49, всего редактировалось 1 раз.
Re: Готовимся к собеседованию 2. Реальные задания.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
-
- Сообщения: 26
- Зарегистрирован: 03 мар 2013, 13:15
Re: Готовимся к собеседованию 2. Реальные задания.
Палю вопросы от знатных спамеров ЛайтСофт job.lightsoft.ru
Тестовое задание компании ЛайтСофт
Не обязательно отвечать на все подвопросы.
1. В чем отличие strong, weak, assign-свойств в классах ObjC?
2. Как добавить в категории класса в ObjC новое свойство? Какой техникой можно воспользоваться, чтобы оно сохранялось при копировании объекта инстансом copyWithZone? Что делать, если нужно добавить новое свойство к объектам в Java, не имея доступа к их исходному коду и не сломав существующий код? Как быть, если объект копируется?
3. Что такое autorelease, @autoreleasepool? В каких случаях нужно волноваться об этом при использовании ARC?
4. Какие классы в ObjC и Java реализуют словари, сопоставляющие объектам-ключам объекты-значения? Какие условия накладываются на ключи в этих классах? Какие операции поддерживают эти классы и какие гарантии производительности они на них дают? В каких случаях имеет смысл использовать эти классы, если ключи - числа?
5. Гарантирует ли класс NSString, что строка будет хранится линейно в неразрывном буфере? А String в Java? Если нет, то в каких случаях может быть иначе?
6. Возможно ли создать в классе ObjC private-метод, который невозможно вызывать откуда-то кроме других методов этого класса? Почему? Как в таких условиях прятать детали реализации от пользователей класса? Назовите несколько вариантов и оцените, в каких ситуациях они практичны.
2
Вопрос 2
Не обязательно отвечать на все подвопросы.
1. Что из себя представляют паттерны Abstract Factory, Composite, Observer, Strategy, Visitor? Где и как они используются в Foundation и UIKit, в Java SE и Android SDK? В чем особенность их реализации в ObjC и этих библиотеках, в Java?
2. Что такое Dependency Injection, для чего этот паттерн нужен? Как он используется в Java, в ObjC?
3. Чем использование синглтона в Java лучше, чем использование статических полей и методов класса? Foundation и UIKit используют слабую версию синглтона, допускающую создание других объектов, кроме общего инстанса. Для чего это сделано?
4. Какой паттерн используется в Core Data для экономии памяти?
5. В каких случаях использование объекта-делегата, реализующего протокол, лучше, чем использование блока?
3
Вопрос 3
Реализуйте клиент GitHub для айфона и/или для андроида и выложите его в GitHub или BitBucket.
Требования:
- Не должен требоваться логин
- При запуске пользователь видит список пользователей (ники и аватары) гитахаба с бесконечной прокруткой и pull to refresh
- При тапе на пользователе появляется экран с дополнительной информацией, включая список репозиториев
- В любой момент пользователь может жестом смахивания направо вызвать боковое меню (как в аппе вконтакте), где есть:
- список 5 недавно просмотренных пользователей
- поле поиска, которое позволяет вручную вбить ник пользователя
- результаты поиска показываются в боковом меню, заменяя спискок недавно просмотренных пользователей
Только вертикальный вид. Можно использовать любые сторонние библиотеки, в случае с iOS желательно использовать cocoa pods.
Тестовое задание компании ЛайтСофт
Не обязательно отвечать на все подвопросы.
1. В чем отличие strong, weak, assign-свойств в классах ObjC?
2. Как добавить в категории класса в ObjC новое свойство? Какой техникой можно воспользоваться, чтобы оно сохранялось при копировании объекта инстансом copyWithZone? Что делать, если нужно добавить новое свойство к объектам в Java, не имея доступа к их исходному коду и не сломав существующий код? Как быть, если объект копируется?
3. Что такое autorelease, @autoreleasepool? В каких случаях нужно волноваться об этом при использовании ARC?
4. Какие классы в ObjC и Java реализуют словари, сопоставляющие объектам-ключам объекты-значения? Какие условия накладываются на ключи в этих классах? Какие операции поддерживают эти классы и какие гарантии производительности они на них дают? В каких случаях имеет смысл использовать эти классы, если ключи - числа?
5. Гарантирует ли класс NSString, что строка будет хранится линейно в неразрывном буфере? А String в Java? Если нет, то в каких случаях может быть иначе?
6. Возможно ли создать в классе ObjC private-метод, который невозможно вызывать откуда-то кроме других методов этого класса? Почему? Как в таких условиях прятать детали реализации от пользователей класса? Назовите несколько вариантов и оцените, в каких ситуациях они практичны.
2
Вопрос 2
Не обязательно отвечать на все подвопросы.
1. Что из себя представляют паттерны Abstract Factory, Composite, Observer, Strategy, Visitor? Где и как они используются в Foundation и UIKit, в Java SE и Android SDK? В чем особенность их реализации в ObjC и этих библиотеках, в Java?
2. Что такое Dependency Injection, для чего этот паттерн нужен? Как он используется в Java, в ObjC?
3. Чем использование синглтона в Java лучше, чем использование статических полей и методов класса? Foundation и UIKit используют слабую версию синглтона, допускающую создание других объектов, кроме общего инстанса. Для чего это сделано?
4. Какой паттерн используется в Core Data для экономии памяти?
5. В каких случаях использование объекта-делегата, реализующего протокол, лучше, чем использование блока?
3
Вопрос 3
Реализуйте клиент GitHub для айфона и/или для андроида и выложите его в GitHub или BitBucket.
Требования:
- Не должен требоваться логин
- При запуске пользователь видит список пользователей (ники и аватары) гитахаба с бесконечной прокруткой и pull to refresh
- При тапе на пользователе появляется экран с дополнительной информацией, включая список репозиториев
- В любой момент пользователь может жестом смахивания направо вызвать боковое меню (как в аппе вконтакте), где есть:
- список 5 недавно просмотренных пользователей
- поле поиска, которое позволяет вручную вбить ник пользователя
- результаты поиска показываются в боковом меню, заменяя спискок недавно просмотренных пользователей
Только вертикальный вид. Можно использовать любые сторонние библиотеки, в случае с iOS желательно использовать cocoa pods.
Re: Готовимся к собеседованию 2. Реальные задания.
ужасно когда задания для джуниора составляет другой джуниор...Saint_Byte писал(а):Палю вопросы от знатных спамеров ЛайтСофт job.lightsoft.ru
Тестовое задание компании ЛайтСофт
Не обязательно отвечать на все подвопросы.
1. В чем отличие strong, weak, assign-свойств в классах ObjC?
2. Как добавить в категории класса в ObjC новое свойство? Какой техникой можно воспользоваться, чтобы оно сохранялось при копировании объекта инстансом copyWithZone? Что делать, если нужно добавить новое свойство к объектам в Java, не имея доступа к их исходному коду и не сломав существующий код? Как быть, если объект копируется?
3. Что такое autorelease, @autoreleasepool? В каких случаях нужно волноваться об этом при использовании ARC?
4. Какие классы в ObjC и Java реализуют словари, сопоставляющие объектам-ключам объекты-значения? Какие условия накладываются на ключи в этих классах? Какие операции поддерживают эти классы и какие гарантии производительности они на них дают? В каких случаях имеет смысл использовать эти классы, если ключи - числа?
5. Гарантирует ли класс NSString, что строка будет хранится линейно в неразрывном буфере? А String в Java? Если нет, то в каких случаях может быть иначе?
6. Возможно ли создать в классе ObjC private-метод, который невозможно вызывать откуда-то кроме других методов этого класса? Почему? Как в таких условиях прятать детали реализации от пользователей класса? Назовите несколько вариантов и оцените, в каких ситуациях они практичны.
2
Вопрос 2
Не обязательно отвечать на все подвопросы.
1. Что из себя представляют паттерны Abstract Factory, Composite, Observer, Strategy, Visitor? Где и как они используются в Foundation и UIKit, в Java SE и Android SDK? В чем особенность их реализации в ObjC и этих библиотеках, в Java?
2. Что такое Dependency Injection, для чего этот паттерн нужен? Как он используется в Java, в ObjC?
3. Чем использование синглтона в Java лучше, чем использование статических полей и методов класса? Foundation и UIKit используют слабую версию синглтона, допускающую создание других объектов, кроме общего инстанса. Для чего это сделано?
4. Какой паттерн используется в Core Data для экономии памяти?
5. В каких случаях использование объекта-делегата, реализующего протокол, лучше, чем использование блока?
3
Вопрос 3
Реализуйте клиент GitHub для айфона и/или для андроида и выложите его в GitHub или BitBucket.
Требования:
- Не должен требоваться логин
- При запуске пользователь видит список пользователей (ники и аватары) гитахаба с бесконечной прокруткой и pull to refresh
- При тапе на пользователе появляется экран с дополнительной информацией, включая список репозиториев
- В любой момент пользователь может жестом смахивания направо вызвать боковое меню (как в аппе вконтакте), где есть:
- список 5 недавно просмотренных пользователей
- поле поиска, которое позволяет вручную вбить ник пользователя
- результаты поиска показываются в боковом меню, заменяя спискок недавно просмотренных пользователей
Только вертикальный вид. Можно использовать любые сторонние библиотеки, в случае с iOS желательно использовать cocoa pods.
![Грустный :(](./images/smilies/icon_e_sad.gif)
![Изображение](http://d379ifj7s9wntv.cloudfront.net/reactivemanifesto/images/ribbons/we-are-reactive-green-right.png)
Re: Готовимся к собеседованию 2. Реальные задания.
Был я недавно на собеседовании, по Java были такие вопросы:
1) int i =1;
++i+i++ сколько будет
2) String hello = "Hello", lo = "lo";
System.out.print((testPackage.Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
из этой статьи очевидно http://habrahabr.ru/post/111189/
3) и рекурсивное получение чисел фибоначчи
да, было еще volatile, но про него я не ответил.
Чего хотел человек добиться задавая такие вопросы я не знаю![Вопрос :?:](./images/smilies/icon_question.gif)
1) int i =1;
++i+i++ сколько будет
2) String hello = "Hello", lo = "lo";
System.out.print((testPackage.Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());
из этой статьи очевидно http://habrahabr.ru/post/111189/
3) и рекурсивное получение чисел фибоначчи
да, было еще volatile, но про него я не ответил.
Чего хотел человек добиться задавая такие вопросы я не знаю
![Вопрос :?:](./images/smilies/icon_question.gif)
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Готовимся к собеседованию 2. Реальные задания.
я на 98% вопросов ответов не знаю)))
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
та с тобой как раз все ясно ![Очень доволен :-D](./images/smilies/icon_e_biggrin.gif)
![Очень доволен :-D](./images/smilies/icon_e_biggrin.gif)
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Готовимся к собеседованию 2. Реальные задания.
кто бы говорилFoenix писал(а):та с тобой как раз все ясно
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Готовимся к собеседованию 2. Реальные задания.
А вот как выглядит первое время работы, скажем, в самой простой конторе? Допустим собеседование прошло хорошо, ты приходишь в свой первый день и тебе говорят, что делать. Будут ли прогонять по своим материалам. Как будут относиться руководство, например к тому, как часто использую интернет. Или там не катит того, что ты понимаешь, и лучшим решением будет, рабочий день писать код от руки
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Готовимся к собеседованию 2. Реальные задания.
Будет ставиться задача и от вас будут требовать её выполнения. Как часто вы будете его использовать - это на ваше усмотрение. Но по головке не погладят, если будете в соц. сетях сидеть.Как будут относиться руководство, например к тому, как часто использую интернет.
Не понял смысла предложения. А от чего код пишется? От ноги?Или там не катит того, что ты понимаешь, и лучшим решением будет, рабочий день писать код от руки
Re: Готовимся к собеседованию 2. Реальные задания.
Все зависит от места где устроился. Могут в первый день дать проект. Могут дать книжку читать. Могут отправить в свободное плавание и делай что хочешь.Sk_games писал(а):А вот как выглядит первое время работы, скажем, в самой простой конторе? Допустим собеседование прошло хорошо, ты приходишь в свой первый день и тебе говорят, что делать. Будут ли прогонять по своим материалам. Как будут относиться руководство, например к тому, как часто использую интернет. Или там не катит того, что ты понимаешь, и лучшим решением будет, рабочий день писать код от руки
На счет ограничения интернета, опять таки от места зависит. Некоторые конторы запрещают соц сети, даже музыку качать нельзя - приходишь со своим mp3 и наушниками. Если контора имеет дело с секретными данными, защитой информацией, шифрованием и т.д., то с собой даже флешку нельзя носить.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена