Wpis z mikrobloga

Widzę jeden wątek o quicksorcie rozbił tu bank (nie wiem czy to bait, strzelam, że nie), to opowiem, jakie coding testy mnie osobiście się trafiły, do tej pory (nie wszystkie):

1) Stanowisko: DevOps (zdecydowanie moje ulubione, wszak dla DevOpsa)

Dostajesz listę 4 cyfr. Napisz funkcję, która "złoży" z nich najpóźniejszą możliwą godzinę i zwróci ją w formacie "HH:MM" (np, dla listy [1 2 3 4] => 23:41, dla [1 1 9 5] => 19:51). Jeżeli jednak z podanej listy nie da się "złożyć" poprawnej godziny, funkcja powinna zwrócić 0 (np dla [2 4 5 9]). Było coś o złożoności obliczeniowej, ale pamiętam tylko tyle, żeby od n² trzymać się z daleka.
Godzina w platformie typu codility

2) Stanowisko: DevOps

Zadania już dokładnie nie pamiętam, ale trzeba było wybrane elementy listy przekształcić i zwrócić, o ile pamiętam w Pythonie szło to prostym list comprehensions załatwić lub kombinacją map+filter (na codility było na to 1:30h). Językiem "wymuszonym" był Python (a wymagania odnośnie stanowiska nawet o tym nie wspominały)

3) Stanowisko: DevOps

Podobnie zadanie było w exercism.io (bawiłem się tym wcześniej, przed tym testem) - obliczanie roku przestępnego na podstawie zadanego algorytmu, język dowolny. Dzięki temu zadaniu nauczyłem się co to ten rok przestępny i dlaczego w ogóle go wprowadzono (ale to na exercism już). ( ͡° ͜ʖ ͡°)

4) Stanowisko: Go Developer

Policz wszystkie samogłoski angielskie we wprowadzonym stringu, przenieś je wszystkie z kolejnością wystąpienia do osobnej listy, a następnie usuń X-Y element listy, gdzie Y to wartość losowa między (1, 5) a X to ich całkowita liczba w podanym zdaniu (usuwanie bez utraty kolejności), np: Hello my friend! - [e,o,y,i,e]. Oczywiście specjalne case dla zdania/stringu, który ich nie zawiera lub który zawiera na tyle mało, że X-Y nam wyjedzie poniżej - tu narzucony był Go, który operacje na slices ma bardzo pokręcone (w porównaniu np. do Pythona

4) Stanowisko: Go Developer

Fibonacci metodą nierekurencyjną, język dowolny

5) Stanowisko: Go Developer

To zadanie domowe na kilka dni z mojego githuba, czyli proste API ala Twitter (bez frontendu, tylko backend) technologia (poza Go) w zasadzie dowolna wraz z pełnym deploymentem i dokumentacją (autoryzacja userów nie była wymagana). Dodawanie/usuwanie/przeszukiwanie wpisów głównie.

Ogólnie zadania do tworzenia API są ostatnio coraz popularniejsze i różnią się jedynie nazwami endpointów, formą zwracanej odpowiedzi i innymi takimi pierdołami.

Wszystkie te coding testy były przed (najczęściej) lub po rozmowach technicznych dot. np. architektury oprogramowania, systemów rozproszonych czy znajomości konkretnych technologii (np. docker). I generalnie jest tendencja, że tych testów będzie więcej (mam info od koleżanek z szerokopojętego HR), ponieważ jak przychodzi sporo CV (tyczy się głównie pythona, frontendu czy javy), to takie zadanka ładnie "filtrują" listę osób do następnego etapu. I na stanowiska DevOps like też są coraz częstsze, pisałem o tym tutaj: https://devopsiarz.pl/devops/pytania-i-tematy-rekrutacyjne-na-stanowisko-devops-engineer-junior-mid-senior/#coding-test-czyli-test-z-programowania

Quicksort mnie się jeszcze nie trafił, ale zakładam, że jak się tego typu zadanie trafia, to jest rozpisane jak algorytm działa, bo nie każdy to musi pamiętać wszystkie kroki każdego algorytmu.

Nie oceniam tu ogólnej sensowności tych testów, daję tylko przykłady z mojej kariery.

#programowanie #pracbaza #pracait #rekrutacja #python #golang #algorytmy #devops #devopsiarz
  • 9
to jest rozpisane jak algorytm działa


@devopsiarz: w zasadzie to powinienes wiedziec ze to algorytm typu dziel i rzadz i dziala na zasadzie separacji luczb mniejszych od pivota od wiekszych. A to każdy szanujacy sie programista wie.
@leoha: być może nie jestem "tym szanującym się", ale bardziej cenię sobie, że ktoś na szybko przeczyta jak coś działa, ale po tym czytaniu będzie już wiedział/a, czy zastosować to podejście w danym momencie w projekcie (w sytuacji, gdy z jakichś powodów nie korzystamy z "gotowców"), aniżeli kogoś, kto na pamięć zna wszystkie algorytmy i potrafi je zakodować, ale już nie zastanawia się jak to wpłynie całościowo na projekt w którym
kto na pamięć zna wszystkie algorytmy


@devopsiarz: nie trzeba znac na pamiec. Ale wiedziec jaka jest idea quicksorta juz tak. A to wystarczy zeby algorytm wyprowadzic. Nawet zeby poprawnie uzyc quicksort trzeba wiedziec dla jakisndanych moze sie ukwadracic i ze nie jest stabilny. Wlasnie przez takie braki wiedzy pozniej powstaja takie subtelne bugi ktore ciezk9 debugowac.
@leoha:

ie trzeba znac na pamiec. Ale wiedziec jaka jest idea quicksorta juz tak. A to wystarczy zeby algorytm wyprowadzic. Nawet zeby poprawnie uzyc quicksort trzeba wiedziec dla jakisndanych moze sie ukwadracic i ze nie jest stabilny.


Ok, w porządku. To bawię się w złego rekrutera, biorę taką pracę z brzegu: https://arxiv.org/abs/1503.02504 - i biorę coś losowo z rozdziału/podrozdziału i będziesz mi to musiał zakodować, bez dostępu do Google, dokładnie ten
@leoha: wybacz, ale Ty na początku napisałeś, cytuję:

w zasadzie to powinienes wiedziec ze to algorytm typu dziel i rzadz i dziala na zasadzie separacji luczb mniejszych od pivota od wiekszych. A to każdy szanujacy sie programista wie.


Ja Ci tylko dałem przykład, że jak trafisz na rekrutującego, który ma inne rozumowanie tego, "co szanujący się programista powinien wiedzieć", to się okaże, że o quicksorcie możesz bardzo mało wiedzieć tak naprawdę.
@devopsiarz:

Wszystkie te coding testy były przed (najczęściej) lub po rozmowach technicznych dot


no chociaż tyle że po rozmowie, bo jak jakaś firma w odpowiedzi na CV przesyła mi zadanie to odpowiadam w tylko jeden sposób - "XD"
nie poświęcam czasu firmom które mi go nie poświęciły
zresztą powiem ci na tyle polskich rekru już byłem, i zawsze sprawdzała się zależność, że tam gdzie nie chcieli żadnych zadań tylko przeprowadzali rozmowę