|
Тестовое задание для поступления в Java School.
Компания Т-Systems является стратегическим подразделением группы компаний Deutsche Telekom и отвечает за ИТ проекты в области системной интеграции, разработке ПО, включая мобильные приложения, предоставляет облачные сервисы и телеком услуги для корпоративных клиентов и операторов связи. Компания ежемесячно набирает на работу 50-60 сотрудников, большая часть которых разработчики различных систем как для российских заказчиков, так и для крупных международных проектов. Для подготовки кадров компания организовала собственную школу Java-программистов для старшекурсников и выпускников технических ВУЗов. Обучение длится 2,5 месяца в вечернем режиме, студентам выплачивается стипендия. Самые успешные ученики приглашаются на работу в компанию. Мы представляем пример вступительных заданий при наборе в Java School. Задачи решаются в домашних условиях в течение недели. Всех, успешно прошедших первый этап, приглашают участвовать во втором этапе – технические тесты. На третьем этапе соискателем предстоит собеседование с будущими преподавателями – руководителями крупных проектов по разработке.
Список вакансий и подробная информация на сайте http://www.t-systems.ru/
0. Общие условия
· Приложение должно быть написано на языке Java 1.6 без использования дополнительных библиотек – только стандартные классы + интерфейсы, относящиеся к заданию.
· Плюсом будет stateless реализация.
1. Calculator
Написать калькулятор для вычисления простейших арифметических выражений.
Арифметическим выражением считается выражение, включающее:
· Цифры
· Точка в качестве десятичного разделителя
· Круглые скобки
· Знаки операций («+», «-», «*», «/»)
Приоритет операций: скобки, умножение-деление, сумма-вычитание. Округление производится до 4-го знака после запятой, округляется только конечный результат.
В качестве входного параметра в метод передается строка с арифметическим выражением, в результате ожидается строка с вычисленным значением либо null, если в выражение не может быть вычислено.
Название интерфейса | com.tsystems.javaschool.tasks.Calculator |
Имя класса | com.tsystems.javaschool.tasks.CalculatorImpl |
Имя архива | calculator.zip |
Пример
Calculator c = new CalculatorImpl();
System.out.println(c.evaluate("(1+38)*4-5")); // Результат: 151
c = new CalculatorImpl();
System.out.println(c.evaluate("7*6/2+8")); // Результат: 29
c = new CalculatorImpl();
System.out.println(c.evaluate("-12)1//(")); // Результат: null
2. Subsequence
Заданы две последовательности X1, X2,..., Xn и Y1, Y2,…, Yk произвольных элементов (java.lang.Object). Определить, можно ли получить последовательность X путем вычеркивания некоторых элементов из Y?
В качестве входных параметра в метод передаются два списка: первый – список Xi, второй – список Yi.
Название интерфейса | com.tsystems.javaschool.tasks.Subsequence |
Имя класса | com.tsystems.javaschool.tasks.SubsequenceImpl |
Имя архива | subsequense.zip |
Пример
Subsequence s = new SubsequenceImpl();
boolean b = s.find(Arrays.asList("A", "B", "C", "D"), Arrays.asList("BD", " A ", "ABC", " B ", "M", "D", "M", " C ", "DC", " D "));
System.out.println(b); // Результат: true
3. Duplicates
Составить программу для обработки файла по следующему алгоритму. Задается входной файл, содержащий текстовые строки. Программа обрабатывает его и создает в указанном месте выходной файл, содержащий отсортированные по алфавиту неповторяющиеся строки исходного файла. В конце каждой строки в квадратных скобках указывается количество повторений данной строки во входном файле.
В качестве входных параметра в метод передаются два файла: первый – входной, второй – выходной. Метод возвращает true тогда и только тогда, когда обработка файла прошла успешно. В случае возникновения ошибок программа должна вернуть false.
Не гарантируется, что данные файлы существуют. В случае, если выходной файл не существует, он должен быть создан. Если он существует, необходимо дописать результат выполнения программы, без перезаписи уже содержащейся там информации.
Название интерфейса | com.tsystems.javaschool.tasks.DuplicateFinder |
Имя класса | com.tsystems.javaschool.tasks.DuplicateFinderImpl |
Имя архива | duplicates.zip |
Пример
DuplicateFinder d = new DuplicateFinderImpl();
d.process(new File("a.txt"), new File("b.txt"));
a.txt
ccc
ddd
bbb
ddd
ddd
aaa
b.txt
aaa[1]
bbb[1]
ccc[1]
ddd[3]
Если вы успешно справились с заданием, T-Systems приглашает вас на обучение в Java School в Санкт-Петербурге. Во время обучения выплачивается стипендия, лучших возьмут на работу. Для этого предварительно запросите интерфейсы по адресу java.school@t-systems.ru, указав ФИО и контактные данные. Интерфейсы должны быть реализованы в классах с определенными именами, которые, в свою очередь, должны иметь публичные конструкторы без аргументов. Исходный код необходимо прокомментировать, упаковать в zip-архив и прислать обратно на java.school@t-systems.ru.
Учебные группы набираются регулярно в течение года.
Дата добавления: 2015-11-04; просмотров: 438 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Jamy Toaster выходит на рынок Украины | | | Московский государственный университет |