Najlepsze pytania rekrutacyjne dla programistów backendu wraz z odpowiedziami

Poniżej znajdziesz listę pytań rekrutacyjnych dla programistów back-endu wraz z odpowiedziami, z której firmy mogą korzystać podczas rozmów z kandydatami. W zależności od doświadczenia kandydata warto zadawać pytania o różnym stopniu trudności. Nasza lista obejmuje zarówno pytania dla juniorów, jak i dla seniorów backendu. Pomogą Ci one w pełni ocenić doświadczenie kandydata i zatrudnić najlepszych specjalistów.

Programiści szukający wymarzonej pracy również skorzystają na przejrzeniu tej listy i zorientowaniu się, o co mogą zostać zapytani podczas kolejnej rozmowy z rekruterem.

Pytania rekrutacyjne dla juniora back-endu

01

Wyjaśnij styl architektoniczny stosowany przy tworzeniu web API.

Styl architektoniczny tworzenia web API to:

  • HTTP do komunikacji klient-serwer
  • XML / JSON jako język formatowania
  • Proste URI jako adres usług
  • Komunikacja bezstanowa

02

Jaka jest różnica między testem akceptacyjnym a funkcjonalnym?

Testy akceptacyjne - to działanie walidacyjne. Programiści często zadają sobie pytanie, czy zbudowali właściwą rzecz i czy zaspokoi ona potrzeby klienta. Test akceptacyjny pozwala ustalić, czy produkt rozwiązuje problemy, do których został zaprojektowany. Najlepiej może to zrobić użytkownik (klient), wykonując na przykład swoje zadania, w których wspiera go oprogramowanie.

Testy funkcjonalne - to działanie weryfikacyjne. Programiści często zastanawiają się też, czy zbudowali produkt poprawnie i czy spełnia on wymagania biznesowe. Test funkcjonalny pomaga odpowiedzieć na te pytania. Można go użyć, żeby ustalić, czy produkt działa tak, jak myślą programiści.

03

Co oznacza REST i czym jest RESTful API?

REST to skrót od REpresentational State Transfer - styl architektoniczny oprogramowania, który ma kierować projektowaniem i tworzeniem usług webowych.

RESTful API to styl architektoniczny interfejsu programistycznego, który korzysta z żądań HTTP, aby uzyskiwać dostęp do danych i je przetwarzać. API można wykorzystać do pobierania, zapisywania, wysyłania lub usuwania różnych typów danych.

04

Czym jest reverse proxy?

Reverse proxy to rodzaj proxy, które pobiera dane z jednego lub wielu serwerów w imieniu klienta. Dane są następnie zwracane klientowi tak, jakby pochodziły z samego serwera reverse proxy. Reverse proxy jest często używane do równoważenia obciążenia.

05

Jak ograniczyć ryzyko SQL Injection?

Oto kilka wskazówek, które pomagają ograniczyć SQL injection:

Prepared statements z zapytaniami parametryzowanymi. Zawsze upewniaj się, że interpreter SQL odróżnia kod od danych. Nie używaj zapytań dynamicznych, które nie potrafią tego rozróżnić. Korzystaj ze statycznego zapytania SQL i przekazuj dane zewnętrzne jako parametr zapytania. Przy takim podejściu programista musi najpierw zdefiniować cały kod SQL, a dopiero potem przekazać do zapytania każdy parametr.

Korzystanie z procedur składowanych. Procedura składowana jest bardzo podobna do funkcji w C - DBA wywołuje ją, kiedy jej potrzebuje. Ta metoda nie usuwa całkowicie ryzyka SQL injection, ale z pewnością kilkukrotnie je zmniejsza, bo pozwala uniknąć dynamicznego generowania SQL.

Walidacja danych wejściowych na białej liście. Rób to zawsze i udzielaj dostępu tylko wcześniej zatwierdzonym programistom.

06

Jakie są etapy testów wydajnościowych?

  • Zdefiniuj środowisko testowe
  • Zdefiniuj metryki wydajności
  • Zaplanuj i zaprojektuj testy wydajnościowe
  • Przygotuj środowisko testowe
  • Zaimplementuj zaprojektowane testy
  • Przeprowadź określoną liczbę testów
  • Przetestuj ponownie

07

Jakie są zalety korzystania z usług webowych?

