Codility - przygotowanie

0

Cześć,

Mam informację że firma do której chciałbym aplikować przeprowadza testy codility. Możecie coś więcej powiedzieć o tym teście? Jak się do niego przygotowywać? Czy pogranie kilka dnia w codewars starczy? Czy lepiej odnieść się też do poważnej literatury dotykającej algorytmów typu (https://ksiegarnia.pwn.pl/Wprowadzenie-do-algorytmow,68706413,p.html)

0

Zadanie codility raczej nie wymaga szczególnej wiedzy.
Trzeba znać język programowania i zakodować to, co tam napisali. Jak dla mnie, zadania łatwiejsze niż SPOJ.

Najważniejsze, żeby mieć dobre tempo, czyli wyspać się, wypić kawę i zrobić zadanie ;)

1

Te testy nie są specjalnie trudne. Ja tam bez wykształcenia kierunkowego i znajomosci pojęć związanych z algorytmami miałem chyba 80%. Czasu tez jest na maksa dużo, bo chyba 3h. Pamietam tylko ze nigdy nie miałem sytuacji, ze się nie wyrobiłem. Prędzej nie mogłem już wymyślić lepszego rozwiązania, ale jakieś już zawsze było :P Wykonaj sobie darmowy tutorial, gdzie znajdziesz przykładowe zadania i sobie poradzisz.

Poza tym sporo rozwiązań jest w internecie. Nawet nie tyle całych rozwiązań, co klocków, z których możesz złożyć rozwiązanie. Jeżeli dysponujesz umiejętnością rozbijania skomplikowanych zadań, których nie rozumiesz na mniejsze problemy, to okaże się, ze każdy z nich możesz wygooglać, trochę ztweekować i rozwiązanie gotowe.

Pamiętaj tylko, ze jak to w każdym teście musisz przyjąć odpowiednia taktykę rozwiązywania:

  1. Nie staraj się od razu wymyślić najbardziej wydajnego algorytmu. Spraw, żeby kod działał dla podstawowych przypadków.
  2. Zrób najpierw zadania, które umiesz. Jak zrobisz wszystkie, to możesz starać się poprawiać wydajność.

W tego typu testach rekruter nie ma chyba podglądu/nie patrzy czy szedłeś w dobra stronę i czy Twój algorytm byłby gotowy za 5 minut.

0

To zależy od tego czy miałeś kontakt z algorytmiką np. na studiach czy też jest to zupełnie nowy temat. Skłaniałbym się ku literaturze, ponieważ codewars to może być zbyt mało, szczególnie jeżeli nie masz żadnego doświadczenia.

2
  • przygotuj sobie czas i miejsce w którym nikt Ci nie będzie przeszkadzał i dekoncentrował pytaniami typu "czy wyrzuciłeś śmieci"
  • przygotuj sobie coś do picia
  • załatw co masz załatwić, żeby mieć czystą głowę i przewód pokarmowy
  • przygotuj sobie kartkę i długopis
  • przygotuj sobie kompilator + edytor żeby móc w razie czego na szybko coś potestować z boku
2

jezu i po co te kombinacje, podnajmij jakiego zdolnego studenciaka ci zrobi w moment i tyle, kasę sobie odkujesz po pierwszej wypłacie
:]

2

Są różne poziomy trudności zadań na Codility, zdarzają się nawet takie gdzie algorytmika jest jakby mniej potrzebna. Miałem kiedyś coś z Javy, gdzie liczył się wynik (rózne zadania z wykorzystaniem kolekcji), natomiast było zaznaczone, że złożoność obliczeniowa nie jest brana pod uwagę. No, ale to raczej wyjątek potwierdzający regułę.

Najlepiej będzie jak zerkniesz na ich ogólnodostępne zadania.

https://codility.com/programmers/lessons/

https://codility.com/programmers/challenges/

0

Codility to jest taki test który firma daje przeważnie jak nie chce się jej sprawdzać rozwiązań zadań lub jakoś sensownie odpytać.
Można tego oczywiście uŻyć sensownie, ale nie widziałem jeszcze irl.

IMO warto poćwiczyć, bo zawsze to lepsza kasa jak się lepiej rozwiąże.

0

