Test yourself
Advanced Linux internals & tooling
Final exam · 59 questions · answers explained as you pick
Advanced tooling & observability
22 questions
01In a flame graph, the WIDTH of a box represents…
Incorrect — that is the height/y-axis.
Correct — wider = hotter; scan for the widest boxes.
Incorrect — the x-axis is sorted, not time-ordered.
Incorrect — a standard flame graph is CPU samples.
02The HEIGHT (y-axis) of a flame graph is…
Correct — the call chain, top to bottom.
Incorrect — width relates to time; not height.
Incorrect — no.
Incorrect — no.
03A flame graph full of unknown/hex addresses means…
Incorrect — unrelated.
Incorrect — no — it is a symbol problem.
Correct — build with frame pointers or use --call-graph dwarf.
Incorrect — sampling count is not the issue.
04The two projects behind the famous eBPF tools are…
Incorrect — classic debuggers, not the BPF toolkit.
Correct — ready-made tools + a one-liner tracing language.
Incorrect — network tools.
Incorrect — CLI data tools.
05execsnoop (bcc) catches…
Correct — live, low-overhead.
Incorrect — that is biolatency.
Incorrect — that is nmap/ss.
Incorrect — not its purpose.
06biolatency (bcc) renders…
Incorrect — no.
Incorrect — that is tcplife/tcpconnect.
Correct — the shape reveals occasional slow I/O.
Incorrect — that is perf + FlameGraph.
07To prove whether a request even leaves the host (and whether a reply returns), use…
Incorrect — shows CPU, not packets.
Correct — see SYNs, retransmits, RSTs on the wire.
Incorrect — disk, not network.
Incorrect — a debugger, not a packet tool.
08mtr is most useful for…
Correct — pinpoints WHERE on the path traffic dies.
Incorrect — that is tcpdump.
Incorrect — that is iperf.
Incorrect — that is nmap.
09iperf3 answers the question…
Incorrect — that is nmap.
Incorrect — that is tcpdump.
Correct — separates a slow network from a slow app.
Incorrect — that is mtr.
10For a hung process, the quick way to find the deadlock is…
Correct — reveals what each thread is stuck waiting on.
Incorrect — that destroys the evidence.
Incorrect — loses the state.
Incorrect — unrelated.
11A core dump is…
Incorrect — that is a pcap.
Correct — a full postmortem instead of one log line.
Incorrect — no.
Incorrect — no.
12ltrace differs from strace in that it shows…
Incorrect — that is tcpdump.
Incorrect — that is perf.
Correct — malloc/strlen vs raw syscalls.
Incorrect — that is du.
13jq is used to…
Correct — indispensable for JSON logs.
Incorrect — that is ripgrep.
Incorrect — that is fd/find.
Incorrect — that is fzf.
14Attaching gdb/strace to a live production service is risky because it…
Incorrect — not the concern.
Correct — prefer eBPF/perf on busy healthy services.
Incorrect — no.
Incorrect — it inspects, but the pause is the danger.
15vim’s efficiency comes from…
Incorrect — the opposite — you compose a few operators and motions.
Correct — a grammar, not a command list.
Incorrect — that is the slow way vim is designed to replace.
Incorrect — vim is keyboard-driven by design.
16In vim, ci" does what?
Incorrect — that is yy.
Incorrect — no.
Correct — operator c + text object i".
Incorrect — not a built-in single command.
17The vim . (dot) command…
Correct — edit once, n to next, . to repeat.
Incorrect — that is :w.
Incorrect — that is :q.
Incorrect — that is i/a/o.
18:%s/old/new/g in vim…
Incorrect — that is s/old/new/ without % and g.
Correct — % = all lines, g = all on each line.
Incorrect — that is :g/old/d.
Incorrect — it substitutes.
19sed -n '/START/,/END/p' prints…
Incorrect — -n suppresses default output; only p prints.
Incorrect — the p prints the matched range.
Correct — an address range with -n + p.
Incorrect — it prints the lines, not numbers.
20In awk, $1 and $3 refer to…
Correct — awk splits every line into fields.
Incorrect — those are $1/$3 in shell, not awk fields.
Incorrect — that is NR.
Incorrect — no.
21awk '{sum+=$6} END {print sum}' does what?
Incorrect — it accumulates, then prints once.
Correct — END runs after all input; a report in one line.
Incorrect — awk does not modify the file.
Incorrect — that is NR / a counter.
22The fastest way to learn vim well is…
Incorrect — slow; practice beats reading.
Incorrect — nano is fine, but vim mastery pays off on every server.
Correct — built in, hands-on.
Incorrect — you compose a few, not memorize all.
22 questions · explanations appear as you answer
Performance analysis
10 questions
01The USE method checks each resource for…
Incorrect — not the USE metrics.
Correct — across CPU, memory, disk, network.
Incorrect — no.
Incorrect — invented.
02A load average of 8 on a box with idle CPUs usually means…
Incorrect — load counts more than CPU-runnable tasks.
Incorrect — it is a signal to investigate.
Correct — confirm with vmstat wa, not just load.
Incorrect — possible but not what load says.
03In free -h, the number that reflects memory available to programs is…
Incorrect — looks low because spare RAM is used as cache.
Correct — accounts for reclaimable cache — the real figure.
Incorrect — that is the cache itself, reclaimable.
Incorrect — that is the whole size, not what is available.
04Active swapping (steady si/so in vmstat) is…
Correct — disk is far slower than RAM; thrashing follows.
Incorrect — a little idle swap is fine; active swapping is not.
Incorrect — the opposite.
Incorrect — it is a direct memory-pressure signal.
05PSI (/proc/pressure) measures…
Incorrect — no.
Incorrect — no.
Correct — a truer contention signal than utilization.
Incorrect — not what PSI reports.
06For disk, the metric that signals saturation is…
Incorrect — can look fine while latency is bad.
Correct — the device is busy and ops are queuing.
Incorrect — unrelated.
Incorrect — unrelated.
07df says a disk is full but du cannot find the space. The usual cause is…
Correct — lsof +L1 finds it; restart the holder.
Incorrect — du would still count them.
Incorrect — not counted by df on the data partition.
Incorrect — rarely; the open-deleted-file pattern is the answer.
08strace is best used to…
Incorrect — it can cripple a hot process — use eBPF there.
Correct — invaluable, but high overhead.
Incorrect — that is perf.
Incorrect — that is iostat/biolatency.
09perf top shows…
Incorrect — that is lsof.
Incorrect — that is biolatency.
Correct — find the hot loop without instrumenting code.
Incorrect — that is ss.
10On a busy live server, the safe tools for tracing are…
Correct — designed for production.
Incorrect — can turn a slowdown into an outage.
Incorrect — not a diagnostic.
Incorrect — eBPF/perf are exactly for this.
10 questions · explanations appear as you answer
systemd & boot, deep
9 questions
01In systemd, After= controls ___ and Requires= controls ___.
Incorrect — reversed.
Correct — they are independent axes — you often need both.
Incorrect — they are distinct.
Incorrect — no.
02A web app declares After=postgresql but the DB never starts at boot. The fix is…
Correct — ordering IF started — not causing the start.
Incorrect — that loses ordering too.
Incorrect — the dependency is still not pulled in.
Incorrect — unrelated.
03A systemd target (e.g. multi-user.target) is…
Incorrect — it is a grouping unit.
Incorrect — no.
Correct — "boot to multi-user" = reach that target.
Incorrect — related but not the same; targets group units.
04The boot stage order is…
Incorrect — reversed.
Correct — a hang tells you which stage failed.
Incorrect — no.
Incorrect — firmware runs first.
05systemd-analyze critical-chain shows…
Correct — parallel units do not add up; the chain is what matters.
Incorrect — that is systemctl --failed.
Incorrect — no.
Incorrect — no.
06To see why the system failed on the PREVIOUS boot, you run…
Incorrect — that is the current boot.
Correct — the previous boot — what failed before the reboot.
Incorrect — dmesg is this-boot kernel messages.
Incorrect — not a log query.
07Every systemd service runs inside a…
Incorrect — no.
Incorrect — namespaces isolate; resource control is cgroups.
Correct — CPUQuota=, MemoryMax=, etc.
Incorrect — not a full container.
08systemd slices are…
Incorrect — no.
Correct — user.slice, system.slice, or your own.
Incorrect — no.
Incorrect — no.
09MemoryMax vs MemoryHigh: MemoryMax…
Correct — MemoryHigh throttles/reclaims without killing.
Incorrect — that is MemoryHigh.
Incorrect — it is enforced by kill.
Incorrect — it is memory.
9 questions · explanations appear as you answer
Storage & filesystems
9 questions
01LVM’s three levels are…
Incorrect — not LVM concepts.
Incorrect — those are directories.
Correct — space flows disks → pool → volumes.
Incorrect — those are filesystem internals.
02The main advantage of LVM over raw partitions is…
Incorrect — that is LUKS, separate.
Correct — "disk full" becomes "extend the volume".
Incorrect — not inherently faster.
Incorrect — you still put a filesystem on an LV.
03After lvextend grows a logical volume, you must also…
Correct — the LV grew; the filesystem on it has not yet.
Incorrect — usually unnecessary — often done live.
Incorrect — no — that destroys data.
Incorrect — the filesystem will not see the space until grown.
04An LVM snapshot that fills its allocated space…
Incorrect — it does not; it becomes invalid.
Correct — size it for expected writes; monitor lvs.
Incorrect — no.
Incorrect — snapshots add copy-on-write overhead.
05The two most common Linux filesystems are…
Incorrect — those are Windows filesystems.
Incorrect — those are macOS.
Correct — both journaling.
Incorrect — those are special-purpose, not general filesystems.
06In /etc/fstab you should identify a device by…
Correct — /dev names can change when disks are added.
Incorrect — these can shift between boots.
Incorrect — not an identifier.
Incorrect — that is where, not which device.
07The nofail mount option in fstab…
Incorrect — that is the pass field / fsck.
Correct — good for non-essential mounts.
Incorrect — that is ro.
Incorrect — unrelated.
08fsck must be run on a filesystem that is…
Incorrect — never repair a live mounted fs.
Incorrect — you cannot safely fsck a mounted root — schedule at boot.
Correct — repairing a live fs corrupts it.
Incorrect — unrelated to fsck safety.
09The safest way to validate fstab before rebooting is…
Correct — a bad fstab can hang boot.
Incorrect — that is exactly when a typo strands you.
Incorrect — then nothing mounts.
Incorrect — unrelated and wrong.
9 questions · explanations appear as you answer
Kernel from first principles
9 questions
01/proc is…
Incorrect — no.
Correct — read it with cat/grep; nothing on disk.
Incorrect — that is /usr/bin.
Incorrect — no.
02For a process, the authoritative view (what ps summarizes) is…
Correct — read straight from the kernel.
Incorrect — that is accounts.
Incorrect — that is logs.
Incorrect — unrelated.
03sysctl reads and writes kernel parameters under…
Incorrect — that is name resolution.
Incorrect — no.
Correct — the kernel’s control panel, as files.
Incorrect — that is kernel/bootloader files.
04A "container" at the kernel level is…
Incorrect — no guest kernel — that is a VM.
Correct — there is no container object.
Incorrect — chroot alone is far weaker.
Incorrect — no.
05unshare is used to…
Correct — exactly what runc does under Docker.
Incorrect — no.
Incorrect — that is mount.
Incorrect — that is cgroups.
06In cgroup v2, you place a process in a group by…
Incorrect — no.
Incorrect — you write to a file.
Correct — then the kernel enforces the group’s limits.
Incorrect — no.
07A hand-built unshare "container" is NOT a strong security boundary because…
Correct — great for learning, unsafe for untrusted code.
Incorrect — not the reason.
Incorrect — it can.
Incorrect — they are isolation, not encryption.
08vm.swappiness set lower (e.g. 10) on a server…
Incorrect — the opposite — lower swaps less.
Correct — useful when RAM is plentiful.
Incorrect — unrelated.
Incorrect — that is a cgroup limit.
09The right approach to kernel performance tuning is…
Incorrect — a classic way to destabilize a server.
Incorrect — some workloads genuinely need tuning.
Correct — measurement with a little tuning attached.
Incorrect — then you cannot tell what helped or hurt.
9 questions · explanations appear as you answer