Dlaczego "juniorzy" nie mogą znaleźć pracy

Dlaczego "juniorzy" nie mogą znaleźć pracy
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
21

Ciekawy koncept, który kiedyś przećwiczyłem . Jak już przygotujemy sobie test do przemaglowania kandydatów (musi być szybki typu - a,b,c,d)... to można dać ten test do rozwiązania obecnemu zespołowi.
Jest to wyjątkowo wredne .. i daje do myślenia.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
PerlMonk
W Comarchu tak robią i zastępują specjalistów studentami. ;)
nalik
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 2 lata
  • Postów:1039
5
jarekr000000 napisał(a):

Ciekawy koncept, który kiedyś przećwiczyłem . Jak już przygotujemy sobie test do przemaglowania kandydatów (musi być szybki typu - a,b,c,d)... to można dać ten test do rozwiązania obecnemu zespołowi.

Jest to wyjątkowo wredne .. i daje do myślenia.

Ja tak swego czasu robiłem. Jak doświadczeni programiści wykładali się na czymś, to pytanie najcześciej wywalałem uznając za mało miarodajne.

Najlepiej sprawdzały mi się pytania, która potem można użyć za punkt wyjścia do otwartej dyskusji na temat głębszego tematu.

edytowany 1x, ostatnio: nalik
Silv
"Jak doświadczeni programiści wykładali się na czymś, to pytanie najcześciej wywalałem uznając za mało miarodajne" – podoba mi się. Nie wiem, czy to dobre podejście, ale jak dla mnie przynajmniej "computable" i wpasowuje się w niektóre opinie w tym wątku.
Interpod
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 2 lata
  • Postów:81
3
WhiteLightning napisał(a):

Pod katem procesu rekrutacyjnego zazdroszcze lekarzom. Idziesz pokazujesz papiery, ustalasz godziny pracy dogadujesz sie o stawke i tyle. Nikt nie pyta czy np. hobbistycznie operujesz kurczaki wieczorami, albo czy w ramach pet projectow leczysz sasiadow po godzinach.

I dlatego właśnie polski system zdrowia jest jednym z gorszych w europie. A przychodzi covid, lekarze z nfz'tu robią sobie co chcą. (a o dziwo słyszałem gdzieś, że Polska ma jednych z najlepszych specjalistów z IT na świecie)

Myślę, żew IT jest bardzo podobnie do lekarzy o ktorych wspominacie. Jak taki mgr/doktor studiów informatycznych pójdzie do rządowej spółki i za sam papier dostaje robotę. A później "is_pies" to ich najmniejsze zmartwienie.

Miałem "przyjemność" mieć kontakt z ludźmi co przebimbali studia medyczne i dostali robotę za sam papier i tacy sobie lądują na SOR'ach i innych ubojniach ludzi.
Korzystałem też z usług chirurga-fachowca co faktycznie wracał po pracy "robił" operacje, pisał artykuły do gazet medycznych, prowadził badania nad swoją działką i dokształcał się. Kontakt z nim był przyjemny i bardzo wartościowy (bezoperacyjnie rozwiązal problem, którego chirurdzy neurolodzy z NFZ i luxmedu nie byli w stanie, a kierowali mnie na cięcie) ale też bardzo bolesny dla mojego portfela (250zł - 30min).

edytowany 3x, ostatnio: Interpod
Zobacz pozostałe 8 komentarzy
ToTomki
Badam się prywatnie, ubezpieczenie z pracy
ToTomki
W sumie to teraz na NFZ pójdę pewnie tylko jeśli stanie mi się coś drogiego, albo będę musiał sobie ogarnąć l4 będąc w rodzinnym mieście. Oh wait, teraz są jeszcze teleporady
WhiteLightning
@ToTomki: nie wiem czy dalej ak jest, ale czesto chodzilo o jakas kase z NFZ i jak szpital wypuszczal kogos szybciej niz po 3 dniach to im sie to slabo kalkulowalo.
ToTomki
Nie wiem czy jest jakiś threshold dniowy, ale na pewno dostają kasę za każdego pacjenta i za każdy dzień
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
4

Mąż mojej kuzynki jest kardiochirugiem. Napierdziela po świecie na różnych konferencach. Moja kuzynka w wieku 40 lat obroniła doktorat, jest ginekologiem, Przez pewien czas chodziłem do gastrologów z problemami które na całe szczęście "same" mineły. Najwięcej pomógł mi lekarz o którym bylo widac że na bieżąco śledzi branże, standardy leczenia itp.
Więc te porównania lekarz vs programista są śmieszne, tzn domyślam się że @Shalom wrzucił to dla beki, ale chyba rzeczywiście ludzie w to wierzą.
PS.
Mnie nikt nigdy nie pytał o open-source, fora, stackoverflow ani czy prowadze bloga, no ale to dowód anegdotyczny więc mało naukowy.


piotrpo
Stary dowcip o programistach: "jak pomyślę jaki ze mnie inżynier to boję się do lekarza pójść"
p_agon
"Gratuluje panu ale moja córka jest magistrem prawa." ;)
Wawer0123
  • Rejestracja:prawie 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:94
