Logo MockIT na ciemnym tle.
Umów rozmowęBlog
Zaloguj się
Logo MockIT na ciemnym tle.
Logo MockIT.

Masz wrażenie, że nikt nie czyta Twojego CV? Nie dostajesz zaproszeń na rozmowy rekrutacyjne?

Sprawdź swoje umiejętności techniczne a MockIT pomoże Ci znaleźć pracę w IT!

Zapisz się na rozmowę
Powrót

Git pytania rekrutacyjne 2024 - przygotuj się na rozmowę kwalifikacyjną z MockIT

Przygotowanie do rozmowy kwalifikacyjnej na stanowisko programisty wymaga znajomości wielu technologii i narzędzi. Jednym z kluczowych narzędzi, które warto znać jest system kontroli wersji Git. Jest on standardem w branży już od wielu lat - jego poprzednik SVN odszedł już raczej bezpowrotnie. W tym artykule omówimy pytania z Git'a, które mogą pojawić się podczas techninej rozmowy rekrutacyjnej.

Aleksandra Zdrojowa - współzałożycielka MockIT.

Aleksandra Zdrojowa

Założycielka MockIT


6 sierpnia 2024

Intro

Omówimy najważniejsze koncepcje Gita, zaawansowane tematy oraz praktyczne zadania. Mam nadzieję, że te informacje pomogą Ci lepiej przygotować się do rozmowy kwalifikacyjnej.

Kluczowe punkty

  • Poznasz najczęstsze pytania rekrutacyjne z Git'a

  • Zrozumiesz, dlaczego Git jest ważny w procesie rekrutacji

  • Poznasz podstawowe i zaawansowane koncepcje Git'a

  • Nauczysz się, jak radzić sobie z praktycznymi zadaniami z Git'a podczas rozmowy

Wprowadzenie do Git'a

Git to rozproszony system kontroli wersji, który umożliwia zarządzanie i śledzenie zmian w kodzie źródłowym. Jest powszechnie używany w projektach do koordynacji prac w zespole oraz śledzenia historii zmian.

W rozproszonych systemach kontroli wersji repozytorium oraz jego pełna historia są przechowywane na lokalnych komputerach użytkowników. Jest to główna różnica pomiędzy rozproszonymi a scentralizowanymi systemami kontroli wersji, w których pełne repozytorium wraz z historią znajduje się tylko na centralnym serwerze.

Dlaczego git jest ważny?

Git jest codziennością w pracy każdego programisty. Oprócz możliwości zapisywania zmian w zdalnym repozytorium i śledzenia ich historii, Git umożliwia łatwą współpracę z innymi programistami nad tym samym projektem. Między innymi z tego powodu pracodawcy oczekują, że kandydaci będą umiejętnie z niego korzystać. W końcu z bardzo dużym prawdopodobieństwem będziemy pracować nad projektem w zespole a nie indywidualnie.

Czym się różni git od GitHuba?

Czym jest Git, zostało już wyjaśnione wyżej. Natomiast czym jest Github, który często pojawia się przy okazji rozmów o Gicie? Jest to platforma internetowa, hostująca repozytoria Git'owe w chmurze. Oprócz przechowywania kodu, możemy tam wykonywać wiele innych czynności jak np. tworzenie pull request'ów bądź korzystanie z GitHub Actions.

Najczęstsze obszary pytań związanych z git

W rozmowie kwalifikacyjnej możesz spotkać się z pytaniami z różnych obszarów z git'a. Oto najczęściej poruszane tematy:

ObszarPrzykładowe zagadnienia
PodstawyInicjalizacja repozytorium, dodawanie zmian, commitowanie, pobieranie zmian
Praca z gałęziamiTworzenie, łączenie i usuwanie gałęzi
Rozwiązywanie konfliktówStrategie mergowania, rebase
Współpraca zespołowaPull requesty, code review

Przygotowując się do pytań z git'a, pamiętaj o praktycznym sprawdzeniu zdobytych umiejętności. Jeśli kilka razy samodzielnie rozwiążesz konflikty, na pewno lepiej zrozumiesz, jak to działa, niż ucząc się zasad na pamięć.

Podstawowe koncepcje git, które musisz znać

Repozytorium to główne miejsce przechowywania kodu. Tam robimy zmiany i zatwierdzamy je commitem. Każdy commit to zapis projektu w konkretnym momencie.

Branch to osobna gałąź w historii zmian projektu. Każda gałąź reprezentuje niezależną linię rozwoju, co umożliwia jednoczesne prowadzenie prac nad kilkoma funkcjonalnościami jednocześnie bez wpływu na siebie nawzajem.

Remote to zdalne repozytorium. Umożliwia współpracę i synchronizację zmian w zespole.

Polecenie GitOpisZastosowanie
git initInicjalizacja repozytoriumRozpoczęcie nowego projektu
git cloneSkopiowanie do nowej lokalizacji istniejącego repozytorium zdalnegoRozpoczęcie prac nad istniejącym projektem
git addDodawanie zmian do staging areaPrzygotowanie plików do commita
git commitZatwierdzanie zmianZapisywanie stanu projektu
git branchTworzenie nowej gałęziRozpoczęcie pracy nad nową funkcją
git merge bądź rebaseŁączenie gałęziŁączenie zmian z różnych linii rozwoju
git pullPobranie zmian ze zdalnego repozytoriumAktualizacja lokalnego repozytorium
git logWyświetlenie historii commitówPrzegląd historii

