Rekrutacja przez telefon.

0

Cześć.
Czy tylko mnie się wydaje, że pytania techniczne przez telefon są bez sensu?

Nie wiem, czemu, ale aplikuję do firmy A Oddział w Katowicach, poszedłem, napisałem test i okazało się, że był sensowny, przejrzysty i fajny. Konkretne pytania, konkretne zadania.

Tydzień później dzwoni do mnie facet z Firmy A z oddziału we Wrocku i wypytuje o teki pierdoły, że głowa boli.
Nie wiem, czy chce mnie pognębić, czy ja faktycznie nie mam takiej wiedzy.
Niby mam 5lat doświadczenia w javie, ale jakoś specjalnie nie zastanawiam się, czy jak dwoma classLoaderami załaduję te samą klasę w tym samym programie to czy będą równe. Może daletgo, że w pracy nie mam czasu zastanawiać się, co by było gdybym odpalił chińską maszynę wirtualną javy na komputerz ez z językiem lapońskim. Ale tego typu kur@!#@!# pytania są zadawane przez telefon.

Ma ktoś podobne doświadczenia?

0

Niby mam 5lat doświadczenia w javie, ale jakoś specjalnie nie zastanawiam się, czy jak dwoma classLoaderami załaduję te samą klasę w tym samym programie to czy będą równe.

Takie pytanie pokazują czy na prawdę rozumiesz jak działa JVM czy tylko nauczyłeś się obsługiwać frameworki Javowowe bez zrozumienia. Tak samo programistom C++ zadaje się często pytania o warstwy poniżej C++, czyli np. jak jest implementowane przekazywanie argumentów do funkcji na poziomie assemblera itd. Wiedza z poziomów niższych (w twoim przypadku JVM) przydaje się rzadko ale jak już się przyda to jej brak jest bardzo bolesny.
Moja rada to po prostu przysiądź w domu i poczytaj jak działa JVM, bo w pracy zdobywając kolejne x lat doświadczenia raczej się tego nie dowiesz.

0

Aha, dodam że na pierwszej rozmowie jaką kiedykolwiek miałem, na programistę Javę też dostałem takie pytanie ;) I nie była to rozmowa telefoniczna.

0

Ok. Fajnie jest znać takie ciekawostki.
Serio po SCJP też znałem kilka "knifów", ale czy to, że nie-wiem-w-tej-chwili,-ale-mogę-się-dowiedzieć-z-google'a o jakiejś "ciekawostce" to świadczy, że jestem złym programistą?

Wiem co to jest JPA, potrafię zdefiniować Encję.
Potrafię skonfigurować JBoss i tomcata, tak, żeby zrobić klaster i loadbalancer - nie wiem, czy po każdym requeście loadbalancer strzela do tego samego serwera, czy do innego, to pewnie zależy od konfiguracji.
Nie wiem, jak zabezpieczyć się przed bleble injection w ajaxie (notabene, jak ktoś sepleni, to nie powinien chyba przeprowadzać takiej rekrutacji?), bo nie było mi to potrzebne nigdy.

Nie kojarzę jak działa HashMapa, czy HashTablica, wiem, że są i wiem, kiedy ich użyć, nie obchodzi mnie, czy w środku są kubełki, listy, czy drabinki, czy mały krasnoludek który to kataloguje i czy jak każda moja klasa będzie zwracała hashCode = 51 to czy sie zesr!@#, czy sie zżyg@!#@!.
Wiem, ze jak definiuję equals, to dobrą praktyką jest definiować hashCode.

Wiem, że jeśli zostanę obudzony w nocy i każe mi ktoś coś zrobić, to pierwszą moją myślą będzie, jak to zrobić w javie.
Nie wiem czy jak odpalę instancje klasy w dwóch class loaderach (bo po jaki ch$% mi taka wiedza), to czy będą równe, ale wiem, jak zrzucić dumpa pamięci i javacore z systemu wartego 2,5 mld zł.
Wiem, jak dodać klasy javy do zarządzanych komponentów w systemie, który zarabia 400tyś zł/h dla ogólnopolskiego banku.

Więc jak jeszcze raz ku%% ktoś zadzwoni i będzie zadawał pytania z d%$5 wzięte, to mu powiem, żeby się dał wypałować.

Czasem ma wrażenie, że powinienem powtarzać do poduchy książkę o SCJP, albo coś w ten deseń.
Osobiście jestem za testami typu fizzbuzz, czyli coś banalnego, żeby sprawdzić, czy facet umie javę.
Albo testem na zasadzie próbnej aplikacji.

Bo pytania typu jaki rozmiar buta ma Goessling w moim mniemaniu świadczą o braku pomysłu na rekrutację.
poza tym zwróćmy uwagę, że każdy z nas wywodzi się z innej kultury, innego miasta, innej uczelni.
Może we Wrocławiu każą uczyć się na studiach na pamięć budowy obszarów pamięci w javie.
Ja może mam tego pecha, że mnie nikt nie uczył Javy, więc dla mnie ważne było, jak zrobić, żeby program działał, a nie czy jest tam ciąg 11110001 czy 1001001 bo to mi zwisa....

Ufff wyżyłem się :D.

0

Nie kojarzę jak działa HashMapa, czy HashTablica, wiem, że są i wiem, kiedy ich użyć, nie obchodzi mnie, czy w środku są kubełki, listy, czy drabinki, czy mały krasnoludek który to kataloguje