2
Interpod napisał(a):
WhiteLightning napisał(a):

I dlatego właśnie polski system zdrowia jest jednym z gorszych w europie.

Po 1 czy na zachodzie rekrutacja wygląda inaczej?
Po 2 nie wiem jaki jest system zdrowia, ale na zachodzie lekarze z przychodni leczą jeszcze gorzej niż w Polsce. Na wszystko aspiryna albo antydepresanty.

WhiteLightning
Cytuj jakos lepiej, bo ja nie pisalem ze nasz system jest jednym z gorszych :P
YourFrog2
I cyk problem z emerytami rozwiązany.
W0
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 minut
  • Postów:3550
5

Tak z boku - uwielbiam te eskalacje tematów na 4p :D

Zaczęło się od zamiany ciągu Fibonacciego z rekurencji na liniowy. W tej chwili wiemy, że to zadanie jest "be" bo:

  • wszyscy bez wyjątku wykładamy się na podstawach
  • junior może go nie przejść
  • nikt nie będzie pamiętał algorytmu Djikstry
  • kolizje brył to w gamedevie, nie w programowaniu
  • ktoś kiedyś się spotkał z sytuacją, że dali jakiś ultrahard przykład z Codility juniorowi
    itp. itd.
Zobacz pozostałe 2 komentarze
superdurszlak
polityka, foliarstwo, anty-foliarstwo :D :D :D
W0
@alagner: no eskalacja polega na tym, że przechodzisz na coraz bardziej ekstremalne przykłady. Zamiana ciągu Fibonacciego z rekurencji na liniowy to nie jest wykrywanie kolizji brył czy wkuwanie na pamięć Djikstry.
AL
@wartek01: nie widzę tu aż takiego ekstremum, ale może mam przesunięte granice ;p
Interpod
korupcja! nepotyzm! kolesiostwo!
PerlMonk
@alagner: To czasem brzmi jak "No ale o co ci chodzi?! Nie bądź śmieszny! My tu bana za obrażanie dostaliśmy a ty się czepiasz o drobnostki" :D
SA
  • Rejestracja:prawie 5 lat
  • Ostatnio:6 miesięcy
  • Postów:16
2

Heh, z takim podejściem jak tutaj sporo ludzi prezentuje to ja się nie dziwię że potem twierdzicie że w firmie same CRUDy się robi, nikt was przecież do niczego ambitnego nie zatrudni xD
Narzekanie na konieczność napisania fibonacziego, WTF xDDDDD
Przecież to jest lvl tylko lekko wyżej niż hello world a wy już z tym macie problem xD

Zobacz pozostałe 2 komentarze
somekind
@ToTomki: na przykład jaki inny algorytm, i w czym będzie lepszy od Fibonacciego?
ToTomki
Chodziło mi o to, że nie ma sensu się pałować tak tym Fibonaccim, bo wybór jakiegokolwiek innego nic nie zmieni
somekind
Ale jakiego innego na przykład? Równie prostego i równie nie wymagającego wiedzy?
ToTomki
Ta, takiego. Nie przychodzi mi teraz żaden konkretny do głowy, a nie będę za tym googlował
LW
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Warszawa
  • Postów:59
0

Mnie to zaskakuje, że ktoś nazywający się "programistą" ma problem z manipulacją dwoma zmiennymi. A co jak funkcja będzie miała ze 3 argumenty, trochę logiki aby je obrobić, i jeszcze nie daj Boże coś trzeba będzie zwrócić???

YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
11

Wy udajecie czy serio nas nie rozumiecie?

Jeśli twoja praca polega na klepaniu stron WWW / Sklepów / Braniu danych i wyświetleniu ich / Inny dowolny CRUD to lepiej poprosić takiego juniora o napisanie programu który wyświetli pierwszych 10 pozycji z tabeli.

Jeśli twoja praca polega na obliczeniach RealTime np śledzisz obiekty poruszające się z dużą prędkością to lepiej jest dać zadanie gdzie gość będzie musiał wykorzystać jakieś prawo z fizyki. Ale na boga jak oprogramowuje bankomat to nie potrzebuje by junior znał się na algorytmice albo wiedział co to liczby urojone :| To standardowe oprogramowanie z GUI i api za sobą czyt CRUD.

My próbujemy powiedzieć "Zadania testowe należy dobierać do zakresu zadań jakie taki człowiek będzie w pracy wykonywać".

edytowany 2x, ostatnio: YourFrog2
Miang
może jednak wyświetlenie wymagające użycia jakiegoś warunku
PerlMonk
Ja za to słyszałem o terminach zespolonych 🍞. Występują one kiedy deweloperzy podają realny termin dowiezienia a PM podaje klientowi termin urojony.
KamilAdam
@PerlMonk: Piękna definicja
Shalom
Zadania testowe należy dobierać do zakresu zadań jakie taki człowiek będzie w pracy wykonywać Amen.
AL
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:1493
2

@YourFrog2: wszystko racja, ale pamiętasz jak padding w JSie popsuł pół Internetu? ;)

