Skip to content

Witcher26/TaskOfInterview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tasks of interview


Задачи с собеседований

Задача №1.1 - Написание метода для вывода количества уникальных сотрудников.

Описание
Написать метод, принимающий аргументом список, содержащий в себе структуры HashMap<String,String>, описывающие объекты типа "Задача проекта". Каждая HashMap<String,String> содержит в себе:

  • "task_id" - строка с идентификатором задач: уникальное значение, повторяющихся задач в списке нет. Не может быть пустой;
  • "assignee_id" - строка с идентификатором назначенного на задачу сотрудника: один сотрудник может быть назначен на несколько задач из списка. Может быть пустой строкой;
  • "task_state" - строка с названием статуса задачи: принимает одно из двух значений (active|disabled). Не может быть пустой;

Метод должен вернуть целочисленное значение - количество уникальных сотрудников, назначенных на активные задачи из списка.

Пример:
Список, переданный как аргумент:
[{task_id = 1, assignee_id = 001, task_state = active}, {task_id = 2, assignee_id = 002, task_state = active}, {task_id = 3, assignee_id = 001, task_state = active}, {task_id = 4, assignee_id = 007, task_state = disabled}];

Ожидаемое значение: 2

Решение https://github.com/Witcher26/method_to_get_count_of_employees/tree/master/src/main/java/com/zvezdilin/MethodOfCountingEmployees

Задача №2 - Вывод повторяющихся символов в слове

Слово - "hello" Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task2_%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4_%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D1%8F%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2_%D0%B2_%D1%81%D0%BB%D0%BE%D0%B2%D0%B5_hello/Main.java

Задача №3 - Дан массив целых чисел. Написать метод, который будет выводить все простые числа.

Примечание: простые числа делятся на 1 и на сами себя.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task3_%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4_%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB/Main.java

Задача №4 - Мама моет раму, Рама держит маму. Вышла замуж мама за индуса Раму - вывести на экран, сколько раз повторяется каждое слово.

Использовать HashMap.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task4_%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4_%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D1%8F%D1%8E%D1%89%D0%B8%D1%85%D1%81%D1%8F_%D1%81%D0%BB%D0%BE%D0%B2/Main.java


Задача №1 - Воздушные рейсы.

Описание
Необходимо продумать и разработать структуру классов и интерфейсов небольшого модуля, который будет заниматься фильтрацией набора перелётов согласно различным правилам. Правил фильтрации может быть несколько. Также наборы перелётов могут быть большими. Правила могут выбираться и задаваться динамически в зависимости от контекста выполнения операции фильтрации. Вывод информации в консоль.

Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task1_air_flights

Задача №5 - ИПэшник.

Описание
Нужно написать программу-помощника индивидуальному предпринимателю (далее - ИП), которая помогает ему выбрать лучшую систему налогообложения. ИП будет заносить суммы доходов и расходов, а программа будет выбирать для него лучшую систему налогообложения из двух:

УСН доходы - налог 6% от доходов; УСН доходы минус расходы - налог 15% от разницы доходов и расходов. #Функционал программы:#

  • Ввод сумм доходов и расходов ИП;
  • ИП может несколько раз вносить доходы и расходы, они должны суммироваться с введёнными ранее данными;
  • При выборе ИП опции определения наиболее выгодной системы налогообложения, программа должна вывести название такой системы (УСН доходы или УСН доходы минус расходы);
  • При выводе самой выгодной системы налогообложения, программа должна вывести также сумму, которую удастся сэкономить, если выбрать эту систему;
  • Программа должна завершаться при вводе слова end;

Нужно помнить, что налог не может быть отрицательным; Программа должна быть структурирована в методы (например, расчёт налога для одной системы налогообложения должен представлять собой отдельный статический метод)
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task5_%D0%B8%D0%BF%D1%8D%D1%88%D0%BD%D0%B8%D0%BA/Main.java

Задача №6 - Сравнение double

Описание
Написать программу для сравнения double, float и округления этих типов

Функционал программы Ввод номера желаемой операции (сравнить/округлить/отбросить дробную часть); Ввод двух чисел для сравнения (одно double, другое float) или одного (для округления или отброса дробной части); Вывод результата.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task6_%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_double/Main.java

Задача №7 - Угадываем високосность

Описание
Нужно написать программу, которая будет играть с пользователем в следующую игру: каждый ход программа спрашивает у него два числа: год и число дней в этом году. Вы проверяете, правильно ли пользователь указал количество дней в этом году и, если правильно, повторяете ход. В противном случае игра завершается. По окончании игры напишите пользователю сколько раз он угадал, это и будет количество набранных очков в игре.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task7_%D1%83%D0%B3%D0%B0%D0%B4%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC_%D0%B2%D0%B8%D1%81%D0%BE%D0%BA%D0%BE%D1%81%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C/Main.java

Задача №8 - Високосный год

Описание
Нужно написать программу, которая будет рассчитывать количество дней в году. Зачем это бывает нужно? Варианты бывают разные: например, для расчета продолжительности долгосрочных проектов в днях или чтобы узнать, сколько дней потребуется для космической экспедиции на Марс. Для расчета количества дней в году требуется знать несколько правил:

