Typy zadań na teście technicznym

0

Cześć. Uczestniczę w rekrutacji do Java Starter Kit. Zostałam zaproszona na test techniczny 5.12. Czy moglibyście, na podstawie poniższych wymagań, podpowiedzieć jakie zadania mogą się pojawić? Pytam zwłaszcza pod kątem algorytmiki, testów jednostkowych, Stream API oraz programowania obiektowego, typów i struktur danych w praktyce. Wiem, że będzie pisanie kodu na kartce.

2
ms_ napisał(a):

Wiem, że będzie pisanie kodu na kartce.

Uciekaj stamtąd jak najdalej.

A co do pytań, to co jest pokazane na pierwszym slajdzie to jest jakaś zupełna amatorszczyzna. Te pod "Algorytmika" to wygląda jak po prostu operacje na kolekcjach. Pewnie będzie zrobienie różnicy i intersekcji list i zbiorów. To co jest pod "Testy jednostkowe" to właściwie masz opisane wszystko co się może pojawić. Z tego "programowania obiektowego" (hohoho), to:

  • polimorfizm - pewnie będą chcieli strategie albo decorator
  • abstrakcja - ciężko powiedzieć, pewnie będą chcieli żebyś zrobił interfejs albo klase abstrakcyjną
  • enkapsulacja - tutaj może chodzić o to żeby zrobić gdzieś getter albo ustawić coś na private :D i nie używać publicznych pól
  • dziedziczenie - ciężko powiedzieć, pewnie mogą pytać o jakieś bredne typu "relacja is-a".
0

Najbardziej obawiam się tych testów jednostkowych, bo ich nie potrafię pisać. Nigdy z nimi nie miałam styczności, ale wiem że nie trzeba mieć 100% poprawnych odpowiedzi, aby pozytywnie zaliczyć test. Facet coś mówił o ok. połowie wszystkich punktów.

0
ms_ napisał(a):

Najbardziej obawiam się tych testów jednostkowych, bo ich nie potrafię pisać. Nigdy z nimi nie miałam styczności, ale wiem że nie trzeba mieć 100% poprawnych odpowiedzi, aby pozytywnie zaliczyć test. Facet coś mówił o ok. połowie wszystkich punktów.

Ja bym na Twoim miejscu powiedział prawdę, że po prostu nie masz w tym doświadczenia. Bez sensu kłamać. Jeśli gośc ma 2 IQ to się zczai ze lejesz wodę.

No albo naucz się je pisać, znajdź kogoś kto jest w stanie Cię nauczyć ekspresowo.

0

W sumie testy jednostkowe są proste koncepcyjnie, spróbuj się nauczyć. Szybko Ci się uda. Trudniejsze jest już używanie bibliotek które je implementują, ale testy same z siebie są mega proste i pewnie pisałaś takie testy nawet nie będąc tego świadoma.

3
Czitels napisał(a):

W sumie testy jednostkowe są proste koncepcyjnie, spróbuj się nauczyć. Szybko Ci się uda.
Trudniejsze jest już używanie bibliotek które je implementują, ale testy same z siebie są mega proste i pewnie pisałaś takie testy nawet nie będąc tego świadoma.

W mojej opinii jest wręcz przeciwnie, biblioteki do testów są bardzo proste, i każda jedna jest swoją kopią, ale sama umiejętność pisania dobrych testów to jest chyba jedna z trudniejszych rzeczy w programowaniu. Powtarzam - "dobrych testów", bo bylejakie testy faktycznie jest łatwo napisać.

0

A jakiejś konkretne algorytmy? Kilka przykładów

0
ms_ napisał(a):

A jakiejś konkretne algorytmy? Kilka przykładów

Jeśli będą Cię pytać o algorytmy, to znaczy tylko jedno: Rekrutują Cię ludzie którzy nie mają wiele wiedzy o programowaniu, i zadają pytania które znaleźli w google.

Algorytmy to jest taka rzecz która dostała przypiętą łatkę jako "pytanie na rekrutacje", mimo że jego zdolność do weryfikowania kandydatów jest raczej niska.

0

Zdarzyło mi się pisać ten test ale na tyle dawno że nie wiem jak jest teraz. Wtedy podawali takie same wymagania więc może będzie podobnie - nawiasem mówiąc to co wymagali pokrywało się z testem, ale nie do końca z programem samego stażu.