Zobacz pozostałe 2 komentarze
KamilAdam
@alagner: to jednak inna sytuacja bo nawet umiąc zaklepać padding wybieram biblioteki w których on jest już zaklepany ( JSie nie piszę ale hobbistycznie w Haskellu i tam też jest wiele małych biblioteczek z prostymi funkcjami)
cerrato
A, OK - chodzi o left-pad. Kojarzę temat. Znaczy - zapomniałem, ale jak rzuciłem okiem na linki to od razu wspomnienia wróciły ;)
YourFrog2
Nie znałem tematu :D
AL
@KamilAdam: jedno to go używać, drugie lamentować zamiast samemu napisać ;)
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:3277
0

@YourFrog2: Właśnie robię RCA dlaczego pewien zespół nie może sobie poradzić z pobraniem plików. Niby banalne jak piosenki Martyniuka, a nie potrafią poradzić sobie z błędem przez kilka miesięcy. Ale oczywiście "po co komu algorytmy, albo po co komu wiedzieć czym jest FSM".

Zobacz pozostały 1 komentarz
KamilAdam
No to jak umiejętność napisania A* pomaga w pobieraniu plików?
piotrpo
W tym przypadku brak znajomości koncepcji i praktycznego zastosowania maszyny stanów skończonych zdecydowanie w tym przeszkadza (wstępne ustalenia)
XY
RCA - "Riot control agent, tear gas" (z Wikipedii). Oj, może lepiej dla tych "juniorów', że tam jednak nie pracują. ;)
piotrpo
Root Cause Analysis, czyli co było przyczyną, że poszło nie tak.
YourFrog2
U nas to się nazywa po prostu "spotkaniem co zjeb**"
YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
1

@piotrpo: Ale ty widzisz czego dotyczy temat? To są pytania dla juniora.

Nie wiem jak wy obsługujecie pobieranie pliku w swojej aplikacji bo możecie mieć własny algorytm który pobiera pliki częściami jak kiedyś robił np Emule czy inne Kazy. Ale żaden junior nie machnie takiego programu na TCP, a pewnie dodatkowo otwieracie połączenia na udp'ie w oddzielnym wątku który może działać po zminimalizowaniu aplikacji. Jasne że maszyna stanowa to fajny wzorzec ale też często nadużywany. Ja kiedyś zastanawiałem się jak zrobić różne animacje postaci 2D na frame'ach i maszyna to upraszcza maksymalnie jak się da (oczywiście nie za darmo)

Spójrzcie prawdzie w oczy 90% rynku to apki po HTTP'ie ze zwykłym api po reście. Już nawet mało kto zna różnice między SOAP, REST a Binarnym protokołem itp. Robicie z siebie wielkich programistów, a powiedzcie tak szczerze co robiliscie zawodowo max w życiu?

Śmiem twierdzić że napisanie algorytmu do problemu plecakowego (Ta tego nie rozwiązywalnego) było trudniejsze niż zrobienie migracji 4 systemów z paroma mln klientów i bazami liczonymi w TB. Podpinanie się do zewnętrznych dostawców czy sortowanie listy < 100 elementów naprawdę nie wymaga znajomości bóg wie czego.

Ilu z was jak czyta pliki np xml / csv to zasysa go całego do pamięci?

Nie chce wywoływać g**no burzy ale wymagacie od juniora znajomości algorytmów które są zbędne. Weźcie sobie kartkę papieru i spróbujcie napisać implementacje ArrayList, LinkedList, Two ways list, one way list, stosu, jakiś b-tree index itp. bez patrzenia w internety. Jak macie inteligentnego kandydata który rozumie co się do niego mówi to można mu DAĆ ZA DARMO książkę https://helion.pl/ksiazki/piramidy-szyszki-i-inne-konstrukcje-algorytmiczne-maciej-syslo,pirami.htm#format/e i po tygodniu będzie znać te ZAJEBIŚCIE WAŻNE algorytmy...

Zobacz pozostałe 3 komentarze
YourFrog2
@Lwojtow: Z tym że te dane musisz obrobić przed prezentacją się w 100% zgadzam. Ale to dalej jest crud. To że listę odfiltruje i przesortuje nie zmienia tego że to CRUD. Mało tego bardzo często tą obróbke danych zrobisz w sql'u.
Shalom
Robicie z siebie wielkich programistów, a powiedzcie tak szczerze co robiliscie zawodowo max w życiu? nie kuś... :D
YourFrog2
@Shalom: Hehe akurat ty jesteś jednym z tych co my nie dorastamy do pięt :( Głównie mam na myśli to gdzie pracujesz i przy czym.
Shalom
@YourFrog2: jest tu na forum sporo osób które zjadają mnie na śniadanie albo pracują przy dużo bardziej złożonych rzeczach, tylko niekoniecznie się z tym obnoszą ;)
YourFrog2
@Shalom Możliwe ale w dalszym ciągu większość jest jak ja. Szeregowy pracownik w korpo / małej firmie mający mało wspólnego z matematyką w codziennej pracy. Ot weź dane przetwórz i oddaj gdzie indziej.
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:4 dni
  • Postów:3277
