10 lipca 2010

Kolejna rozmowa

Wielka nadzieja na pracę I wielkie rozczarowanie. Sam jestem sobie winien! Trudno, szukamy dalej. Otóż wczoraj byłem na kolejnej rozmowie rekrutacyjnej, tym razem bardziej zaawansowanej, ponieważ szukali starszego programisty. Problem w tym, że takiego od wszystkiego :/ Cóż. Zaczęło się w czwartek, po ponad tygodniu przerwy napisali maila, czy mógłbym wpaść w piątek albo poniedziałek na rozmowę. Ostrzegli, że będzie test z wiedzy i krótki program do napisania. Odpisałem więc, że piątek o 14 mi pasuje i na tym stanęło.
Stąd w piątek brak czasu na napisanie wpisu. Od rana przygotowywałem się i wyszedłem o 11.30 z domu. Na miejscu byłem prawie o 13 ponieważ sprzed nosa uciekł mi autobus i czekałem na następny 30 minut. Chciałem wsiąść w taki jeden, który przyjechał, ale facet powiedział „do centrum? u mnie zapłacisz 6$, za mną za jakieś 10 minut jedzie inny i zapłacisz 4$”. Więc poczekałem, w końcu zapasu czasowego miałem mnóstwo.

Wylądowałem na dworcu w centrum, gdzie oczywiście skorzystałem z darmowego internetu. Poczytałem chwilę o możliwych pytaniach, rozwiązałem bardzo pozytywnie jeden test online i sprawdziłem oczywiście aktualne oferty pracy. 13.50 wpadłem do tamtej firmy. Trochę przerażony wyszedłem z windy od razu na open-space, gdzie 100 milionów oczu od razu popatrzyło się na mnie ;) Jedna Pani podeszła, zapytała czy może pomóc i skierowała mnie do biura Marka. Tam chwilę porozmawialiśmy i przyszedł Dmitry, rosyjski team leader IT. Dmitry mówi po angielsku jeszcze gorzej niż ja, a jak przyniosłem test z pytaniami do domu, to dziewczyny zapytały, czy pisał to chińczyk, bo to „chiński angielski” :D Cóż, zabrali mnie do pokoju zwierzeń we dwójkę i zaczęli przepytywać. Pierwsze kilka pytań poszło mi fantastycznie. Potem zaczęły się schody.
Pytanie: Jakich narzędzi użyjesz do optymalizacji strony (poza częścią wizualną html/css/js). Za cholerę nie znam żadnych, więc szczerze odpowiedziałem. Pierwsze słyszę w ogóle, żeby było coś, co sprawdza optymalność kodu?! Niby jak miało by to robić? Dzisiaj muszę wygooglać o co come on.
Kolejne pytanie, jakie są różnice pomiędzy silnikiem MYISAM i InnoDB. Nożesz k. :p pamiętam to pytanie albo ze studiów, albo już z jakiejś rozmowy o pracę. Wiedziałem, że jest to masakrycznie oczywiste, ale oczywiście nie pamiętałem :] Rewelka. Powiedziałem, że używam głównie MYISAM, ponieważ jest najbardziej uniwersalny. Dla ciekawskich, tą najważniejszą różnicą jest to, że na MYISAM nie da się wykonywać transakcji! Ehh, takie oczywiste…

