Тестовое 2024-2025

В рамках этого тестового задания мы будем определять победителя в Покере.
Вид покера - Техасский холдем.
Карты обозначаются так: сначала номинал, потом - масть. Например: "2С" - двойка червей, "10D" - десятки бубей, пример руки игрока - "2C10D"
Список мастей:

  • ♣️ Трефы — C(lubs)
  • ♦️ Бубны — (D)iamonds
  • ♥️ Червы — (H)earts
  • ♠️ Пики — (S)pades

Список номиналов: 2, 3, 4, 5, 6, 7, 8, 8, 10, J, Q, K, A
Гайд по покерным комбинациям
Если не знаком с покером, то будь внимателен - побеждает сильнейшая комбинация из пяти карт. Они все могут быть на столе, а не у игроков, разберись с этой механикой вдумчиво :)

Задача

Cоздать свою реализацию Dealer, он должен уметь:

  • Корректно раздавать случайные карты из колоды (всего карт 52), см внимательно документацию в интерфейсе
  • Определять исход раздачи на готовой доске (с ривером)
  • В ходе определения победителя проверять, что на доске корректные карты, в противном случае выбрасывать InvalidPokerBoardException с оcмысленным сообщением

Как отправить решение?

  • Тебе нужно создать собственный репозиторий на Github и добавить туда проект с решением.
  • Ссылку на репозиторий отправь в телеграмм @Marandyuk_Anatolii
  • Не забудь сделать репозиторий публичным
  • Лучше не форкай этот репозиторий, чтобы другие участники не подглядывали в твое решение

FAQ

Что, если я не знаю Java?

Начни с установки Intelij Idea и JDK. В данном случае тебе понадобится JDK 17 версии:

  • Intelij Idea Community Edition отсюда, надеюсь ты умеешь обходить блокировки, иначе в разработку нынче путь заказан
  • В Intelij Idea File-> Project Structure -> SDK -> Download SDK -> 17 -> Amazon Coretto
  • Еще можно Скачать JDK тут, засетапить все необходимое видео (есть русские субтитры), текст

Я не умею работать с Git и GitHub

Если ты не знаком с Git и Github, то тебе нужно ознакомиться с этой статьей, в ней описаны основы работы с Git.
Git: загрузить существующий проект на GitHub
Отправка проекта на GitHub из IntelliJ IDEA

Тебе потребуется изучить некоторый теоретический минимум для решения этой задачи:

  • Основы синтаксиса Java, простые (примитивные) типы данных
  • Арифметические операции в java
  • Методы
  • Преобразование строки в число
  • Класс String, работа со строками
  • Циклы в Java
  • Логические операторы
  • Условные операторы, сравнение, switch case
  • Работа с консолью - ввод/вывод, классы Scanner и BufferedReader
  • Java и ООП
  • Обработка ошибок и создание своих исключений

Список универсальный, не факт, что прям все пригодится в рамках решения этого тестового, так что не передумай себя самого

Помогут также следующие ресурсы:

ВНИМАНИЕ! Не нужно смотреть все видео из плейлиста, не нужно проходить курс до конца и читать всю книгу! У тебя ограниченное количество времени на решение задачи, поэтому не трать время. Сверься со списком тем выше и посмотри выборочно материалы только по этим темам! Для того, чтобы сэкономить свое время, выбери один источник из предложенных и используй его для решения.

Я написал код, а мне выдает какую-то ошибку

Часто написанный с ошибками код компилируется и при запуске может выбрасывать исключения, стектрейс которых выводится в консоль. Это нормально.
Советы:

  • Для понимания природы этого исключения можно прочитать java doc этого исключения, либо просто загуглив исключение по названию первого исключения и тексту ошибки.
  • Если по поиску теста ошибки ничего не находится, попробуй сократить текст ошибки, удалив из него текст, относящийся к конкретно к твоему приложению (например там могут быть указаны название написанных тобой методов или переменных).
  • Если не понимаешь английского - пользуйся словарем/переводчиком.
  • Не стесняйся гуглить текст ошибки.
  • Если не работает большой кусок кода - попробуй отладить небольшую его часть.
  • Мысленно пройдись последовательно по коду, записывая значения переменных и результат работы.
  • Так же для отладки приложения и нахождения проблемный мест в среде разработки предсмотрен режим debug. Видео, показывающее основы использования debug режима в IntelliJ Idea смотреть

Я не знаю, как подступиться к задаче

Если эта первая программа, которую ты пытаешься написать - постарайся отработать основы на более простых задачах (см материалы выше).
Постарайся разбить большую задачу на маленькие подзадачи и решать их по отдельности - так гораздо проще. Или упрости задачу до варианта, который ты можешь решить, а потом дорабатывай до заданных требований. Ты можешь задавать вопросы @Marandyuk_Anatolii

Успехов!