Overview SOLID is an acronym for five design principles intended to make software designs more understandable, flexible, and maintainable. Core Concepts S – Single Responsibility Principle (SRP): A class should have one, and only one, reason to change. It should perform only one job. O – Open/Closed Principle (OCP): Software entities should be open for…
Overview Object-Oriented Programming (OOP) is a programming paradigm based on the concept of “objects”, which can contain data (attributes/properties) and code (methods). It aims to implement real-world entities like inclusive objects to make the codebase more modular and intuitive. Core Concepts Class: A blueprint for creating objects. Object: An instance of a class. Encapsulation: Bundling…
Overview This topic compares two primary architectural styles for building applications: the Monolith (a single, unified unit) and Microservices (a collection of small, independent services). Core Concepts Monolithic Architecture: Unified: All business logic, data access, and UI are in one codebase. Pros: Simple to develop, test, and deploy initially. Low latency between components. Cons: Becomes…
Overview Memory management is the process of controlling and coordinating computer memory, assigning portions (blocks) to various running programs to optimize overall system performance. Core Concepts The Stack: Stores local variables and function call frames. Fast access, automatic allocation/deallocation. Limited size (can lead to Stack Overflow). The Heap: Stores objects, arrays, and dynamically allocated memory.…
Overview Inheritance and Polymorphism are two core pillars of OOP that allow developers to create generic interfaces and reuse code efficiently. Core Concepts Inheritance: A mechanism where a new class (Derived/Child) inherits properties and methods from an existing class (Base/Parent). This represents an “is-a” relationship. Method Overriding: When a child class provides a specific implementation…
Overview Design patterns are typical solutions to common problems in software design. They are like blueprints that you can customize to solve a particular design problem in your code. They are not finished designs, but templates for how to solve a problem. Core Concepts Creational Patterns: Deal with object creation mechanisms, trying to solve the…
Overview While often used interchangeably, concurrency and parallelism are different. Concurrency is about dealing with many things at once (structure), while Parallelism is about doing many things at once (execution). Core Concepts Process vs. Thread: Process: An independent program with its own memory space. Thread: A “lightweight” unit of execution within a process; threads share…
Overview API (Application Programming Interface) design is the process of creating a set of rules and protocols that allow different software components to communicate with each other. A well-designed API is intuitive, maintainable, and scalable. Core Concepts REST (Representational State Transfer): Statelessness: Each request from a client to server must contain all the information to…