Giter Site home page Giter Site logo

marietask / job4j_exercises Goto Github PK

View Code? Open in Web Editor NEW

This project forked from peterarsentev/job4j_exercises

0.0 0.0 0.0 104 KB

Курс тест по Java. Проверяет кандидата, стоит ли профессионально заниматься программированием.

License: MIT License

Java 100.00%

job4j_exercises's Introduction

Профессиональное тестирование по Java

Цель курса

Цель курса - проверить логические и алгоритмические способности ученика заниматься профессиональным программированием. Кандидаты, полностью выполнившие все задания могут смело продолжать изучать программирование, так как у них есть хороший потенциал стать высококвалифицированными разработчиками ПО. Кандидатам, которые испытывают сложности в выполнении данных задач, следует обратить внимание на смежные области разработки ПО, такие как: QA Automation, аналитик, функциональный программист, support.

Описание

В курсе собраны 20 задач возрастающей сложности. Каждая задача состоит из подготовленного каркаса классов и полностью написанных автоматических тестов. То есть все задания будут автоматически проверены. В данном курсе используется подход TDD. Инструменты, необходимые для прохождения курса: Maven, Git, Java 8.

Для получения исходного кода нужно выполнить команду:

git clone [email protected]:peterarsentev/course_test.git

Проект собрать через maven. Задания курса находятся в отдельных пакетах

/src/main/java/ru/parsentev/task_XXX/package-info.java

а так же продублированы ниже.

Ученик должен ознакомиться c заданием и перейти к реализации недостающего кода и классов. После завершения реализации ученик должен зайти в папку

/src/test/java/ru/parsentev/task_XXX/

и в каждом классе убрать аннотацию

@Ignore - это аннотация используется для игнорирования тестов.

После этого ученик должен перейти в корень проекта и выполнить команду

mvn clean test

Система сборки должна успешно пройти все тесты. Если тесты упали - необходимо поправить ваш код. Код тестов править нельзя.

В репозитории есть две ветки

  • master - каркас заданий с тестами.
  • solution - полностью выполненные задания с тестами.

Смотреть решения рекомендуется после успешной реализации кода и успешно пройденных тестов.

В качестве теоретического материала для подготовки к курсу следует прочитать следующие книги:

Head First Java, 2nd Edition: Kathy Sierra, Bert Bates

Алгоритмы. Руководство по разработке, Стивен С. Скиена

Темы необходимые для прохождения курса.

  • Типы данных
  • Арифметические операции
  • Операторы условия
  • Циклы
  • Массивы
  • Наследование
  • Полиморфизм
  • Инкапсуляция
  • Исключения

