Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

📝 Knowledge Test

/
Knowledge Test Score Board
· 0%

Work through the questions below — your score updates as you go.

Keep going · grade bands mapped to DCU's honours scale

target10:00

Only your first attempt at each question counts toward this score. Reload the page to reset.

This section contains 15 interactive knowledge checks designed to test your understanding of the materials covered in Chapter 4. The questions cover fundamental Git commands, branching strategies, collaborative features in GitLab, and edge-specific CI/CD concepts.

Please remember that many of the quizzes have multiple correct answers, and you must select all applicable options to succeed. Take your time to carefully evaluate each option.

Good luck!

Derek.


Part 1: Version Control and Git Fundamentals

Section titled “Part 1: Version Control and Git Fundamentals”
Q1
Quiz
Select 0/2

Which of the following statements accurately describe the relationship and differences between Git and GitLab?

Both Git and GitLab require a constant, high-speed internet connection because every local file save must be immediately validated by the central cloud server.
Git is the core command-line version control software installed locally, whereas GitLab is a web-based platform that hosts Git repositories and provides DevOps tools.
Git operates primarily on your local machine to track changes and maintain project history, allowing developers to work offline before merging changes later.
GitLab is an upgraded version of Git that must be installed on your local computer to replace the older, command-line interface.
Q2
Concept Match

Match the Git Stage to its Function

Drag each definition into its matching concept slot, then click Submit. Tap × to return a placed card to the pool.

Working Directory
drag a definition here…
Staging Area (Index)
drag a definition here…
Local Repo
drag a definition here…
Remote Repo
drag a definition here…

Definition Pool

Your personal, local database containing the complete, permanent history of all your commits.
The local folder on your computer where you directly edit, add, or delete your files.
The shared copy of the project hosted on a server, accessible to all authorised teammates.
A holding area where you select and group specific changes to be included in the next snapshot.
Q3
Quiz
Select 0/2

Why is Markdown considered essential for modern software repositories?

It serves as a low-level programming language that compiles directly into machine code for the ESP32 microcontroller.
It uses a plain-text syntax that is easy to read and write without specialised rich-text editors, ensuring maximum portability across platforms.
It automatically encrypts the repository contents before they are pushed to a public remote server.
It allows developers to maintain 'Documentation as Code', meaning documentation can be version-controlled, branched, and merged alongside the source code.
Q4
Quiz
Select 0/3

According to professional standards (the '50/72 rule'), what are the characteristics of a well-crafted Git commit message?

The summary line should be a maximum of 50 characters, written in the imperative mood (e.g., 'Fix bug' instead of 'Fixed bug').
The entire message must be written on a single continuous line, regardless of length, to save storage space in the database.
The detailed body of the message should be wrapped at approximately 72 characters to ensure readability in terminal windows.
There should be a blank line separating the short summary from the optional, detailed body text.
Q5
Concept Match

Match the Git Command to its Action

Drag each definition into its matching concept slot, then click Submit. Tap × to return a placed card to the pool.

git status
drag a definition here…
git fetch
drag a definition here…
git pull
drag a definition here…
git diff
drag a definition here…

Definition Pool

Provides visibility into the current state, showing which files are modified, staged, or untracked.
Shows the exact line-by-line changes made to tracked files that have not yet been staged.
Downloads new commits from the remote server and immediately merges them into your current local branch.
Downloads new commits from the remote server for inspection, but does NOT merge them into your working files.
Q6
Quiz
Select 0/2

What is the fundamental purpose of creating a new branch in Git?

To create a separate line of development that diverges from the main history, isolating new features or experiments from the stable codebase.
To provide a sandbox for parallel development, ensuring that work-in-progress code does not interfere with the tasks of other team members.
To physically duplicate all the project files into a new folder on your hard drive to serve as a backup.
To force all other developers to stop working until your specific feature is completed and merged.
Q7
Quiz
Select 0/1

When observing the repository history graph, what defines a 'Three-Way Merge'?

Git combines two diverged histories by creating a brand-new 'merge commit' that has two parent edges feeding into it.
The user manually resolves conflicts where the exact same line of code was edited differently in two branches.
Git automatically deletes the target branch because it contains three or more conflicting files.
Git simply slides the branch pointer forward to the target commit because the histories have not diverged.
Q8
Quiz
Select 0/1

You attempt to run `git push`, but the terminal throws an error saying 'Push rejected — fetch first' (or 'pull first'). What is the cause of this error?

