← Wszystkie tematy

Pytania rekrutacyjne Git z odpowiedziami

Commity, indeks i gałęzie, merge i rebase, konflikty, cofanie zmian przez reset, revert i reflog, zdalne repozytoria i pull requesty, przepisywanie historii, budowa wewnętrzna Gita i procesy zespołowe.

226 pytań na rozmowę rekrutacyjną z tematu Git z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.

Pytania według poziomu

Przykładowe pytania

Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.

Git · Junior

  1. Co sprawia, że Git jest rozproszonym systemem kontroli wersji?

    Poprawna odpowiedź: Każdy klon ma całą historię i działa offline

    Klon zawiera wszystkie commity, więc można commitować, tworzyć gałęzie i przeglądać historię bez serwera. Zdalne repozytorium, np. GitHub, to po prostu kolejna kopia, z którą zespół się synchronizuje.

  2. Przez jakie trzy główne obszary przechodzi plik w Gicie?

    Poprawna odpowiedź: Katalog roboczy, indeks (staging), repozytorium

    Pliki edytujesz w katalogu roboczym, wybierasz, co trafi do następnego commita, przez git add (indeks), a git commit zapisuje ten stan w repozytorium.

  3. Co robi git add file.js?

    Poprawna odpowiedź: Dodaje bieżącą treść pliku do indeksu

    git add kopiuje bieżący stan pliku do indeksu. Jeśli potem znowu go zmienisz, nowe zmiany nie trafią do commita, dopóki nie wykonasz ponownie git add.

  4. Co przechowuje commit w Gicie?

    Poprawna odpowiedź: Migawkę projektu, autora, opis i rodzica

    Koncepcyjnie każdy commit to pełna migawka (niezmienione pliki są współdzielone, a nie powielane) z metadanymi i odnośnikiem do rodzica. Różnice liczy się dopiero na żądanie.

Wszystkie 75 pytań z odpowiedziami →

Git · Middle

  1. Co robi git rebase main na gałęzi funkcji?

    Poprawna odpowiedź: Przenosi commity gałęzi na wierzch najnowszego main

    Każdy commit funkcji jest nakładany od nowa na nową bazę, co daje nowe commity z nowymi haszami. Powstaje liniowa historia, jakby gałąź utworzono od dzisiejszego main.

  2. Jaka jest „złota zasada” rebase?

    Poprawna odpowiedź: Nie rób rebase commitów, na których inni budują pracę

    Rebase zastępuje commity nowymi. Jeśli koledzy mają już stare, ich historia się rozjedzie i pojawią się duplikaty. Własną, niewypchniętą lub prywatną gałąź można rebase'ować.

  3. Merge czy rebase przy wciąganiu main do gałęzi funkcji: jaki jest kompromis?

    Poprawna odpowiedź: Merge zachowuje prawdziwą historię; rebase daje liniową, ale przepisuje commity

    Merge dokładnie zapisuje, co się stało, i dodaje commity scalające; rebase daje czystą linię, łatwiejszą do czytania i bisect, kosztem nowych haszy. Zespół wybiera jedną konwencję.

  4. Podczas rebase pojawił się konflikt. Jaka jest zwykła kolejność?

    Poprawna odpowiedź: Popraw pliki, git add, potem git rebase --continue

    Rebase zatrzymuje się na commicie z konfliktem; po rozwiązaniu i git add polecenie --continue przechodzi do następnego. --skip całkowicie porzuca bieżący commit, --abort przywraca pierwotną gałąź.

Wszystkie 75 pytań z odpowiedziami →

Git · Senior

  1. Jakie cztery typy obiektów tworzą bazę obiektów Gita?

    Poprawna odpowiedź: Blob, tree, commit i tag z adnotacją

    Blob trzyma treść pliku, tree mapuje nazwy na bloby i poddrzewa, commit wskazuje na drzewo i rodziców, a tag z adnotacją wskazuje na obiekt z opisem. Gałęzie to referencje, nie obiekty.

  2. Dlaczego zmiana nazwy pliku nie duplikuje jego treści w magazynie Gita?

    Poprawna odpowiedź: Blob jest adresowany treścią; zmienia się tylko wpis w tree

    Identyczna treść zawsze ma ten sam hasz, więc jest przechowywana raz. Zmiany nazw Git wykrywa później, porównując drzewa, a nie zapisuje ich jawnie.

  3. Czym wewnętrznie jest ref w Gicie?

    Poprawna odpowiedź: Nazwą przechowującą hasz commita, np. refs/heads/main

    Referencje żyją jako małe pliki albo w packed-refs. HEAD to referencja symboliczna wskazująca na inną referencję. Przesunięcie gałęzi to po prostu zapisanie nowego hasza w jej ref.

  4. Co robi git gc?

    Poprawna odpowiedź: Pakuje obiekty, usuwa nieosiągalne i stare wpisy refloga

    Luźne obiekty są kompresowane do packfile z deltami, a obiekty nieosiągalne z referencji i refloga są usuwane po okresie karencji. Git uruchamia to automatycznie.

Wszystkie 76 pytań z odpowiedziami →

Zadania z kodu

Napisz rozwiązanie prosto w przeglądarce, a testy od razu je sprawdzą. Klasyka rozmów rekrutacyjnych z JavaScriptu (debounce, deepClone, Promise.all, cache LRU), z TypeScriptu (generyki, zawężanie i typy narzędziowe, sprawdza prawdziwy kompilator), logika backendu w Node.js (middleware, limity żądań, kolejki zadań), zapytania SQL w prawdziwym PostgreSQL i z Reacta: komponenty i hooki, takie jak lista zadań, zakładki, useDebounce i useInterval.

Otwórz zadania →