В високосном году 366 дней, в обычном 365. Високосный год — это год, номер которого делится без остатка на 400 (например 2000 или 2400), либо делится на 4 но не делится на 100 (например 2008, 2096, но не 2100) Решение: https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task8_%D0%B2%D0%B8%D1%81%D0%BE%D0%BA%D0%BE%D1%81%D1%82%D0%BD%D1%8B%D0%B9_%D0%B3%D0%BE%D0%B4/Main.java

Задача №9 - День месяца и средняя температура за эти дни

Описание
Написать программу для расчёта средней температуры за указанное количество дней.

Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task9_%D1%80%D0%B0%D1%81%D1%87%D0%B5%D1%82_%D1%81%D1%80%D0%B5%D0%B4%D0%BD%D0%B5%D0%B9_%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D1%8B/Main.java

Задача №10 - Покупка товаров

Описание
Нужно написать программу, планирующую продуктовую корзину. У вас есть список доступных продуктов в одном массиве и соответствующая им цена в другом массиве. Пользователь вводит номер продукта из первого списка и количество продуктов этого вида, которое хочет купить. Программа добавляет указанное количество выбранного продукта в итоговую сумму продуктовой корзины. Действие повторяется до тех пор, пока пользователь не введет команду "end". Только после этого выводится вся корзина выбранных товаров и итоговая сумма.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task10_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2/Main.java

Задача №11 - Книги и авторы

Описание
Необходимо написать программу со следующими классами: "Автор" (Author), содержащий как минимум конструктор с параметрами и toString и "Книга" (Book). Связать между собой классы Author и Book, чтобы среди типов полей одних классов встречались другие.
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task11_%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8_%D0%B8_%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D1%8B/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8_%D0%B8_%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D1%8B

Задание №12 - Поворот матрицы

Описание
Дано: двумерная матрица 8 на 8 из случайных чисел от 0 до 255 (спектр цветов GrayScale). Напишите алгоритм "поворота" такой матрицы на 90/180/360 градусов по часовой стрелке.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task12_%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82_%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B/Main.java

Задание №13 - Игра крестики-нолики

Описание
Написать простой функционал игры крестики-нолики с методом проверки победы одного из игроков, написанный при помощи циклов.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task13_%D0%B8%D0%B3%D1%80%D0%B0_%D0%BA%D1%80%D0%B5%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D0%BD%D0%BE%D0%BB%D0%B8%D0%BA%D0%B8/Main.java

Задание №14 - Игра на музыкальных инструментах

Описание
Написать приложение, имитирующее игру на музыкальных инструментах.
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task14_%D0%B8%D0%B3%D1%80%D0%B0_%D0%BD%D0%B0_%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%85

Задание №15 - Программа для бухгалтеров

Описание
Бухгалтерская программа должна уметь проводить операции c различными агентами.

Дополнительная информация. Практически в любом языке программирования, если вы напишете нечто подобное, вы получите не то, что вы могли ожидать:

System.out.println(0.1 + 0.2); // => 0.30000000000000004 Связанно это с тем, что числа в компьютере хранятся в двоичном виде, и конечные дроби в десятичной системе счисления 0.1 и 0.2 превращаются в бесконечные периодические дроби в двоичной системе счисления 0.00011001100110011010 и 0.00110011001100110011 соответственно. Как следствие, часть числа теряется, а значит, и точность при операциях с ними. Подробнее про представление вещественных чисел в компьютере на сайте ИТМО.

Для того чтобы производить расчёты с десятичными дробными числами, существует специальный класс BigDecimal (большое десятичное). Большое, потому что у него нет стандартных ограничений как у double (-1.7E+308 до 1.7E+308) или int (-2147483648 до 2147483647). Этот класс может хранить число, состоящее из 2,147,483,647 цифр, Карл! А десятичное, потому что каждая цифра числа хранится по отдельности, из-за чего не возникает проблем с потерями при переводе между системами счисления. В задаче предлагается принять некоторые неточности и использовать тип double.
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task15_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE%D1%82_%D0%91%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D0%BE%D0%B2

Задание №16 - Программа для бухгалтеров, используя тип данных big decimal

Описание
Здесь необходимо реализовать тот же функционал, но используя вместо double –> BigDecimal.

Работа с ним может показаться необычной и странной. Например, их нельзя сложить, используя оператор + (в Java запрещено перегружать операторы), или сравнить с помощью == (так как это объект, произойдёт сравнение ссылок, а не значений объектов). Вместо этого мы должны использовать методы .add(…) и .compareTo(…) соответственно.

Экземпляр этого класса можно создать с помощью new BigDecimal("0.1") или BigDecimal.valueOf(0.2). Как и String, экземпляры этого класса неизменяемые (иммутабельные), а методы .add(…), .multiply(…) возвращают новый объект, содержащий результат операции. При делении BigDecimal нужно обязательно указывать способ округления результата
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task16_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE%D1%82_%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D0%BE%D0%B2_BigDecimal

