Programiści, idźcie na rozmowy kwalifikacyjne

Programiści, idźcie na rozmowy kwalifikacyjne
Zdjęcie pochodzi z filmu z kanału „Wojownicze ametysty»

Pracowałem jako programista systemów dla Linuksa przez około 10 lat. Są to moduły jądra (przestrzeń jądra), różne demony i praca ze sprzętem z przestrzeni użytkownika (przestrzeń użytkownika), różne programy ładujące (u-boot itp.), oprogramowanie układowe kontrolera i wiele więcej. Nawet czasami zdarzało się, że interfejs sieciowy został przecięty. Częściej jednak zdarzało się, że musiałem siedzieć przy lutownicy i kontaktować się z projektantami płytek drukowanych. Jednym z problemów związanych z taką pracą jest to, że dość trudno jest ocenić poziom swoich kompetencji, ponieważ możesz bardzo dobrze znać jedno zadanie, a drugiego możesz nie znać wcale. Jedynym właściwym sposobem, aby zrozumieć, dokąd się udać i jakie obecnie są nurty, jest pójście na rozmowę kwalifikacyjną.

W tym artykule chciałbym podsumować moje doświadczenia z rozmowy kwalifikacyjnej na stanowisko programisty systemu Linux, specyfikę rozmowy kwalifikacyjnej, stanowisko pracy oraz to, jak ocenić swój osobisty poziom wiedzy komunikując się z przyszłym pracodawcą i czego nie powinieneś oczekiwać od tego.

W artykule będzie zawarty mały konkurs z nagrodami.

Cechy zawodu

Programista systemowy w konkretnej dziedzinie, w której pracowałem, jest kompletnym generalistą: musiałem zarówno pisać kod, jak i debugować sprzęt. I często trzeba było coś samemu przylutować. Od czasu do czasu zdarzało się, że moje poprawki sprzętowe były następnie przekazywane programistom. Dlatego do pracy w tym obszarze trzeba mieć w miarę niezłą bazę wiedzy, zarówno z zakresu obwodów cyfrowych, jak i programowania. Z tego powodu rozmowy kwalifikacyjne na stanowisko programisty systemowego często wyglądają jak poszukiwania specjalisty-elektronika.

Programiści, idźcie na rozmowy kwalifikacyjne
Typowe stanowisko pracy dla programisty systemów.

Powyższe zdjęcie przedstawia moje typowe miejsce pracy podczas debugowania sterowników. Analizator logiczny pokazuje poprawność przesyłanych komunikatów, oscyloskop monitoruje kształt zboczy sygnału. W ramce nie uwzględniono także debugera jtag, który jest używany, gdy standardowe narzędzia debugujące już nie dają sobie rady. I trzeba umieć pracować z całym tym sprzętem.

Często zdarza się, że szybciej i łatwiej jest samodzielnie dolutować niektóre elementy i poprawić błędy topologiczne, niż zanieść produkt do instalatora. A wtedy stacja lutownicza pojawi się również w Twoim miejscu pracy.

Kolejną cechą rozwoju na poziomie sterownika i sprzętu jest to, że Google nie pomaga. Często trzeba szukać informacji na temat swojego problemu, a tam są trzy linki, z czego dwa to Twoje własne pytania na jakimś forum. Albo jeszcze gorzej, gdy natkniesz się na pytanie od tego samego biedaka, który zadał je 5 lat temu na liście mailingowej jądra i nigdy nie otrzymał odpowiedzi. W tej pracy, oprócz błędów w projektowaniu zarówno sprzętu, jak i oprogramowania, często spotyka się błędy w dokumentacji - to chyba najpoważniejsze i najbardziej nieprzyjemne problemy. Czasami rejestry są opisane błędnie lub w ogóle nie ma dla nich opisu. Takie problemy można rozwiązać jedynie poprzez naukowe wstawianie liczb losowych do określonych rejestrów (coś w rodzaju odwrotności). Często zdarza się, że procesor zawiera jakąś funkcjonalność, ale nikt poza Tobą nie zaimplementował tej funkcjonalności (szczególnie jeśli procesor jest nowy). A to oznacza chodzenie po polu z grabiami, z których 70% jest przeznaczonych dla dzieci. Ale kiedy istnieje dokumentacja, nawet zawierająca błędy, jest to już postęp. Często zdarza się, że nie ma żadnej dokumentacji, a wtedy spacer po polach minowych zaczyna się, gdy płonie żelazo. I tak, również skutecznie rozwiązałem takie problemy.

