Pytanie rekrutacyjne na Juniora ...

Pytanie rekrutacyjne na Juniora ...
AR
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:5
0

Takie ototo przykładowe zadanie dostałem do przerobienia przed rozmową rekrutacyjna i przyznam sie nawet nie wiem od czego zacząć. Interfejs ArrayList? Za wszelką pomoc dziekuje serdecznie.
Zadanie

  1. Zaprojektuj interfejs systemu obsługującego mecze drużyn piłkarskich.Interfejs powinien operować metody umożliwiające planowanie meczy między drużynami , przechowywanie ich wyników, wyliczanie i prezentowanie statystyki dla poszczególnej drużyny, (np. ile meczy wygranych, ile przegranych, ile remisów, mecze zaplanowane lub przeprowadzone pomiędzy zadanymi datami.Możesz też zaproponować inne metody.
  2. Zaimplementuj także metody umożliwiające tworzenie list rankingowych drużyn wg. różnych kryteriów np. liczby wygranych meczy, alfabetycznie po nazwie drużyny.
  3. Zaimplementuj interfejs oraz napisz testy jednostkowe dla tego systemu.

Rozważ użycie klas : Mecz, Drużyna, Zawodnik, wykorzystaj kompozycje, rozważ użycie dziedziczenia.
Rozważ wykorzystanie typu enum do reprezentacji wyniku meczu.

S9
Z ciekawości jakie wynagrodzenie podali w ogłoszeniu?
K5
  • Rejestracja:około 6 lat
  • Ostatnio:11 minut
  • Postów:1002
0

a) Z czym dokładnie masz problem? Dostałeś nawet wskazówki jakie klasy masz stworzyć i co masz użyć.
b) Nie widzę, aby był wymóg aplikacji webowej więc możesz to zrobić konsolowo.
c) Najpierw zrób brzydko - "aby działało", potem to będziesz upiększać.

edit: Żeby nie było, mój komentarz nie jest zgryźliwy. serio pytam z czym dokładnie masz problem. Nie oczekuj, że dostaniesz od nas gotowe zadanie. Łatwiej by było jakbyś wypunktował swoje przemyślenia i swoje obawy jak Ty to widzisz.

edytowany 1x, ostatnio: kixe52
AR
Powinienem stworzyc interfejs ArrayList żeby to działalo?
Belka
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 16 godzin
  • Lokalizacja:PL
  • Postów:452
1

Zabrałbym się za to w taki sposób, że stworzyłbym klasę Mecz. KlasaMecz powinna zawierać dwa obiekty Drużyna, natomiast klasa Drużyna listę zawodników (obiektów klasy Zawodnik). Tworzenie list rankingowych zapewne ma się opierać o comparatory różnego typu. Poczytaj o https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html. Ranking opierać o wyniki pobierane z tabeli z bazy danych z meczami.

K5
  • Rejestracja:około 6 lat
  • Ostatnio:11 minut
  • Postów:1002
0
Arbiej napisał(a):

Powinienem stworzyc interfejs ArrayList żeby to działalo?

Dlaczego tak myślisz? Skąd Ci to przyszło do głowy? Wypunktuj proszę swoję przemyślenia dotyczące tego projektu i dodaj do niego swoje obawy. Postaramy Ci się pomóc ale nie w sytuacji gdy włożymy w to więcej niż Ty ;)

