12 mins read ·
12 questions
Select an appropriate pattern for a given design problem and justify the choice.
12 mins read ·
14 questions
Define anti-patterns and recognise common ones (God Object, Spaghetti Code, Golden Hammer, Lava Flow, copy-and-paste programming) together with their remedies.
12 mins read ·
12 questions
Analyse the use of the Observer pattern in distributed systems (publish–subscribe, message brokers) and explain the issues of message ordering, delivery guarantees and coupling.
12 mins read ·
20 questions
Explain the purpose of coding standards and style guides (readability, consistency, defect prevention) and apply naming, formatting and commenting conventions.
12 mins read ·
14 questions
Describe secure coding principles (input validation, output encoding, least privilege, defence in depth, failing securely, safe handling of secrets) and relate them to common vulnerability classes such as injection and broken access control (OWASP Top 10).
13 mins read ·
17 questions
Describe code review practices (formal inspection, walkthrough, pull-request review), including the roles involved and the use of checklists.
13 mins read ·
14 questions
Explain what static analysis tools detect (style violations, code smells, potential defects, security vulnerabilities), name examples (linters, SonarQube), and state their limitations, including false positives and false negatives.
14 mins read ·
15 questions
Explain the purpose of version control and use core Git concepts: repository, commit, branch, merge, rebase, pull request and tag.
13 mins read ·
13 questions
Compare branching strategies (Git Flow, GitHub Flow, trunk-based development) and select one for a given team context.
13 mins read ·
15 questions
Describe build automation tools (for example Make, Maven or Gradle, npm) and the stages of a CI/CD pipeline: build, test, analyse, package and deploy.
14 mins read ·
16 questions
Analyse the Linux kernel development workflow (patch review on mailing lists, maintainer hierarchy, merge window, the origin of Git) as an example of large-scale distributed construction.
11 mins read ·
16 questions
Define software testing, distinguish verification (“are we building the product right?”) from validation (“are we building the right product?”), and explain why testing can show the presence but not the absence of defects.