Skip to content

В данном репозитории находятся вопросы и задачи для подготовки к собеседованию

License

Notifications You must be signed in to change notification settings

skillfactory-ru/java-interview-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Задачи для подготовки к интервью на должность разработчика Java

В данном репозитории находятся вопросы и задачи для подготовки к собеседованию

Задача 1 - Музыкальный автомат (Jukebox)

Этот вопрос может встретиться на собеседованиях в Google и Amazon Вам необходимо спроектировать ПО для музыкального автомата Какие вопросы следует задать прежде, чем писать код?

  1. Что проигрывает музыкальный автормат - CD, MP3?
  2. Как оно должно работать?
  3. Это бесплатный музыкальный автомат или платный

Задача 2 - Вендинговый автомат

Такой вопрос могут задать в компаниях Amazon, Google, Adobe Необходимо спроектировать программму для работы вендингово автомата Какие вопросы следует заадть прежде, чем писать код?

  1. Вендинговый автомат поддерживает различные виды товаров и различные виды монет
  2. Должен ли вендинговый поддерживать функционал проверки цены, покупки, возврата.

Задача 3 - Колода карт

Данную задачу можно встретить в таких компаниях как Amazon, Google, Adobe, Microsoft Необходимо спроектировать ПО для колоды карты. Что следует спросить:

  1. Если карты могут быть чем угодно, то что тогда является обощенным вариантом

Задача 4 - Парковка

Данный вопрос могут задать в таких компаниях как Amazon, Google, Adobe, Microsoft Вам необходимо спроектировать программу для управления парковкой Какие вопросы стоит задать перед написанием кода?

  1. Это одноуровневая парковка или содержит несколько уровней
  2. Одинаковое ли пространство для машины?
  3. Какой тип машин наиболее часто паркуется?
  4. Бесплантая ли это парковка?

Задача 5 - Онлайн-библиотека

В данном задании необходимо спроектировать программу для онлайн-библиотеки Какие вопросы стоит спросить прежде, чем начать писать код:

  1. Какая требуется функциональность
  2. Как много книг может быть прочитано одновременно

Задача 6 - Хэш таблица

Этот вопрос задают на собеседованиях в таких компаниях как Amazon, Google, Adobe, Microsoft В рамках данной задачи вам необходимо спроектировать свою реализацию хэш - таблицы Что следует спросить прежде, чем писать код?

  1. Какая требуется функциональность?
  2. Как должны разрешаться коллизии?
  3. Какие типы данных должны поддерживаться для пары ключ-значение?

Задача 7 - Файловая система

В данной задачи необходимо спроектировать программу для представления файловой системы Что следует спросить прежде, чем писать код:

  1. Какая требуется функциональность?
  2. Что из себя должна представлять часть файловой системы?

Задача 8 - Кортеж (tuple)

Данный вопрос могут задать в таких компаниях как Amazon, Google
Ваша задача спроектировать новую структуру данных - кортеж
Какие вопропросы стоит задать прежде, чем приступить к написанию кода

  1. Кортеж может иметь от 1 до n элементов, какой вид кортежа вы ожидаете?
  2. Какие типы данных будут храниться в кортеже

Задача 9 - Билетный автомат в кинотеатре

Данный вопрос может встретиться в таких компаниях как Amazon, Google, Adobe, Microsoft В рамках данного задания вам необходимо спроектировать задание программу для автомата по продаже билетов в кино Какие вопросы следует задать прежде, чем приступить как написанию кода?

  1. Что из себя представляет кинотеатр?
  2. Несколько ли кинозалов в кинотеатре?
  3. Какие типы билетов продаются?
  4. Как часто проходит сеанс фильма - раз в день, несколько раз в день, только в одном зале или в нескольких залах?

Задача 10 - Круговой байтовый буфер

Данный вопрос может встретиться на собеседовании в таких компаниях как Amazon, Google, Adobe В рамках данной задачи необходимо спроектировать круговой байтовый буффер Что следует спросить перед написание кода:

  1. Должен ли быть буффер диманического размера?

Задача 11

В рамках данной задачи необходимо написать приложение для мониторинга потребления газа, холодной и горячей воды. UI не нужен, только REST API В данном приложении должны быть два метода - для добавления новых данных, и для получения данных о потреблении пользователя. Вводные данные должны быть провалидированы. Технические требования

  1. Java 8/11, Spring Framework (можно использовать Boot), Maven
  2. Использование других библиотек не запрещено
  3. Для хранения данных используйте HSQLDB
  4. Старайтесь писать поддерживаемый и тестируемый код
  5. Если вы считаете, что какое-то требование не описано, то делайте на свое усмотрение

Задача 12

В рамках данной задачи необходимо разработать приложение по управлению новостной лентой на сайте. Каждая новость состоит из названия, содержания, даты публицкаии и категории, к которой относится новость Каждая категория содержит название, и к ней может быть привязано несколько новостей

Приложение должно предоставленять следующие возможности по работе с новостями:

  1. Просмотр списка новостей
  2. Поиск новостей по категории
  3. Создание и редактирование новости
  4. Удаление новости

Требования/ограничения

  1. Java 8/11, Spring Framework(можно использовать Boot), Maven/Gradle(на ваш выбор)
  2. Hibernate

Задача 13

В рамках данной задачи необходимо написать свою реализацию Set. HashSet не гарантирует порядок элементов, в отличии от LinkedHashSet. LinkedHashSet использовальзовать нельзя

Задача 14

Вам дан файл с координатами разделенными с запятой - формат CSV. Первой в паре идет долго, а за ней идет широта По списку из файла необходимо вывести найти все города, если какой-то город не удалось найти - вывести сообщение о ошибке. В рамках этой задачи разрешено пользоваться любым публично доступным API сервисом, таким как Google Maps API Пример файла:

69.7016661,170.2999022
69.4132852,30.7984312
69.4031364,86.1907218
69.4003584,32.4501496
61.0318712,76.1025878
61.0063465,36.4495137
61.0023984,69.0184798
60.9794025,32.9725519
60.9612823,46.4814116
60.950855,29.1308372
59.8591523,38.3748782
59.7726848,30.7988557
59.7665925,60.0011703
59.7636635,60.1934525
59.7043309,30.7874571
59.6482998,56.771009
59.6272904,33.5072731
59.6215133,30.3934125
59.6047724,60.5753882
59.5681332,150.8084956
59.565237,30.1282473
59.5407098,30.877812
59.5351837,45.4576137
57.8468636,114.1866287
57.826974,29.9629389
56.5847888,104.114275
56.5586946,40.1228906
56.5243844,50.6782739
56.5232864,52.9943775

Задача 15

В рамках данной задачи необходимо написать реализацию метода, который будет возвращаться существительное в зависимости от переданного числа. (Число от 0 до 100)
Используйте существительное - зерно

1 - зерно
2 - зерна
51 - зерно
100 - зерен

Задача 16

Необходимо спроектировать базу данных для приложения по поиску билетов База данных должна содержать данные о датах поездки, времени в пути, пункт отбытия, пункта прибытия и цены

Задача 17

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

ReportService.java

public interface ReportService {
    Report generateReport();
}

ReportServiceIml.java

public class ReportServiceImpl {
    
    public Report generateReport() {
        return new RealReport();
    }
}

ReportServiceStub.java

public class ReportServiceStub implement ReportService {
    public Report generateReport() {
        return new StubReport();
    }

Перечислите и реализуйте различные способы конфигурации для создания бина ReportService

Задача 18

Необходимо написать программу для вычисления среднего арифметического числа Программа должна принимать на вход путь до файла, и выводить следующую информацию:

  1. Среднее арифметическое
  2. Самое большое число в файле
  3. Самое маленькое число файле
  4. Количество цифр в файле Если в какой-либо из строк файла окажется не число, то необходимо прекратить выполнение и вывести сообщение о ошибки. Пример валидного файла
12
13
14
0

Запуск программы должен осущесвлять командной java -jar counter.jar <Путь до файла> Вывод программы с валидным файлом

1. Среднее арифметическое = 9
2. Самое большое число = 14
3. Самое маленькое число = 0
4. Количество цифр в файле = 4

Вывод программы с невалидным файлом

Строка 1bac не является валидным числом

Важно числа в файле ограничены типом int

Задача 19

Вспоминаем школьный курс физики и как парсить JSON. Дан файл следующего содержания

[
   {
      "mass": 10.00,
      "volume": 5.5
   },
   {
      "mass": 3.00,
      "volume": 1.1
   },
   {
      "mass": 1.00,
      "volume" :0.5
   },
   {
      "mass": 1.00,
      "volume": 0.5
   },
   {
      "mass": 1.00,
      "volume" :0.5
   }
]

Необходимо написать программу, которая будет принимать на вход путь до файла и выводить рассчитанную плотность. Плотность = масса / объем

Задача 20

Перечислите различные способы внедрения зависимостей в Spring

Задача 21

В чем отличии git merge от git rebase?

Задача 22

В чем различие между аннотациями @Autowired и @Resource?

Задача 23

Что обозначает в Maven следующий тэг?

<packaging>pom</packaging>

Задача 24

Необходимо вычислить разницу в днях, часах и минутах между двумя датами Пример ввода

2021-01-01 00:00:00
2021-12-31 23:59:59

Задача 25

На вход подается строка в формате 10101, то есть число 21 в двоичном представлении
Необходимо преобразовать число из двоичной системы счисления в десятичную

Задача 25

На вход подается массив чисел, необходимо отсортировать их с помощью "пузырьковой" сортировки

Задача 26

Для чего нужен Reflection API в Java?

Задача 27

Опишите процессы сериализации/десериализации

Задача 28

В чем заключается разница между Thread и Runnable

Задача 29

Что такое состояние гонки(race condition)?

Задача 30

Напишите минимальный неблокирующий ArrayList. Достаточно всего четырех методов - add(), get(), remove(), size() Важно нельзя использовать CopyOnWriteArrayList

Задача 31

Опишите для чего нужны сервлеты? Опишите их жизненный цикл

Задача 32

Как получить IP адрес клиента на сервере?

Задача 33

Для чего нужен первичный ключ в базах данных?

Задача 34

Какие виды объединении(join) возможны. Опишите и покажите пример

Задача 35

Расскажите про принципы ООП и SOLID

Задача 36

Для чего нужен паттерн строитель(Builder)?

Задача 37

Для чего нужно свойство? spring.jpa.hibernate.ddl-auto

Задача 38

Как происходит компиляция и запуск программ на Java?

Задача 39

В чем преимущество использования immutable объектов?

Задача 40

В чем разница между перегрузкой(overloading) и переопределение(overriding)?

Задача 41

Массив является объектом или примитив? Является ли динамической структурой? Для чего нужен метод System.arraycopy()

Задача 42

В чем различие между циклами while и do-while

Задача 43

Как поменять значения переменных местами без использования третьей переменной?

Задача 44

Для чего нужна агрегационная функция sum в SQL?

Задача 45

В какой момент при создании бина вызывается метод бина, который отмечен аннотацией @PostConstruct?

About

В данном репозитории находятся вопросы и задачи для подготовки к собеседованию

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published