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:około 2 godziny
  • 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 godziny
  • 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:około 2 godziny
  • 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:3 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:około 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:prawie 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 godziny
  • 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 godziny
  • 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.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)