Задания

  1. Реализовать программу Calculator (калькулятор). Калькулятор должен выполнять операции: сложение, вычитание, умножение, деление, возведение в степень. При выполнении деления ввести проверку на 0. Если второй аргумент 0 - нужно выкинуть исключение java.lang.IllegalStateException

  2. Реализовать класс Point (точка), описывающую точку в системе координат x, y - Point(x, y). Объект точка должен иметь методы double Point#distanceTo(Point point) - метод должен вычислять расстояние между двумя точками.

  3. Реализовать класс Triangle (треугольник). Треугольник должен описываться через точки в системе координат. Объект треугольник должен иметь методы: boolean exists() - проверяет существует ли треугольник или нет. double area() - вычисляет площадь треугольника. Если треугольник не существует - выбросить исключение java.lang.IllegalStateException

  4. Реализовать класс IsoscelesTriangle (равнобедренный треугольник) наследуя класс треугольник из задания 3. Дополнить поведение метода boolean exists() - true, если треугольник равнобедренный. Остальное поведение оставить прежним.

  5. Реализовать класс RightTriangle (прямоугольный треугольник) наследуя класс треугольник из задания 3. Дополнить поведение метода boolean exists() - true, если треугольник равносторонний. Остальное поведение оставить прежним.

  6. Реализовать класс Square (квадрат), основанный на четырех точках Point(x, y). boolean exists() - проверяет существует ли квадрат или нет.

  7. Реализовать класс Expression. Класс должен принимать строку из просто математического выражения и методы double calc(). Должен поддерживать операции + - / * exp. Например, "2+2" - 4, "2-2" - 0 Если выражение не корректное выбросить исключение java.lang.IllegalStateException

  8. Реализовать класс вычисляющий простые числа в диапазоне от 1 до N.

  9. Реализовать метод подсчета уникальных символов в строке.

  10. Реализовать методы проверки корректности открытых и закрытых скобок. Например, ()(()((()))) - true, ()) - false.

  11. Задан массив чисел со значениями 0 и 1. Нужно проверить, что все значения в массиве равны 1. Например, [0, 1] - false, [1, 1] - true.

  12. Задан массив чисел со значениями 0 и 1. Нужно проверить, что в массиве есть последовательности из трех и больше единиц. Например, [0, 1, 1] - false, [1, 1, 1] - true.

  13. Задан числовой массив. Нужно проверить, что все значения в массиве одинаковые. Например, [0, 0, 0] - true, [1, 1, 1] - true, [0, 1, 1] - false.

  14. Задано предложение. Нужно переставить слова в обратно порядке. Например, "программируй и зарабатывай" -> "зарабатывай и программируй".

  15. Задан числовой массив. Нужно реализовать метод кольцевого сдвига на N. int[] shift(). Не использовать дополнительный массив. Например, [1, 2, 3, 4, 5] - shift(2) - [4, 5, 1, 2, 3]

  16. Задан квадратный массив. Нужно проверить, что в нем есть выигрышные варианты для игры крестики-нолики.

  17. Реализован банкомат размена денег. Автомат принимает бумажную купюру и обменивает на монеты. Метод должен возвращать список всех возможных вариантов размены купюры.

  18. Задан двумерный массив, заполненный нулями и единицами. Нужно определить самое большое множество единиц. Множеством считается объединение единиц, которые находятся рядом друг с другом по горизонтали и(или) вертикали. Если они находятся рядом по диагонали - такое нахождение не учитывать.

  19. Задан двумерный массив из единиц и нулей. Нужно найти минимальный путь от точки А до точки В. Двигаться можно только по единицам и только в вниз или вправо.

  20. Задан одномерный массив. Нужно найти все возможные варианты перестановок этого массива.

  21. Задан список скриптов с указанием их зависимостей.

    1 - [2, 3], 2 - [4], 3 - [4, 5], 4 - [], 5 - []

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

    Например, чтобы выполнить скрипт 1, нужно выполнить скрипт (2, 3), которые в свою очередь зависят от 4 и 5 скрипта.

    List load(Map<Integer, List ds, Integer scriptId)

  22. Задан двухмерный массив. Массив заполнен числами. По массиву двигается робот. Робот может двигаться вниз, вверх и вправо. Задача начальная точка и конечная. Перемещение из одной клетки в другую затрачивает энергию. Рассчитывается она разность модуля значений клеток. Например, ход из клетки 1 в 10 будет оцениваться в 9 единиц.

    Необходимо написать метод, который определяет наименее трудозатратный путь.

    int optimalWay(int[][] board, int sx, int sy, int fx, int fy)

    [1, 2, 3]
    [1, 3, 6]
    [1, 1, 5] 
    

    start (0, 0), finish (3, 3). Ответ: 4. Путь 1 1 1 1 5

  23. Задан двухмерный массив. Массив заполнен нулями и единицами. Робот может ходить только по единицам. Задача начальная и конечная точка. Робот может ходить вверх, вних, влево и вправо. Необходимо найти минимальный путь до конечной точки.

    int minWay(int[][] board, int sx, int sy, int fx, int fy)

job4j_exercises's People

Contributors

peterarsentev avatar yarmail avatar like2learn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.