S9
Po poziomie zadawanych pytań sukcesu nie wróżę.
K5
Ostatnio założyłem temat w https://4programmers.net/Forum/Oceny_i_recenzje z pytaniem czy moje odpowiedzi mogły być uznane za atak. Także tym razem powstrzymałem się od odpowiedzi jak Twoja :D Plusem jest to, że to jest zadanie przygotowujące do rozmowy rekrutacyjnej, a nie zadanie z rozmowy. Przerobi takich 50, rozwiąże napotkane problemy i będzie gotowy ;)
S9
Czytałem właśnie dzisiaj w pracy ten temat :D Ja za to na pytanie powinienem stworzyc interfejs ArrayList żeby to działalo? chciałem odpisać: tak, powinieneś stworzyc interfejs ArrayList żeby to działalo , ale też się powstrzymałem. :D
Grzyboo
Pytanie od czapy, ale trzeba zrozumieć że osoba początkująca ma problem z takimi pojęciami. W IT przyjęły się takie idiotyczne słowa jak interfejs lub encja, które są używane w tak wielu kontekstach, że w efekcie nie znaczą nic.
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:6 dni
  • Postów:3277
0

Masz zdefiniować listę metod pozwalających na modyfikację danych według założeń projektu, a później zapisać ją w formie Java interface.

Kopiuj
interface Score{
MatchId scheduleMatch(Team host, Team guest, Instant date);
void setResult(MatchId matchId, int goalsHost, int goalsGuest);
.....
}

Do tego oczywiście trzeba rozpisać klasy danych występujące w tych metodach. Na koniec zaimplementować ten interface.

M7
Ale zdajesz sobie sprawę, że w ten sposób łamiesz Interface segregation principle?
piotrpo
@mikee728: Odpowiadam na pytanie czym jest interface, bo mam wrażenie, że brak tej wiedzy jest głównym problemem pytającego.
baant
  • Rejestracja:ponad 11 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
  • Postów:524
0

Może jednak zacznij od stażu a najlepiej książki

edytowany 1x, ostatnio: baant
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
2

Powinienem stworzyc interfejs ArrayList żeby to działalo

Obawiam sie ze jesteś bardzo daleko od poziomu żeby iść na jakąkolwiek rozmowę rekrutacyjną. Interfejs List istnieje od dawna, klasa ArrayList też. Jednocześnie nie mają one zupełnie nic wspólnego z twoim zadaniem. Tzn może gdzieśtam w kodzie trzeba będzie użyć listy, ale jest to zupełny szczegół implementacyjny.
Dostałeś zadanie zaprojektuj samochód a pytasz się nas czy powinienem pokolorować to na czerwono.

