Войти Регистрация
Код-ревью

5. Класс Person: восемь замечаний

Средняя

Java · 42 строк

Класс клиента из сервиса онбординга. Объекты кладут в HashSet для дедупликации заявок и передают между потоками. Найдите проблемы.

В работе: Доменная модель клиента: от неё зависят дедупликация заявок, кэши и логи.

Как проверяем Нажмите на строку с ошибкой и коротко напишите, что не так. Баг засчитан, если отмечена хотя бы одна его строка. Зачёт — найдено не меньше 60 % багов с учётом серьёзности (критичный весит 3, обычный 2, мелкий 1), а лишних отметок не больше, чем багов в коде. Пустые строки, скобки и комментарии лишними не считаем. Ответ один на подход: после него показываем разбор.
equals и hashCodeнеизменяемостьдатыперсональные данные

Источник: обзор транскриптов интервью: Сбер, Java — ревью класса Person. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.
  1. public class Person {
  2. private String name;
  3. private String passport;
  4. private Date birthDate;
  5. private List<String> phones;
  6. public Person(String name, String passport, Date birthDate, List<String> phones) {
  7. this.name = name;
  8. this.passport = passport;
  9. this.birthDate = birthDate;
  10. this.phones = phones;
  11. }
  12. public Date getBirthDate() {
  13. return birthDate;
  14. }
  15. public List<String> getPhones() {
  16. return phones;
  17. }
  18. public int getAge() {
  19. return new Date().getYear() - birthDate.getYear();
  20. }
  21. @Override
  22. public boolean equals(Object o) {
  23. if (this == o) return true;
  24. Person person = (Person) o;
  25. return name == person.name && passport.equals(person.passport);
  26. }
  27. @Override
  28. public int hashCode() {
  29. return Objects.hash(name, birthDate);
  30. }
  31. @Override
  32. public String toString() {
  33. return "Person{name=" + name + ", passport=" + passport + ", phones=" + phones + "}";
  34. }
  35. }