On-screen text
Everything I'd study to prepare for a software engineering job interview
As a fintech software engineer
Because they are horrible..
1. General Software Engineering Topics
• Core Principles & Practices
• SOLID Principles — single responsibility, open/closed, Liskov substitution, interface segregation, dependency inversion.
• DRY (Don't Repeat Yourself)
• KISS (Keep It Simple, Stupid)
• YAGNI
• Separation of Concerns
• ACID vs BASE Transactions
• CAP Theorem — consistency, availability, partition tolerance trade-offs.
• Idempotency — safe retries in APIs and event systems.
• Immutability — benefits for thread-safety and predictability.
Architecture & Design
• Event-Driven Architecture — publishers/ subscribers, message brokers, async processing.
• CQRS (Command Query Responsibility Segregation) — separating read/write models.
• Saga Pattern — managing distributed transactions across microservices.
• Microservices vs Monoliths — pros, cons, communication, deployment.
• Domain-Driven Design (DDD) —
• Entities vs Value Objects
• Aggregates and Aggregate Roots
• Bounded Contexts
• Ubiquitous Language
• Design Patterns (Gang of Four):
• Creational: Singleton, Factory, Builder
• Structural: Adapter, Facade, Decorator
• Behavioral: Observer, Strategy, Command
• Dependency Injection (DI) — why it improves testability and maintainability.
• Layered Architecture (Presentation → Business → Data)
• Clean Architecture / Hexagonal Architecture — dependency rule, ports and adapters.
Concurrency & Asynchronous Programming
• Async vs Parallelism — difference between I/O wait vs CPU work.
• Thread Safety & Race Conditions
• Tasks, Promises, Futures (conceptually)
• Deadlocks and Locks
• Producer-Consumer Pattern
Databases & Data Handling
• SQL vs NoSQL
• Indexing, Joins,
Normalization
• Transactions & Isolation Levels
• ORM Concepts — what they do, lazy vs eager loading.
• Caching (in-memory vs distributed)
• Pagination and Query Optimization Basics
Testing & Quality
• Unit Testing / Integration Testing / End-to-End
• Mocking and Dependency Injection in Tests
• Test-Driven Development (TDD) basics
• Code Reviews & Static Analysis Tools
C#-Specific Topics
• Language Fundamentals
• Classes vs Records — mutable vs immutable, value vs reference semantics.
• Structs vs Classes — stack vs heap, performance implications.
• Boxing and Unboxing — converting value to reference type and back.
• LINQ — query syntax, deferred execution, Select, Where, GroupBy, Join.
• Delegates, Func, Action,
Predicate
• Events and Event Handlers
• Async/Await — Task, Task<T>, cancellation tokens.
• Exception Handling and using Statements
• Extension Methods
• Pattern Matching / Switch Expressions
.NET & Application Development
• Dependency Injection in .NET — built-in service container.
• MassTransit — message bus abstraction over RabbitMQ, Kafka, etc.
• Entity Framework Core (EF Core) — DbContext, migrations, change tracking.
• Configuration & Options Pattern (IOptions<T>)
• Logging (ILogger<T>) and Middleware in ASP.NET Core.
• ASP.NET Core Pipeline — middleware order, routing, filters.
• REST APIs — controllers, attributes, model binding, DTOs.
• Background Services / Hosted Services