2

@YourFrog2: Jaki niby super zbędny algorytm jest tym, którym męczymy tych bogu ducha winnych biedaków? Pętla z licznikiem? Sumowanie 2 wyrazów, żeby dostać 3?

YourFrog2
Ale co to sprawdza według Ciebie? Paradoksalnie to ja mam większe wymagania na juniora.
piotrpo
Czy potrafi obsłużyć Git'a, czy potrafi zaimportować projekt do IDE, czy wpadnie na pomysł zastosowania testów do zabezpieczenia refaktoru działającego kawałka kodu, do działającego kawałka kodu, czy jest w stanie zrozumieć 3 linijkową metodę, czy jest w stanie napisać tę pętlę.
YourFrog2
A teraz zamień to zadanie na pobranie danych z innego miejsca i powiedzmy przesortowanie tych danych. Co się zmieniło?
piotrpo
Czas, który jest na to potrzebny i sprawdzenie konkretnego skilla (typu czy potrafi deserializować JSONa Jacksonem) zamiast ogólnego skilla (znajomość Java na poziomie 0)
YourFrog2
Przeczytaj jeszcze raz co napisałem i co odpisałeś. Ja nic o kontrakcie nie napisałem.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 15 godzin
  • Lokalizacja:Wrocław
8

Mawiają, że syty głodnego nie zrozumie.
W tym przypadku programiści nie zrozumieją crudowców i ich strachu przed dodawaniem.

YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
1

Mi podobają się rozmowy na wzór tego: Tylko nie jestem pewien czy na juniora by się to opłacało.

piotrpo
Przecież tak wygląda to ćwiczenie, które przeprowadzamy. Tylko jest to prostsze, bo możesz używać swojego IDE i masz banalny problem do rozwiązania.
YourFrog2
No właśnie nie. Tutaj sprawdzają czy gość myśli i jak myśli, a nie czy umie sklepać algorytm. Dodatkowo zauważ że to nie jest rozmowa na juniora.
piotrpo
Skąd wiesz, że nie? Zbudowałeś sobie jakieś wyobrażenie i próbujesz udowadniać, że to co sobie wyobraziłeś jest bez sensu. Kandydat ma napisać banalny kawałek kodu, mówi co jest złego w tym co zastał, w jaki sposób chce zrobić to lepiej. Ty twierdzisz, że to nie ma sensu, bo chociaż nie masz pojęcia na czym polega projekt do którego jest zatrudniany, to w "u nas pisze się wyłącznie CRUD'y". Mam wrażenie, że kłócisz się głównie sam ze sobą.
YourFrog2
Ty ale ja napisałem że należy dobierać pytania / zadania do tego co kandydat będzie robić w pracy. O tutaj w ostatniej linijce https://4programmers.net/Forum/Kariera/353070-dlaczego_juniorzy_nie_moga_znalezc_pracy?p=1775921#id1775921
The Pontiff
  • Rejestracja:ponad 4 lata
  • Ostatnio:10 miesięcy
  • Postów:128
3

OK żeby sprowadzić temat na ziemię bo już nie mogę czytać tych odlotów.

Cały czas mówimy o zadaniu polegającym na napisaniu takiego kodu:

Kopiuj
    private static int fibonacci(int n) {
        int a_n = 0;
        int a_nplus1 = 1;

        for(int i = 0; i < n; i++) {
            int a_next = a_n + a_nplus1;
            a_n = a_nplus1;
            a_nplus1 = a_next;
        }

        return a_n;
    }

Napisanie tego dla średnio rozgarniętego 15-latka to jakieś 5 minut. To nie jest algorytmika tylko zupełnie podstawowe zadanie z programowania zanim ktoś zrozumie co to jest tablica, obiekt, API itd. Prostsze zadanie to już tylko wypisanie wszystkich liczb od 0 do N. Nie potraficie tego napisać? Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować. Czy będziecie pisać fibonacciego w pracy? Nie ale wyłożycie się na tasku który wymaga czegoś więcej od delegowania wywołań i trzeba będzie was wiecznie kontrolować. Bo nie potraficie programować tylko deklarować metody i przeklejać kod.

YourFrog2 napisał(a):

@piotrpo: Ale ty widzisz czego dotyczy temat? To są pytania dla juniora.

Nie chce wywoływać g**no burzy ale wymagacie od juniora znajomości algorytmów które są zbędne. Weźcie sobie kartkę papieru i spróbujcie napisać implementacje ArrayList, LinkedList, Two ways list, one way list, stosu, jakiś b-tree index itp. bez patrzenia w internety.

Wyobraź sobie że kiedyś pisałem na kartce listę dwukierunkową w rekrutacji do Ocado i dostałem max punktów. Nauczyłem się co to jest lista i drzewo w liceum z mądrej ksiązki o Pascalu i nie wiem jakim cudem miałbym zapomnieć na czym to polega. A jak wiem na czym to polega to mogę to zaimplementować na kartce papieru z głowy po prostu wymyślając wszystkie operacje na poczekaniu bo umiem programować. Na tym polega programowanie że piszę program z głowy a nie kopiuję z internetu.

Wawer0123
co to za podkreślniki i nic nie mówiące zmienne? Nie przyjmujemy Pana.
ToTomki
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Postów:1320
3

Ja tylko napisalem, że nie uważam zadań tego typu (i nawet powielałem wiadomość, że nie chodzi mi tylko o Fibonacciego, który oczywiście jest banalny) za najwłaściwszą formę sprawdzania wiedzy, bo zwyczajnie nie sprawdza nic poza elementarnym pisaniem kodu, a do tego jak się jeszcze trafi na nieodpowiednio przedstawione polecenie, to można uwalić mimo że jednak nie jest się na poziomie dno i wodorosty, np. gdyby mi polecono napisać bubble sort to nie wiem czy bym to zrobił (na rozmowie bym dopytywał jesli bym miał możliwość, no ale zrobić ot tak na sto procent - nie wiem), bo zwyczajnie nie pamiętam które to, chociaż wydaje mi się, że wiem i że pewnie bym napisał. Znam ludzi, którzy piszą sobie kod w pytongach czy wyklikują coś w różnych ETLach i nigdy pewnie nawet z pojęciem bubble sort się nie spotkali (bo nie studiowali kucotroniki ani z typowych dla kucotroników materiałów). Czy oni są jacyś gorsi ode mnie z tego powodu? Powinni mieć gorszy wynik na rekrutacji z tego powodu? No ja tak nie uważam.

A, i fakt, że Ty się czegoś nauczyłeś z mądrej książki i do tej pory pamiętasz, to dotyczy on tylko Ciebie. Wiele osób czyta mądre książki i zaraz treści nie pamięta. Co więcej, to nie jest nietypowa sytuacja tylko tak wygląda pamięć normalnej osoby. Uważam że super, że masz dobrą pamieć, zazdroszczę Ci jej, ale rozciąganie Twoich zdolności na całą populację po prostu pokazuje, że nie potrafisz podejść do tematu z dystansem.

BluzaWczolg
BluzaWczolg
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 3 lata
  • Postów:530
4

Nauczyłem się co to jest lista i drzewo w liceum z mądrej ksiązki o Pascalu i nie wiem jakim cudem miałbym zapomnieć na czym to polega.

Może i struktury danych ludzie pamiętają, ale wątek jest o pisaniu algorytmów z pamięci. Nie napisałbym pewnie z pamięci nawet Dijkstry po studiach. Zresztą nie każdy szedł na studia i tacy ludzie też programują. Jeżeli chodziło Ci o algorytmy, to pogratulować pamięci, ale nie wszyscy tak funkcjonują.

15 latkowie programujący fibonaciego z pamięci albo wykonujący polecenie "przekształć to na wydajniejszy" ? Nie wiem kto tu odleciał troszkę.

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

Ale my tu mówimy o realiach czy o tym kto jest fajny z programowania?


Nie czarodziejska tylko magiczna. I nie fujarka tylko flet. Magiczna flet.
edytowany 5x, ostatnio: BluzaWczolg
piotrpo
Z listą 2 kierunkową bym sobie poradził bez problemu, z Dijkistrą pewnie też (nie pamiętam czy nie było tam jakichś udoskonaleń). W liceum w ramach prac domowych rozwiązuje się dużo trudniejsze problemy niż znajdź wartość n-tego elementu ciągu w którym n1 i n2 a każdy następny element jest sumą 2 poprzednich
BluzaWczolg
BluzaWczolg
@piotrpo w liceum chyba nie ma programowania, jasne, jeżeli byś go nauczył programować i przedstawił problem, to tak. Ale tu jest kontekst o pisaniu tych zadanek z marszu na interview, z pamięci, i ogarnianie wydajności.
p_agon
  • Rejestracja:ponad 9 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:96-230
  • Postów:953
4

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

A BTW, dlaczego większość specjalistów jak zahaczy o rekrutacje z tej drugiej strony to później stara się wszystkim udowodnić ze ma większego JSONA-a?


Reasumując wszystkie aspekty kwintesencji tematu, dochodzę do fundamentalnej konkluzji: To by nic nie dało, nie dałoby nic! Przez 10 minut można, przy 2h to już jakaś zemsta pagona.
edytowany 1x, ostatnio: p_agon
YourFrog2
Niektórzy na rekrutacjach stosują taki schemat że 1/3 pytań (ilość z kosmosu) jest po to by zagiąć kandydata. Jak rozwiąże to znaczy że trzeba go zatrudniać. Jak nie to może zejdzie z ceny bo wytrącimy go z pewności siebie. Kiedyś na rozmowie o pracę do PHP zostałem zapytany jak działa factor w postgresie. Oczywiście poległem na pytaniu ale co to miało wspólnego z moją pracą to do dziś nie wiem.
The Pontiff
FIbonacci jest po to zeby zagiąć kandydata?
WeiXiao
@YourFrog2: Kiedyś na rozmowie o pracę do PHP zostałem zapytany jak działa factor w postgresie. Oczywiście poległem na pytaniu ale co to miało wspólnego z moją pracą to do dziś nie wiem. no bo może dużo korzystają z pg?
YourFrog2
Takie rzeczy dostraja się i tak później na produkcji. Czy dużo to nie wiem trochę korzystają.
YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
1

@The Pontiff: Tylko widzisz ja postuluje w tym temacie że to nic nie sprawdza. Według mnie jedyne co tutaj sprawdziłeś to czy kandydat potrafi z pamięci pierdzielnąć nie wydajną implementacje ciągu fibonaciego którego uczył się x lat temu. Mało tego ten kod jest tak oklepany że znajdą się osoby które go pamiętają 1:1 i ich nie odsiejesz.

Inaczej bym powiedział gdybyś mówił o zadaniu "dany jest ciąg liczb 0, 1, 2, 3, 5, 8, 13" napisz program wyświetlający "n-ty wyraz w ciagu". Bo w tak skonstruowanym zagadnieniu sprawdzasz czy kandydat potrafi wykorzystać posiadaną wiedzę do problemu który napotkał.

Klepanie crudów to jednak spora część naszego świata (przez crud rozumiem również obsługę czujnika temperatur komunikującego się po i2C, takze tego..). Wydaje mi się że pobranie danych ze storage, obrobienie ich i wyświetlenie użytkownikowi końcowemu sprawdza zdecydowanie więcej bo jak zobaczę tam Singletona albo jakąś pulle wątków to wiem że trafiłem na ogarniętego człowieka (to się może pojawić w rozmowie o tym zadaniu itp.). Są pewnie ludzie co czytali coś o architekturze i rozdzielą sobie to na jakąś warstwę logiki, danych i widoku. Niektórzy jakiś wyjątek złapią albo obsłużą przypapadek krańcowy.

Powtórzę raz jeszcze. Paradoksalnie to Ci co w tym wątku postulują nie robienie zadań jak w/w ciagu fibonaciego wymagają większej wiedzy od kandydata.

The Pontiff
  • Rejestracja:ponad 4 lata
  • Ostatnio:10 miesięcy
  • Postów:128
1
ToTomki napisał(a):

A, i fakt, że Ty się czegoś nauczyłeś z mądrej książki i do tej pory pamiętasz, to dotyczy on tylko Ciebie. Wiele osób czyta mądre książki i zaraz treści nie pamięta. Co więcej, to nie jest nietypowa sytuacja tylko tak wygląda pamięć normalnej osoby. Uważam że super, że masz dobrą pamieć, zazdroszczę Ci jej, ale rozciąganie Twoich zdolności na całą populację po prostu pokazuje, że nie potrafisz podejść do tematu z dystansem.

Ale co mam specjalnego pamiętać, lista to ciąg elementów z których każdy ma wskaźnik czy referencję na element kolejny albo kolejny i porzedni. Drzewo binarne ma wskaźnik na lewe i prawe poddrzewo. Co więcej mam pamiętać?

15 latkowie programujący fibonaciego z pamięci? Nie wiem kto tu odleciał troszkę.

A co niby innego programują 15 latkowie zanim nauczą się co to są tablice? Wczytaj dwie liczby i wypisz sumę, wczytaj N i wypisz wszystkie liczby parzyste od 0 do N, wczytaj N i wypisz N-ty element ciągu arytmetycznego albo Fibonacciego.

YourFrog2 napisał(a):

@The Pontiff: Tylko widzisz ja postuluje w tym temacie że to nic nie sprawdza. Według mnie jedyne co tutaj sprawdziłeś to czy kandydat potrafi z pamięci pierdzielnąć nie wydajną implementacje ciągu fibonaciego którego uczył się x lat temu. Mało tego ten kod jest tak oklepany że znajdą się osoby które go pamiętają 1:1 i ich nie odsiejesz.

Oczywiście że sprawdza warunek konieczny jakim jest umiejętność napisania jakiegokolwiek elementarnego kodu. To jest warunek konieczny do dalszego sprawdzania kandydata a nie wystarczający. Wystarczający to by były jakieś cuda jak na rekrutacji do Google ale nie o tym mówimy bo nie potrzebujemy geniusza od algorytmiki tylko zwyczajnego programisty.

Zobacz pozostałe 5 komentarzy
The Pontiff
"bo wątek był o pamiętaniu algorytmów, a nie struktur danych" napisanie Fibonacciego to nie jest pamiętanie algorytmu tylko napisanie go od zera na podstawie specyfikacji
BluzaWczolg
BluzaWczolg
Napisanie go od zera na podstawie specyfikacji to co innego co pisanie go z pamięci i przekształcenie z rekurencyjnego na iteracyjny.
YourFrog2
Oj no nie wiem czy przepisanie drzewa binarnego po wstawieniu elementu do niego to taki easy case by dawać go juniorowi na rozmowie.
The Pontiff
Dlatego przedmiotem dyskusji jest banalny Fibonacci.
The Pontiff
"Napisanie go od zera na podstawie specyfikacji to co innego co pisanie go z pamięci i przekształcenie z rekurencyjnego na iteracyjny." przecież to to samo. TO SAMO. Nie trzeba niczego przekształcać. Trzeba napisać naiwną implementację jak moja.
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
2
p_agon napisał(a):