Interoperacyjność. Usługi webowe można tworzyć w dowolnym języku programowania. Wynika to z tego, że działają one w sieci, po HTTP / SOAP, i przesyłają dane w XML / JSON.

Wielokrotne użycie. Z jednej usługi webowej może korzystać jednocześnie wiele programów klienckich.

Luźne powiązanie. Kod klienta usługi webowej jest całkowicie niezależny od kodu serwera

Łatwe wdrożenie i integracja, tak jak w przypadku aplikacji webowych.

Jednocześnie może działać wiele wersji usługi.

08

Jaka jest różnica między bazami SQL a MongoDB na wysokim poziomie?

Bazy SQL przechowują wszystkie dane w postaci tabel, kolumn, wierszy i rekordów. Wszystkie te dane są przechowywane w jednym miejscu, w z góry określonym modelu danych, który nie jest wystarczająco elastyczny dla nowoczesnych, szybko rosnących aplikacji.

Bazy MongoDB są pod wieloma względami podobne do SQL, bo również przechowują wszystkie dane w postaci tabel, kolumn, wierszy i rekordów. Główna różnica polega na tym, że MongoDB korzysta z elastycznej struktury, którą łatwo rozszerzać i modyfikować.

09

Jak rozumiesz pojęcie konteneryzacji?

Konteneryzacja to rodzaj strategii wirtualizacji, którą wymyślono jako alternatywę dla tradycyjnej wirtualizacji opartej na hypervisorze.

W procesie konteneryzacji z systemu operacyjnego korzysta jednocześnie wiele kontenerów, więc nie trzeba go klonować dla każdej maszyny wirtualnej.

10

Powiedz, jakie były powody wyboru architektury mikroserwisowej?

Wybrałem architekturę mikroserwisową, bo ma wiele zalet, które czynią ją atrakcyjniejszą od innych architektur. Oto kilka jej głównych korzyści:

  • Mikroserwisy łatwo dostosowują się do nowych frameworków i technologii
  • Awaria jednego procesu w żaden sposób nie wpływa na działanie pozostałych ani całego systemu, oraz
  • Zapewnia stałe wsparcie zarówno dużym firmom, jak i małym zespołom
  • Architekturę mikroserwisową można uruchomić w stosunkowo krótkim czasie

Pytania rekrutacyjne dla mida back-endu

01

Jakie są dobre praktyki testów wydajnościowych?

Większość programistów back-endu korzysta z kilku zaawansowanych technik testów wydajnościowych. Należą do nich:

  • Podczas prac nad back-endem testuj produkt tak wcześnie, jak to możliwe
  • Punkty odniesienia powinny być podstawą oceny, czy produkt odniósł sukces
  • Wszystkie testy powinny być przeprowadzane w warunkach możliwie zbliżonych do systemów produkcyjnych.
  • Odizoluj środowisko testów wydajnościowych od środowiska używanego do testowania jakości produktu

02

Jak rozumiesz pojęcie wysokiej dostępności (HA)?

Dostępność oznacza możliwość uzyskania przez użytkownika programu dostępu do systemu. Jeśli użytkownik nie może dostać się do programu, uznaje się go za niedostępny.

Wysoka dostępność oznacza też, że program będzie dostępny dla użytkowników bez przerw. Wykorzystanie nadmiarowych węzłów serwerowych w klastrze to popularny sposób na wyższą dostępność aplikacji webowych. Dostępność wyraża się zwykle jako procent czasu działania w danym roku.

03

Wyjaśnij, jak rozumiesz właściwość ACID systemu?

ACID to akronim najczęściej używany do opisania właściwości relacyjnego systemu baz danych. Składa się on z 4 osobnych pojęć:

Atomowość - ta właściwość oznacza, że jeśli jedna część transakcji się nie powiedzie, to cała transakcja kończy się niepowodzeniem, a stan bazy danych pozostaje bez zmian.

Spójność - ta właściwość zapewnia, że każda wykonana transakcja przeprowadzi bazę danych z jednego poprawnego stanu do drugiego.

Izolacja - ta właściwość zapewnia, że jeśli dwie transakcje wykonają się jednocześnie, to system znajdzie się w takim stanie, jaki uzyskano by przy sekwencyjnym wykonaniu tych transakcji.

Trwałość - oznacza, że zakończona transakcja nie zmieni swojej postaci ani właściwości, nawet po odcięciu zasilania.