Nie wiem, jak teraz, ale kiedyś było tak, że jak się dostało test codility, to te zadanka miały jakieś tytuły. Po wpisaniu w google [tytuł] codility można było znaleźć rozwiązania, choć nie zawsze w interesującym nas języku. Ale to już łatwo przerobić.
To takie rozwiązanie dla leniwych (a dobry programista to leniwy programista:) ). Codility i tak niczego nie weryfikuje.

0

Tylko raz w zyciu robilem codility. Zdalem na ponad 95 procent i typ z firmy mi odpisal:
"Przykro mi Panie ..., ale zdal pan na ...%. Nie poszlo Panu najlepiej, wiec nie moge zaproponowac Panu kolejnego etapu."

Jak to przeczytalem, to prawie rozwalilem piescia matryce monitora. Ale to byl jakis go**rz, ktory nie mial zyciowego doswiadczenia, w rozmowie, pertraktacjach, zachecaniu, itd., tylko sam byl programista, moze 2-3 lata po czym uciekl do firmy i "awansowal".

Od tamtej pory nie umawiam sie na zadne takie testy, tylko albo portfolio i rozmowa o tym, czego dokonalem, albo rozmowa na zywo, osobiscie.

Pomysl, ze 5-7-9-11-13-xx lat temu nie bylo codility i jakos ludzie dostawali sie do firm. Pomysl rowniez, ze skoro firma nie chce indywidualnie traktowac potencjalnego pracownika (= klienta) i poswiecic mu czas (codility ci nie powie, co zrobiles zle, tylko "NIE, BO NIE"), tylko leci na masowke, to prawdopodobnie i tak jakbys sie tam dostal, pomiatanoby toba.

0

Pewnie był niski poziom testu i każdy kto nie zdobył 100 był słaby w porównaniu do reszty.

1

Codility ma podstronę treningowa dla programistów. Tam możecie ćwiczyć. Są manuale dotyczące problemów złożoności obliczeniowej i pamięciowej, warunków testowych itd. a na start macie Fibonacci rekurencyjnie, oczywiście z kiepskim czasem wykonania kilka sekund i propozycja żeby napisać wydajniejszą wersję. Mogę się założyć, że wielu mid devów a może nawet doświadczonych seniorów się wyłoży na takich zadaniach, tak samo jak powinno to rozłożyć każdego potencjalnego śmiałka, który nie studiował kierunków informatycznych. I taka jest prawda o tym Wielkim Bracie, bo tak naprawdę właściwym targetem są studenci kierunków informatycznych i to na ta grupę Codility jest właściwym narzędziem a testy oparte na tym narzędziu są właściwe w przypadku startowania do firm, gdzie później przyjdzie opracować jakieś nowe i innowacyjne algorytmy. A jeżeli to narzędzie jest standardem w wielu firmach, także zajmujących się webdevem, to obawiam się że większą rolę odgrywa tutaj marketing.

0

Pytanie - czy podczas tego testu można wracać do rozwiązań. To znaczy - rozwiązałem wszystkie zadania na np 70% w 30 minut, zostało mi dwie godziny? Mogę sobie spokojnie wracać do zadań i je poprawiać? Czy jak wcisnąłem wyślij to umarł w butach?

0

Gdy robiłem codility to nie było możliwości wysłania jednego zadania. Submitujesz wszystko na raz więc nie wiesz jaki wynik uzyskales w danym zadaniu dopóki nie wyślesz wszystkich. Jednak dopóki nie klikniesz submit to możesz dowolnie przełączać się między zadaniami.

0

Czy te zadania robi sie u siebie w domu czy podczas rekrutacji w siedzibie pracodawcy?

0
marek1992 napisał(a):

Pytanie - czy podczas tego testu można wracać do rozwiązań. To znaczy - rozwiązałem wszystkie zadania na np 70% w 30 minut, zostało mi dwie godziny? Mogę sobie spokojnie wracać do zadań i je poprawiać? Czy jak wcisnąłem wyślij to umarł w butach?

Jest pewien okreslony prog, ktorego nie przeskoczysz, jak nie zadzialalo za pierwszym razem. U mnie to bylo 86%. Nie wiem, czy wyglada tak samo.

Do posta wyzej: ja robilem w domu.

0

Czyli to całe codility jest tym bardziej bezsensowne.
Normalnie przecież zanim oddasz nawet do review, to już sobie sprawdzasz czy działą jak powinno i dobrze wiesz co nie działa.
Takie podejście z wysyłaniem w ciemno, brzmi jak raj dla testerów, bo jakby któraś firma tak robiła, to testerzy mieli by na koncie 10x więcej znalezionych błędów niż w normalnej.