Kazdy pisał ten sam test, bez wyjątku co miał w CV. Nie w IDE ale w takim prostym notatniku online który nie miał dla piszących żadnych opcji ponad to co oferuje Windowsowy notatnik - żadnego autouzupełniania. Radzę od dziś trenować pisanie kodu w notatniku i przeklejać do IDE tylko żeby sprawdzić czy działa, mi to dużo pomogło.

Straszyli tym testem ale największa trudność (wtedy) była napisać wszystko na czas bez autozupełnień i podpowiedzi (np pamiętać że tablica ma .length, String ma .length() a np ArrayLista .size()). Sam poziom był gruuuuubo poniżej większości LeetCode easy, serio zadania typu napisz kalkukator z opcją mnożenia, napisz test czy mnoży się poprawnie. Trzeba było wiedziec jak pisać w Javie ale tragedii dla mnie nie było, z testów technicznych ten był dla mnie najłatwiejszy (choć byli tacy co uważali że był hardkorowy)

1

@Riddle:

Jeśli będą Cię pytać o algorytmy, to znaczy tylko jedno: Rekrutują Cię ludzie którzy nie mają wiele wiedzy o programowaniu, i zadają pytania które znaleźli w google.

o czym Ty piszesz?

przecież oni oczekują

"operacje na tablicach oraz kolekcjach (List, Set), również wielowymiarowych"

0

Ciężko powiedzieć co cię czeka, ale na twoim miejscu upewniłbym się, że wiesz:

  • co oznaczają modyfikatory dostępu, w szczególności "package private", a.k.a "domyślny", a.k.a "brak modyfikatora". Jego przydatność jest mocno ograniczona, ale na rozmowach pojawia się

  • że umiesz napisać metodę, metodę statyczną, wiesz, że metodę statyczną możesz wywołać "na klasie", metodę niestatyczną jedynie na obiekcie, że z metody statycznej klasy nie możesz odnosić się do pól i metod niestatycznych tej klasy, o ile nie masz konkretnej instancji obiektu.

  • no co to klasa, jak ją zadeklarować, jak utworzyć obiekt na jej podstawie i takie tam...

  • stream API, to trochę trudniejsza sprawa, ale jakieś tam filtrowanie listy, zapakowanie jej do innej listy powinieneś ogarnąć

  • algorytmika - to akurat dość szeroki temat, ale patrząc na poziom innych zagadnień, to jeżeli zrobisz takie zadanie:

  • Zadeklaruj tablicę o wymiarach m,n

  • wypełnij komórki losowymi liczbami wymiernymi

  • wyświetl wynik w formie macierzy

  • obróć o 90 stopni zgodnie z kierunkiem wskazówek zegara

  • wyświetl w konsoli wynik w formie macierzy

To raczej nic więcej cię w tablicach nie zaszkodzi.
Dowiedz się też czym się różni 'Set' od 'List', no i standardowo jak to w Javie czym się różni ArrayList od LinkedList, bo to kolejne pytanie które pojawia się na każdej rekrutacji a wiedza przydaje się raz w trakcie całej kariery.

Testy jednostkowe - poszukaj schematu given, when, then napisz sobie parę prostych testów.

Ostatnie zagadnienie, to coś, gdzie nie mam pojęcia o co mogą cię zapytać.
Czy to test do jakiegoś bootcampu?

0

Aż musiałem sprawdzić co to są te pozytywne i negatywne przypadki testowe. Na juniora bym nie zdał ;)

Wszędzie mówiliśmy na to happy-path vs non-happy-path.

0
ms_ napisał(a):

Zostałam zaproszona na test techniczny 5.12
(...)
Najbardziej obawiam się tych testów jednostkowych, bo ich nie potrafię pisać. Nigdy z nimi nie miałam styczności,

To zacznij. 5 grudnia jest w poniedziałek. Dzisiaj jest piątek.

A na takim podstawowym poziomie testy jednostkowe patrząc czysto technicznie (czyli odpowiadając na pytanie jak?) to po prostu uruchamianie fragmentów kodu (zwykle w jakimś frameworku do testów) i odpalanie tzw. asercji - czyli sprawdzanie pewnych warunków, czy kod działa, jak powinien, czy założenia są prawdziwe.

Natomiast dochodzi pytanie dlaczego? i tu już trzeba mieć trochę doświadczenia praktycznego, żeby zrozumieć, po co testujemy i co testować, a czego nie testować. I tego ludzie czasem po latach nie rozumieją.

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