Your local repository contains uncommitted changes in the staging area that must be committed before pushing.
Someone else has pushed new commits to the remote branch, meaning your local history is out of date and lacks their changes.
The GitLab server is down for maintenance and cannot accept incoming connections.
You have forgotten to include a commit message in your most recent local snapshot.
Q9
Concept Match

Match the GitLab Feature to its Purpose

Drag each definition into its matching concept slot, then click Submit. Tap × to return a placed card to the pool.

Merge Request (MR)
drag a definition here…
Issues
drag a definition here…
To-Dos
drag a definition here…
Labels
drag a definition here…

Definition Pool

Tags used to categorise, prioritise, and filter work items (e.g., 'urgent', 'bug', 'enhancement').
A structured system for tracking bugs, planning feature requests, and assigning responsibilities across the team.
An automatically generated personal list of actionable tasks, such as mentions in comments or assigned reviews.
A collaborative tool that facilitates code review, discussion, and automated checks before integrating a feature branch into main.
Q10
Quiz
Select 0/2

What is the significance of the '.gitignore' file in a C++ or Rust project?

It prevents unauthorised users from viewing the source code when they visit the repository URL on GitLab.
It tells Git to ignore and not track specific files or directories, such as compiled binaries, build outputs, or local editor settings.
It automatically deletes unwanted files from the hard drive every time a commit is made to save disk space.
In a Rust project, it is crucial for ignoring the 'target/' directory, which contains compiled artefacts that can easily reach several gigabytes.
Q11
Quiz
Select 0/2

How are Git Tags fundamentally different from Git Branches?

Checking out a tag puts the repository in a 'detached HEAD' state because you are observing a static point in history rather than an active line of development.
Tags can be easily deleted and recreated to point to different commits daily, while branches are permanent and cannot be deleted.
Tags are immutable references to a specific commit used to mark milestones or releases, whereas branches are movable pointers that advance with new commits.
Tags are only used to assign developers to specific tasks within the GitLab Issues board.
Q12
Quiz
Select 0/2

When reviewing a Merge Request in GitLab, how does the 'Diff View' assist the reviewer?

It instantly resolves all merge conflicts by prioritizing the code written by the Senior Engineer.
It ensures that reviewers can quickly identify modifications without needing to read through the entire unmodified file structure.
It provides a visual representation highlighting exactly which lines were added (often in green with a '+') and which were deleted (in red with a '-').
It automatically writes and executes unit tests for the newly submitted code.
Q13
Concept Match

Match the Edge CI/CD Concept to its Application

Drag each definition into its matching concept slot, then click Submit. Tap × to return a placed card to the pool.

Hardware-in-the-Loop (HIL)
drag a definition here…
Cross-Compilation
drag a definition here…
Git LFS
drag a definition here…
Git Submodules
drag a definition here…

Definition Pool

Using Custom Runners to execute automated pipeline tests directly on physical target hardware like a Raspberry Pi.
Using a Docker image on a cloud server to build an executable binary for a different architecture (e.g., building ARM code on x86).
Managing large binary assets (like FPGA bitstreams or machine learning models) efficiently without bloating the Git history.
Maintaining specific, reproducible versions of external repositories, such as vendor Board Support Packages (BSPs) or SDKs.
Q14
Quiz
Select 0/3

What are the core differences between Continuous Integration (CI) and Continuous Deployment (CD)?

Continuous Deployment fully automates the release process, pushing passing updates directly to production hardware without manual intervention.
Continuous Delivery ensures the software is always in a deployable state, but a human must manually click a button to push the release to production.
Continuous Integration automates the merging, building, and testing of code changes to ensure they do not break the existing codebase.
Continuous Deployment requires manual human approval before any code is allowed to be compiled by the server.
Q15
Quiz
Select 0/3

Why is implementing automated CI/CD pipelines considered critical for edge and IoT development?

Because edge devices are often deployed in remote, physically inaccessible locations, making manual, manual USB-stick updates risky and inefficient.
Because edge processors do not have the memory required to store Git version history locally.
Because it guarantees that the exact same, thoroughly tested binary version is deployed consistently across the entire diverse fleet of hardware.
Because it allows developers to safely implement 'canary' releases, pushing updates to a small subset of test devices before a global rollout.

Congratulations on completing the Chapter 4 Knowledge Test! Review any questions you missed to ensure a solid grasp of version control and collaboration workflows before proceeding to the code-heavy projects in the following chapters.