Wywiady

Moim zdaniem powinieneś chodzić na rozmowy kwalifikacyjne przynajmniej raz na pół roku, nawet jeśli lubisz swoją pracę i nie chcesz jej zmieniać. Rozmowa kwalifikacyjna pozwala poznać Twój poziom jako specjalisty. Wierzę, że najcenniejsze rozmowy kwalifikacyjne to te, które kończą się niepowodzeniem. To oni najdokładniej wskażą, które wąskie gardła w Twojej wiedzy wymagają poprawy.

Kolejną interesującą cechą jest jakość wywiadów. Takie są moje obserwacje i nie jest to prawda, przyznaję, że miałem po prostu szczęście. Jeśli rozmowa przebiegnie według scenariusza:

  • Opowiedz nam o sobie;
  • Mamy takie zadania;
  • lubisz?

A jeśli po tym dialogu polubicie się, pójdziecie do pracy, to z reguły towarzystwo i zadania okazują się bardzo przyjemne i odpowiednie. Jeśli rozmowa kwalifikacyjna przypomina przechodzenie przez 12 kręgów piekła: pierwsza rozmowa z HR, potem rozmowa z grupą programistów, potem z dyrektorem, kolejne prace domowe itp., to z reguły były to organizacje, w których nie pracowałem. na bardzo długo. To znowu osobista obserwacja, ale z reguły zbyt duża biurokracja i przeciągający się proces rekrutacji pokazują, że w firmie zachodzą dokładnie te same procesy. Decyzje podejmowane są powoli i nieefektywnie. Zdarzały się też sytuacje odwrotne, gdy były kręgi wywiadów piekielnych i firma okazywała się świetna, a gdy po uderzeniu w nadgarstek firma okazywała się bagnem, ale takie przypadki są rzadkie.

Jeśli myślisz, że scenariusz: spotkałem się, powiedziałem o sobie i zostałem zatrudniony, istnieje tylko w małych firmach, to nie. Widziałem to w bardzo dużych firmach, które zatrudniają ponad setki osób i są reprezentowane na rynkach światowych. Jest to normalny mechanizm, zwłaszcza jeśli masz bogate doświadczenie i masz możliwość zadzwonienia do swoich poprzednich pracodawców i zapytania o Ciebie.

Dla mnie jest to bardzo dobry wyznacznik firmy, gdy prosi o pokazanie przykładów swoich projektów i kodu. Poziom wyszkolenia kandydata jest natychmiast pokazywany. A według mnie z punktu widzenia selekcji kandydatów jest to najskuteczniejsza metoda selekcji niż rozmowy kwalifikacyjne. Tak naprawdę możesz nie udać się na rozmowę kwalifikacyjną z podekscytowania lub wręcz przeciwnie, pod wpływem adrenaliny. Ale w prawdziwej pracy nie możesz poradzić sobie z prawdziwymi zadaniami. Spotkałem się z tym również, gdy sam przeprowadzałem wywiady z ludźmi. Przychodzi specjalista, pokazuje się znakomicie, polubiłem go, on polubił nas. A ja męczyłem się z najprostszym problemem przez miesiąc i w rezultacie inny programista rozwiązał go w ciągu kilku dni. Musiałem się rozstać z tym programistą.

Szczególnie cenię sobie zadania programistyczne na rozmowach kwalifikacyjnych. I takie, które trzeba rozwiązać już na spotkaniu, w stresie i przy odrabianiu zadań domowych. Pierwszy pokazuje, jak gotowy jesteś do szybkiego i trafnego rozwiązywania problemów w sytuacji stresowej i awaryjnej. Drugie pokazuje Twój poziom kompetencji i umiejętności wyszukiwania informacji oraz rozwiązywania bieżących problemów.