Задание №17 - Игра шутер

Описание
У игрока должна быть возможность использовать разные виды оружия, в будущем в игру могут быть добавлены новые. Необходимо спроектировать иерархию классов, а также систему слотов для оружия у игрока.
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task17_%D0%B8%D0%B3%D1%80%D0%B0_%D1%88%D1%83%D1%82%D0%B5%D1%80

Задание №18 - Библиотека

Описание
Необходимо разработать иерархию работников библиотеки. Нужно реализовать совмещение нескольких ролей в библиотеке в одном исполнителе через интерфейсы. Каждый объект в программе имеет определенный набор действий.
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task18_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0

Задание №19 - Банковские счета

Описание
Необходимо написать приложение, имитирующее работу банка со следующим функционалом:

  • несколько классов — различных счетов на основе общего интерфейса:
  • Сберегательный счет (SavingsAccount);
  • Кредитный счет (CreditAccount);
  • Расчетный счет (CheckingAccount).

Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task19_%D0%B1%D0%B0%D0%BD%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B5_%D1%81%D1%87%D0%B5%D1%82%D0%B0

Задание №20 - Проверка доступа к ресурсу

Описание
Во время запуска программы нужно запросить логин или пароль пользователя. Если один из введеных параметров не совпадает (логин/пароль), то нужно выбросить checked исключение UserNotFoundException. Если возраст пользователя менее 18 лет, то нужно выбросить исключение AccessDeniedException, а если 18 и больше лет - вывести сообщение "Доступ предоставлен".
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task20_%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BA_%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%83

Задание №21 - Валидация прочитанных событий

Описание
Функционал программы: Создание заранее подготовленного списка событий - отдельно для кино и отдельно для театров; Возможность валидации каждого из списка событий с помощью универсального метода; Если хотя бы одно из событий содержит поля со значением null или 0, завершить работу программы и вывести это событие; Если ошибок не возникло, вывести сообщение "Все события корректны".
Решение:
https://github.com/Witcher26/TaskOfInterview/tree/target/src/main/java/ru/zvezdilin/taskOfInterviews/task21_%D0%B2%D0%B0%D0%BB%D0%B8%D0%B4%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D1%87%D0%B8%D1%82%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9

Задание №22 - Записная книжка

Описание
Функционал программы:

Задание №23 - Работа лифта

Описание
Нужно написать программу, которая считывает данные из консоли, ожидая ввода номера этажа. После ввода каждого числа (номера этажа) добавляет значение в очередь дальнейшего перемещения лифта. Как только пользователь введет 0, программа должна последовательно вывести список всех этажей, на которых лифт делал остановки, в формате: "этаж 1 -> этаж 22 -> этаж 0". Если пользователь ввел этаж вне диапазона 0-25, проигнорировать ввод таких данных. Для реализации хранения введенных пользователем этажей отлично подойдет структура на основе интерфейса очередь (queue). По мере ввода мы сможем добавлять в конец очереди новые значения.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task23_%D0%BB%D0%B8%D1%84%D1%82/Main.java

Задание №24 - Время движения лифта

Описание
Дополнить Задачу №23 следующими данными: после ввода нулевого этажа, программа должна рассчитать время движения лифта вместе с остановками. Скорость движения лифта между парой этажей равна 5 секунд, время остановки на открытие и закрытие дверей лифта 10 секунд. Вывести информацию, сколько времени потребовалось лифту, чтобы пройти ранее введенные этажи.
Решение:
https://github.com/Witcher26/TaskOfInterview/blob/target/src/main/java/ru/zvezdilin/taskOfInterviews/task24_%D0%BB%D0%B8%D1%84%D1%82_%D0%B2%D1%80%D0%B5%D0%BC%D1%8F_%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/Main.java

Задание №25 - Обратная польская запись

Описание
Задача - написать программу перевода инфиксной записи (например 2 + 3) в постфиксную запись (2 3 +), что и будет являться так называемой "Обратной польской записью". Обра́тная по́льская запись (англ. Reverse Polish notation, RPN) — форма записи математических и логических выражений, в которой операнды расположены перед знаками операций (источник https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%BD%D0%BE%D1%82%D0%B0%D1%86%D0%B8%D1%8F). Такая запись имеет ряд преимуществ перед инфиксной записью при выражении математических формул:

Задание №26 - Телефонный справочник

Описание
Функционал классов:

Задание №27 - Список студентов

Описание
Функционал программы:

  • Ввод информации о студентах;
  • Вывод списка студентов.

Пример
Введите информацию о студенте: "ФИО, номер группы, номер студенческого билета" Иванов Петр Николаевич, 1243-Б, 31231343

Введите информацию о студенте (для завершения работы программы введите "end") Петрова Татьяна Михайловна, 1243-Б, 43221343

Введите информацию о студенте (для завершения работы программы введите "end") end Список студентов:

Задание №28 - Пропущенные вызовы

Описание
Вам надо разработать систему классов:

Задание №29 - Система подбора кандидатов

Описание
Функционал программы:

About

Задачи с собеседований.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages