Меня зовут Даниил, я недавно окончил ОмГУ и хотел бы начать карьеру в качестве Java-разработчика в вашей компании. Во время обучения я особенно увлекался такими предметами, как методы оптимизации, ООП, языки и методы программирования, дискретная математика и теория графов. Эти дисциплины помогли мне развить аналитическое мышление и глубоко понять принципы разработки программного обеспечения.

В качестве своей дипломной работы я выбрал разработку клиент-серверного приложения (https://github.com/Danlaysma54/LPR-case-Back/tree/master)  для собственной системы управления тестирования, т.к аналоги были заблокированы или не удовлетворяли функциональным требованиям. В команде из трех человек отвечал за аналитику, разработку backend-части и тестированием. Для своего сервера мне понадобились инструменты, о которых я узнал во время своего обучения.

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

Сам проект был разделен на три слоя: Контроллеры, Сервисы и Репозитории для принципа единственной ответственности, также в каждом слое были написаны интерфейсы и реализации к ним для инверсии зависимостей.

Для слоя репозиториев был использован jdbc, т.к не подразумевался переход с одной субд на другую и хотелось видеть SQL-запросы и настраивать их в соответствии со своими потребностями. В качестве практики сейчас пытаюсь сделать на JPA.  Также для удобной миграции бд был использован Flyway

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

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