Primary key
The column(s) that uniquely identify each row in a table. Unique and never NULL.
745 short definitions of terms that come up in software engineering interviews.
The two methods that make an object a context manager for with. __enter__ runs at the start; __exit__ always runs at the end, even after an error.
__eq__ defines ==. If you define it, also define __hash__ consistently (equal objects must have equal hashes) or the object misbehaves in sets and as dict keys.
The initializer method that runs when a new object is created. It sets the starting attributes: def __init__(self, name): self.name = name.
The iterator protocol. __iter__ returns the iterator; __next__ returns the next item and raises StopIteration when there are no more.
__repr__ gives an exact, developer-oriented description of an object; __str__ gives friendly text for users. print() uses __str__; lists and the debugger use __repr__.
A class setting that lists the only attribute names its objects may have. It removes the per-object dictionary to save memory.
A compiled Java file that contains bytecode. The JVM loads and runs it on any operating system.
Asks Spring to inject a dependency. Prefer constructor injection; with a single constructor @Autowired is optional.
Caches the result of a method by its arguments. The next call with the same arguments returns the cached value without running the method.
A class that declares beans with @Bean methods.
Binds groups of properties from application.yml to a typed Java class, instead of reading single values with @Value.
A class that applies exception handling (and other advice) to all controllers in one place.
Marks a class as a JPA entity: Hibernate maps it to a database table and its fields to columns.
Ways to load an entity together with its relations in a single query, which fixes the N+1 problem.
Tells the compiler that this method must override one from a parent class or interface. If the signature does not match, compilation fails.
Binds a part of the URL path to a method parameter: /users/{id}.
Turns a method into an attribute you read without parentheses: circle.area. Lets you compute or validate values while keeping simple syntax.
Binds the HTTP request body (JSON) to a Java method parameter.
A controller whose methods return data written straight to the HTTP response body (usually JSON), rather than a view name.
Runs a method inside a database transaction: commit on success, roll back on a RuntimeException by default.
In Python 3, / always gives a float (7 / 2 is 3.5). // is floor division and rounds down (7 // 2 is 3). % gives the remainder (7 % 2 is 1).
A file listing patterns of files Git should not track, such as build output, IDE settings and secrets.
== converts types before comparing (0 == "" is true). === compares value AND type without converting (0 === "" is false). Prefer ===.
A base class that cannot be instantiated and forces subclasses to implement certain methods (marked with @abstractmethod).
A class that cannot be instantiated directly. It can hold fields, constructors and ready methods, plus abstract methods that subclasses must implement.
A pattern with an interface that creates families of related objects without naming their concrete classes.
Showing only what is essential and hiding the details. You drive a car with a wheel and pedals without knowing how the engine works.
The rules and checks that decide who can see or change which data and features.
A keyword that controls who can see a class member: public (all), protected (package and subclasses), none (package only), private (same class only).
Making apps usable by everyone, including people using keyboards, screen readers or with visual impairments.
Four transaction guarantees: Atomicity (all or nothing), Consistency (rules hold), Isolation (no interference), Durability (committed data survives crashes).
A wrapper that converts one interface into another that your code expects, like a travel plug adapter.
A graph representation where each node maps to a list of its neighbors: {"A": ["B", "C"]}.
Advanced Encryption Standard: the standard symmetric cipher. One key encrypts and decrypts. Used by TLS, disk encryption and cloud storage.
A function that summarizes many rows into one value: COUNT, SUM, AVG, MIN, MAX.
A way of building software in short iterations with frequent feedback, valuing working software and responding to change over rigid plans.
Azure Kubernetes Service: Microsoft's managed Kubernetes. Azure runs the control plane for you.
AWS load balancers. ALB works at layer 7 (HTTP) and can route by path or host. NLB works at layer 4 (TCP/UDP) for very high speed.
A finite, ordered set of steps that solves a problem or performs a task.
AWS virtual servers (virtual machines) that you configure and manage.
AWS object storage service for files of any size, organized in buckets.
The average cost per operation over a long sequence, when rare expensive operations are balanced by many cheap ones.
A label starting with @ attached to code (@Override, @Service) that the compiler or a framework reads to change behavior.
A technique to apply cross-cutting behavior (logging, security, transactions) around many methods without editing them.
Application Programming Interface: the set of operations a system exposes for other programs, and the format to use them. A web API is used over HTTP.
A single entry point in front of backend services that handles routing, authentication, rate limiting and TLS.
Labeling API versions (e.g. /v1, /v2) so you can introduce breaking changes without breaking existing clients.
Spring Boot's main config file: server port, database URL and any custom settings. Profiles can override it for each environment.
A test structure: prepare (arrange), perform the action (act), check the result (assert).
Items stored next to each other in memory, accessed by index in O(1). A Python list is a dynamic array that grows automatically.
A fast resizable-array deque in Java. It is the usual choice for a stack or a queue instead of Stack or LinkedList.
A List backed by a resizable array: fast access by index, fast appends, compact memory. The default choice for lists.
Short JS function syntax: x => x * 2. It does not have its own this.
A statement in a test that checks a condition; if it is false, the test fails.
age = 30 creates the name age and makes it refer to the value 30. Python variables are labels attached to objects, not boxes that hold values.
Uses a key pair: a public key (shareable) and a private key (secret). Used for key exchange and digital signatures (RSA, ECDSA).
async def defines a function that can pause. await pauses it until a slow operation finishes, letting other tasks run meanwhile.
Runs several coroutines concurrently and waits for all of them, returning their results in order.
Runs a blocking function in a worker thread so that it does not freeze the event loop.
AtomicInteger, AtomicLong... provide thread-safe operations such as incrementAndGet() without explicit locks.
A value stored on an object and accessed with a dot: user.name. Methods are attributes too.
Verifying who a user or system is (password, token, MFA).
Deciding what an authenticated user is allowed to do or access.
Spring Boot's mechanism to register beans automatically based on the libraries on the classpath and your properties; it backs off when you define your own.
Automatic conversion between a primitive and its wrapper object (int to Integer and back). Unboxing a null wrapper throws NullPointerException.
An interface with one method, close(). Any class implementing it can be used in try-with-resources.
Automatically adding or removing instances or Pods based on load.
An option for mocks to copy the real object's method signatures, so invalid calls fail in tests.
The share of time a system is up and answering requests, often written as 'nines' (99.9%).
An isolated data center (or group) within a cloud region, with independent power and network.
Amazon's cloud platform: rentable servers (EC2), storage (S3), databases (RDS), networking (VPC) and hundreds of other services, billed by usage.
EC2 = VM; S3 = Blob Storage; Lambda = Functions; EKS = AKS; RDS = Azure SQL; DynamoDB = Cosmos DB; IAM = Entra ID + RBAC; CloudWatch = Azure Monitor.
A logical container for resources that share a lifecycle. Subscriptions hold resource groups; resource groups hold resources.
The balanced tree structure most database indexes use. It keeps values sorted so lookups, ranges and sorting take about log(n) steps.
The part of an application that runs on servers: business logic, database access, security checks and APIs. Users never see it directly.
Work that runs outside the request/response cycle, in a separate worker process, e.g. sending emails or building reports.
Exploring all candidate solutions by making a choice, recursing, then undoing the choice and trying the next one.
The simplest input of a recursive function, answered directly without another recursive call. It stops the recursion.
An object created and managed by the Spring container. You get beans by annotating classes (@Component, @Service) or declaring @Bean methods.
How many instances of a bean exist. Default singleton (one per container); also prototype, request, session.
Declarative rules on fields (@NotBlank, @Email, @Size) checked when you add @Valid to a parameter.
Interview questions about how you acted in real past situations. Answer with a structured story such as STAR.
Exploring a graph level by level using a queue: all nodes 1 step away, then 2 steps, etc. Finds shortest paths in unweighted graphs.
A way to describe how an algorithm's time or memory grows as the input size n grows, ignoring constants: O(1), O(log n), O(n), O(n log n), O(n²).
Finding an item in a SORTED list by repeatedly checking the middle and discarding half. O(log n).
A tree where each node has up to two children, all smaller keys on the left and bigger keys on the right. Fast search if balanced.
Working directly with the binary digits of numbers using operators like & (and), | (or), ^ (xor), << and >> (shifts).
& AND, | OR, ^ XOR, << and >> shift bits. n & (n - 1) clears the lowest set bit, so it is 0 only for powers of two.
A call that makes the thread wait and do nothing else until it finishes, like time.sleep() or requests.get(). Inside async code it freezes everything.
Two identical environments; deploy to the idle one, then switch all traffic to it at once. Easy rollback.
A pom that fixes the versions of many libraries so they are compatible and you do not repeat version numbers.
The slowest or most limited component, which caps the performance of the whole system.
With border-box, width includes padding and border, so a 200px box stays 200px. With the default content-box, padding and border are added on top.
An independent line of development in Git. Lets you work on a feature without touching the main code until it is merged.
A team's rules for branches: Git Flow (develop/release/hotfix) or trunk-based (frequent merges to main).
Solving a problem by trying every possibility. Simple and correct, but often too slow for large inputs.
Trying huge numbers of possible passwords or keys until one works.
A bug is a flaw that makes software behave wrongly. Debugging is finding and fixing its cause.
A pattern that constructs a complex object step by step: Request().url(u).header(h).timeout(5).build().
ValueError: right type, bad value. TypeError: wrong type. KeyError: missing dictionary key. IndexError: index out of range.
A build tool that transpiles, combines and minifies source files into optimized files for the browser, with a hot-reload dev server.
The intermediate, platform-neutral instructions that javac produces from your .java files (stored in .class files). The JVM runs it.
A fast storage layer (usually memory) holding copies of data that is expensive to fetch or compute.
Many requests miss the cache at the same moment (often when a hot key expires) and all hit the database together.
The app checks the cache first; on a miss it loads from the database and saves the result in the cache.
The memory area that keeps track of active function calls. Each call adds a frame; returning removes it. Too many nested calls → stack overflow / RecursionError.
A function you pass to other code so it can call it later, e.g. when a click happens or data arrives.
Sending a small percentage of traffic to a new version first, watching metrics, then increasing gradually.
In a distributed system, during a network partition you must choose between Consistency (everyone sees the latest data) and Availability (every request gets an answer).
Answer with growth in skills and responsibility (deeper technical expertise, leading small projects) that fits what the company offers. Be honest, not rehearsed.
Content Delivery Network: servers around the world that cache static content close to users.
A request passes through a sequence of handlers; each may process it or pass it on. Servlet filters work this way.
An exception the compiler forces you to catch or declare with throws, such as IOException.
An automated sequence of steps (lint, test, build, deploy) triggered by code changes.
Jenkins, GitHub Actions, GitLab CI and Azure DevOps Pipelines run build, test and deploy steps defined as code.
The three goals of information security: Confidentiality, Integrity, Availability.
Writing a network range as address/prefix, e.g. 10.0.1.0/24 = 256 addresses. A smaller prefix number means a bigger network.
A pattern that stops calling a failing service for a while after repeated errors, failing fast instead of waiting for timeouts.
A blueprint that defines what data (attributes) and behavior (methods) its objects have.
Clients (browsers, apps) send requests over the network; servers process them and send responses.
Client-side code runs on the user's device (usually the browser). Server-side code runs on a server and answers requests.
A function that remembers variables from the place where it was created, even after that outer function has finished. It remembers the variable itself, not a frozen copy of its value.
Renting computing resources and managed services from a provider (AWS, Azure, GCP) on demand over the internet.
Company that rents computing resources over the internet. Largest: AWS, Microsoft Azure, Google Cloud.
A Core Web Vitals metric that measures how much the page layout jumps while it loads. Lower is better.
Cluster: the set of machines managed by Kubernetes. Node: one machine. Pod: smallest deployable unit, running one or more containers.
A teammate reads your changes before they are merged, to catch problems and share knowledge.
A sign in the code that suggests a deeper design problem: huge classes, long functions, duplicated logic, too many parameters.
How closely the parts inside a module belong together. High cohesion = a focused module with one clear purpose.
Java's built-in set of data structures and interfaces: List, Set, Map, Queue, Deque and their implementations (ArrayList, HashSet, HashMap, ArrayDeque...).
Wraps a request as an object, so it can be queued, logged, retried or undone. Natural fit for undo/redo and job queues.
A saved snapshot of changes in a Git repository, with an ID and a message describing the change.
Start from the goal and the impact, avoid jargon, use an analogy or example, and check understanding. Say what you need from them.
An interface with compareTo that gives a class its single natural ordering.
A separate object with compare(a, b) defining a custom ordering, e.g. sort people by age or by name.
NULL means 'unknown', so = NULL is never true. Use IS NULL and IS NOT NULL.
A program that translates source code into another form, for example Java source into bytecode, or TypeScript into JavaScript.
A result that will be available later, with methods to chain steps (thenApply, thenCompose, thenCombine) without blocking.
A reusable, self-contained piece of UI. In React, a function that receives props and returns JSX.
Spring searching a package and its sub-packages for stereotype-annotated classes to register as beans.
A tree structure where individual items and groups share one interface, like files and folders.
An index on several columns in a specific order, e.g. (last_name, first_name). Useful only when queries filter on its leftmost columns.
Building an object from other objects it holds as attributes ('has-a'): a Car has an Engine.
Concurrency: handling several tasks in overlapping time by switching between them (one cook, many pots). Parallelism: literally running at the same instant on several CPU cores (many cooks).
A thread-safe Map built for many threads at once, with non-blocking reads and fine-grained locking on writes. Offers atomic methods like merge and computeIfAbsent.
Thrown when a collection is structurally modified while an iterator is walking it (even in one thread). Use removeIf or Iterator.remove instead.
A Kubernetes object holding non-sensitive configuration injected into Pods as environment variables or files.
Listen first, find the shared goal, separate the problem from the person, bring data, agree on a next step. Show respect and a calm result, not who won.
A pytest file whose fixtures are automatically available to all tests in its folder and subfolders.
A set of already-open database connections that the app borrows and returns, instead of opening a new one for each query.
Every read sees the most recent write, no matter which server answers.
A way to assign keys to servers on a 'ring' so that adding or removing a server moves only a small fraction of keys.
Providing dependencies as constructor parameters. Allows final fields, clear requirements and easy unit testing.
A lightweight, isolated process packaged with its app and dependencies, sharing the host's operating system kernel.
A service storing container images for push/pull: Docker Hub, AWS ECR, Azure ACR.
An HTTP header listing which sources the browser may load scripts, styles and other content from.
A header that says what format the body has, such as application/json.
An object used with with that runs setup code at the start and cleanup code at the end, even if an error occurs. Files, locks and DB transactions use it.
Automating the release process so changes can go (Delivery, with approval) or do go (Deployment, automatically) to production.
Automatically building and testing every code change pushed to the shared repository.
A test that checks a service's API still matches what its consumers expect.
A form input whose value comes from React state and is updated through onChange.
Google's user-experience metrics: LCP (loading), INP (responsiveness), CLS (visual stability).
The object created by calling an async def function. It is a pausable piece of work that only runs when awaited or scheduled.
Cross-Origin Resource Sharing: headers by which a server tells browsers which other websites (origins) may read its responses.
COUNT(*) counts all rows. COUNT(column) counts only rows where that column is NOT NULL.
How much one module depends on the internals of another. Low coupling = you can change one without breaking the other.
An index containing all columns a query needs, so the database can answer without reading the table.
Central Processing Unit: the chip that runs program instructions. 'CPU-bound' work is limited by how fast the chip can calculate.
Work that spends its time calculating (image processing, math loops, compression). It is limited by processor speed, not by waiting.
Command Query Responsibility Segregation: separate models (and often stores) for writing data and for reading it.
A Pod state meaning the container keeps crashing and Kubernetes retries with increasing delays.
Automatically trying username/password pairs leaked from other sites, exploiting password reuse.
The four basic data operations: Create, Read, Update, Delete (SQL: INSERT, SELECT, UPDATE, DELETE).
A malicious site makes the victim's browser send a request to another site where they are logged in, using their cookies.
Cascading Style Sheets: rules that control how HTML looks (colors, fonts, spacing, layout).
Every element is a box made of content, padding, border and margin. box-sizing decides whether width includes padding and border.
A CSS layout model for arranging items in rows and columns at the same time.
A pattern that chooses which elements a rule applies to: p (elements), .card (class), #main (id), a:hover (state).
A named temporary result defined with WITH that makes complex queries easier to read; can be recursive.
Common Vulnerabilities and Exposures: a public ID (e.g. CVE-2024-1234) for a known security flaw in software.
Directed Acyclic Graph: a graph with one-way edges and no cycles. Dependency graphs are DAGs.
A class that hides how a particular table or entity is stored and retrieved, usually with CRUD methods.
A way of organizing data in memory so that some operations are efficient: list, dictionary, set, stack, queue, tree, graph.
The kind of value: integer, decimal number, text (string), true/false (boolean), list, dictionary, and so on.
An HTML attribute added only for tests, so that a selector stays stable when the styles or the text change.
An organized collection of data stored on disk so programs can search, update and share it safely.
A class decorated with @dataclass that automatically gets __init__, __repr__ and __eq__ from its declared fields. Great for plain data objects.
Database Management System: the software that stores the data and runs queries, such as PostgreSQL, MySQL or Oracle Database.
DDL (CREATE, ALTER, DROP) defines structure. DML (INSERT, UPDATE, DELETE) changes data.
Two or more transactions each wait for a lock the other holds, so none can continue. The database aborts one of them.
Delaying a function until events stop for a given time, so it runs once after a burst (e.g. typing).
A wrapper with the same interface as the wrapped object that adds behavior, such as BufferedReader wrapping FileReader.
A function that takes another function and returns a modified version of it. @timer above def f means f = timer(f). Used for logging, caching, permissions, retries.
A completely independent copy, including copies of all nested objects: copy.deepcopy(a).
A value used when the caller does not pass that parameter: def f(x=10). In Python it is created once, when the function is defined.
Layering several independent security controls so one failure does not break the whole defense.
Copying a mutable object when receiving it or returning it, so outsiders cannot change your internal state.
Script attributes that download JS without blocking HTML parsing. defer keeps order and waits for parsing; async runs as soon as ready.
A team-wide checklist of quality conditions that every work item must meet to count as complete.
At-most-once (may lose messages), at-least-once (may duplicate), exactly-once (hard; usually achieved with idempotent processing).
Intentionally duplicating some data to make reads faster, at the cost of more complex writes.
An external library your code needs, such as requests or Django. Versions are usually pinned in requirements.txt, pyproject.toml or a lock file.
Giving an object the things it needs (database, API client, clock) from outside, usually via the constructor, instead of creating them inside.
High-level business code should depend on abstractions (interfaces), not on concrete low-level details.
Tells Maven when a dependency is needed: compile (default), provided, runtime or test.
Putting a version of the application on a server or cloud environment so it runs for real users (or testers).
An object that keeps a desired number of identical Pods running and handles rolling updates and rollbacks.
'Double-ended queue' from collections. Fast O(1) add/remove at both ends; ideal for queues.
An object that customizes attribute access by defining __get__, __set__ or __delete__. Properties and methods are built on it.
Feeding crafted serialized data to an app so rebuilding the objects runs attacker-controlled code (gadget chains).
A named, proven solution to a recurring design problem (Factory, Strategy, Observer...). An idea to adapt, not a library.
Always producing the same output for the same input, with no dependence on time, randomness or order.
A combination of culture, practices and tools that brings development and operations together to deliver software faster and more reliably.
Exploring a graph by going as deep as possible along one path before backtracking, using recursion or a stack.
Since Python 3.7 a dict keeps keys in the order they were inserted, and the language guarantees it (it was only a CPython detail in 3.6).
A collection of key → value pairs with fast lookup by key: {"name": "Ana"}. Keys must be hashable.
Finds the shortest path from one node to all others in a graph with non-negative edge weights, using a min-heap.
Spring MVC's front controller: the single entry point that routes each HTTP request to the right controller method.
Removes duplicate rows from the result: SELECT DISTINCT country FROM users returns each country once.
Domain Name System: translates human-readable domain names into IP addresses.
A: name to IPv4. AAAA: name to IPv6. CNAME: alias to another name. MX: mail servers. TXT: free text such as verification.
Command-line tool: docker build (make an image), run (start a container), ps (list), logs, exec (shell inside), stop, rm.
A tool to define and run several containers together from one YAML file.
A read-only, layered template containing an app and everything it needs to run. Containers are started from images.
Docker reuses the result of each build step if its inputs did not change, which makes rebuilds fast.
A text file with instructions (FROM, COPY, RUN, CMD...) that Docker follows to build an image.
Document Object Model: the tree of objects the browser builds from HTML. JavaScript reads and changes it to update the page.
Don't Repeat Yourself: each piece of knowledge should live in one place, so a change needs only one edit.
A simple class (often a record) shaped for an API request or response, separate from the database entity.
'If it walks like a duck and quacks like a duck, it is a duck.' Code cares about what an object can do (its methods), not its class.
'Double underscore' methods like __init__, __eq__, __len__. Python calls them automatically for built-in behavior (creation, comparison, len(), printing).
An array that doubles its capacity when full (Python list, Java ArrayList). One append is occasionally O(n), but the amortized cost is O(1).
Solving a problem by breaking it into overlapping subproblems and storing each subproblem's answer so it is computed only once.
Elastic Block Store: network disks for EC2 instances. The data stays when the instance stops, like a virtual hard drive.
Managed container registries: Amazon Elastic Container Registry and Azure Container Registry. They store your Docker images privately.
ECS: AWS's container orchestrator. EKS: managed Kubernetes. Fargate: serverless compute for containers, so you manage no nodes.
An unusual or extreme input at the boundary of what a function handles: empty, zero, max size, None.
Keeping data and the methods that use it together and hiding internal details, so other code uses only a safe public interface.
Encoding (base64, UTF-8) only changes the representation; anyone can reverse it. Encryption needs a key to read the data.
Scrambling data so only someone with the right key can read it. Reversible with the key, unlike hashing.
A test that exercises the whole system from the user's point of view, e.g. a browser clicking through the app.
One specific URL + HTTP method your API handles, e.g. GET /users/{id}, usually mapped to one function.
Implementing a Singleton as a single-value Java enum; the JVM guarantees exactly one instance and it is thread-safe.
A named value provided to a program by its environment (os.environ["KEY"]), commonly used for configuration and secrets.
equals says whether two objects are logically the same. hashCode gives a number used by hash collections. If two objects are equal, they must return the same hashCode.
A version identifier for a resource sent by the server. Lets clients ask 'has it changed?' and get 304 Not Modified if not.
An event on an element also triggers on its parent, then its parent's parent, up to the document.
Handling events of many child elements with one listener on their common parent, thanks to bubbling.
The engine of asyncio. It runs many tasks in one thread, switching to another task whenever the current one is waiting (at an await).
Copies of data may differ for a short time after a write, but will all become the same if no new writes arrive.
An error object raised while the program runs (ValueError, KeyError...). If nobody catches it with try/except, the program stops and shows a traceback.
The Java API to submit tasks to a thread pool and get a Future with the result.
A SQL test that is true if a subquery returns at least one row (EXISTS) or none (NOT EXISTS).
A number a process returns when it ends: 0 means success, anything else means an error or a signal.
A SQL command that shows how the database plans to run a query (indexes used, scans, joins). EXPLAIN ANALYZE also runs it and shows real timings.
Waiting until a specific condition is true (element visible, clickable) with a timeout, instead of sleeping a fixed time.
A simple front-door class that hides a complicated subsystem behind a few easy methods.
A function or class whose job is to create objects, choosing the right concrete type: create_parser("json") returns a JsonParser.
Automatically switching to a backup component when the main one fails.
A simple working implementation used in tests instead of the real one, e.g. an in-memory database.
A configuration switch that turns a feature on or off at runtime, for all users or some, without redeploying.
The browser API for HTTP requests. It returns a Promise, does NOT throw on 404 or 500 (check res.ok), and res.json() is also async.
Fields store an object's data (state). Methods are the actions (behavior) the object can perform.
FIFO: first in, first out, like a queue at a shop. LIFO: last in, first out, like a stack of plates.
A modifier that prevents change: a final variable is assigned once, a final method cannot be overridden, a final class cannot be extended.
A block that runs after try/catch no matter what happened, including after a return or an exception. Typically used for cleanup.
A network control that allows or blocks connections based on rules (address, port, protocol).
A function that prepares something a test needs (data, connection, client) and optionally cleans it up afterwards.
A test that sometimes passes and sometimes fails without any code change.
A CSS layout model for arranging items in one direction (row or column), with easy alignment and spacing.
Two pointers move through a linked list, one step and two steps at a time. If there is a cycle they meet; if not, the fast one reaches the end. Uses O(1) extra space.
Saves memory by sharing identical immutable objects, like the Integer cache and the string pool.
A column that holds the primary key of a row in another table, creating a relationship the database can enforce.
Reusable foundation of code that gives structure to an application and calls your code at defined points (for example Spring Boot, Django, React).
The part of an application that runs on the user's device (browser or app) and that people see and interact with: layout, buttons, forms.
A named, reusable block of code. It receives inputs (parameters), does something, and can give back a result with return.
A decorator that remembers the results of a function for the same arguments (memoization). Arguments must be hashable, so passing a list raises TypeError.
A decorator for decorators: it copies the original function's name and docstring onto the wrapper, so debugging and introspection still work.
Modern JVM garbage collectors. G1 is the default: it works in regions and aims at predictable pauses. ZGC aims at pauses of a few milliseconds even on huge heaps.
The part of a language runtime that automatically frees memory no longer in use. In Python, the gc module mainly cleans up reference cycles.
The JVM component that automatically frees objects that can no longer be reached, so developers do not call free manually.
groupId, artifactId and version: the three values that uniquely identify a Maven artifact.
Google's cloud platform. It offers equivalents of the AWS and Azure services: Compute Engine (virtual machines), Cloud Storage (object storage) and GKE (managed Kubernetes).
A function that uses yield to produce values one at a time, pausing between them. It does not build the whole result in memory, and it can only be consumed once.
A type with a placeholder, like list[T], so the same code works for many types while keeping type information.
Parameterized types such as List<String> that let the compiler check element types and remove the need for casts.
A lock inside CPython (the standard Python) that allows only one thread to run Python code at a time. It keeps Python's memory management simple and safe, but it means threads cannot do heavy calculations in parallel.
A distributed version control system that records the history of your files and supports branches and merging.
add stages changes, commit saves a snapshot locally, push uploads commits to the remote, pull downloads and merges remote commits.
Copies the changes of one specific commit onto the current branch as a new commit.
A local log of everywhere HEAD has pointed, used to recover "lost" commits after a reset or rebase.
reset moves a branch back and rewrites history; revert adds a new commit that undoes an earlier one, safe on shared branches.
Temporarily stores uncommitted changes so you can switch tasks and bring them back later.
Data that any part of the program can read and change. It creates hidden connections between code and makes testing harder.
An anti-pattern: one huge class that knows and does too much. Split it by responsibility.
The four authors of the book "Design Patterns" (1994), which catalogued 23 classic object-oriented design patterns.
A set of nodes (vertices) connected by edges. Edges can be directed or undirected, weighted or not.
An API query language where the client asks for exactly the fields it needs in one request, through a single endpoint.
Groups rows that share a value so aggregate functions can be computed per group.
A high-performance RPC framework using Protobuf binary messages over HTTP/2, with code generated from a shared schema.
Ask clarifying questions, state your assumptions, split the work into small steps, ship something early and iterate with feedback.
A number calculated from a value, used to find it quickly in sets and dict keys. Equal values must have equal hashes. Only immutable values are normally hashable.
When two different keys produce the same slot in a hash table. Handled by chaining or probing; too many slow things down.
A one-way function that maps any input to a fixed-size fingerprint. The same input always gives the same output.
A structure that stores key → value pairs in an array, using a hash of the key to find the slot. Python's dict and set. O(1) average lookup.
A Map that finds values by hashing the key into buckets. Average O(1) get and put. Not thread-safe; allows one null key.
A Java Set backed by a hash table: no duplicates, no order, average O(1) add and contains. It needs correct equals and hashCode.
A tree-based structure that always gives quick access to the smallest (min-heap) or largest item. Python: heapq. Push/pop O(log n).
The Kubernetes package manager: charts of templated manifests installed with per-environment values.
The most popular JPA implementation. It generates SQL, manages entity state and caches loaded objects.
Designing a system to keep working despite failures, using redundancy and automatic failover.
A function that receives functions as arguments or returns a function. Decorators, map and sorted(key=...) are examples.
A signature computed from a message and a secret key. Anyone with the key can verify that the message is authentic and unchanged.
JavaScript's behavior of moving declarations to the top of their scope before running code.
Adding more servers that share the work, usually behind a load balancer. Requires stateless app design.
A Kubernetes object that changes the number of Pod replicas based on CPU or custom metrics.
HTTP Strict Transport Security: a header telling browsers to always use HTTPS for a domain.
HyperText Markup Language: the tags that define a web page's structure and content (headings, paragraphs, links, forms).
The protocol browsers and apps use to talk to web servers: a client sends a request (method, URL, headers, body) and gets a response (status code, headers, body).
A name: value pair carrying extra information with a request or response, e.g. Authorization: Bearer <token> or Content-Type: application/json.
The verb of a request: GET (read), POST (create), PUT (replace), PATCH (partial update), DELETE (remove).
A newer version of HTTP that sends many requests at once over one connection and compresses headers.
A cookie flag that hides the cookie from JavaScript, so injected scripts cannot steal it.
HTTP running inside an encrypted TLS connection. Protects data from being read or changed and verifies the server's identity.
Connecting on-premises networks to the cloud with a site-to-site VPN or a dedicated line (Direct Connect, ExpressRoute).
Attaching JavaScript behavior to server-rendered HTML in the browser so it becomes interactive.
Work that spends most of its time waiting for input/output: network calls, disk reads, database queries. The CPU is mostly idle while waiting.
Infrastructure, Platform and Software as a Service: rented servers; a platform that runs your code; a finished application.
Identity and Access Management: the AWS (or other cloud) system for users, roles and permissions.
Integrated Development Environment: an editor with extra tools such as autocomplete, a debugger and run/test buttons (IntelliJ IDEA, Eclipse, PyCharm).
An operation that has the same effect whether you do it once or many times. Setting x = 5 is idempotent; adding 1 to x is not.
Which exact object in memory a variable refers to. id(x) shows it and is compares it. Two equal lists can still be two different objects.
Insecure Direct Object Reference: accessing someone else's data by changing an ID in the request, because ownership is not checked.
An object that cannot change after creation, like int, str, tuple or frozenset. 'Changing' it really creates a new object.
A class whose objects never change after construction (final fields, no setters). Safe to share between threads.
Replacing servers with freshly built images for every change instead of modifying them in place.
Close a story with a result and, if you can, a number: time saved, errors reduced, users helped. It turns 'I worked on it' into 'it mattered'.
Spaces at the start of a line. In Python they define which lines belong to a block (if, loop, function).
A sorted lookup structure on one or more columns that lets the database find rows quickly without scanning the whole table.
Defining servers, networks and databases in code files, so infrastructure is versioned, reviewed and reproducible.
Kubernetes rules that route external HTTP(S) traffic by host and path to Services, implemented by an Ingress Controller.
A class (child) reuses and extends another class (parent): class Dog(Animal). The child gets the parent's methods and can override them.
Returns only rows that have a match in both tables.
Checking that incoming data matches what is expected (type, length, format, range) and rejecting anything else.
A concrete object created from a class. rex = Dog() makes rex an instance of Dog. The class is the blueprint; the instance is the house.
A test that checks several real components working together, such as your code with a real database.
The set of methods an object promises to offer, without saying how they work inside. In Python often expressed with an ABC or a Protocol.
Prefer several small, focused interfaces over one large one, so classes implement only what they use.
A program that reads source code and runs it directly. Python code runs with the python interpreter.
A design where a framework or container controls object creation and wiring instead of your own code calling new.
A number that identifies a device on a network, like 192.168.1.10 (IPv4). DNS translates names into IP addresses.
How much concurrent transactions are protected from each other: Read Uncommitted, Read Committed, Repeatable Read, Serializable.
Anything you can loop over with for: lists, strings, dicts, files, ranges. Calling iter() on it gives an iterator.
An object that returns the next item each time you call next() on it, and remembers where it is. When it has no more items, it raises StopIteration.
The default Java library that converts objects to JSON and JSON to objects.
The successor to Java EE. Since Spring Boot 3 the packages are jakarta.* instead of javax.*.
Java ARchive: a ZIP-based file that bundles compiled classes and resources. Libraries and Spring Boot apps are shipped as JARs.
A general-purpose, object-oriented programming language, very common in backend and enterprise software. Not related to JavaScript.
The shared memory area where all objects live. It is cleaned by the garbage collector. When it is full: OutOfMemoryError.
javac compiles .java source into .class bytecode. java starts the JVM and runs that bytecode, or a whole JAR with java -jar.
The programming language that runs in browsers (and on servers with Node.js) to make pages interactive.
The mechanism that runs JS on a single thread: run synchronous code, then all microtasks (promises), then the next macrotask (timers, events).
The standard low-level Java API for running SQL on relational databases through drivers.
A Spring helper that runs SQL through JDBC and removes the boilerplate: connections, statements and cleanup are handled for you.
JRE (Java Runtime Environment) = JVM + standard libraries, enough to run programs. JDK (Java Development Kit) = JRE + developer tools such as the compiler javac.
Combining rows of two tables based on a related column, e.g. orders.customer_id = customers.id.
The Java standard for mapping objects to relational tables (ORM): @Entity, @Id, relationships and JPQL queries.
A Spring Data interface that gives ready-made CRUD, paging and sorting methods for an entity. You only declare the interface.
A text data format with objects {"key": value} and arrays [...]. The standard format for web APIs.
json.loads turns a JSON string into Python objects. json.dumps turns Python objects into a JSON string.
A syntax that lets you write HTML-like markup inside JavaScript (React). The build step compiles it into normal function calls.
A table with two foreign keys that links two tables in a many-to-many relationship.
The standard Java unit testing framework: @Test, @BeforeEach, @ParameterizedTest, assertions and extensions.
The program that loads Java bytecode and executes it, manages memory (garbage collection) and optimizes hot code while running. Each operating system has its own JVM.
A compact token with three parts (header.payload.signature). The payload holds claims like user ID and expiry; the signature proves the server issued it.
An O(n) algorithm for the maximum sum of a contiguous subarray: at each element, extend the current run or restart.
A distributed event streaming platform: messages are stored in an ordered, replayable log split into partitions.
A visual board method with limits on work in progress and continuous flow, instead of fixed sprints.
An argument passed by name: f(size=10). Order does not matter and calls are easier to read.
Managed services that create, store and control encryption keys (AWS KMS, Azure Key Vault).
The Kubernetes command-line tool: apply, get, describe, logs, exec, rollout.
A system that automates deploying, scaling, healing and networking containers across a cluster of machines.
An object to hold sensitive values and inject them into Pods. Encoded, not encrypted, by default.
A small anonymous function written in one expression: lambda x: x * 2 is the same as def f(x): return x * 2.
A short anonymous function written as (args) -> expression, e.g. n -> n * 2. It can be used wherever a functional interface is expected.
The time one operation takes from start to finish, e.g. how long a request waits for its response.
Docker's default tag. It is only a name that moves, so it does not mean 'newest'. Pin an exact version in production.
'Talk only to your immediate friends.' A method should not reach through a chain of objects (a.b.c.d()); chains couple your code to the inner structure of other classes.
Layer 4 balances raw TCP/UDP connections; layer 7 understands HTTP and can route by URL path or host name.
Computing values only when they are actually needed, instead of all at once in advance. Saves memory and time when not everything is used.
Loading related data only when it is first accessed. Efficient, but outside a session it throws LazyInitializationException.
One node (leader) accepts writes and copies them to followers, which serve reads and can replace the leader.
Pick a real mistake, own it without blaming others, explain what you changed afterward (a test, a checklist, a process) and what you learned.
Show a method: official docs, a small prototype, asking someone experienced, then applying it to real work. Give the result and how fast you got there.
Giving every user, service and key only the minimum permissions it needs.
Returns all rows from the left table, plus matching rows from the right one (NULL where there is no match).
A collection of reusable code that your program calls when it needs it (for example requests, Jackson).
Checking items one by one from the start until the target is found. O(n).
A sequence of nodes where each node holds a value and a pointer to the next node. Easy to insert/remove; slow to access by index.
Free, open source operating system family that runs most servers, containers and cloud machines.
A subclass must work anywhere its parent class is expected, without surprising the caller.
An ordered, changeable collection: [1, 2, 3]. Items are accessed by position, starting at 0.
A compact way to build a list from a loop: [x * 2 for x in nums if x > 0]. With parentheses instead of brackets it becomes a generator expression.
A component that spreads incoming requests across several servers and skips unhealthy ones.
Simulating many concurrent users to measure performance and find the system's limits.
The folder ~/.m2/repository where Maven caches downloaded libraries and stores artifacts from mvn install.
Browser key-value storage readable by JavaScript. localStorage persists; sessionStorage lasts for one tab.
The way a test finds an element: by id, name, CSS selector, XPath or link text. Stable locators make tests less brittle.
A tool that lets only one thread at a time run a protected piece of code: with lock: .... Prevents race conditions.
The standard way to avoid deadlocks: every transaction takes locks in the same global order, and keeps transactions short.
Logs: timestamped text events. Metrics: numeric measurements over time. Traces: the timed path of one request through services.
A Java counter built for many threads: it spreads updates over several cells and sums them on read, so it scales better than AtomicLong under contention.
A structure that repeats a block of code, for example for (once per item) or while (as long as a condition is true).
A fixed-size cache that removes the Least Recently Used item when it needs space.
A release that receives updates and fixes for several years. Java 8, 11, 17, 21 and 25 are LTS versions.
Malicious software: viruses, worms, ransomware, spyware and other programs designed to harm or steal.
An identity Azure manages for a resource so it can call other services with tokens instead of stored passwords. AWS equivalent: IAM roles.
Manual: a person runs the steps and judges the result. Automated: code runs the checks quickly and repeatedly.
Array methods that return new results: map transforms each item, filter keeps matching items, reduce combines items into one value.
A language that labels content with tags to describe its structure or meaning, such as HTML. It is not a programming language: it has no logic.
A Java build and dependency management tool. It reads pom.xml, downloads libraries, compiles, tests and packages the project.
The standard layout: src/main/java (code), src/main/resources (config), src/test/java (tests). Build output goes to target/.
The ordered phases of a build: validate, compile, test, package, verify, install, deploy. Running a phase runs all earlier ones.
A CSS condition (screen width, dark mode, etc.) that applies rules only when true.
Caching a function's results by its arguments, so repeated calls with the same input return instantly. Python: @functools.lru_cache.
Objects that are still referenced (so the GC cannot free them) but will never be used again, causing the heap to grow.
Helping someone grow: explain the why, give small tasks with feedback, pair on problems and let them own the solution. Describe how they improved.
Combining the changes from one branch into another. Keeps both histories and adds a merge commit when needed.
Happens when two branches changed the same lines. You must pick the final content manually, then mark it resolved.
A sort that splits the list in halves, sorts each, and merges them. Always O(n log n), stable, uses extra memory.
The server software that receives, stores and delivers messages between services (RabbitMQ, Kafka, SQS).
A buffer where one service puts messages and another takes them later, so they don't have to be available at the same time.
The 'class of a class': it creates classes the way classes create objects. The default is type. Rarely needed in everyday code.
Data about data. For a function: its name (__name__), docstring (__doc__), module, and so on.
A function defined inside a class. It receives the object (self) automatically as its first argument.
Multi-factor authentication: requiring two or more different kinds of proof of identity, such as a password plus a phone code.
An architecture where an application is split into small, independently deployable services that communicate over the network.
Microsoft's cloud identity and access service, formerly Azure Active Directory (Azure AD).
Microtasks (promise callbacks) run right after the current code, before any macrotask (setTimeout, I/O, UI events).
Code that runs around every request and response in a web app, for cross-cutting tasks like logging, auth, CORS or timing.
A test double that replaces a real dependency, returns what you configure, and records calls so you can verify them.
A module is a file of code you can import; a package is a folder of modules.
Watching metrics (errors, latency, CPU) over time and alerting when the system is unhealthy.
An application built and deployed as a single unit. Can be well organized internally (modular monolith).
A stack kept in increasing or decreasing order, used to find the next greater or smaller element for every item in O(n).
Connect your goals to the role and the company: what you want to learn, what you can contribute and something specific you researched about their product or team.
The order in which Python searches classes for a method or attribute when inheritance is involved. See it with ClassName.__mro__.
A Dockerfile with several FROM stages, where later stages copy only the needed outputs from earlier ones.
A class with more than one parent: class D(B, C). Python resolves conflicts using the MRO.
Runs Python code in separate processes, each with its own interpreter and GIL, so CPU-bound work uses several cores. Cost: starting processes and pickling the data sent between them.
An object that can be changed after it is created, like a list, dict or set. If two variables point to the same mutable object, a change through one is visible through the other.
Planting small bugs in the code to check whether the test suite notices them.
Model-View-Controller: separates data and rules (model), presentation (view) and request handling (controller).
clean deletes target/, test runs the unit tests, package builds the JAR, install also copies it into ~/.m2.
Minimum Viable Product: the smallest version of a product that delivers value and lets the team learn from real users.
Running 1 query to get a list of N items, then 1 more query for each item. Fixed by loading related data in bulk (JOIN or IN query).
A logical partition of a cluster (dev, staging, team-a) with its own names, quotas and permissions.
Network Address Translation: lets hosts with private IPs reach the internet through a shared public address.
A failure where parts of a distributed system cannot communicate with each other, while each part keeps running.
The US National Institute of Standards and Technology. It publishes widely used security and cloud standards, such as the definition of cloud computing.
On-demand self-service, broad network access, resource pooling, rapid elasticity, measured service.
A JavaScript runtime that lets you run JavaScript outside the browser, for example to build servers and command-line tools.
Progressive rules for table design that remove redundancy: atomic values (1NF), full dependence on the key (2NF), no dependence between non-key columns (3NF).
Organizing tables so each fact is stored once, linked by keys. Avoids duplicate data and update mistakes.
Databases that are not relational tables: document, key-value, wide-column or graph stores, often with flexible schemas.
npm is the Node package manager. package.json lists metadata, scripts and dependencies; npm install downloads them to node_modules.
A marker for 'missing or unknown value' in SQL. It is not 0 or empty string, and comparisons with it are never true (use IS NULL).
The value of a reference that points to no object. Calling a method on it throws NullPointerException.
A standard for letting an app get limited access to a user's account on another service without seeing the user's password ('Log in with Google').
Any value in Python (a number, a list, a function, a class). Every object has a type, a value and an identity.
Storage for files (objects) accessed via an HTTP API, like S3. Very durable and scalable, but not a normal filesystem.
Storage for whole files (objects) accessed by key or URL, like Amazon S3 and Azure Blob Storage. Not a database.
How well you can understand what a running system is doing from its outputs: metrics, logs and traces.
Subscribers register with a subject and are notified automatically when an event happens (publish/subscribe).
A login layer on top of OAuth 2.0. It tells the app who the user is through an ID token (a JWT).
Out Of Memory killer: a Linux kernel mechanism that kills a process using more memory than allowed.
Object-oriented programming: organizing code into objects that bundle data (fields) and behavior (methods).
Code should be open for extension (add new behavior) but closed for modification (don't edit tested code to add it).
The software that manages the hardware and runs other programs (Linux, Windows, macOS). It gives programs files, memory, processes and networking.
Not locking while reading; when saving, check a version number to detect if someone else changed the row in the meantime.
A container that may hold a value or be empty. Used as a return type to make "might be missing" explicit instead of returning null.
The combination of scheme, domain and port of a web page, e.g. https://app.example.com:443. Different origin = different site for the browser.
Object-Relational Mapper (Django ORM, SQLAlchemy): lets you work with database rows as Python objects instead of writing SQL by hand.
Several methods with the same name but different parameter lists in the same class. The compiler chooses at compile time.
A subclass provides its own implementation of an inherited method with the same signature. The JVM chooses the version at runtime from the real object type.
A widely used list, published by the OWASP foundation, of the most critical security risks for web applications.
Showing that you took responsibility beyond your task: you saw the problem, acted, followed through and owned the result. Use 'I', not only 'we'.
A namespace that organizes related classes and interfaces, like a folder: java.util, com.mycompany.shop.
A tool that downloads and tracks the libraries a project needs: Maven or Gradle (Java), pip (Python), npm (JavaScript).
A pattern where each page is a class with its locators and actions, keeping tests readable and UI changes in one place.
Returning a large list in smaller pages (e.g. 20 items at a time), using limit/offset or a cursor.
A parameter is a variable in a function's definition (def greet(name)). An argument is the value you pass when calling it (greet("Ana")).
A pytest decorator that runs the same test with several sets of inputs.
Storing a slow, salted, one-way hash of the password (Argon2id, bcrypt, scrypt) instead of the password itself.
An update that fixes a bug or a security vulnerability in software.
A variable part of the URL path that identifies a resource: in /users/42, 42 is the user ID.
Using ../ sequences in a file path input to access files outside the intended folder.
The number of ways to order n distinct items is n! (n factorial). Generating them all takes at least n! steps, which grows extremely fast.
Keeping data after the program stops, by saving it on disk (for example in a database) instead of only in memory.
The set of entities a JPA session currently manages. Changes to them are detected (dirty checking) and written at commit.
PV: a piece of cluster storage. PVC: a Pod's request for storage; it binds to a PV so data survives Pod restarts.
Locking rows when you read them (SELECT ... FOR UPDATE) so nobody else can change them until you finish.
Fraudulent messages that impersonate trusted organizations to trick people into giving credentials or installing malware.
Python's built-in way to convert objects to bytes and back. Used to send data between processes. Never unpickle untrusted data.
Process ID: the number the operating system gives to each running process. In a container, PID 1 is the main process; when it exits, the container stops.
Personally Identifiable Information: data that can identify a person, such as name, email, ID number or address.
Python's package installer. It downloads packages from PyPI (the Python Package Index).
The smallest unit Kubernetes runs: one or more containers sharing network and storage.
The client repeatedly asks the server 'anything new?' at intervals. Simple but wasteful compared to push.
Different classes respond to the same method call in their own way. The caller just calls x.area() without checking the type.
Project Object Model: the Maven file describing the project (coordinates, dependencies, plugins, properties).
A number (0-65535) that identifies a specific service on a machine, e.g. 443 for HTTPS, 5432 for PostgreSQL.
An argument passed by position: f(10, 20). The first value goes to the first parameter, and so on.
A written analysis after an incident: what happened, why, and what will change to prevent it.
An array where each position holds the total of all elements before it, so any range sum is one subtraction.
A simple structure for 'Tell me about yourself': what you do now, how you got here (1 or 2 key steps), and why this role is next. About 1 to 2 minutes.
The column(s) that uniquely identify each row in a table. Unique and never NULL.
A basic value type built into Java: int, long, double, boolean, char, byte, short, float. It is not an object and can never be null.
print shows a value on the screen and the function then returns None. return hands a value back to the caller so other code can use it, and it ends the function.
Clarify what is urgent versus important, agree on scope with the stakeholders, deliver the most valuable part first, communicate risks early and say no to the rest.
Gives a cloud service a private IP in your network, so traffic never crosses the public internet.
A running program with its own private memory. Two processes do not share variables; to exchange data they must send it to each other. Like two separate kitchens.
A formal language for writing instructions that a computer can execute, such as Python, Java or JavaScript.
An object representing the future result of an async operation: pending, then fulfilled with a value or rejected with an error.
Runs promises in parallel and resolves with all results, but rejects as soon as ONE rejects. Promise.allSettled waits for all and reports each outcome.
Testing that a rule holds for many automatically generated inputs (e.g. with Hypothesis).
Inputs passed from a parent component to a child component. Read-only for the child.
A type describing required methods. Any class that has those methods matches it, without inheriting from it.
An object that stands in for another with the same interface to control access or add behavior (transactions, caching, lazy loading).
Publish/subscribe messaging: publishers send to a topic; every subscriber of that topic receives a copy.
A request to merge a branch, with code review and automated checks, hosted on GitHub/GitLab (called merge request on GitLab).
The standard config file of a Python project: metadata, dependencies and tool settings in one place.
The most popular Python testing framework: plain assert statements, fixtures, parametrization and plugins.
Quality Assurance: activities (testing, automation, process improvements) that help make sure software meets quality expectations.
Queries (requests) per second: a basic measure of load used in capacity estimates.
A request written for a database to get or change data, usually in SQL.
Key=value pairs after ? in a URL, used for filtering, sorting and paging: ?status=paid&limit=10.
Ask about the team, how work is planned and reviewed, onboarding, what success looks like in 6 months and the main technical challenges. Avoid only asking about salary or perks.
A FIFO collection (first in, first out): add at the back, remove from the front. Like a line of people.
A modern transport protocol built on UDP and used by HTTP/3. It sets up connections faster and avoids TCP head-of-line blocking.
A sort that picks a pivot, splits items into smaller and bigger than the pivot, and sorts each part. Fast on average, O(n²) worst case.
A bug where the result depends on the unlucky timing of threads or processes touching the same data. Hard to reproduce because it happens only sometimes.
Random-access memory: fast, temporary memory where running programs keep their data. It is cleared when the program ends or the computer restarts.
Restricting how many requests a client may make per time window, to protect the service from abuse and overload.
Role-Based Access Control: permissions are given to roles (admin, editor, viewer) and users receive roles, instead of assigning permissions one by one.
A vulnerability that lets an attacker run their own code on your server. The most severe class of bug.
RDS: managed relational databases. DynamoDB: serverless NoSQL key-value/document store for massive scale and simple access patterns.
A JavaScript library for building user interfaces from components that re-render when their data changes.
A way to make a value available to all descendant components without passing props at every level.
Functions starting with use (useState, useEffect, useMemo...) that give function components state and lifecycle features.
A library that renders React components in tests and queries them like a user would (by role or text).
A copy of the database that receives changes from the primary and serves read queries.
Health checks Kubernetes runs on Pods: readiness decides if a Pod gets traffic; liveness decides if it must be restarted.
Replaying your commits on top of another branch to get a straight-line history. It rewrites commit IDs.
Listen without defending, ask questions to understand, thank the person, act on it and show the change. Interviewers look for a growth mindset.
React's process of comparing the new UI description with the previous one and updating only what changed.
A compact immutable data class (Java 16+): record Point(int x, int y) {} generates constructor, accessors, equals, hashCode and toString.
A function that solves a problem by calling itself on smaller inputs, until it reaches a base case.
A very fast in-memory key-value data store, used for caching, counters, sessions, queues and leaderboards.
Improving the internal structure of code (names, duplication, organization) without changing its behavior.
CPython counts how many variables or containers point to each object. When the count drops to 0, the object is freed immediately.
A Region is a geographic area; an Availability Zone is an isolated data center location inside it. Spread across AZs for high availability.
A bug where something that used to work stops working after a change. Regression tests guard against it.
A database that stores data in tables with rows and columns, linked by keys, and queried with SQL (PostgreSQL, MySQL, Oracle, SQL Server).
A shared copy of the Git repository hosted elsewhere (GitHub, GitLab). origin is the default name of the main remote.
Keeping copies of the same data on several servers, for availability and to spread read traffic.
A class that hides how data is stored, offering simple methods like get, add, list to the rest of the code.
Kubernetes CPU/memory settings: requests are reserved for scheduling; limits are the maximum (memory over the limit means OOMKilled).
Designing pages that adapt their layout to different screen sizes, from phones to desktops.
A popular style for web APIs: URLs name resources (/users/42), HTTP methods express actions, and requests are stateless.
Spring's classic HTTP client for calling other REST services. In newer code RestClient or WebClient is preferred.
A regular, blameless team meeting to review how the team worked and agree on concrete improvements.
Retrying a failed call after waiting longer each time (1 s, 2 s, 4 s...), with some randomness (jitter) so clients don't retry in sync.
A header sent with 429 or 503 that tells the client how many seconds to wait before trying again.
A server in front of your app servers that receives client requests and forwards them, often adding TLS, caching and load balancing.
Returning to the previous working version after a bad release.
Mapping incoming request paths and methods to the functions that handle them.
A random value added to each password before hashing so that identical passwords produce different hashes.
SAST scans source code statically; DAST attacks a running app; SCA checks third-party dependencies for known vulnerabilities.
Software Bill of Materials: a list of every component and dependency inside your software, used to find vulnerable libraries quickly.
The structure of the data: which tables or documents exist, their fields, types and relationships.
Where a variable name is visible. Python looks names up in this order: Local (inside the function), Enclosing function, Global (module), Built-in (LEGB).
An Agile framework with fixed sprints, three roles (Product Owner, Scrum Master, Developers) and events (planning, daily, review, retrospective).
Software Development Kit: a library plus tools that a vendor provides to use its service from code, for example the AWS SDK.
Software Development Life Cycle: the phases from requirements and design through coding, testing, deployment and maintenance.
Sensitive configuration such as passwords, API keys and private keys. Must never be stored in code or logs.
A virtual firewall attached to a resource: stateful and allow-only (AWS Security Group, Azure NSG). NACLs are stateless subnet-level filters.
SQL clauses are evaluated in this logical order: FROM, WHERE (filters rows), GROUP BY, HAVING (filters groups), SELECT (picks columns), ORDER BY, LIMIT.
A library that controls a real browser from code (open pages, find elements, click, type) to automate UI tests.
Using HTML elements for their meaning (button, nav, main, label) instead of generic divs, which helps accessibility and SEO.
Version numbers MAJOR.MINOR.PATCH: breaking change, new compatible feature, compatible bug fix.
Search Engine Optimization: making pages easy for search engines to read and rank. Server-rendered HTML helps because crawlers see the content immediately.
A computer or a program that waits for requests from clients and sends back responses.
Running code without managing servers: the provider runs your function on demand and charges per execution (e.g. AWS Lambda).
A stable network name and IP that load-balances traffic to a changing set of Pods.
A servlet is a Java class that handles HTTP requests; a container (Tomcat, Jetty) runs them and manages connections and threads.
Server-side memory of a logged-in user, identified by a random session ID usually stored in a cookie.
An attack where the victim is made to log in with a session ID the attacker already knows.
An unordered collection of unique values with very fast membership checks: {1, 2, 3}.
The Secure Hash Algorithm family. SHA-256 turns any input into a fixed 256-bit fingerprint. It is fast and one-way, so for passwords use slow hashes (Argon2, bcrypt) instead.
A new container that holds the SAME inner objects as the original: list(a), a.copy(), copy.copy(a).
A message sent to a process: SIGTERM (15) politely asks it to stop; SIGKILL (9) kills it immediately.
A component without a backup whose failure stops the whole system.
A class or module should have one job, so only one kind of change forces you to edit it.
A class that allows only one instance, reachable from anywhere. Often criticized because it acts like a global variable.
SLI: a measured indicator (e.g. success rate). SLO: the internal target (e.g. 99.9%). SLA: a contractual promise to customers.
seq[start:stop:step] takes a part of a list, tuple or string. start is included, stop is NOT. Negative indexes count from the end: s[-1] is the last item, so "python"[-1] is 'n'.
A technique that keeps a moving range [left, right] over an array or string, expanding and shrinking it instead of restarting, often O(n).
A small set of quick checks that the most important functions work, typically after a deploy.
A mutable development version (1.2.0-SNAPSHOT) that may change, unlike an immutable release version.
Five design principles for maintainable object-oriented code: Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion.
A method to put items in order. Common ones: merge sort, quicksort, heapsort, Timsort (Python). Good general sorts are O(n log n).
A web app that loads once and updates the view with JavaScript and API calls instead of full page reloads.
How much extra memory an algorithm needs as the input grows, written in Big-O.
The weight CSS uses to choose between conflicting rules: inline > id > class > element.
A layer on top of Spring that auto-configures libraries, bundles dependencies into starters and embeds a web server, so apps start with java -jar.
Adds operational endpoints (health, metrics, info) for monitoring and orchestrator probes.
A Spring module that generates repository implementations from interfaces, including queries derived from method names.
A large Java framework for building applications. Its core is a container that creates objects (beans) and wires them together, with modules for web, data, security and testing.
A named configuration set (dev, test, prod) activated with spring.profiles.active, letting the same app use different settings per environment.
A wrapper object Spring places around a bean to add behavior (transactions, caching, security). Calls inside the same class bypass it.
The Spring module for authentication, authorization and protection against common attacks (CSRF, session fixation...), built on a chain of servlet filters.
A fixed period (1 to 4 weeks) in Scrum after which the team delivers a usable increment.
Structured Query Language: the language used to read and change data in relational databases (SELECT, INSERT, UPDATE, DELETE).
An attack where user input is inserted into a SQL query as code, letting the attacker read or change data. Prevented with parameterized queries.
AWS messaging: SQS is a queue that workers pull from; SNS publishes each message to all subscribers.
Secure Shell: an encrypted protocol to log in to and run commands on remote machines.
Server-side rendering: the server generates the HTML for a page so it arrives already filled with content.
Server-Side Request Forgery: making your server send requests to internal or unintended addresses.
A LIFO collection (last in, first out): push adds to the top, pop removes from the top. Like a pile of plates.
The set of technologies used to build an application: for example React + Spring Boot + PostgreSQL.
StackOverflowError: the call stack is full, usually from infinite or very deep recursion. OutOfMemoryError: the heap has no room left even after garbage collection.
The waiting area where git add places changes you want in the next commit.
A production-like environment used to test releases before they reach real users.
Anyone affected by or interested in a project: users, customers, managers, other teams.
Situation, Task, Action, Result: a structure for answering behavioral questions with a short, concrete story.
A single Maven/Gradle dependency (like spring-boot-starter-web) that pulls in a compatible group of libraries for one purpose.
Data owned by a component that can change over time; changing it causes a re-render.
StatefulSet: Pods with stable identity and storage (databases). DaemonSet: one Pod per node. Job: a run-to-completion task; CronJob: scheduled Jobs.
The server keeps no memory of previous requests from a client; each request carries all it needs (e.g. a token).
A class-level member: one copy shared by all objects, usable without creating an instance (Math.max(1, 2)).
Static: the server sends the same ready-made files to everyone. Dynamic: the server builds the page for each request, usually with data from a database.
A 3-digit number in every HTTP response: 2xx success, 3xx redirect, 4xx client error, 5xx server error.
@Component, @Service, @Repository, @Controller and @RestController: markers that register a class as a bean and describe its role.
A moment when the JVM pauses all application threads so the garbage collector can work safely. Long pauses cause latency spikes.
Story points are relative effort estimates; velocity is the number of points a team completes per sprint, used for forecasting.
Interchangeable algorithms behind one interface, chosen at runtime (e.g. different shipping cost rules).
A way to process collections as a pipeline (filter, map, collect). Streams are lazy: nothing runs until a terminal operation such as toList() or forEach is called.
Strengths: pick 2 or 3 relevant ones with a short example. Weakness: a real one that is not critical for the job, plus what you do to improve it.
A special memory area where Java keeps one copy of each string literal, so identical literals share the same object.
A mutable text buffer for building strings efficiently. Unlike String, appending to it does not copy the whole text every time.
Type compatibility based on the shape (properties and methods) of a value, not the name of its type.
A test double that returns fixed, pre-programmed answers.
An artificial identifier (auto-increment id or UUID) with no business meaning, used as a stable primary key.
Encryption where the same secret key encrypts and decrypts (e.g. AES). Fast.
A keyword that lets only one thread at a time run a block or method for a given lock object, and makes its changes visible to other threads.
Deciding the main components of a system and how they work together to meet requirements for scale, reliability and speed.
A set of rows (records) with the same columns (fields), like a spreadsheet with strict column types.
Transmission Control Protocol: a reliable connection between two machines. It guarantees that data arrives complete and in order. HTTP, databases and SSH run on top of it.
Writing a failing test first, then just enough code to pass it, then cleaning up: red → green → refactor.
Working well with others: share information, help teammates, give and accept review comments, respect different views and keep a positive attitude under pressure.
The future cost of quick or messy solutions taken now. It slows later changes until it is repaid.
A base class fixes the steps of an algorithm and lets subclasses supply specific steps.
The terminal is the text window; the shell (Bash, Zsh, PowerShell) interprets the commands you type.
A popular Infrastructure-as-Code tool that creates and updates cloud resources from configuration files.
A test case checks one scenario against an expected result. A suite is a group of test cases run together.
The percentage of code lines or branches executed by the test suite.
Each test sets up and cleans up its own data, so tests don't affect each other and can run in any order.
Guideline for test mix: many fast unit tests at the bottom, fewer integration tests, very few slow end-to-end tests at the top.
A Spring Boot test annotation that loads only part of the app (@WebMvcTest, @DataJpaTest) for fast, focused tests.
A keyword whose value depends on how a function is called. Arrow functions take this from the surrounding code.
A sequence of instructions running inside a program. One program (process) can have several threads that share the same memory, like several cooks in one kitchen.
A fixed or bounded group of reusable worker threads that execute queued tasks, avoiding the cost and risk of one thread per task.
A per-thread memory area holding one frame per active method call with its local variables. Too many nested calls cause StackOverflowError.
A design-time analysis of what can go wrong. STRIDE = Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege.
Limiting a function to run at most once per time interval, even if events keep firing (e.g. scrolling).
How much work a system completes per unit of time, e.g. requests per second.
A tracked unit of work (bug, task, story) in a tool such as Jira, with owner, status and priority.
How the number of steps of an algorithm grows with the input size, usually written in Big-O.
time.sleep blocks the whole thread. Inside async code use await asyncio.sleep(...), which lets other tasks run while waiting.
Transport Layer Security: the protocol that encrypts and authenticates network connections. The S in HTTPS.
A digital document, signed by a trusted authority, that proves a public key belongs to a specific domain.
A string a client sends to prove who it is (like a ticket), usually in the Authorization header. It replaces sending the password every time.
A rate limiting algorithm: tokens refill at a steady rate and each request spends one. It allows short bursts (up to the bucket size) while keeping the average rate under control.
Ordering the nodes of a DAG so that every node comes after the nodes it depends on.
A choice where improving one quality (speed) costs another (simplicity, consistency, money).
A group of database operations treated as one unit: either all succeed (COMMIT) or all are undone (ROLLBACK).
A library pulled in automatically because one of your dependencies needs it.
A hierarchical structure of nodes: one root, each node has children, no cycles. Nodes without children are leaves.
A tree where each path from the root spells a prefix; used for autocomplete and prefix searches.
Syntax to catch errors: code that might fail goes in try; the handling code goes in except SomeError:. finally always runs; else runs only if there was no error.
A try statement that opens resources in parentheses and closes them automatically at the end, even after an exception.
How long a cached item (or DNS record) stays valid before it expires and must be fetched again.
A set of 12 practices for cloud-friendly apps, such as config in env vars, stateless processes and logs to stdout.
A technique using two indexes that move through the data (from both ends, or one fast and one slow) to avoid nested loops.
Automatic conversion of a value from one type to another, e.g. JavaScript turning "5" into 5 when comparing with ==.
The compiler removes generic type arguments after checking, so at runtime List<String> and List<Integer> are both plain List.
Annotations like def f(x: int) -> str: that document expected types. Python ignores them at runtime; tools like mypy and editors use them to find bugs.
JavaScript with static type annotations, checked at compile time and removed when compiled to JS.
A placeholder type used for generic code. T = TypeVar("T") lets a function say 'the output has the same type as the input'.
A faster, connectionless protocol with no delivery guarantee. Used for video calls, games, DNS lookups and HTTP/3 (through QUIC).
UI (user interface) is what the user sees and uses. UX (user experience) is the whole experience of using the product.
An exception extending RuntimeException (NullPointerException, IllegalArgumentException...). The compiler does not force you to handle it; it usually signals a bug.
Combines the results of two SELECT queries into one list. UNION removes duplicates; UNION ALL keeps them.
A structure that tracks which elements belong to the same group, with near-O(1) find and union operations.
A rule that no two rows may have the same value in that column (e.g. email).
An automated test of a small piece of code (a function or class) in isolation, with external dependencies replaced by test doubles.
Uniform Resource Locator: the address of a resource, made of scheme (https), host (example.com), optional port, path (/products) and query (?id=7).
A React hook for side effects (fetching, subscriptions, timers) that run after render. The dependency array controls when it re-runs; the returned function cleans up.
A short description of a need from the user's view: "As a ..., I want ..., so that ...", with acceptance criteria to confirm it is done.
A React hook that keeps a mutable value or a DOM node between renders without causing a re-render.
A React hook that gives a component a piece of state: const [count, setCount] = useState(0). Calling the setter schedules a re-render.
Universally Unique Identifier: a 128-bit random ID like 3f2b8c1e-.... It can be generated anywhere without coordination, with a negligible chance of collision.
Checking that input data has the right shape, types and values before using it. In FastAPI done by Pydantic models.
Ways to declare variables in JS. var: function-scoped and hoisted (old). let: block-scoped, can be reassigned. const: block-scoped, cannot be reassigned.
A name that refers to a value stored in memory, so the value can be used or changed later.
Making one server more powerful (more CPU, RAM, disk). Simple but limited and still a single point of failure.
A named, saved query that behaves like a virtual table. A materialized view stores its result physically.
A lightweight in-memory description of the UI that React compares between renders to compute minimal real DOM changes.
A self-contained folder with its own Python packages for one project, created with python -m venv .venv.
A software emulation of a full computer, running its own operating system on top of a hypervisor.
A lightweight thread (Java 21) scheduled by the JVM instead of the OS. Millions can exist, which suits I/O-heavy servers.
A field modifier guaranteeing that all threads see the latest written value. It does not make compound actions like count++ atomic.
Storage that lives outside a container's lifecycle, used to keep data such as database files.
A private, isolated virtual network in AWS (VPC) or Azure (VNet), divided into subnets.
Virtual Private Network: an encrypted tunnel between networks or devices over the internet, so they behave as if they were on the same private network.
A weakness in software, configuration or process that an attacker could exploit.
Web Application Firewall: filters HTTP traffic and blocks common attacks like SQL injection and XSS before they reach the app.
Web Application Archive: a packaged Java web app that is deployed into a servlet container such as Tomcat. Spring Boot usually builds an executable JAR instead.
An app (Chrome, Firefox, Safari, Edge) that requests web pages from servers and displays them. It is the most common HTTP client.
An HTTP call that a service makes to YOUR URL when an event happens (e.g. 'payment succeeded'), instead of you asking repeatedly.
A connection that stays open so server and client can send messages to each other at any time. Used for chat and live updates.
A function computed over a set of related rows while keeping every row: ROW_NUMBER, RANK, running totals, using OVER (PARTITION BY ... ORDER BY ...).
Work-in-progress limit: a Kanban rule that caps how many items can sit in a column at once, so the team finishes work before it starts more.
A process or thread that handles requests or jobs. A server often runs several workers to handle work in parallel.
Every write goes to both the cache and the database, so the cache is always current.
Standards for how Python web servers run web apps. WSGI is synchronous (Flask, classic Django); ASGI supports async and WebSockets (FastAPI).
An attack where malicious JavaScript gets onto your site and runs in other users' browsers. Prevented by escaping output and CSP.
You Aren't Gonna Need It: do not build a feature until it is really needed.
A human-readable configuration format based on indentation, used by Kubernetes, Docker Compose, Spring and many CI tools.
Turns a function into a generator: it pauses and hands back a value, then resumes where it stopped on the next call.