Zaawansowane tematy git w pytaniach rekrutacyjnych

Niestety - podczas rozmowy rekrutacyjnej najczęściej możesz spodziewać się trudniejszych pytań, niż to jak stworzyć repozytorium czy gałąź. W codziennej pracy często pojawiają się bardziej zaawansowane zagadnienia, których opanowanie pozwoli Ci efektywnie korzystać z Gita w każdej sytuacji.

Git merge vs rebase

Jeśli dotychczas pracowałeś z Gitem samodzielnie, na jednej gałęzi, prawdopodobnie nie napotkałeś jeszcze problemu łączenia gałęzi. Jednak w pracy zespołowej takie sytuacje zdarzają się bardzo często. Porównanie git merge i git rebase mogłoby być tematem osobnego artykułu, jednak warto zapamiętać, że kluczową różnicą między tymi dwoma operacjami jest sposób, w jaki wpływają one na historię commitów.

  • merge - najczęściej podczas łączenia gałęzi tworzy nowy commit scalający. Zachowuje pełną historię zmian i jest bardzo bezpieczny podczas pracy zespołowej.

  • rebase - przenosi commity z danej gałęzi na koniec wybranej gałęzi docelowej. Tworzy liniową historię commitów dając wrażenie jakby wszystkie zmiany były wykonywane bezpośrednio na gałęzi docelowej (najczęściej main bądź master).

Rozwiązywanie konfliktów w git

Umiejętność radzenia sobie z konfliktami przy łączeniu gałęzi to kolejne ważne zagadnienie w Gicie. Kiedy Git napotyka konflikt podczas łączenia gałęzi, oznacza pliki z konfliktami specjalnymi znacznikami (<<<<<<, ======, >>>>>>). Jednym ze sposobów rozwiązywania konfliktów jest ręczne edytowanie sekcji w pliku i usuwanie znaczników konfliktu. Jednakże nowoczesne IDE takie jak np. IntelliJ IDEA udostępniają graficzne narzędzia pozwalające na rozwiązywanie konfliktów. Dzięki temu łatwiej zidentyfikujesz, które zmiany pochodzą z poszczególnych gałęzi, i skutecznie rozwiążesz konflikty krok po kroku.

Git hooks i ich zastosowanie

Znajomość git hooks to kolejny krok w poznawaniu tajników Git'a. Wiedza na ich temat na pewno zrobi wrażenie na rozmowie kwalifikacyjnej. Są to skrypty, które Git automatycznie uruchamia, jeżeli zostaną wykonane określone zdarzenia w cyklu życia repozytorium. Jednym z popularniejszych przypadków użycia jest zastosowanie hooka, który przed wykonaniem commita uruchamia testy i pozwala na commit tylko wtedy, gdy wszystkie testy zakończą się pomyślnie.

Przykładowe pytania rekrutacyjne z Gita

Przed rozmową kwalifikacyjną oprócz nauczenia się teorii i przetestowania jej w praktyce, warto zaznajomić się z najpopularniejszymi pytaniami rekrutacyjnymi. Oto kilka przykładowych pytań, które często pojawiają się na rozmowach rekrutacyjnych.

Poziom podstawowy:

  • Jakie znasz podstawowe komendy Git?

  • Jak rozwiązujesz konflikty w Git?

  • Jakie znasz sposoby łączenia gałęzi?

  • Czym jest head w kontekście gita?

Poziom zaawansowany:

  • Jakie są różnice pomiędzy merge a rebase?

  • Czym jest interaktywny rebase?

  • Jakie są różnice pomiędzy git fetch i git pull?

  • Czym jest git stash?

Praktyczne zadania z git podczas rozmowy kwalifikacyjnej

Podczas rozmowy kwalifikacyjnej możesz spotkać się z praktycznymi zadaniami z git'a. To świetna okazja, by pokazać swoje umiejętności. Oto kilka przykładów zadań, które pomogą Ci się przygotować.

Symulacja pracy z repozytorium

Rekruter może poprosić o wykonanie podstawowych operacji na repozytorium. Możesz być zapytany o takie polecenia jak:

  • Sklonowanie istniejącego repozytorium

  • Utworzenie nowej gałęzi i przełączenie się na nią

  • Dodanie zmian do staging area i wykonanie commita

  • Pushowanie zmian do zdalnego repozytorium

Rozwiązywanie typowych problemów z git

W rozmowie często spotykają się scenariusze rozwiązywania problemów. Możesz być zapytany o:

  • Naprawienie konfliktów podczas mergowania gałęzi

  • Cofnięcie ostatniego commita

  • Przeniesienie commita z jednej gałęzi na drugą

  • Znalezienie konkretnej zmiany w historii repozytorium

Demonstracja umiejętności współpracy w zespole

W kontekście pracy zespołowej, możesz być poproszony o:

  • Tworzenie pull requestów

  • Przeglądanie i komentowanie kodu innych

  • Mergowanie zmian z różnych gałęzi

Wniosek

Nauka Git'a jest bardzo ważnym etapem przed każdą rekrutacją, w szczególności na poziomie juniorskim. Praktyczne ćwiczenia i praca z realnymi projektami to najlepsze sposoby nauki.

Dzięki solidnemu przygotowaniu nie tylko zrobisz dobre wrażenie na rekruterze, ale także zyskasz umiejętność efektywnej pracy z Gitem, która przyda się Tobie podczas pracy w zespole.


Mogą Cię też zainteresować

© 2024 MockIT