Najciekawsze prace jakie miałem były w kompleksie obronnym naszego kraju. W trakcie pracy musiałem rozwiązać po prostu fantastyczne problemy, o których komercyjni programiści nawet nie marzyli. Superkomputery, projektowanie routerów, różne systemy walki węzłów – to jest niesamowicie ekscytujące. Kiedy podczas parady widzisz kompleks przechowujący Twój kod, jest to naprawdę miłe. Co dziwne, wywiady z takimi firmami są zwykle bardzo proste, dosłownie przychodzą, jak to się podoba, akceptowane (prawdopodobnie specyfika wojska, które nie lubią za dużo rozmawiać), są nakładane. Wyzwania, przed którymi stanąłem, były naprawdę interesujące i wymagające. Z doświadczeniem okazało się, że świetnie nadają się do nauki bycia wysokiej klasy programistą systemowym. Są też wady i nie są to nawet niskie płace. W tej chwili wynagrodzenie w kompleksie obronnym jest całkiem przyzwoite, z premiami i świadczeniami. Z reguły panuje duża biurokracja, długie godziny pracy, niekończący się pośpiech i praca w dużym stresie. W niektórych przypadkach nie można wykluczyć zachowania tajemnicy, co dodatkowo utrudnia podróżowanie za granicę. Plus oczywiście tyrania szefów i to niestety też się zdarza. Chociaż moje doświadczenie pracy z przedstawicielem klienta jest niezwykle przyjemne. To zbiorowe wrażenie trzech różnych instytutów badawczych i firm związanych z zamówieniami obronnymi państwa.

Zadania na rozmowę kwalifikacyjną

Aby uniknąć nieporozumień i nie narażać firm, z którymi rozmawiałem, nie będę kusić losu i podawać ich szczegółów. Ale jestem wdzięczny za każdy wywiad, za czas, który ludzie mi poświęcili, za możliwość spojrzenia na siebie z zewnątrz. Mogę tylko powiedzieć, że zadania były dla dużych międzynarodowych firm reprezentowanych w różnych krajach.

Opowiem Ci najciekawsze: jakie zadania stawiane są na rozmowach kwalifikacyjnych. Ogólnie rzecz biorąc, najczęstszymi pytaniami dotyczącymi wakatu programisty systemowego i programisty mikrokontrolera są operacje bitowe, we wszystkich możliwych odmianach. Dlatego przygotuj się najlepiej w tym zakresie.

Drugim najbardziej polaryzującym tematem są drogowskazy, to naprawdę powinno cię rzucić w oczy. Żeby Cię obudzili w środku nocy i żebyś mógł wszystko opowiedzieć i pokazać.

Ukradłam w głowie pytania z kilku wywiadów i przedstawię je tutaj, bo uważam je za całkiem ciekawe. Celowo nie daję odpowiedzi na te pytania, aby czytelnicy mogli sami odpowiedzieć na te pytania w komentarzach i mieć trochę proszku podczas przeżywania prawdziwego wywiadu.

Pytania nr 1

I. Znajomość SI. Co oznaczają poniższe wpisy:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

Czy wszystkie wpisy są prawidłowe?

II. Dlaczego ten program zgłasza błąd segmentacji?

int main ()
{
       fprintf(0,"hellon");
       fork();
       return(0);
}

III. Być mądrym.

Jest kij o długości jednego metra. Dziesięć mrówek losowo spada na nią, czołgając się w różnych kierunkach. Prędkość poruszania się jednej mrówki wynosi 1 m/s. Jeśli mrówka napotka inną mrówkę, odwraca się i czołga w przeciwnym kierunku. Jaki jest maksymalny czas oczekiwania, aż wszystkie mrówki spadną z patyka?

Kolejna rozmowa kwalifikacyjna zakończyła się dla mnie porażką i uważam ją za najbardziej przydatną w mojej praktyce programistycznej. To pokazało głębię mojej niekompetencji. Przed tą rozmową każde z tych pytań było mi znane i stale pojawiały się w mojej praktyce, ale jakoś nie przywiązywałem do nich dużej wagi i w związku z tym nie rozumiałem ich dobrze. Dlatego w niesławie oblałem ten egzamin. I jestem bardzo wdzięczny, że doszło do takiej porażki, wywarła ona na mnie najbardziej otrzeźwiający wpływ. Myślisz, że jesteś fajnym specjalistą, znasz się na projektowaniu obwodów, interfejsach i pracy z jądrem. A potem masz prawdziwe pytania i odpływasz. Zobaczmy więc.

