Меня зовут Даниил, я недавно окончил ОмГУ и хотел бы начать карьеру в качестве Java-разработчика в вашей компании. Во время обучения я особенно увлекался такими предметами, как методы оптимизации, ООП, языки и методы программирования, дискретная математика и теория графов. Эти дисциплины помогли мне развить аналитическое мышление и глубоко понять принципы разработки программного обеспечения.
В качестве своей дипломной работы я выбрал разработку клиент-серверного приложения (https://github.com/Danlaysma54/LPR-case-Back/tree/master) для собственной системы управления тестирования, т.к аналоги были заблокированы или не удовлетворяли функциональным требованиям. В команде из трех человек отвечал за аналитику, разработку backend-части и тестированием. Для своего сервера мне понадобились инструменты, о которых я узнал во время своего обучения.
В первую очередь перед началом разработки были написаны схема баз данных и api для того, чтобы выявить все сущности, выявить возможные краевые случаи и для согласованности работы backend и frontend разработки.
Сам проект был разделен на три слоя: Контроллеры, Сервисы и Репозитории для принципа единственной ответственности, также в каждом слое были написаны интерфейсы и реализации к ним для инверсии зависимостей.
Для слоя репозиториев был использован jdbc, т.к не подразумевался переход с одной субд на другую и хотелось видеть SQL-запросы и настраивать их в соответствии со своими потребностями. В качестве практики сейчас пытаюсь сделать на JPA. Также для удобной миграции бд был использован Flyway
Т.к все запросы кроме регистрации и авторизации требовали для себя jwt токен и проверку на соответствие пользователя и проекта, над которым совершается действие, было решено написать фильтр, проверяющий это. Он наследовался от OncePerRequestFilter и срабатывал каждый раз перед получением запроса.
Я считаю себя командным игроком: мне комфортно работать в коллективе, я открыт к обратной связи и не боюсь задавать вопросы. При этом я люблю сложные задачи и всегда стремлюсь к их решению, сочетая теоретические знания и практические навыки.