Backend Developer – pytania rekrutacyjne + odpowiedzi
Kariera Backend Developera cieszy się w Polsce niesłabnącą popularnością, mimo że dość powszechnie uważa się tę ścieżkę za trudniejszą niż praca na frontendzie. Mimo to w tegorocznej odsłonie Badania Społeczności IT znów aż 42% badanych deklarowało, że pracują jako backendowcy. Warto więc dowiedzieć się, jak może przebiegać rozmowa rekrutacyjna na to stanowisko
Backend Developer – technologie
Oczywiście specjalizacja Backend Developera nie jest jedną z tych, która wiążę się z obowiązkową znajomością jednego konkretnego języka programowania i braku konieczności korzystania z innych. Jak jednak wykazały nasze badania, wśród backendowców zdecydowanie króluje Java – korzysta z niej aż 39% Backend Developerów. Za nią plasuje się C# (17%), Python i PHP (po 11%).
Znajomość Javy czy PHP to jednak na backendzie zdecydowanie za mało. Absolutną podstawą kompetencji Backend Developera jest bowiem znajomość języka SQL – jego znajomość deklaruje 61% javowców, 67% dotnetowców i aż 72% programistów PHP.
Równie ważna co znajomość SQL jest oczywiście obeznanie z bazami danych, które przecież są podstawowym „środowiskiem pracy” Backend Developera. Wśród wykorzystywanych dziś baz największą popularnością cieszą się PostrgreSQL, MySQL, MariaDB i MSSQL oraz MongoDB.
Backend Developer – pytania rekrutacyjne i odpowiedzi
Przejdźmy do konkretów i przyjrzymy się bliżej konkretnym pytaniom, które często padają podczas rozmów rekrutacyjnych na stanowiska Backend Developera. Uwzględnione zostały zarówno pytania dotyczące baz danych, jak i konkretnych języków programowania, któych znajomości oczekuje się od kandydatów. Zachęcamy także z zapoznaniem się z artykułami zawierającymi pytania i odpowiedzi dotyczące już konkretnie Javy, C# i Pythona – linki zamieszczamy na końcu artykułu.
Co to jest NoSQL?
NoSQL to taki rodzaj baz danych, w których dane przechowywane są w postaci innej niż relacyjne tabele. Inaczej mówiąc, sa to po prostu nierelacyjne bazy danych. Zamiast tabel o konkretnej wielkości bazy NoSQL mogą np. wykorzystywać pliki JSON czy grafy. Wśród nierelacyjnych baz danych dużą popularnością cieszą się między innymi MongoDB czy Apache Cassandra.
Czym jest SQL Injection i jak mu zapobiegać?
SQL Injection to rodzaj ataku na bezpieczeństwo danych. Za pomocą dostępnego w aplikacji pola formularza do bazy wysyłane jest odpowiednio spreparowane zapytanie, które może np. poskutkować wyciekiem. Przykładem wstrzyknięcia może być np. pole formularza rejestracyjnego, w którym użytkownik w polach przeznaczonych na wprowadzenie nazwy użytkownika i hasłą wprowadzi np. kod, w którym warunek zawsze jest spełniony, np. " or ""="
. Takie dane zostaną prawidłowo przetworzone na instrukcje SQL i zwrócą listę użytkowników aplikacji z bazy. Ochronę przed SQL Injection stanowi parametryzacja. Dzięki parametrom można wskazać, które dane podane przez użytkowników nie mają być wykonane jako instrukcja SQL.
Czym jest architektura oparta na mikrousługach?
Architektura mikrousługowa (czy też mikroserwisowa) to takie podejście do projektowania aplikacji, aby składały się one z wielu mniejszych i wdrażanych niezależnie komponentów, modułów. Komponenty wymieniają się pomiędzy sobą informacjami z użyciem REST API. W odróżnieniu od architektury monolitycznej, aplikacje bazujące na mikroserwisach można rozwijać sprawnie z użyciem różnych języków programowania i technologii, skalować oraz testować poszczególne komponenty, zamiast całej aplikacji.
Czym jest REST?
REST (od Representational State Transfer) to standaryzowany model wymiany informacji za pośrednictwem API i protokołu HTTP. Aplikacje komunikujące się zgodnie z REST i przez REST API to tzw. aplikacje RESTful. REST zakłada komunikacje w relacji klient-serwer, wykorzystuje cztery metody HTTP (GET do pobierania informacji z serwera, PYT do modyfikowania danych, POST to tworzenia nowych danych i DELETE). Ważnym elementem REST jest możliwość cachowania danych, co eliminuje konieczność generowania części ruchu. Kluczowe jest także ujednolicenie formatu danych i ich struktury, najczęściej w użyciu są pliki JSON, XML czy CSV.
Czym jest rekord, pole i tabela?
Wszystkie te pojęcia odnoszą się do elementów baz danych. Tabela danych składa się z rekordów, czyli danych zawartych w pojedynczym wierszu tabli. W bazach danych, podobnie jak ma to miejsce np. w arkuszach kalkulacyjnych, wiersz składa się poszczególnych pól, czyli odpowiedników arkuszowych komórek. Mowa więc o hierarchii, gdzie pola (analogicznie jak komórki) składają się na rekordy (wiersze), a rekordy na tabele (arkusze).
Czym jest ACID?
ACID w kontekście baz danych i programowania backendowego to skrót oznaczający Atomicity, Consistency, Isolation, Durability. Są to cztery warunki, jakie muszą zostać spełnione, aby można było mówić o udanej transakcji. „Atomowość ”oznacza niepodzielność, czyli gwarancję, że poszczególne operacje są wykonywane w całości, lub nie są wykonyane wcale i nie może zajść sytuacja, w której są wykonywane częściowo. Spójność odnosi się do integralności operacji, czyli pewności, że po ukończeniu operacji przesyłane dane będą takie same, jak przed jej rozpoczęciem. Izolacja w ACID to z kolei, że poszczególne transakcje są dla siebie niewidoczne – dana transakcja może np. mieć dostęp do danych wyłącznie, jeśli te nie są aktualnie transferowane. Ostatnia cecha wymagana, by o operacji można było powiedzieć, że jest ACID, to trwałość. Trwałość oznacza, że sprawność bazy może zostać w pełni przywrócone po awarii za zachowaniem stanu po ostatniej zatwierdzonej transakcji.
Jakie są rodzaje baz danych? Podaj kilka przykładów z krótkim omówieniem.
Wyróżnia się wiele różnych rodzajów baz danych ze względu na różne klasyfikacje. Przykładem mogą być relacyjne bazy danych, obiektowe, wspomniane już bazy NoSQL (nierelacyjne), Inne rodzaje to bazy grafowe, strumieniowe czy rozproszone. Relacyjna baza danych to taka, w której dane są zorganizowane w postaci zbiorów tabel, na które składają się rekordy i pola. Grafowe bazy danych wyróżnia to, że dane są w nich przechowywane w postaci encji, które można definiować jako reprezentacje obiektu, do którego opisu stosuje się wiele różnych właściwości. Z kolei rozproszenie bazy danych oznacza, że baza jest przechowywana na więcej niż jednej maszynie.
Jakie są typy relacji pomiędzy tabelami?
Wyróżnia się trzy typy relacji, aby je omówić warto sobie wyobrazić dwie tabele, A i B. Relacja jeden-do-wielu ma miejsce, kiedy dane dane zapisane w tabeli A mają wiele odpowiedników w tabeli B. Relacja wiele-do-wielu oznacza, że w rekord w tabeli A może mieć relacje z wieloma rekordami tabeli B. Ostatnia, relacja, jeden-do-jednego zakłada, że rekord z tabeli B A może mieć tylko jedną relację z jednym rekordem tabeli B.
Czym jest SQL? Podaj przykłady baz SQL.
Warto już na wstępie zaznaczyć, że SQL może mieć co najmniej dwa znaczenia i odnosić się do języka (Structured Query Language), z którego użyciem, za pomocą zapytań, przeprowadza się operacje na bazach danych. Drugie znaczeniem SQL to po prostu relacyjna baza danych. Jak już ustaliliśmy, jest to w pewnym skrócie taka baza, w której dane są zorganizowane w postaci zbiorów tabel.
Jak działa .NET?
Warto zacząć od omówienia przepływu pracy, który rozpoczyna się od przygotowania kodu w jednym z IDE lub edytorów, by następnie doszło do kompilacji kodu do Common Intermediate Language. Następnie wskazać należy kompilację CIL do kodu bajtowego i zwrócić uwagę na składniki assembly, będącego wynikiem całego workflow.
.NET: czym się różni int oraz Int32?
Podchwytliwe pytanie. Pomiędzy int a Int32 nie ma bowiem żadnej różnicy – są to dwie nazwy tego samego typu danych funkcjonującego we frameworku .NET (32-bitowaj podpisana liczba całkowita).
Na czym polega nadpisywanie metod w Javie?
Do nadpisywania metod dochodzi do niego w sytuacji, kiedy podklasa ma zdeklarowane te same metody co superklasa. Aby doszło do nadpisania, muszą zostać spełnione następujące warunki: metoda w obu klasach musi mieć tę samą nazwę i parametry oraz musi zachodzić dziedziczenie.
Czym jest lambda w Pythonie?
Jest to funkcja, która może przyjąć każdą liczbę argumentów, ale mieć tylko jedno wyrażenie. Co ważne, jest to funkcja anonimowa, a zatem nie jest powiązana z żadnym identyfikatorem.
Czym poskutkuje użycie w Javie słowa kluczowego final
?
Zastosowanie słowa kluczowego final
różni się w zależności wobec czego, je zastosujemy:
- do klasy – klasy nie będą już mogły być rozszerzane. Nie oznacza to jednak, że będzie ona niezmienna.
- do metod – metoda nie będzie mogła zostać nadpisana.
- do zmiennych – przypisana raz podczas deklarowania zmiennej wartość pozostaje niezmienna.
- do pól – pole może być albo stałe, albo jego wartość będzie można nadać tylko raz.
Przydatne linki
Zamiast podsumowania podrzucamy garść przydatnych linków, które pozwolą na poznanie przydatnych informacji o pracy backend developerów. Zachecamy także do zapoznaniem się z pytaniami rekrutacyjnymi, jakie padają podczas rozmów :