Szkoda, że ktoś z pięcioletnim doświadczeniem nie zna podstaw algorytmiki.

0

Nie kojarzę jak działa HashMapa, czy HashTablica, wiem, że są i wiem, kiedy ich użyć, nie obchodzi mnie, czy w środku są kubełki, listy, czy drabinki, czy mały krasnoludek który to kataloguje i czy jak każda moja klasa będzie zwracała hashCode = 51 to czy sie zesr!@#, czy sie zżyg@!#@!.

No właśnie to jest tzw. "magiczne" myślenie mocno tępione wśród programistów. IMHO jeżeli nie masz potrzeby wiedzieć jak coś na prawdę działa to jesteś tylko zwykłym klepaczem. A niektóre firmy nie chcą klepaczy u siebie.
Zobacz jak wygląda rozmowa kwalfikacyjna w google na programistę Java. Nikt cię nie będzie pytał o konfigurację load balancera tylko każą ci zaimplementować na kartce papieru skalowalną tablicę haszującą. I tak się składa, że to właśnie w google pracują jedni z najlepszych programistów, którzy zbudowali najlepiej skalowalny system informacyjny.

0

Black, sorry, ale sie bardzo mylisz co do tego co jest Ci potrzebne a co nie. Jednak poczytaj cos do poduchy.

0

Chyba macie rację.

Dzięki przydał mi się kubeł zimnej wody na głowę.

Muszę nauczyć się więcej pokory i tego, że człowiek uczy się całe życie.

0

No i jak z tą równością klas? W kodzie nie widzę przeciążenia metody equals w klasie Class, więc jak na mój gust to te same klasy z dwóch różnych ClassLoaderów będą zwracać false przy porównaniu. W sumie to nawet logiczne, bo ClassLoader może modyfikować/ generować bajtkod/ pola w locie, więc ciężko zagwarantować equalsa.

0

Sa to rozne klasy. Klase definiuje jej 'binary name' oraz classloader ktory ja wczytal. Poszukaj dobrze, a znajdziesz w dziale Java pytania dlaczego komus rzutowanie nie dziala i dostaje komunikaty typu: x.y.Z cannot be cast to x.y.Z czy podobne. To jest gdzies udokumentowane, tylko teraz nie wiem gdzie... Sprobuje poszukac w JVM specs.

0

Ok. A pytanie takie:
Jak często używacie kilku classloaderów?

Bo ja szczerze mówiąc ostatnimi czasy jakoś nie bardzo z tego korzystałem...

0

A jeżeli załaduję (i zrobię instancję oczywiście) tą samą klasę w dwóch ClassLoaderach, które są instacją dokładnie tej samej klasy, to wtedy klasy tych obiektów zwrócą true dla equals?

0

Ja aktualnie. W dziale Java rozpisalem sie kiedys (mozliwe ze pod innym nickiem) na temat naszej architektury pluginow pisanych w roznych jezykach - je wlasnie wczytujemy za pomoca osobnego CL, plus tona innych operacji.
Nie jest kwestia 'jak czesto' czegos uzywasz, tylko czy jesli musisz, to wiesz 'co' i 'jak'. I najlepiej jeszcze 'czy'.

0
Wibowit napisał(a)

A jeżeli załaduję (i zrobię instancję oczywiście) tą samą klasę w dwóch ClassLoaderach, które są instacją dokładnie tej samej klasy, to wtedy klasy tych obiektów zwrócą true dla equals?

Zwroca false, poniewaz: a) jesli nie przeciazasz equals to nie sa te same obiekty b) jesli przeciazasz, to masz na pewno instanceof i rzutowanie - i w takim przypadku instanceof zwroci false. Ale lepiej sprawdz.

0

Ok.
To ja mam pytanie.
Mam sobie klasę A i przeciążam dla niej metodę hashCode tak, że metoda zawsze zwróci np. 3.
jak mam HahTable i oddaję do niego 10 obiektów A, to tak naprawdę będę miał jeden kubełek z listą w środku, czyli mój hashtable zmieni się w listę?

0

100 pytan do?
Bedziesz mial tablice wielu kubelkow, z czego wszystkie poza jednym beda puste. Ile ich bedzie zalezy od konstruktora jakiego uzyjesz i parametrow. W tym jednym kubelku bedziesz mial liste laczona ktora bedzie miala 10 elementow.
Przy czym jesli nie przaciazysz odpowiednio metody equals to nie ma to sensu, poniewaz prze wolaniu get() mimo ze dobry kubelek zostanie znaleziony, to zaden z elementow w kubelku nie bedzie mu rowny, i kazde porownanie da false (jako ze to 10 roznych obiektow). Jesli metoda equals zawsze zwroci true, to w kubelku bedzie tylko 1 instancja. Aha, mowimy o mapie, wiec gdziestam bedzie se jeszcze lezaly wartosci, rozmawiamy o kluczach rozumiem?
Mapa nie zmieni sie w liste, zostaje mapa. mapa instanceof List zwroci false ;d

0

Wiem, że będzie mapą:P
Chodzi o to, że wyszukiwanie w takiej mapie będzie zajmować tyle samo, co w liście - jeśli dobrze rozumiem? :)

0

Bedzie zajmowac ciut wiecej - haszowanie i lookup kubelka, ale reszta juz bedzie zwyklym wyszukiwaniem liniowym.

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