Mam silne wrażenie, że niektórzy mentalnie nie wyszli poza turbokartkę oraz żyją w przekonaniu, że w programowaniu najważniejsze jest pisanie wszystkiego z palca i wykucie kilku algorytmów na blachę.

mentalność turbokartki:

Przecież quicksort i fast doubling do fibbonaciego, to jest coś co każdy musi umieć.

0

A kto komu każe wysyłać w ciemno? Możesz to odpalic tam na podanych danych testowych i sprawdzić jak działa, mozesz też odpalać lokalnie.

0
drorat1 napisał(a):

Mogę się założyć, że wielu mid devów a może nawet doświadczonych seniorów się wyłoży na takich zadaniach, tak samo jak powinno to rozłożyć każdego potencjalnego śmiałka, który nie studiował kierunków informatycznych.

znam fizyków i matematyków którzy obudzeni o 2 w nocy po pijaku i z zamkniętymi oczami wciągaja nosem absolwentów kierunków informatycznych jeśli chodzi o rozwalanie algorytmów...

2
Zakręcony Szczur napisał(a):
marek1992 napisał(a):

Pytanie - czy podczas tego testu można wracać do rozwiązań. To znaczy - rozwiązałem wszystkie zadania na np 70% w 30 minut, zostało mi dwie godziny? Mogę sobie spokojnie wracać do zadań i je poprawiać? Czy jak wcisnąłem wyślij to umarł w butach?

Jest pewien okreslony prog, ktorego nie przeskoczysz, jak nie zadzialalo za pierwszym razem. U mnie to bylo 86%. Nie wiem, czy wyglada tak samo.

Do posta wyzej: ja robilem w domu.

Robienie rekrutacji w domu żeby by osianym wstępnie ze 200 kandydatów przy zerowych kosztach rekrutacji dla firmy?
Jakie masz pole negocjacji wynagrodzenia kiedy na twoje miejsce czeka 100 z zaliczonym testem?
Codility w polskich warunkach ostrzega przed jakimś bagnem w które uwierz ale nikt nie chciałby wdepnąć.

0

Przeciez Codility sie nie robi dla firm, ktore placa normalnie. Do takich, co placa np 15k regularowi jest zawsze kolejka, wiec nic dziwnego, ze stosuja takie sito wstepne, bo na prawde dobre firmy jednak maja inne zasady - oni dalej maja wiecej kandydatow niz miejsc, co je odroznia od 95% rynku.

0
Zakręcony Szczur napisał(a):

oni dalej maja wiecej kandydatow niz miejsc, co je odroznia od 95% rynku.

Sorry ale wszystkie firmy mają więcej kandydatów niż miejsc.

0

Hej ho!

Rekruterka po pierwszym interview (telefonicznym) powiedziała, że runda druga to będzie coding-test. Powiedziała, że ważne będzie, żeby
pisać czysty, czytelny kod. Ważne, aby był dobrze skomentowany. Czas na zadanie to 1,5h, ale jakbym się nie wyrobił w czasie - mogę opisać
schemat rozwiązania w postaci pseudokodu, krok po kroku co należy zrobić, aby problem rozwiązać.

Po czym okazało się, że test jest na... codility.

Czy spotkał się ktoś z takim rodzajem weryfikacji zadanek na codility? Nigdy nie słyszałem, aby pisząc ten test, ktokolwiek kiedykolwiek
skupiał się specjalnie na czystości kodu, "tracił" czas na pisanie komentarzy.

Czy myślicie, że rzeczywiście mój kod w tym teście ma być czytelny i dobrze skomentowany? Czy raczej rekruterce się coś po*****? Szkoda
trochę tracić czas na komentarze, jeśli nikt ich nie przeczyta, bo 1,5h na dwa zadanka to nie tak dużo. A swoją drogą, co bym miał w nich
pisać? Zastosowany algorytm opisywać, czy jak?

1

Jakby mi rekruterka powiedziała, że mój kod ma być dobrze okomentowany to bym ją puknął w czoło.

0

Codility to jest bardzo dobry test na sprawdzenie sposobu myślenia programisty, aczkolwiek moim zdaniem niewystarczający by wysnuć jakiekolwiek wnioski.