Pytania do wywiadu nr 2

Problemy sprzętowe.

  • Jak wywołania systemowe Linuksa są rozmieszczone w języku asemblera na procesorze ARM, na platformie x86. Jaka jest różnica?
  • Jakie są narzędzia do synchronizacji? Których narzędzi do synchronizacji można używać w kontekście przerwań, a których nie i dlaczego?
  • Jaka jest różnica między magistralą i2c a magistralą spi?
  • Dlaczego na magistrali i2c znajdują się terminatory i jaka jest ich wartość?
  • Czy interfejs RS-232 może działać TYLKO na dwóch przewodach: RX i TX? Tutaj odpowiem: Okazuje się, że jest źle, na 9600, ale da się!!!
  • A teraz drugie pytanie: dlaczego?
  • Jaki jest najlepszy sposób rozmieszczenia linii sygnałowych i zasilania w płytach wielowarstwowych i dlaczego? Zasilanie w warstwach, czy linie sygnałowe w warstwach? (Pytanie dotyczy ogólnie wyłącznie projektu obwodu).
  • Dlaczego linie różnicowe mają tory, które wszędzie łączą się ze sobą?
  • Magistrala RS-485. Zwykle na takiej linii znajdują się terminatory. Mamy jednak obwód w gwiazdę ze zmienną liczbą modułów wtykowych. Jakie środki należy zastosować, aby uniknąć kolizji i zakłóceń?
  • Co to są drzewa czerwone i binarne?
  • Jak pracować z cmake?
  • Pytania dotyczące budowania systemu Yocto Linux.

Cele tego wywiadu:

1. Napisz funkcję odwracającą uint32_t wszystkie bity. (praca z bitami jest bardzo popularna na rozmowach kwalifikacyjnych, polecam)
2.

int32_t a = -200;
uint32_t b = 200;
return *(uint32_t) * (&a)) > b;

Co zwróci ta funkcja? (rozwiązanie na papierze, bez komputera)

3. Funkcja obliczania średniej arytmetycznej dwóch liczb int32_t.

4. Jakie są metody wyjściowe w programach, w tym. w strumień błędów.

Trzecia selekcja była stosunkowo nowa i wcale bym się nie zdziwił, gdyby taka ankieta tam jeszcze była, więc nie będę zdradzać firmy, żeby ich nie narażać... Ale ogólnie podam przykład możliwych pytań, a jeśli rozpoznajecie swoje pytania, to pozdrawiam :).

Pytania do wywiadu nr 3

  1. Podano przykładowy kod przechodzenia przez drzewo, należy opisać, co się w tym kodzie dzieje i wskazać błędy.
  2. Napisz przykład narzędzia ls. Z najprostszą opcją „-l”.
  3. Podaj przykład, jak wykonać łączenie statyczne i dynamiczne. Jaka jest różnica?
  4. Jak działa RS-232? Jaka jest różnica między RS-485 i RS-232? Jaka jest różnica między RS-232 i RS-485 z punktu widzenia programisty?
  5. Jak działa USB (z punktu widzenia programisty)?
  6. Tłumaczenie tekstów technicznych z języka rosyjskiego na język angielski.

Udana rozmowa kwalifikacyjna nie jest gwarancją udanej pracy

Ten rozdział chyba nie jest przeznaczony nawet dla programistów (choć dla nich też), ale bardziej dla HR. Najbardziej adekwatne firmy nie przyglądają się szczegółowo wynikom rozmów kwalifikacyjnych. Popełnianie błędów jest normalne; najczęściej patrzą na to, jak dana osoba wie, jak rozwiązywać problemy i rozumować.