Twoim zadaniem jest stworzyć biznesowy interfejs (albo raczej zestaw interfejsów) plus zestaw klas domenowych, które reprezentują podany problem. Masz to też zaimplementować, wiec realnie twoim zadaniem jest napisać program który umożliwia: planowanie meczy między drużynami , przechowywanie ich wyników, wyliczanie i prezentowanie statystyki dla poszczególnej drużyny, (np. ile meczy wygranych, ile przegranych, ile remisów, mecze zaplanowane lub przeprowadzone pomiędzy zadanymi datami.
Może ten interfejs w poleceniu cie zmylił, nie wiem, ale generalnie masz napisać program z takimi funkcjami jw.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 2x, ostatnio: Shalom
AR
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:5
0

Dzięki za porady i uszczypliwości rozmowe sobie daruje.

WE
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:53
0

Krytyka i porady, które mają swoje podstawy to uszczypliwości?

Belka
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 16 godzin
  • Lokalizacja:PL
  • Postów:452
0
Arbiej napisał(a):

Dzięki za porady i uszczypliwości rozmowe sobie daruje.

Dostałeś solidne porady jak się za to zabrać. Czego oczekiwałeś - że forumowicze napiszą za Ciebie aplikację? Czy, że każdy doda kawałek kodu od siebie, Ty to posklejasz w całość i będziesz miał z głowy? To jest dość prosty task, zwłaszcza jeżeli możesz go rozwiązać w domu. Naprawdę, w pracy będą czekały na Ciebie większe wyzwania, czasem bardziej skomplikowane, często usytuowane w ogromnym systemie i będziesz musiał to ogarnąć. Musisz dużo praktykować, bo po prostu na stanowisko Junior xxx Developer nie dostaje się z dobrymi chęciami nauki w pracy. Trzeba już coś umieć.

AR
Właśnie widzę że trzeba juz coś umiec miałem mylne pojęcie.Jak pisałem dzięki.
K5
Odnosząc się do komentarza poniżej, od 3 tygodni uczysz się Javy na poziomie zerowym. Jest to zdecydowanie za szybko aby robić zadania rekrutacyjne. Przed Tobą nie 3 tygodnie, a 30 tygodni nauki (jak nie więcej). Dopiero jak opanujesz solidnie podstawy, możesz myśleć o rekrutacji. Nie poddawaj się!
AR
To nie jest tak że sie poddaje ale warto wiedzieć co powinienem wiedziec a co nie.Uważam jednak ze po 3 tygodniach powinienem umiec rozwiąc powyższe zadanie. Wiem ze nauka programowania jest to proces ciagłej nauki wiec staram sie mocno nie zarażać.
K5
3 tygodnie to wcale nie jest dużo. Zależy czy przez 3 tygodnie siedziałeś 10h dziennie czy 2h. Zadanie jest proste, ale na jakimś poziomie, a nie na starcie nauki. DLatego tak wszyscy tutaj zareagowali, bo wspomniałeś o rozmowie rekrutacyjnej, a nie napisałeś, że naukę zacząłeś 3 tyg temu.
AR
Zwyczajnie myślałem że powinienem to ogarnac już, dlatego nic nie pisałem.Starałem sie uczyć sporo jednak dla człowieka który wczesniej nie programował idzie to naprawde opornie.Nawet opanowanie podstawowych zagadnień. Siedziałem ok 20h tygodniowo tak to można uśrednić.
SW
SW
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 5 lat
  • Postów:49
0

Miałeś na studiach inżynierię oprogramowania, gdzie rysowałeś diagram klas i tym podobne? Możesz to zrobić na takiej samej zasadzie, a później wygenerować i uzupełnić kod lub przynajmniej rozrysować graficznie projekt, aby widzieć co z czym się łączy :)
Może nie jest to zadanie, które zrobisz w 1 godzinę (przynajmniej ja, bo lubię eksperymentować:) ), ale dużo się przy tym nauczysz albo przypomnisz. Grunt to to, aby wszystko poukładać w logiczną całość, a później to już z górki.

A i podeślij kod, jeśli już coś zrobisz - sprawdzimy i powiemy czy jest dobrze :)
Powodzenia!

PS: Nie poddawaj się, bo widziałem w życiu masę ludzi, którzy byli blisko celu a i tak odpuszczali.

edytowany 2x, ostatnio: sweeneytodd
Zobacz pozostałe 15 komentarzy
K5
Jak minie miesiąc i zaproponują Ci dalsze szkolenie, zorientuj się jaki jest tego cel i jakim kosztem. Jeśli szkolą Cię w kierunku technologii rynkowych - pożądane technologie, a nie jakieś g**no wewnętrzne, to wcale tak źle może nie być. Wszystko jednak zależy od umowy, którą będziesz miał podpisać. Pamiętaj, że skoro nie masz mentorów, to uczyć możesz się równie dobrze sam w domu.
AR
Dzięki za rady, sam jestem ciekawy jak to się zakończy.Póki co mówia że Java ewentualnie Python ale to mało prawdopodobne.
K5
Java javie nierówna. Pytanie co w tej javie ;)
K5
Tzn, że w tej javie możesz trafić na jakiś wewnętrzny system stworzony naście lat temu, który będziesz musiał utrzymywać, gdzie nie zobaczysz żadnej z pożądanych obecnie technologii rynkowych. Jeśli się na nim zasiedzisz to Twoja wartość rynkowa nie wzrośnie, a utracisz zdrowie psychiczne. Równie dobrze w tej samej javie możesz trafić na dosyć nowy projekt, gdzie w kilka miesięcy możesz poczynić większy progres niż przez ostanie 2 lata.
Belka
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 16 godzin
  • Lokalizacja:PL
  • Postów:452
