Architecture
Designing applications: monolith versus microservices, modularity, FSD, monorepos.
Splitting an application into modules and layers, drawing responsibility boundaries and keeping dependencies under control, plus the classic code-organizing styles — MVC, MVVM, layered and hexagonal — and the situations where each one actually pays off.
Structuring large client-side applications: Atomic Design, Feature-Sliced Design, micro-frontends, the boundaries between layers and the rules for reusing shared components.
Contracts between clients and servers: REST conventions, resource naming, versioning, error formats, pagination and backward compatibility when the contract changes.
Breaking a system into independent services, exchanging data between them through synchronous calls and events, the trade-offs between consistency and availability, and the mechanisms that keep everything alive under load and during failures: circuit breakers, retries, timeouts, caching and load balancing.
Strategies for storing and shipping code: monorepo versus separate repositories, shared libraries, package versioning, and build and deployment boundaries.