Cóż, przejdźmy do przykładowego programu. Zostawili mnie na 30 minut z poniższym przykładem. Zrobiłem ok. 70%, na resztę brakło mi czasu :( Jeśli ktoś chce się przetestować, to szczerze, niech sobie weźmie to zadanie, bez przemyślenia jak to zrobić, po prostu od czasu przeczytania 30 minut. Nie wiem jaki trzeba mieć zajebisty pomysł na rozwiązanie, żeby zmieścić się w czasie… Ja niestety pierwsze 5-7 minut straciłem na próby z wyrażeniami regularnymi, toteż sam jestem sobie winien. Być może zrobiłbym więcej w tym czasie… ok. zadanie:
Mamy zmienną $randSentence = „{Please|Just} make this {cool|awesome|random} test sentence {rotate {quickly|fast} and random|spin and be random}”
Zadanie polega na tym, żeby wybrać słowa w nawiasach {} losowo i wyświetlić powstałe zdanie, przy czym znak | oddziela możliwości (oznacza „lub”). Tak więc mój programik potrafił poradzić sobie z pierwszymi dwoma nawiasami i zatrzymywał się na wewnętrznym (nawiasie w nawiasie). Zostawiłem tak jak było.
Przyszedłem do domu, otwarłem laptopa, włączyłem stoper i zacząłem jeszcze raz. Przy czym teraz miałem jasny pomysł na to jak to zrobić. Co zabawne, napisanie takiego uniwersalnego programiku, który może mieć nieskończoną ilość nawiasów w nawiasie, czyli to co planowałem zrobić na rozmowie, zajęło mi 52 minuty! Za jasną cholerę nie wiem jak można by się zmieścić bez przemyślenia jak to zrobić (ewentualnie bez wcześniejszego doświadczenia z takimi template-ami) w tych 30 minutach przy okazji w wielkim stresie czasowym :/
Tak więc krótkie podsumowanie. Mark wydawał się być bardzo uprzejmy, uśmiechnięty i wydaje się, że mnie polubił. Dmitry od początku wszedł z grobową miną i z taką wyszedł. Nie sprawił wrażenia sympatycznego człowieka. Dlatego jakbym miał obstawiać totolotka, to Mark byłby na tak, Dmitry na nie, przy czym Dmitry ma decydujący głos jako team leader. Mark jest dyrektorem, ale już nie programuje, więc obstawiam że mi podziękują w przyszłym tygodniu.
Mimo wszystko jako niezwykle uparte zwierze, zaraz po tym jak napisałem, czyli jakieś 2 godziny po wyjściu od nich, przesłałem im gotowy program, z dopiskiem, że do tego zmierzałem, ile mi zajęło i podziękowaniami za rozmowę. Mimo wszystko raczej nie będą brali tego pod uwagę :p

Tyle podsumowania z wczoraj. W sumie zajęło mi to cały dzień, przy okazji marnując fantastyczną pogodę, temperaturę ok. 18 stopni i przepiękne słońce. Dodatkowo wysłałem maila do Sama, z ofertą pracy z Wellington, pod którą było wyraźnie napisane „prosimy tylko kandydatów z zezwoleniem na pracę”. Zapytałem, czy jest sens wysyłać na takie ogłoszenia swoje CV i czy może chciałby wysłać on, jako agent rekrutacyjny. Odpisał mi zaraz, że najlepiej jeśli on po prostu tam zadzwoni i mnie zarekomenduje! :O szok! Więc odpisałem ok., w takim układzie ja wyślę CV. Sam odpisał, że właśnie przeczytał moje CV jeszcze raz i pasuje pod tą ofertę, nic nie trzeba zmieniać i że dzwonił, ale nikt nie odebrał. Mam wysłać CV i krótki list motywacyjny. Tu pojawia się problem, bo listu motywacyjnego nie mam :p więc dzisiaj będzie okazja taki stworzyć. Mam nadzieję, że dziewczyny mi pomogą z gramatyką, bo akurat pierwsze dokumenty wysyłane do firmy muszą być śliczne i bezbłędne. Z tym, że jest to oferta w Wellington.

W przyszłym tygodniu będzie dokładnie połowa mojego pobytu tutaj, czyli mija 1,5 miesiąca. To chyba najwyższy czas, żeby zastanowić się co dalej. Oficjalnie to 4 rozmowa rekrutacyjna. Z pierwszej nie mam w ogóle sygnału, druga odpowiedziała, że nie, trzecia cisza i wczorajsza, która ma się odezwać w przyszłym tygodniu. Nie wygląda to najgorzej, ale szczerze powiedziawszy wciąż nie ma żadnej nadziei. Ciągle jestem pozytywnie nastawiony, nie ma się co martwić, ale jednak zaczyna powoli palić się lampka ostrożności :) No bo w końcu 25 sierpnia kończy mi się wiza turystyczna i trzeba powiedzieć NZ „papa”, jeśli nic się nie zmieni. Ewentualnie można przedłużyć wizę o kolejne 3 miesiące, ale znów pieniądze przeznaczone na wyjazd to nie worek bez dna, a powrót to kolejne kilka tysięcy. I właśnie dlatego jeszcze jestem bardzo zmotywowany i przekonany, bo czemu miałbym tracić tyle kasy na powrót do kraju, do którego nie chcę wracać, kiedy tutaj znajdę pracę, dostanę wizę i wszystko się ułoży! O!

12 komentarzy:

Anonimowy pisze...

1) {
$r = rand(0,count($wordArr)-1);
print($wordArr[$r]);
} else {
print($word);
}
print(" ");
}
?>

"Umnie dziala", czas 15 minut.

Anonimowy pisze...

Moze tak przejdzie: http://www.wklej.eu/index.php?id=060337bc2b

Ralf pisze...

Niestety nie działa :)
Sęk polega na tym, że "|" nie jest łącznikiem słów :p jest znakiem oddzielającym wszystko przed i wszystko za. Ty sobie uprościłeś zadanie ;)
Twój program rozdziela tylko słowa połączone "|" a to jest poprostu za proste :p

To ma być wybór szablonów, {option1|option2} cokolwiek się tam znajdzie.

Ralf pisze...

Powiem tylko, że ja zrozumiałem dobrze zadanie, które w tłumaczeniu brzmi tak jak napisałem ALE, ale brałem też Twoją opcję pod uwagę i zapytałem ruska, który tylko potwierdził moje rozumienie.

Ralf pisze...

Przy okazji, Twój program powoduje, że to zdanie robi się bez sensu:
"Please make this awesome test sentence rotate quickly and random and be random"

Anonimowy pisze...

Ja nie wiem w czym macie problem... rozbić ten string do tablic, najpierw calosci w nawiasach a potem to co w nawiasach i wyswietlac losowo. Jakby nie bylo to jest robota na 15-30 minut. Nie zdazyles, cos czasem sie zdarza jakies zacmienie ze sie czlowiek wyklada na prostych rzeczach.

Natomiast co do narzedzi optymalizujacych, nazwijmy to backend to np. jakis zend optimizer albo w przypadku optymalizacji sql to jakis cache, ktory cachuje wyniki sql. Sa takich dziesiatki.

Co do myisam i innodb - tak jak napisales, transakcje.

Podsumowujac - jakbys nie pracowal w O. tylko w jakiejkolwiek innej, nawet podrzędnej firmie krzak to zdalbys te testy z palcem w pupie bo takie tematy sa na porzadku dziennym wszedzie.

//Przemo

Anonimowy pisze...

I jeszcze co do tego zadania na 30 minut to mi sie udalo za pierwszym razem w 13 minut, 7 linii kodu:

$randSentence = "{Please|Just} make this {cool|awesome|random} test sentence {rotate {quickly|fast} and random|spin and be random}";
preg_match("#\{(.*?)\} (.*?) \{(.*?)\} (.*?) \{(.*?) \{(.*?)\} (.*?)\}#is", $randSentence, $arr);
$pierwsze = explode('|', $arr[1]);
$drugie = explode('|', $arr[3]);
$trzecie = explode('|', $arr[6]);
$czwarte = explode('|', $arr[7]);
echo $pierwsze[rand(0,1)].' '.$arr[2].' '.$drugie[rand(0,2)].' '.$arr[4].' '.$arr[5].' '.$trzecie[rand(0,1)].' '.$czwarte[rand(0,1)];

// Przemo

DreamCatch pisze...

To zadziała tylko z tym jednym stringiem. A chdziło pewnie o bardziej uniwersalne rozwiązanie. Takie, które da się zastosować do kolejnych tego typu stringów. Można prosto na rekurencji takie coś zrobić. Ale nie wiem czy zmieścił bym się w 30 min, w stresie na rekrutacji...

Ralf pisze...

@DreamCatch - właśnie o to chodziło. Ja napisałem taką funkcję rekurencyjną, która sobie chodzi po stringu i szuka {, jeśli znajdzie, a już ma jedną w pamięci uruchamia sama siebie jeszcze raz, jeśli znajdzie } to uruchamia funkcję dzielącą random().
Tak czy siak zajęło mi ok 50 minut porządnie napisane. W stresie nie ma bata zmieścić się w 30 :/

@Przemo, z tym InnoDB i MYISAM to tylko i wyłącznie wynik stresu. Takie rzeczy się wie, ale tak samo w stresie nie mogłem sobie przypomnieć na czym polega XSS czyli tak jakbyś zapomniał ile jest 2*2 :p

Niestety pomimo wielokrotnego doświadczenia z rekrutacjami i stresem, będąc w zupełnie nowym świecie, mówiąc w innym języku, wszystko jest inaczej. Siedzi się na krześle a w głowie wymieniają Ci się myśli "jak na to pytanie odpowiedzieć" z "jak tą odpowiedź powiedzieć" ;)

Anonimowy pisze...

No tak to jest, jak Ci zalezy na robocie to stres jest wielki :/ Trzeba podchodzic troche w olewajacy sposob, wtedy wypada sie lepiej. Ja wiem, ze latwo jest mowic, gorzej zrobic.
Nie wiem, jakos pocwicz takie rozmowy w sensie, zeby jak najbardziej nerwy opanowac bo tym sposobem to nawet na pomocnika programisty nie masz szans, jak sie bedziesz zacinal na banalnych pytaniach.
Ja wiem po sobie, ze nie mam szans na pomyslna rozmowe kwalifikacyjna jak mi zalezy na pracy :)

A co do tego programiku to co ja podalem poradzi sobie z roznymi stringami tylko trzeba wyrazenie regularne roche zmienic, dac match_all i zamiast stalych wartosci w rand() dac zmienne. Nie trzeba chyba rekurencji.

// Przemo

Anonimowy pisze...

Najlepiej by bylo w Twoim przypadku zeby przyjac sie do pracy bez zadnego wynagrodzenia przez np. 3 miesiace. Tam ludzie chyba uczciwi wiec Cie nie wykorzystaja i wtedy pokazesz co potrafisz, a nawet jesli nie wyjdzie to nabierzesz doswiadczenia i tez doswiadczenia w jezyku technicznym. Cokolwiek, zebys robil w branzy zeby nabrac takiego "obycia" bo inaczej to jesli ktos przywiazuje wage do rozmowy kwalifikacyjnej to nie ma szans... :)

// Przemo

Ralf pisze...

Jeśli chodzi o ćwiczenie, to cały czas "ćwiczę" ;) buduje sobie swoją małą aplikację webową. Przy okazji zrobiłem w wolnym czasie moduł do Drupala (ale to chyba nie progress, to downgrade, ten CMS jest przedpotopowy :p ), teraz bawię się Zendem i tutaj jest pole do popisu.
Ogólnie cały czas siedzę w kodzie, bo mam wpizdziec czasu. Problem w tym, że właśnie na tamtej robocie mi zależało i chciałem jak najlepiej wypaść i zaciąłem się na łatwiznach. A najgorsze rzeczy poszły mi najlepiej :/ Może 4, 5 rozmowa i będzie lepiej, w znaczeniu podejście wyluzowane :)

W każdym układzie opcja z zatrudnieniem się, żeby nabrać doświadczenia niestety odpada - żeby dostać wizę, trzeba dostać kontrakt na min. 12 miesięcy z wynagrodzeniem.

Prześlij komentarz