Klepcie sobie dalej REST-y ale u mnie macie od razu wylot z interview bo nie potraficie programować.

A BTW, dlaczego większość specjalistów jak zahaczy o rekrutacje z tej drugiej strony to później stara się wszystkim udowodnić ze ma większego JSONA-a?

Bo #15k nie wystarczyło, żeby podtrzymać ich kruche ego ;) . A tak poważnie, to możliwe, że dalej w ich przekonaniu nie wolno być przeciętnym i zapomnieli jak to jest zaczynać karierę i się uczyć.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
Zobacz pozostałe 10 komentarzy
PerlMonk
Po co?
somekind
@PerlMonk: bo jeśli przerasta Cię to zadanie, to żadnego normalnego zadania w pracy nie będziesz w stanie wykonać.
PerlMonk
@somekind czyli zebrała się jakaś komisja programistów, którzy ustaliła kanon pytań na rozmowy, i ustaliła niezbędnik rekrutera?
somekind
Uważasz, że programisty nie można pytać o użycie języka programowania?
W0
@PerlMonk: zaden niezbędnik rekrutera, ty na rekrutacjach możesz sobie pytać choćby i o to jakim zwierzęciem się czuje. Ja wolę zadać takie proste zadanie na start bo uważam, że jeśli ktoś nie radzi sobie z najprostszymi zadaniami to i trudnych też nie udźwignie.
YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
0

@The Pontiff: Z tak postawioną tezą że jest to pytanie "rozgrzewkowe" żeby były pierwsze koty za płoty albo w ramach small talku to faktycznie się zgodzę.

Np "Dzień dobry, tak z ciekawości aby ustalić poziom naszej rozmowy powie nam Pan/Pani coś o dowolnie wybranym przez Pana/Pani algorytmie, strukturze danych albo o tym jak działa komputer. Jeśli nie to ja tutaj mam dla Pana/Pani ciąg liczb i jakby mi Pan/Pani mógł o nim coś opowiedzieć albo napisać program jak ten ciąg jest generowany". To fajny patent na zrekrutowanie ogarniętego juniora.

edytowany 1x, ostatnio: YourFrog2
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
9

Jeśli chodzi o zadania rekrutacyjne to moim zdaniem dużo lepsze od 17 metod liczenia fibonacciego (ciekawe ile osób da radę rozwiązać to jako jednorodne równanie rekurencyjne / funkcje tworzącą i wyprowadzić wzór który daje n-ty wyraz w O(1), albo wyprowadzić z palca wzór macierzowy na O(logn)), są zadania w stylu tych z Advent of Code. Sam chyba zaczne dawać ludziom adwentowe zadania :) Czemu uważam ze są dobre?

  1. Są proste i da się je zrobić w 15-20 minut
  2. Wymagaja zrozumienia wymagań
  3. Wymagają sparsowania jakiegoś dziwnego formatu na wejściu
  4. Wymagają ogarnięcia jakichś prostych przekształceń danych, zwykle jakiejś listy, mapy, seta, grupowania, zliczania
  5. Wymagają wygenerowania wyjścia w zadanym formacie

Czyli generalnie sprawdzaja praktycznie dowolny task z jakim spotka sie programista.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Zobacz pozostałe 9 komentarzy
enedil
@jarekr000000: jako junior tutaj zastrzegam sobie prawo do arbitrażu w tematach złożoności oblczeniowej, kwestii która tobie, seniorowi z pewnością jest obca.
enedil
Notacja dużego O użyta do złożoności obliczeniowej przecież jest definiowana na krokach wykonania maszyny Turinga (ew. możesz znaleźć odpowiednią redukcję z innego ISA). Still, jedną rzecz którą rekruterze oblewają to, że np. uważają, że przemnożenie dowolnych dwóch liczb zajmuje czas stały, i stosują to do liczenia złożoności.
Shalom
@enedil: @jarekr000000 oczywiście to jest O(logn) jak wszystkie obliczenia komputerowe, bo dla odpowiednio dużych liczb nie możemy wykonywać operacji w jednym cyklu procesora ;) Dla jakichś 32, 64 czy 128 bitów czas będzie stały, ale dla arbitralnie dużych liczb już nie, ale to samo można powiedzieć praktycznie o wszystkich operacjach O(1), bo liczba bitów które trzeba przetworzyć to O(logn)
enedil
@Shalom: jak chcesz to liczyć w arytmetyce dokładnej to masz rację, ale wtedy chyba przestaje mieć sens użycie tego wzoru zamiast wzoru macierzowego. A jak chce się być dokładnym, to tak naprawdę powinno wyjść coś w stylu O(logn * log log n), bo wykonujemy log n mnożeń.
Shalom
Nigdzie nie twierdziłem że ma to sens! Chciałem tylko pokazać, ze niektórzy piszący tutaj że fibonacci jest banalny nie są nawet na poziomie, że czegoś nie wiedzą, tylko na poziomie, że nawet nie wiedzą, że nie wiedzą ;)
YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
2

