Zadanie rektutacyjne Junior Java Developer - implementacja REST API z produktem i jego wariantami e-commerce

0

Siema rozglądam się z pracą na Junior Java Developera i dostałem takie oto zadanie do zrobienia:

Przygotować usługę backend (REST) - projekt zarządzania kartoteką produktową.

Produkt występuje w następującej hierarchii:

1. DEFINICJA MODELU - dane producena
(producent, typ, nazwa modelu, płeć...)
2. DEFINICJA WARIANTU - każdy model może mieć różne warianty (kolor producenta)
- np. czerwony, czarny, biała perła
3. DEFINICJA ROZMIARU - każdy wariant jest dostępny w różnych rozmiarach
- np. dla butów 41, 42 lub dla nart 170, 176
4. SŁOWNIK PŁCI
- dla DEFINICJI MODELU (M:N)
5. SŁOWNIK ROZMIARÓW
- dla DEFINICJI ROZMIARU (M:N)

TODO:
1. Przygotować strukturę bazy danych (mysql)
2. Dorzucić kolumnę z aktualną ceną (z założeniem, że cena może być różna per wariant/rozmiar)
3. Przygotować płaski widok (sql view) zawierający kolumny (typ, producent, nazwa modelu, kolor, rozmiar, aktualna cena)
4. (opcjonalnie) Zaimplementować proces archiwizacji danych produktowych:
a. MODEL z wszystkimi WARIANTAMI i ROZMIARAMI
b. WARIANT ze wszystkimi ROZMIARAMI
c. ROZMIAR
5. Przygotować rest api
a. dla DEFINICJI CRUD + (opcjonalnie) przeniesienie do archiwum
b. dla SŁOWNIKÓW dodanie i usunięcie z założeniem, że nie można usunąć wykorzystywanej pozycji
6. Wykonać dokumentację techniczną (swagger)
7. (opcjonalnie) Konteneryzacja, przygotować:
a. Dockerfile dla usługi
b. Komendę do utworzenia obrazu
c. Docker-compose do uruchomienia całej usługi (db + usługa rest)

Rozwiązanie powinno zawierać:
1. Skrypty sql do utworzenia struktury bazy danych lub skonfigurować DDL w usłudze (spring.jpa.hibernate.ddl-auto)
2. Przykładowe dane wejściowe do DB w formie skryptu sql lub json
3. Skrypt sql do utworzenia widoku (TODO pkt 3)
4. Kod usługi backend
5. Informację jak poprawnie skonfigurować / odpalić projekt

Czy to normalny poziom zadania na Juniora? XD

Jakby samo zakodowanie tego to luz, ale wymyślenie struktury projektu/bazy danych i jaka klasa co powinna zawierać a przede wszystkim wariant, kolor i size i ogarnięcie jak to zapisać/zbudować z klas/interfejsów jest dla mnie trochę trudne.
Plus samo polecenie jest dość niejasno zapisane (?) czy tylko to moje wrażenie? O co chodzi z Słownikiem płci oraz słownik rozmiarów (na zrobiłbym to po prostu na enumach)

Moja wstępna struktura wygląda tak:

- Product.class
  - Long id
  - String productName
    @ManyToOne
  - Producer producer;
    @OneToMany()
  - Category category
- Model.class
  - Long Id
  - String modelName
  - Type type
  - Sex sex
  @OneToMany
  - HashSet<Variant> variants
- Variant.class
  - Long id
  - Color color;
  - Size size;
- Size.class
  tu jest problem bo np koszulka ma rozmiar XL XS, buty 42, 44 itp narty 165, 170 itp

- Sex.enum
  MALE, FEMALE, UNISEX;

- Color.enum enum z kolorami ale chyba zmienie to na klasę Color z polem ID oraz String 
- Producer.class - tutaj będą dane producenta itp

Wy co myślicie jak zrobilibyście tę strukture? :v

6

Nie, to nie jest normalne. Ja bym olał taka rekrutację

3

Pytasz o poziom trudności? To zwykły crud i junior powinien to ogarniać.
Niemniej zadanie jest długie i mało komu chciałby się tyle robić.
Słownik ma być dynamiczny, tzn można do niego dodać coś więc enum odpada

0

@Shalom: Tak samego CRUDA bym bez problemu zakodował i logikę jedynie samo zaprojektowanie jak powinna wyglądać hierarchia klas żeby to śmigało sprawia mi trudność tzn ta opcja z model wariant i dynamiczna cena :P

1

Ło panie daj spokój, ja bym w pracy wycenił coś takiego na 2 miesiące pracy i 60k złotówek xd

3

Zadanie dość proste, niemniej czasochłonne i zwyczajnie by mi się nie chciało go robić. Nie mówiąc że osobiście nie widzę sensu w dawaniu takich złożonych czasowo zadań na rekrutację. Wygląda jakby firmie było szkoda czasu programistów na przeprowadzenie normalnej rozmowy, gdzie o większość tych rzeczy można spytać werbalnie i przedyskutować, ewentualnie naszkicować na kawałku kartki/whiteboarda hierarchię klas czy główne struktury danych.

0

Ludzie za to żeby ich nauczyli takiego czegoś płacą 12k za bootcamp ;p

0

To proste zadanie dla juniora, ale czasochłonne i upierdliwe bo jeszcze trzeba się bić z Dockerem. Jak firma fajna (tzn. dobrze płacą juniorowi), to może bardziej sie opłaca 2 tyg siedzieć nad zadankiem i się tam dostać niż spędzić rok w Januszsoft za minimalną.

0

Zdanie rekrutacyjne jest
a) na licencji rekrutującego więc wrzucanie tu jest proszeniem się o kłopoty
b) dla ciebie, jeśli nie umiesz to napisz do rekrutującego że nie wiesz jak zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1