04

Skoro Node.js jest jednowątkowy, to jak obsługuje współbieżność?

W Node programiści mają jeden wątek. Dzięki niemu kod pisze się bardzo łatwo i bez wąskiego gardła. Node korzysta też z wielu wątków POSIX do różnych operacji I / O, takich jak operacje na plikach, DNS czy wywołania sieciowe.

Kiedy Node otrzymuje żądanie I / O, tworzy lub wykorzystuje wątek do wykonania tej operacji. Po jej wykonaniu umieszcza wynik w kolejce zdarzeń. Przy każdym takim zdarzeniu uruchamia się pętla zdarzeń i sprawdza kolejkę. Jeśli stos wykonania Node jest pusty, dodaje wynik z kolejki na stos wykonania.

05

Wyjaśnij istotę zasad DRY i DIE?

Do not Repeat Yourself (DRY) lub Duplication is Evil (DIE) to zasada wytwarzania oprogramowania, według której każda informacja musi mieć w systemie tylko jedną, jednoznaczną i autorytatywną reprezentację. Zasada ma ograniczać powtarzanie wzorców w kodzie i zastępować je abstrakcjami, aby uniknąć nadmiarowości.

06

Jaka jest różnica między indeksem klastrowym a nieklastrowym?

Indeks klastrowy to rodzaj indeksu, którym można zmienić kolejność fizycznego przechowywania rekordów w tabeli. Dlatego tabela może mieć tylko jeden taki indeks.

Indeks nieklastrowy to rodzaj indeksu, w którym logiczna kolejność indeksu nie odpowiada fizycznej kolejności przechowywania wierszy na dysku. Węzeł końcowy takiego indeksu nie wskazuje na dane, lecz składa się z wierszy indeksu.

07

Jakie są różnice między continuous integration, continuous delivery i continuous deployment?

Continuous integration - programiści scalają swoje zmiany z główną gałęzią. Pozwala to uniknąć chaosu, który powstaje, gdy wszyscy czekają z połączeniem swoich zmian z główną gałęzią do wydania produktu.

Continuous delivery to kontynuacja continuous integration, która pomaga szybko udostępniać zmiany klientom. Oznacza to, że oprócz automatyzacji testów zautomatyzowano też proces wydawania i uruchamiania programu.

Continuous deployment - sprawia, że każda zmiana przechodząca przez wszystkie etapy pipeline'u produkcyjnego szybko trafia do klientów.

08

Jaka jest różnica między JOIN a UNION?

Za pomocą SQL JOIN możemy wyszukiwać dane w innej tabeli na podstawie określonych warunków między tabelami.

Operacja UNION pozwala połączyć 2 podobne zbiory danych w zbiór wynikowy zawierający wszystkie dane ze zbiorów źródłowych. UNION nie wymaga żadnych warunków łączenia.

09

Wyjaśnij różnicę między architekturą monolityczną, SOA i mikroserwisową?

Architektura monolityczna jest jak ogromny kontener, w którym wszystkie elementy komponentów oprogramowania są zebrane razem i bardzo ciasno upakowane.

Architektura zorientowana na usługi (SOA) to zbiór usług, które komunikują się ze sobą.

Architektura mikroserwisowa - ten styl porządkuje programy jako zbiór małych, samodzielnych usług.

10

Jak zamienić wartości ​​zmiennych liczbowych bez użycia innych zmiennych?

Dwie wartości ​​a i b można zamienić bez użycia innych zmiennych w następujący sposób:

a = a + b;

b = a - b;

a = a - b;

Pytania rekrutacyjne dla seniora back-endu

01

Wyjaśnij, co oznacza wzorzec API Gateway?

API Gateway to serwer będący jedynym możliwym punktem wejścia do systemu. Przypomina wzorzec Fasada z projektowania obiektowego. API Gateway ukrywa architekturę całego systemu i udostępnia API dopasowane do każdego klienta. To API może mieć też inne funkcje, takie jak uwierzytelnianie, cache'owanie, monitoring i równoważenie obciążenia.

02

Jakie są zalety stosowania indeksu opartego na B-drzewach?

Takie indeksy oszczędzają dużo czasu, bo wyszukiwanie, usuwanie i wstawianie odbywa się w czasie logarytmicznym. Dane przechowywane w B-drzewach łatwo też posortować.