To ja zadam przewrotne pytanie. Co jeśli junior z rozbrajającą szczerością powiedział by "Ale proszę Pana, ja nie umiem algorytmów na napisanie ciągu, a z matematyki to mi słabo w sumie szło w szkole ale tutaj jest moje konto na githubie i projekty". A tam np taki tetris jak @furious programming ostatnio popełnił.

Z całym szacunkiem dla @furious programming bo zrobił kawał świetnej roboty jednak matematyki to tam tyle co kot napłakał. Zapewne ten kandydat po napisaniu mu ciągu by go bez kłopotu w podstawowej implementacji rozpracował ale nie oto mi chodzi. Gość po prostu wie co to lista, struktura, klasa, instancja, umie tym zarządzać, jakoś to dzieli może nawet wie że liczba składa się z bitów, potrafi żąglować bitami itp. no ale pech chciał że w domu się uczył i jakoś z matematyką mu nie po drodze było.

The Pontiff
  • Rejestracja:ponad 4 lata
  • Ostatnio:10 miesięcy
  • Postów:128
1
YourFrog2 napisał(a):

To ja zadam przewrotne pytanie. Co jeśli junior z rozbrajającą szczerością powiedział by "Ale proszę Pana, ja nie umiem algorytmów na napisanie ciągu, a z matematyki to mi słabo w sumie szło w szkole ale tutaj jest moje konto na githubie i projekty". A tam np taki tetris jak @furious programming ostatnio popełnił.

"Nie rozmawiamy o algorytmach tylko o napisaniu programu który dodaje dwie liczby. Proszę spróbować to napisać. Nie chce pan spróbować? Dobrze dziękujęmy skontaktuje się z panem dział rekrutacji"

YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
0

Nie no jakbyśmy chcieli program co dodaje liczby do siebie to by nam pierdzielnął jeszcze ONP.. Ale wyjaśniłbyś mu na czym polega dany algorytm? W sensie rzucałbyś wędkę żeby zrozumiał problem który ma rozwiązać? Może odejdźmy od fibonaciego mówiąc po prostu jakiś algorytm? Bo to w zasadzie NIE MA znaczenia którego kandydat nie zna. Po prostu spotkał się z tym co my się spotykamy przy normalnej pracy czyli nie umiem ale się nauczę.

Trzeba tylko znów zaznaczyć że autor wątku mówił o juniorach czyli od tych ludzi nie wymagamy znajomości wszystkich narzędzi, składni językowych, płynnego poruszania się po bibliotekach itp.

ToTomki
  • Rejestracja:około 7 lat
  • Ostatnio:dzień
  • Postów:1320
2

@The Pontiff:
Z góry założyłeś, że zadanie polega na podaniu któregoś elementu ciągu fibonacciego. Nie dopytałeś. Rekruter mówi, że chodziło mu o napisanie kodu na otrzymanie ciągu fibonacciego do n-tego elementu. W tym momencie oblałeś.

Pozdrawiam.

.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
1

Tak mi się przypomniało odnośnie tej dyskusji. Polecam sobie obejrzeć w wolnej chwili.


Software is like sex: it's better when it's free.
- Linus Torvalds
ToTomki
Spodziewałem się, że ktoś znowu Seligę wrzucił ;D
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:2 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
3

Rozwiązanie rekurencyjne nie musi być wolne :P

Kopiuj
import java.util.*;

public class WriteOnly{
  private static long  fib(Map<Integer, Long> cache, int n) {
      return n == 1 || n == 2 ? 1 : cache.computeIfAbsent(n, k -> fib(cache, n-1) + fib(cache, n-2));
  }

     public static void main(String []args){
        Map<Integer, Long> cache = new HashMap<>();    
        System.out.println("WriteOnly " + fib(cache, 100));
     }
}

I wersja na BigInteger:

Kopiuj
import java.util.*;
import java.math.*;

public class WriteOnly{
    

  private static BigInteger  fib(Map<Integer, BigInteger> cache, int n) {
      return n == 1 || n == 2 ? BigInteger.ONE : cache.computeIfAbsent(n, k -> fib(cache, n-1).add(fib(cache, n-2)));
  }

     public static void main(String []args){
        Map<Integer, BigInteger> cache = new HashMap<>();    
        System.out.println("WriteOnly " + fib(cache, 1000));
     }
}

Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
Zobacz pozostałe 11 komentarzy
KamilAdam
trampolina w Javie, nigdy tego nie pisałem. Znalazłem, ale średnio rozumiem https://java-design-patterns.com/patterns/trampoline/
YourFrog2
@jarekr000000: ;o ide się dokształcić :D
nalik
Taa, pod tym linkiem przykład podpisany jako użycie trampoliny do liczenia ciągu fibonaciego, podczas gdy liczy silnię. Ehh Javowcy ;D ale to pewnie specjalnie patrząc na real use case ;D
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)