Jednym z kluczowych problemów jest to, że kandydat pomyślnie rozwiązuje problemy podczas rozmów kwalifikacyjnych, okazuje się doskonałym specjalistą, ale nie radzi sobie z pierwszym prawdziwym zadaniem. Nie będę kłamać, mnie też to spotkało. Pomyślnie przeszedłem wszystkie kręgi piekła, rozwiązałem wszystkie zadania testowe, ale w rzeczywistych warunkach praca okazała się zbyt trudna z powodu zwykłego braku doświadczenia. Wejście na pokład nie jest najtrudniejszym zadaniem. Najtrudniej jest pozostać na pokładzie tej firmy.

Dlatego częściej ufam firmom, które przeprowadzają proste rozmowy kwalifikacyjne z kandydatem i mówią: już po pierwszym miesiącu pracy będzie jasne, czy jesteś dla nas odpowiedni, czy nie. Jest to najbardziej odpowiednie podejście, tak, może trochę droższe, ale od razu wiadomo, kto jest kim.

Jest jeszcze jedna opcja rozmów kwalifikacyjnych: jeśli pomyślnie ją przejdziesz, ale na podstawie wyników rozmowy kwalifikacyjnej zrozumiesz, że pracodawca jest całkowicie nieodpowiedni. Natychmiast odmawiam pracy, jeśli zaproponowano mi pracę jako indywidualny przedsiębiorca, obiecując duże dochody. Jest to forma uchylania się od płacenia podatków dla działającej organizacji i dlaczego problemy pracodawcy mają martwić mnie jako programistę? Inną opcją są różne agencje rządowe. Byłem na rozmowie kwalifikacyjnej, w wyniku której zaproponowano mi dobrą pensję, ale powiedziano mi, że poprzedni programista odszedł, zachorował, zmarł, z powodu obciążenia pracą zaczął się objadać, a dzień pracy zaczyna się o 8 rano . Z takiego miejsca też pobiegł, żeby mu błyszczały pięty. Tak, HR, pamiętaj, że programiści są gotowi odmówić nawet najsmaczniejszej pracy, jeśli dzień pracy musi zaczynać się wcześnie rano.

Na koniec dam doskonały film z wyborem programisty, którego zrzut ekranu znajduje się na początku tego artykułu. Ja też miałam taką rozmowę nie raz. Jeśli na etapie pytań widzisz tyranię, to szanuj siebie, wstań, zabierz swoje rzeczy i wyjdź - to normalne. Jeśli podczas rozmowy kwalifikacyjnej dział HR i menedżer będą występować na Twój koszt, oznacza to, że firma jest toksyczna i nie powinieneś w niej pracować, chyba że lubisz nieodpowiednich szefów.

odkrycia

Programiści, idźcie na rozmowy kwalifikacyjne! I zawsze staraj się o awans. Załóżmy, że jeśli dostaniesz N pieniędzy, to pójdziesz na rozmowę kwalifikacyjną na co najmniej N*1,2 lub lepiej N*1,5. Nawet jeśli nie przyjmiesz tego stanowiska od razu, zrozumiesz, co jest potrzebne przy tym poziomie wynagrodzenia.
Z moich obserwacji wynika, że ​​decyduje dobra znajomość języka angielskiego, odpowiednio bogate doświadczenie w branży i pewność siebie. Ta ostatnia jest główną cechą, jak wszędzie w życiu. Z reguły bardziej pewny siebie kandydat może lepiej wypaść na rozmowie kwalifikacyjnej, nawet popełniając więcej błędów, niż doskonały, ale bardziej nieśmiały i proaktywny kandydat. Powodzenia w rozmowach kwalifikacyjnych!

Konkurs P/S

Jeśli masz ciekawe przykłady problemów, którymi obciążył Cię HR, zapraszamy do komentarzy. Przygotowaliśmy mały konkurs – warunki są proste: piszesz najbardziej nietypowe zadanie, jakie miałeś podczas rozmowy kwalifikacyjnej, czytelnicy oceniają je (na plus), a po tygodniu podsumowujemy wyniki i nagradzamy zwycięzcę fajnymi gadżetami.

Programiści, idźcie na rozmowy kwalifikacyjne

Programiści, idźcie na rozmowy kwalifikacyjne

Źródło: www.habr.com

Dodaj komentarz