Przecież idea czystego kodu jest to, aby kod był jak najbardziej czytelny i nie wymagał komentarzy. Do tej pory pamiętam słowa z tej książki: "jeżli twój kod wymaga wielu komentarzy, to na pewno można go zrefaktoryzować na czytelniejszy".

W niektórych przypadkach komentarze są niezbędne, ale w 99% przypadków powinno pisać się kod tak, aby nazwy zmiennych/funkcji/pół mówiły same za siebie i nie wymagały komentarzy. Tak, żeby po nazewnictwie programista mógł domyślić się szybko o co chodzi. Bo jak ktoś porobi zmienne typu a,b,c,d,e,f,g,h itd i jest wiele zawirowań to łatwo się pogubić.
Na twoim miejscu napisałbym jeden komentarz, że starłeś się pisać kod, który nie wymaga komentarzy.

0

Codility nie stoi w miejscu tylko się rozwija, jak każdy liczący się serwis. Co do zasady to niby sprawdza poprawność (czy się skompiluje czy nie albo czy będzie działało) a także złożoność obliczeniową, pamięciową i testuje jednostkowo. Tylko czy w abonamentach za większą kasę nie ma przypadkiem opcji sprawdzania czytelności kodu? To programowo chyba też mając na uwadze wprowadzone tam do baz zadanka chyba da się zrobić...

1

Tego, czego brakuje w większości testów to problemów związanych za architekturą. Testy powinny sprawdzać, czy człowiek potrafi coś zaprojektować.

Niedługo dojdzie do sytuacji, gdzie od frontowca będzie się wymagać definicji propagacji wstecznej albo znajomość programowania dynamicznego.

Z 3 firm, do których do tej pory aplikowałem najbardziej podobały mi się testy od "C Shark'a".

0
RolfzRybnika napisał(a):

Hej ho!

Rekruterka po pierwszym interview (telefonicznym) powiedziała, że runda druga to będzie coding-test. Powiedziała, że ważne będzie, żeby
pisać czysty, czytelny kod. Ważne, aby był dobrze skomentowany. Czas na zadanie to 1,5h, ale jakbym się nie wyrobił w czasie - mogę opisać
schemat rozwiązania w postaci pseudokodu, krok po kroku co należy zrobić, aby problem rozwiązać.

Po czym okazało się, że test jest na... codility.

Czy spotkał się ktoś z takim rodzajem weryfikacji zadanek na codility? Nigdy nie słyszałem, aby pisząc ten test, ktokolwiek kiedykolwiek
skupiał się specjalnie na czystości kodu, "tracił" czas na pisanie komentarzy.

Czy myślicie, że rzeczywiście mój kod w tym teście ma być czytelny i dobrze skomentowany? Czy raczej rekruterce się coś po*****? Szkoda
trochę tracić czas na komentarze, jeśli nikt ich nie przeczyta, bo 1,5h na dwa zadanka to nie tak dużo. A swoją drogą, co bym miał w nich
pisać? Zastosowany algorytm opisywać, czy jak?

Robiłam właśnie taki test w maju. Przeszłam ten test, dostałam zaproszenie na rozmowę techniczną. Na tej rozmowie mówiliśmy o czystości kodu, o jego czytelności i o stylu komentowania właśnie na przykładzie mojego testu.

0

A tak z ciekawości - jakie to było zadanie?

1

Tego, czego brakuje w większości testów to problemów związanych za architekturą. Testy powinny sprawdzać, czy człowiek potrafi coś zaprojektować.

Obstawiam, że to dlatego, że większość programistów ma z tym problem i nikt nie byłby w stanie tego zweryfikować.

Poza tym: kwestie architektury wychodzą często dopiero przy większych projektach. W małych projektach ktoś może sobie zachowywać wszystkie nauczone zasady typu SOLID czy inne, ale to nie znaczy, że robiąc coś na dużą skalę, będzie umiał to sprawnie zaprojektować.

Już lepiej po prostu zanalizować czyjeś projekty na GH, zakładając, że ktoś faktycznie zrobił coś większego, co postawił na GH.

Albo po prostu zrobić pogadankę teoretyczną o tym "w jaki sposób byś to rozwiązał pod kątem architektury, przy założeniach, że X, Y oraz Z". Architektura i tak rodzi się w głowie.

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