03

Czym jest właściwość BASE systemu?

Ten akronim oznacza Basically Available, Soft state, Eventual consistency. Właściwości BASE to ogólne cechy nowo powstających systemów NoSQL. System BASE nie gwarantuje spójności, ale gwarantuje dostępność. Jego miękka struktura oznacza, że stan systemu może zmieniać się w czasie, nawet bez wprowadzania danych. Wynika to z modelu sekwencyjnego.

04

Jak wyjaśnisz transakcje rozproszone?

Transakcja rozproszona to sytuacja, w której jedno zdarzenie zmienia dwa lub trzy odrębne źródła danych, których nie da się objąć jedną transakcją. W świecie mikroserwisów jest to jeszcze bardziej złożone, bo każda usługa jest jednostką pracy, a najczęściej wiele usług musi współdziałać, żeby biznes odniósł sukces.

05

Dlaczego zawsze należy unikać klasy GOD?

Najskuteczniejszy sposób na zepsucie programu to stworzenie klasy GOD. To klasy, które przechowują ogromne ilości informacji i mają wiele odpowiedzialności. Jedna zmiana w kodzie wpływa na inne części klasy. Prowadzi to do chaosu w usłudze, bo nikt nie odważy się wprowadzić porządnej zmiany.

06

Wyjaśnij, jak rozumiesz testy typu spike?

Testy typu spike to rodzaj testów obciążeniowych, które oceniają wydajność oprogramowania przy gwałtownym wzroście obciążenia. Przez krótki czas obciążenie przekracza oczekiwania.

07

Jaka jest różnica między faking, mocking i stubbing?

Obiekty fake mają działające implementacje, ale wymagają uproszczeń, co czyni je nieprzydatnymi na produkcji.

Stuby to standardowe odpowiedzi na wywołania wykonywane podczas testu. Mogą też zapisywać informacje o wywołaniach - jak stub bramki e-mailowej, który pamięta wiadomości, jakie 'wysłał ".

Mocki to obiekty z zaprogramowanymi oczekiwaniami, które określają szczegóły wywołania.

08

Wyjaśnij różnicę między zasadami YAGNI i KISS?

YAGNI (You ain't gonna need it) - dotyczy analizowania lub implementowania rzeczy, które mogą w ogóle nie być potrzebne. Elegancja algorytmiczna jest oczywiście ważna, ale w większości przypadków zbędna. Trzeba uważać, żeby własnymi pomysłami nie przesłonić potrzeb klienta.

KISS (Keep it simple stupid) mówi, że prostymi systemami znacznie łatwiej zarządzać. Prostota nie zawsze oznacza mniej pracy, bo jej osiągnięcie wymaga dużej wiedzy.

09

Kiedy używać Redisa, a kiedy MongoDB?

MongoDB i Redis to bazy NoSQL, ale powstały w różnych celach. 

MongoDB to zorientowana na dokumenty baza dyskowa, której warto używać tam, gdzie liczy się prostota operacyjna, projekt bez sztywnego schematu i przetwarzanie bardzo dużych wolumenów danych.

Redis to trzymany w pamięci, trwały magazyn struktur danych, którego warto używać, żeby wykonywać typowe operacje przy minimalnej złożoności i maksymalnej wydajności.

10

Podaj przykłady taktyk ograniczania ryzyka, których użyłbyś przy różnych typach ataków na API.

  • Injection: walidowałbym i sanityzował wszystkie dane w żądaniach API oraz ograniczał dane w odpowiedziach, żeby zapobiec niezamierzonemu wyciekowi danych wrażliwych.
  • Cross-Site Scripting (XSS): walidowałbym dane wejściowe oraz stosował escapowanie i filtrowanie znaków.
  • Distributed Denial-of-Service (DDoS): ograniczyłbym liczbę żądań i rozmiar payloadu.

Man-in-the-Middle (MitM): szyfrowałbym ruch w tranzycie.

home-05
Zatrudniasz programistów backendu?
Mamy ludzi, których szukasz!
Skontaktuj się
Szukasz sprawdzonych programistów backendu do swojego zespołu?

W naszej sieci talentów są setki sprawdzonych w boju ekspertów od tworzenia oprogramowania.

Jesteś programistą backendu i szukasz świetnych projektów? Dołącz jako Talent