w ,

FajneFajne Dobre!Dobre! ŚwietnieŚwietnie SmuteczekSmuteczek

Lista pytań rekrutacyjnych na Senior Deva w Norwegii

Parę tygodni temu obiecałem przygotować listę pytań jakie otrzymałem w trakcie technicznej rozmowy rekrutacyjnej (2 etap w procesie mojej rekrutacji na stanowisko Senior Developera w norweskim Software House).
Poniżej lista pytań i zastanawiam się co jeszcze mi umknęło… mój błąd, że nie spisałem ich wszystkich od razu po rozmowie 😅

W miarę możliwości będę również dodawał odpowiedzi na wszystkie pytania jeśli pojawią się one gdzieś w moich materiałach. Sama rozmowa trwała około 2h. Jeśli interesuje Cię całościowy jej przebieg oraz jak i dlaczego poukładałem sobie pytania, które były mi zadawane, to zachęcam do obejrzenia:

Rozmowa rekrutacyjna na programistę w Norwegii

Spring

  1. Rodzaje beanów i ich przeznaczenie
    https://bykowski.pl/spring-boot-czesc-2-adnotacje-obiekty-zarzadzane/ [Dostęp otwarty]
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-2/czym-jest-bean/ [Dostęp dla członków AkademiaSpring.pl]
  2. Jakie znasz zasięgi beanów (@Scope)? Do czego one służą? Podaj przykład wykorzystania.
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-4/bonus-zasiegi-beanow-scope/ [Dostęp dla członków AkademiaSpring.pl]
  3. Czym jest i jak działa Spring Container?
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-2/jak-dziala-kontener/ [Dostęp dla członków AkademiaSpring.pl]
  4. Czym są profile? Jak można je wykorzystać?
    https://bykowski.pl/spring-boot-24-budowanie-profili/ [Dostęp otwarty]
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-2/profilowanie/ [Dostęp dla członków AkademiaSpring.pl]
  5. Czym są interoceptory? Jak można je wykorzystać? Czy są znamiennikiem dla AOP?
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-6/programowanie-aspektowe-teoria/ [Dostęp dla członków AkademiaSpring.pl]
  6. Czym jest repozytorium Spring? Jak z niego korzystać? Jak działają elastyczne formuły?
    https://www.akademiaspring.pl/kurs-spring-boot-2/tydzien-8/elastyczne-formuly-repozytorium/ [Dostęp dla członków AkademiaSpring.pl]
  7. Uwierzytelnienie użytkownika w aplikacji – Sposoby, podejścia, kiedy jakie stosować, jak to rozwiązać w REST API – omów na przykładzie (Tu głównie chodziło, aby wskazać wady zalety basic auth i zestawić je z JWT. To pytanie zajęło największą cześć rozmowy)
    https://www.akademiaspring.pl/spring-boot-2-skuteczne-zabezpieczanie-aplikacji-edycja-1/modul-5/zabezpieczenie-api-z-wykorzystaniem-basic-authentication/ [Dostęp dla członków AkademiaSpring.pl]
    https://www.akademiaspring.pl/spring-boot-2-skuteczne-zabezpieczanie-aplikacji-edycja-1/modul-5/niebezpieczenstwa-wynikajace-ze-stosowania-basic-authentication-dla-api/ [Dostęp dla członków AkademiaSpring.pl]
    https://www.akademiaspring.pl/spring-boot-2-skuteczne-zabezpieczanie-aplikacji-edycja-1/modul-6/tworzenie-api-zabezpieczonego-przez-jwt/ [Dostęp dla członków AkademiaSpring.pl]

DevOps

  1. Czym jest CI/CD – opisz przeznaczenie i flow
    https://www.youtube.com/watch?v=Ria4mj8XCt8&list=PLUtcRmGoaP25uMppQouFXWLcj3KXTuZWu [Dostęp otwarty]
  2. Jak wygląda proces wytwórczy oprogramowania?
    To pytanie nawiązywało do poprzedniego, polegała opowiedzeniu jak wygląda praca w zespole – że programista robi pusha, później trafia do do CI, w zależności od polityki wdrażane jest na różne środowiska dev/test/stage/ z różnymi profilami, robienie CR po drodze itp…
  3. Czym jest konteneryzacja?
    https://bykowski.pl/docker-konteneryzacja-wirtualizacja-emulacja-i-symulacja/ [Dostęp otwarty]
  4. Czym jest Docker? – polecenia, zastosowanie, przykłady, działanie
    https://www.youtube.com/watch?v=cqIu1h8FkMw [Dostęp otwarty]
  5. Czym jest Kubernetes? Opisz jego możliwe zastosowania.
    Nie mam materiału na ten temat, ale zrobimy jakiś LiveStream o tym 🙂
  6. Cloud – może doświadczenia z poszczególnymi providerami (bardzo otwarte pytanie)

Algorytmika

Same zadania nie były trudne, chociaż w obliczu stresu i presji wymagały one opanowania (czyli czegoś czego zupełnie nie mam 😅). W skrypcie rekrutacyjnym do którego miałem później dostęp wyczytałem, że ta część miała za zadanie:

Things to clarify: Problem-solving, time and stress management, communication and planning skills

Czyli bardziej rozplanowanie zadań i podejścia do nich niż jakościowy kod. Same algorytmy przygotowałem poprawne, jednak kod nie kompilował mi się w żadnym przypadku – rozwiązania musiałem pisać w środowisku, które nie wspierało podpowiadania składni, formatowania tekstu, ani podkreślania linii kodu, kiedy coś pominiemy. Czasu było niedużo, więc w zadaniach, które dostałem nie obsłużyłem walidacji danych.

  1. Print the numbers from 1 to 100 and print „Fizz” for multiples of 3, print „Buzz” for multiples of 5, and print „FizzBuzz” for multiples of both
  2. Given two arrays of integers, compute the pair of values (one value in each array) with the smallest (non-negative) difference. Return the difference.
    Input: (1, 3, 15, 11, 2), (23, 127, 235, 19, 8) Output 3, the pair is (11, 8)
  3. Given a list of people with their birth and death years, implement a method to compute the year with the most number of people alive. You may assume that all people were born between 1900 and 2000 (inclusive). If a person was alive during any portion of that year, they should be included in that year’s count. For example, Person (birth = 1908, death = 1909) is included in the counts for both 1908 and 1909
  4. Miałem jeszcze zadanie spoza listy – dlatego nie mam do niego treści, ale zadanie polegało, na odwróceniu String’a. np. „Boo” zamieniało na „ooB”. To zadanie najpewniej miało sprawdzić czy zrobię to wykorzystując pętle, czy API StringBuildera 🙂

Podsumowanie

Luźno się rozmawiało i meeeega przyjemnie 🙂 Podobało mi się, że osoba odpowiedzialna za rozmowę techniczną nie narzucała mi presji i poziomu stresu, lecz bardzo pozytywnym nastawieniem skutecznie go zbijała.
Na niektórych rozmowach rekrutacyjnych można zauważyć, że rekruter przyjmuje dosadny ton i traktuje nas z pozycji wyższego od siebie – czasem, żeby podbudować sobie ego. Czasem, tylko po to, aby sprawdzić czy poradzimy sobie w sytuacji stresowych (jeśli w danej firmie występują one często i wymagany jest kandydat, który sobie z tym poradzi). Warto mieć tego świadomość, bo mnie jako dawnemu Juniorowi nikt tego nie powiedział i z wielu rozmów kwalifikacyjnych wychodziłem z podkulonym ogonem i utratą własnej wartości 😔. Często przy utracie własnej wartości jesteśmy w stanie się zgodzić na niższe wynagrodzenie, które pierwotnie sobie zakładaliśmy więc również warto jest o tym pamiętać 🙂

Wracając! Na dobrą sprawę, każde pytanie wypływało z poprzedniego i nie wyglądało to jak gradobicie. Na potrzeby tego artykułu wyłuskałem rzeczy o które mnie pytano, tak, aby sama forma była czytelna i prosta. Jednak przede wszystkim była to dyskusja, która miała za zadanie sprawdzić moje doświadczenie, a nie jedynie umiejętność odpowiedzenia na każde pytanie bezbłędnie 🙂

BTW: Na temat czystej Java nie miałem żadnego pytania, tak samo nie spytano mnie o wzorce projektowe, na co w sumie czekałem.
Coś jeszcze o Hibernate było jak nic… ale już nie pamiętam. Może jeszcze mi się przypomni 😁
Daj znać czy pytania dostałem trudne czy łatwe 🙂

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

NAJEFEKTYWNIEJSZA DROGA DO TWORZENIA REST API NA PRZYKŁADZIE SPRING BOOT

utrzymanie w norwegii

Czy opłaca się pracować w Norwegii? Zarobki programisty a koszty życia.