0

@Arbiej: Niestety potrzeba sporo czasu poświęcić na praktykę w domu, żeby zacząć w ogóle przymierzać się do komercyjnego wykonywania zawodu programisty. Ja osobiście uczę się Javy od lutego tego roku i dopiero teraz zacząłem uderzać z CV na stanowiska juniorskie. A i tak moja wiedza jest znikoma, o czym przekonuję się na każdym kroku, napotykając nowe tematy, featury itd. Zadanie, które opisałeś w pierwszym poście nie tylko wymaga znajomości składni i biblioteki standardowej Javy, ale wymusza opracowanie jakiejś architektury dla tych klas, które są tam wymienione. Skoro masz tak krótki staż w nauce programowania, to ani trochę nie jest powodem do ujmy fakt, że nie jesteś w stanie sobie poradzić z wymyśleniem koncepcji na to zadanie. Na spokojnie ćwicz sobie składnię języka, zapoznaj się z kolekcjami, klasami, interfejsami i ogólnie fundamentami programowania obiektowego i zabierz się za to zadanie za jakiś czas. Zobaczysz, że wszystko stanie się takie jakieś łatwiejsze do ogarnięcia ;)

Zobacz pozostałe 5 komentarzy
WE
Klepania projektów, udziału w Opensourcowych opłaciło się żeby wskoczyć od razu na Junior'a i mieć obowiązki mida - po miesiącu pracy jestem współprowadzącym wdrożenia projektu.. :D (to ironia jak coś) - dla mnie to z lekka niepoważne, że rzucają mnie na tak głęboką wiedzę. e; Ogólnie zauważyłem duży postęp, bo na te wakacje przeszło mi pomyślnie chyba 5 rozmów + miałem ofertę od kolegi, którego firma zakłada akurat siedzibę u mnie w mieście. Warto było i miło patrzeć jak się jednak dostaje "nagrodę" za taką naukę.
Belka
@weiss Gratuluję fajnego progresu! :)
WE
Dzięki, ale im więcej wiem, tym więcej pozostaje do poznania.. Teraz tak naprawdę widzę ile mi jeszcze brakuje do jakiegokolwiek przeciętnego poziomu Dev'a.. Chciałbym ogarnąć Reaktywne (Reactivestreams), funkcyjne (Haskell, Scala), podszkolić się w rozumieniu głębszym działania HTTP/security.. No po prostu tego jest tyle, że aż trudno sobie wszystko zaplanować :D
K5
Salesforce hehe... :D Dobra decyzja. Tzn dobra w sytuacji gdy mogłeś sobie pozwolić na niepracowanie. W trudnej sytuacji finansowej można poklikać, a po godzinach się uczyć na deva. Ale mimo to gratuluje wyrwania się z gówna ;)
WE
Z jednej strony to był plus, bo to był taki punkt zwrotny, że zacząłem bardziej się przykładać do nauki dla siebie po studiach, ale z drugiej dwa miesiące każdego dnia po 8h siedziałem i sobie klikałem - pół biedy, że często po prostu uczyłem się tam swoich rzeczy.. :D
MrZiomenOmen
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:28
0
piotrpo napisał(a):

Masz zdefiniować listę metod pozwalających na modyfikację danych według założeń projektu, a później zapisać ją w formie Java interface.

Kopiuj
interface Score{
MatchId scheduleMatch(Team host, Team guest, Instant date);
void setResult(MatchId matchId, int goalsHost, int goalsGuest);
.....
}

Do tego oczywiście trzeba rozpisać klasy danych występujące w tych metodach. Na koniec zaimplementować ten interface.

Mógłbyś podać jak będziesz miał chwile czasu przykładowom implementacje void setResult , nie za bardzo rozumiem te matchid jak to ustawić tam

piotrpo
MatchId to klasa którą musisz sobie stworzyć. Zwracać ją i przyjmować jako parametr.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.