← Усі теми

Питання на співбесіді з Git з відповідями

Коміти, індекс і гілки, merge і rebase, конфлікти, скасування змін через reset, revert і reflog, віддалені репозиторії й pull request, переписування історії, внутрішня будова Git і командні процеси.

226 запитань для співбесіди з теми Git з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.

Запитання за рівнями

Приклади запитань

Кілька запитань із кожного рівня з правильною відповіддю й поясненням.

Git · Junior

  1. Що робить Git розподіленою системою контролю версій?

    Правильна відповідь: Кожен клон має всю історію й може працювати офлайн

    Клон містить усі коміти, тож комітити, створювати гілки й дивитися історію можна без сервера. Віддалений репозиторій на кшталт GitHub - просто ще одна копія, з якою команда домовилася синхронізуватися.

  2. Через які три основні області проходить файл у Git?

    Правильна відповідь: Робоча копія, індекс (staging area), репозиторій

    Ви редагуєте файли в робочій копії, вирішуєте, що піде в наступний коміт, через git add (індекс), а git commit зберігає цей знімок у репозиторії.

  3. Що робить git add file.js?

    Правильна відповідь: Додає поточний вміст файлу в індекс

    git add копіює поточний стан файлу в індекс. Якщо після цього знову змінити файл, нові зміни не потраплять у коміт, доки ви не виконаєте git add ще раз.

  4. Що зберігає коміт у Git?

    Правильна відповідь: Знімок проєкту, автора, повідомлення й батька

    Концептуально кожен коміт - повний знімок (незмінені файли перевикористовуються, а не дублюються) з метаданими й посиланням на батька. Різниця обчислюється тоді, коли ви її запитуєте.

Усі 75 запитань з відповідями →

Git · Middle

  1. Що робить git rebase main на гілці фічі?

    Правильна відповідь: Переносить коміти гілки поверх свіжого main

    Кожен коміт фічі застосовується заново на новій базі, утворюючи нові коміти з новими хешами. Виходить лінійна історія, ніби гілку створили від сьогоднішнього main.

  2. Яке «золоте правило» rebase?

    Правильна відповідь: Не робіть rebase комітів, на яких інші будують роботу

    Rebase замінює коміти новими. Якщо в колег уже є старі, їхня історія розійдеться, і з'являться дублікати. Свою незапушену чи приватну гілку rebase-ити можна.

  3. Merge чи rebase для інтеграції main у гілку фічі: у чому компроміс?

    Правильна відповідь: Merge зберігає справжню історію; rebase дає лінійну, але переписує коміти

    Merge точно зберігає, що сталося, і додає merge-коміти; rebase дає чисту лінію, яку легше читати й бісектити, ціною нових хешів. Команда обирає одну домовленість.

  4. Під час rebase виник конфлікт. Яка звичайна послідовність дій?

    Правильна відповідь: Виправити файли, git add, потім git rebase --continue

    Rebase зупиняється на коміті з конфліктом; після розв'язання й git add команда --continue переходить до наступного. --skip повністю відкидає поточний коміт, --abort повертає початкову гілку.

Усі 75 запитань з відповідями →

Git · Senior

  1. Які чотири типи об'єктів складають базу об'єктів Git?

    Правильна відповідь: Blob, tree, commit та анотований тег

    Blob містить вміст файлу, tree зіставляє імена з blob і піддеревами, commit вказує на дерево й батьків, а анотований тег вказує на об'єкт із повідомленням. Гілки - це посилання, а не об'єкти.

  2. Чому перейменування файлу не дублює його вміст у сховищі Git?

    Правильна відповідь: Blob адресується вмістом; змінюється лише запис у tree

    Однаковий вміст завжди має однаковий хеш, тому зберігається один раз. Перейменування Git виявляє пізніше, порівнюючи дерева, а не записує явно.

  3. Що таке ref усередині Git?

    Правильна відповідь: Ім'я, що зберігає хеш коміту, як refs/heads/main

    Посилання живуть як маленькі файли або в packed-refs. HEAD - символьне посилання на інше посилання. Перемістити гілку означає просто записати новий хеш у її ref.

  4. Що робить git gc?

    Правильна відповідь: Пакує об'єкти, чистить недосяжні й старі записи reflog

    Вільні об'єкти стискаються в packfile з дельтами, а об'єкти, недосяжні з refs і reflog, видаляються після пільгового періоду. Git запускає це автоматично.

Усі 76 запитань з відповідями →

Задачі на код

Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор), серверна логіка на Node.js (middleware, обмеження частоти, черги задач), SQL-запити в справжньому PostgreSQL і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.

Відкрити задачі →