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.
01
Styl architektoniczny tworzenia web API to:
02
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
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
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
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
07
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
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
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
Wybrałem architekturę mikroserwisową, bo ma wiele zalet, które czynią ją atrakcyjniejszą od innych architektur. Oto kilka jej głównych korzyści:
01
Większość programistów back-endu korzysta z kilku zaawansowanych technik testów wydajnościowych. Należą do nich:
02
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
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
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
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
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
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
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
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
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;
01
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
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
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
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
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
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
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
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
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
Man-in-the-Middle (MitM): szyfrowałbym ruch w tranzycie.
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
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści