Ja jestem fanem Codility. Tak właśnie powinno wyglądać sprawdzanie umiejętności programistycznych kandydata.
Rozwiązywałem te testy już 2 razy. Zdziwił mnie ich różny poziom: raz [proste, średnie, trudne] a za drugim razem [proste, proste, proste].
Albo tak wylosowałem albo ten poziom firma może sobie sama ustawiać.
Codility w procesie rekrutacji
- Rejestracja: dni
- Ostatnio: dni
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Marek2 napisał(a):
Ja jestem fanem Codility. Tak właśnie powinno wyglądać sprawdzanie umiejętności programistycznych kandydata.
O ile późniejsza praca ma jakikolwiek związek z rozwiązywaniem zadań spojowych na czas, to czemu nie. W przypadku kogoś, kto zajmuje się czymś konkretnym w jakiejś technologii, to trochę mało.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Bieszczady
Marek2 napisał(a):
Ja jestem fanem Codility. Tak właśnie powinno wyglądać sprawdzanie umiejętności programistycznych kandydata.
Rozwiązywałem te testy już 2 razy. Zdziwił mnie ich różny poziom: raz [proste, średnie, trudne] a za drugim razem [proste, proste, proste].
Albo tak wylosowałem albo ten poziom firma może sobie sama ustawiać.
Długo się broniłem żeby się nie wypowiadać ale ... niech mnie ktoś uświadomi, jaki jest sens dawania zadań o skaczących żabach (real z codity...) ludziom którzy klepią zapytania do bazy ( co, po co pisać w wymaganiach XYZ, SQL, XYZ COSTAM, Licencja pilota jak i tak potem na rozmowie pojawiają się żaby ?) ? co ma wspólnego żaba z performencem w monecie kiedy takowy można zwiększyć wyłącznie wpierniczająć kilka zapytać do jednej transakcji ? Ja wiem otwarty umysł, algorytmika - geniusze - ale to nie ma sensu .. i tu pojawi się flame że tak się robi to znaczy że cos w tym jest - no nie do końca, jest sporo firm które faktycznie potrafią prowadzić rekrutacje, zadania są powiązane z technologiami w których sie pracuje - można ? można .
Wyłączam tu firmy takie jak fejbóg czy gógl, rozumiem że oni faktycznie mogą wymagać ludzi którzy są ponad przeciętni ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 233
Ja miałem codility na rekrutacji do firmy gdzie obecnie pracuje. Na trzy zadania zrobiłem dwa w tym jedno nie na full pkt bo nie rozpatrzyłem jednego przypadku, to ostatnie było jakieś pomotane z jakimiś drzewami i nie starczyło mi czasu. Gość na rekrutacji mi powiedział, że jak na moje doświadczenie(to pierwsza moja praca, wcześniej tylko praktyki) to bardzo przyzwoicie bo dostają odpowiedzi "bardzo różne". Jednak dalej uważam, że to nie jest najlepszy sposób, co prawda potem miałem zwykłe pytania face2face ale myślę, że to ważniejsze niż umiejętność rozwiązywania zadań spoj-o podobnych.
- Rejestracja: dni
- Ostatnio: dni
Jak ja szedlem do firmy, to oni mieli wlasna aplikacje webowa dzialajaca na zasadzie spoja (zadanie, kompilator, liczenie punktow, godzina na rozwiazanie).
Z tym ze dostalem linka do testu i moglem sobie na spokojnie te zadania zrobic w domu, - jak wcisnalem start na stronie to czas zaczynal uciekac i nie dalo sie go zatrzymac.
Byl to jeden z etapow 'odsiewania', dopiero po zdaniu testu zapraszali do siedziby na rozmowe.
Byly bardziej praktyczne zadania niz na spoju - jedno zadanie dotyczylo znajomosci jezyka - np. zmodyfikowac obiekt tak, aby mogl byc wykorzystywany jako klucz w Dictionary.
Drugie zadanie pisania algorytmow ale nie znow jakies skomplikowane, np byly listy list i trzebaby posortowac najpierw te listy wedlug dlugosci rosnaco, a wewnatrz list wedlug elementow rosnaco.
I trzecie zadanie to byl diagram klas w UML i trzebabylo odtworzyc relacje w kodzie miedzy klasami, korzystajac z tego diagramu.
Trzebabylo rozwiazac na 50% albo 60% (juz nie pamietam dokladnie), zeby przejsc do rozmowy face to face w siedzibie firmy.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Codility czy spojowa sprawdzarka jest ok na zadania typu FooBar. Żeby odsiać ludzi którzy totalnie nie potrafią programować (tak tak, zdarzają się i to dość często...). Wrzucanie tam jakichś zadań typu OI jest głupie, bo w większości firm do niczego sie to nie przyda.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2964
Robi się listaKlientów.Sort() i koniec a jak zaczniesz fikać z jakimiś super algorytmami to po pierwsze możesz zrobić błąd a po drugie ktoś kto przyjdzie po Tobie być może tego nie zrozumie (przykład z sortowaniem dla zrozumienia idei).
Z tym sprawdzaniem algorytmów to nie o to chodzi, żeby umieć zakodować super-hiper optymalny algorytm samemu od zera, ale aby ogólnie rozumieć jakie są algorytmy, czym się charakteryzują i kiedy ich używać.
Zdarza się, że widzę w kodzie takie listaKlientów.Sort() tylko po to aby wybrać 10 pierwszych klientów. Spoko jeśli lista ma 1000 pozycji i ten sort jest wołany raz na dzień, ale zupełnie inaczej to wygląda jak ta lista ma 100000 pozycji i jest sortowana w każdym zapytaniu.
Ale, co do codility, to ma to sens, ale tylko jako test dodatkowy. Ważne są też inne umiejętności, niż tylko praktyczna znajomość algorytmów:
- współpraca z innymi ludźmi, komunikowanie się werbalnie / niewerbalnie,
- radzenie sobie z porytym kodem, refaktoryzacja
- umiejętność debugowania, profilowania, itp.
- sztuka kompromisu / podejmowania decyzji (czy stosuję teraz brzydki hak na szybko, czy jadę z optymalnym rozwiązaniem itp.)
- rozumienie procesu wytwarzania oprogramowania
- rozumienie oczekiwań innych zespołów / klienta itp.
- znajomość narzędzi (np. GIT, JIRA, IDE)
- ...
Sama algorytmika to za mały wycinek całości, aby opierać na tym rekrutację.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
Krolik napisał(a):
Zdarza się, że widzę w kodzie takie listaKlientów.Sort() tylko po to aby wybrać 10 pierwszych klientów. Spoko jeśli lista ma 1000 pozycji i ten sort jest wołany raz na dzień, ale zupełnie inaczej to wygląda jak ta lista ma 100000 pozycji i jest sortowana w każdym zapytaniu.
To jest zwykła bezmyślność, a nie brak znajomości algorytmów. Czegoś takiego nie zrobi żadna myśląca osoba, nie tylko ktoś obcykany w algorytmach i zadankach ze SPOJa.
No i to jest problem praktyczny, podobnie jak to, co ktoś wyżej napisał z Dictionary. Z tego, co zauważyłem, Codility nie sprawdza umiejętności praktycznych. Nie wiem też, czy tak naprawdę sprawdza ono znajomość jakichkolwiek algorytmów, mi to bardziej wygląda na cwaniactwo i kombinatorstwo, w sensie znalezienie wzorca między danymi wejściowymi, a wynikowymi, który pozwala na szybkie wyznaczenie wyniku, bez faktycznego obliczania czegokolwiek. No, ale mogę nie mieć racji, bo jestem laikiem, a algorytmy, które sam implementowałem zazwyczaj miały jakiś praktyczny cel i nieznany wynik.
Zawsze pozostaje też kwestia wydajności. Dla jednego wydajność to niska złożoność obliczeniowa i pamięciowa, dla innego to umiejętnie ustalone indeksy w BD, unikanie triggerów, cachowanie rzadko modyfikowanych danych i wyników refleksji, zrównolegnienie przetwarzania danych, itd., itp. Ktoś dobry w zadankach niekoniecznie ma pojęcie o tych kwestiach, które są w końcu w dużej mierze zależne od konkretnych technologii.
Sama algorytmika to za mały wycinek całości, aby opierać na tym rekrutację.
Ja niedawno rekrutowałem się do pewnej dobrze płacącej firmy (zresztą, "firmy marzeń" sprzed 4 lat), była godzinna gadka o moim doświadczeniu, i z wyjątkiem kilku pytań o wzorce projektowe, TDD, DDD i inne banały, nie było żadnej weryfikacji, no a potem Codility, następnym etapem miało być spotkanie z docelowym klientem.
Moim zdaniem dziwnie mało. Gdy rok temu rekrutowałem się do innej dobrze płacącej firmy, to mnie przepytali dość szczegółowo z dużo bardziej praktycznych, ale także trudnych rzeczy typu szczegóły działania GC, wątków czy prawidłowa implementacja zwalniania zasobów, i to dla mnie było zrozumiałe.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3257
Somekind - zaczyna brakowac na rynku ludzi ktorzy potrafia cos wiecej niz "Java w weekend". Stad w wielu firmach poziom rekrutacji spada, bo albo trzeba koszmarnie placic jesli sie chce A-playerow, albo trzeba sie na slabszych ludzi nastawic.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3257
Niezdecydowany - a jakie fakty bys chcial?
Pisze bazujac na swoich obserwacjach i doswiadczeniu. Widze jak firmy staraja sie na konferencjach by ludzi zlapac (chocby Geecon). Pogadaj z ludzmi z wiekszych firm jakie osoby teraz sie zglaszaja na rekrutacje, jak rzadko trafia sie ktos kto poza Java poradzi sobie rowniez z podstawowymi problemami sieciowymi, zrobieniem czegos na Linuxie, czasami rozgryzieniu problemu gdzie np. czesc softu jest w C++ a czesc w Javie. Kto bedzie potrafil napisac aplikacje wielowatkowa, ale tez bedzie potrafil uzyc Wiresharka gdy trzeba.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Wrocław
WhiteLightning napisał(a):
rzadko trafia sie ktos kto poza Java poradzi sobie rowniez z podstawowymi problemami sieciowymi, zrobieniem czegos na Linuxie, czasami rozgryzieniu problemu gdzie np. czesc softu jest w C++ a czesc w Javie. Kto bedzie potrafil napisac aplikacje wielowatkowa, ale tez bedzie potrafil uzyc Wiresharka gdy trzeba.
No rozumiem, ale co ma do tego Codility?
Gdyby ćwiczyć takie zadanka przez parę miesięcy, to by się człowiek nauczył i potem rozkminiał nawet najtrudniejsze w kwadrans. Tylko jaki to ma związek z faktycznym IT?
Moim zdaniem Codility jest idealnym narzędziem jeśli chcemy sprawdzić umiejętność rozwiązywania zadań na Codility.
- Rejestracja: dni
- Ostatnio: dni
somekind napisał(a):
Moim zdaniem Codility jest idealnym narzędziem jeśli chcemy sprawdzić umiejętność rozwiązywania zadań na Codility.
:-D
To tak samo jak to, że testy IQ sprawdzają umiejętność rozwiązywania testów IQ a rozwiązywanie krzyżówek poprawia umiejętność... rozwiązywania krzyżówek.
Strasznie nie lubię SPOJów i innych Codility. Sprawdzanie umiejętności programowania za pomocą takich wynalazków uważam za niemądre - moim zdaniem problemy, które tam występują mają się najczęściej nijak do prawdziwych problemów spotykanych w pracy.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Bieszczady
- Rejestracja: dni
- Ostatnio: dni
- Postów: 4
W niektórych firmach robią coś podobnego, mają własne testy na myślenie i kombinowanie, które wymagają minimalnej wiedzy lub nie wymagają jej. Ludzie, którzy radzą sobie z takimi testami a nie umieją programować dostają szanse, a czemu bo programowania go nauczymy, gorzej z myśleniem. I to się sprawdza w większości przypadków. Chociaż takich ludzi jest mało, ale warto w nich inwestować.
- Rejestracja: dni
- Ostatnio: dni
Witam,
czy może ktoś wie co to jest "zero-indexed array" albo " equilibrium index" ?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Jeśli nie znasz takich pojęć i nie umiesz ich wyszukać to raczej nie nadajesz się do tej pracy ;) zero-indexed array to tablica indeksowana od 0 (duh...), a equilibrium index wg google to ''Equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes'
- Rejestracja: dni
- Ostatnio: dni
Moim zdaniem zadania z Codility działają dobrze, gdy wprowadzone są dane demo a nie dla ogólnego przypadku. Dlatego są bez sensu i nic nie sprawdzają.
A więc potwierdzasz moje zdanie, że trudność tkwi w treści. Sam szukasz w googlach, podajesz definicje z googli, a nie używasz literatury zawodowej. Terminy są ważne.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Trudność nie tkwi w treści tylko w tym że nie umiesz czytać. W zadaniach codility wszelkie potencjalnie dziwne definicje są podane w treści razem z przykładem. Definicji dla zero-indexed array raczej podawać nie trzeba bo jest dosłowna.
A zadania są testowane na innych zestawach danych, więc jak zaklepałeś coś co przechodzi tylo dla danych przykładowych to powodzenia :D
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Krasnystaw
- Postów: 1185
Tu jest oficjalnie dość jasno przedstawione pod jakie warunki testowe podlega EQUI:
http://blog.codility.com/2011/03/solutions-for-task-equi.html
Z pozoru proste zadania a jednak w praktyce trudne, bo wielu i na tym by poległo. Oficjalnie rozwiązanie podane jest w C, w praktyce jednak łatwiej przejść test używając pythona, wystarczy zwrócić uwagę na long long jako typ dla zmiennych sum, nieprawidłowy typ np. int i wywali przekroczenie zakresu. Poza tym kod w pythonie będzie o wiele prostszy.