@pod_proteinom

Насколько плохо выполнено тестовое задание?

Здравствуйте!
Не так давно выполнял тестовое задание на позицию java junior. На работу не взяли, но и не ответили в чем "слажал". Поэтому просьба, кому не сложно, взгляните на мой код, и конструктивно покритикуйте его, чтобы я смог понять, что не так и в дальнейшем это исправить.

Задание:
Создать и реализовать веб-приложение на языке Java. Желательно для работы с базой данных использовать Hibernate, а также для построения приложения использовать Spring.
Возможно использование любого Framework.
Создать таблицу employee в mysql или postres c полями first_name, last_name, second_name, age, experience и description для хранения соответствующих данных и реализовать возможность их поиска, добавления, изменения и удаление через веб интерфейс.
По возможности для модификации данных и поиска использовать ajax и сделать минимальную верстку для формы добавления и поиска.


Исходники тут
  • Вопрос задан
  • 3352 просмотра
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
тестовое задание не единственное что оценивают на собеседовании, бывает человек хороший, но есть кандидат лучше просто с опытом.
Ответ написан
Комментировать
@Power
Для junior неплохо. Из того, что я вижу, существенные минусы:
  • SQL injection в https://github.com/un1acker/employeeProject/blob/m... : во-первых, поле whatSearch (сомнительное название) надо проверять по списку допустимых значений (фиксированному или получаемому через reflection из класса Employee), а для построения запроса лучше использовать что-то типа Criteria; во-вторых, для searchBy (тоже сомнительное название) надо использовать prepared statements (это которые с подстановками в стиле "where E.field = ?"), а в данном случае лучше тот же Criteria
  • множественные XSS в https://github.com/un1acker/employeeProject/blob/m... - нужен какой-то js-шаблонизатор или очень аккуратное манипулирование DOM-ом
  • отсутствует валидация данных, например, что возраст хотя бы неотрицателен
  • delete делается GET-запросом (GET-запросы должны использоваться тогда и только тогда, когда пользователь не намеревается что-то менять)
  • сервис EmployeeService бесполезен - он все методы сразу делегирует EmployeeDAO


Несущественные минусы:
  • лишние файлы в проекте (.idea/, target/, empl.iml)
  • в классе Employee лишние аннотации @Table(name="employee") и @Column(name="...") - это сразу делается настройкой NamingStrategy (возможно, это даже настроено по умолчанию)
  • в классе Employee оба конструктора не нужны - пустой генерируется автоматически (если нет других), а полный не используется
  • в интерфейсах не надо у методов писать public - они и так public (и более того, это нельзя поменять)
  • maven (gradle рулит :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы