System desing personal notes
- Personal notes
- Programming Languages (proficient in at least one programing language)
- Programming paradigms
- Data Structures
- Linear Data Structures
- Array & Matrix
- Linked list
- Single linked list
- Circular linked list
- Double linked list
- Queue
- Stack
- Non-Linear Data Structures
- Tree
- Binary Tree
- Binary search tree
- Heap
- Graph
- Hash Table
- Tree
- Advanced
- Advanced Lists
- Segment Tree
- Trie
- Binary Indexed Tree
- Suffix Array and Suffix Tree
- AVL Tree
- Splay Tree
- B Tree
- Red-Black Tree
- K Dimensional Tree
- Linear Data Structures
- Algorithms (Algorithms, 4th Edition)
- Sorting
- Insertion sorg
- Mergesort
- Quicksort
- Searching
- Binary search trees
- Red-Black trees
- Hash tables
- Graphs
- Depth-first search
- Breadth-first search
- Minimum spanning trees
- Shortest paths
- Strings
- Radix sorting
- Substring search
- Tries
- Regular expressions
- Data compression
- Contex
- Sorting
- Software Design Principles (SOLID)
- Design patterns
- Creational Patterns
- Factory Method
- Abstract Factory
- Prototype
- Builder
- Singleton
- Structural Patterns
- Behavioral Patterns
- Concurrency Patterns
- Creational Patterns
- Networks fundamentals
- Core networking fundamentals
- Cloud network components like VPCs, subnets, NACLs, and routing tables.
- Discover network security mechanisms like encryption, firewalls, and DDoS protection.
- Gain insights into load-balancing concepts and implementation.
- Databases
- Basic concepts
- Designing Relational Databases
- Normalization
- Database indexes & Execution plan
- Data Replication
- Sharding Strategies
- Advance SQL Queries
- SQL Databases
- PostgreSQL
- MySQL
- NoSQL Databases
- Document Databases
- MongoDB
- CouchDB
- Time Series Databases
- InfluxDB
- TimeScale
- Realtime
- Firebase
- RethinkDB
- Column Databases
- BigQuery
- Cassandra
- HBase
- Key-Value
- Redis
- DynamoDB
- Graph Database
- Neo4j
- Document Databases
- Embedded database
- Berkeley DB
- SQLite
- Vector Database
- Milvus
- Data Engineering
- Git (GitHub, BitBucket, GitLab)
- Basic commands
- Comparisons
- Branching and Merging
- Rebasing
- Stashing
- Tagging
- Code Review
- Configure Multiple Accounts
- GitHub Actions
- Linux
- Introduction
- Linux fundamentals
- Basic commands
- Files and Directory Permissions
- chmod
- chown
- chgrp
- Adding Text to Files
- Input and Output Redirects
- Standard Output to a File
- Pipes
- File Maintenance Commands
- Bash
- System Administration
- Shell Scripting
- Networking, Services and System Update
- Disk Management and Run Levels
- Fundamentals of Operating Systems
- Process
- Threads & Concurrency
- CPU Scheduling
- Synchronization
- Mutex Locks
- Semaphores
- Monitors
- Deadlocks
- Memory
- Storage Management
- File System
- Security
- Virtual Machines and Containers
- Virtual Machines
- Docker & DockerCompose
- Kubernetes
- Discover Kubernetes architecture spanning pods, nodes, and clusters.
- Cloud Fundamentals (at least one)
- CI/CD (Continuous Integration/Continuous Deployment)
- Testing
- Unit Tests
- BDD
- Definition and difference with integration testing and functional testing
- Infrastructure as code
- Terraform
- AI
- Prompt Engineering
- Context Engineering
- Agents
- Parallel programming on GPU's (CUDA)
- Domain Driven Desing
- Software Architecture
- Introduction
- What is Architecture?
- Role of Architects in Projects
- Architecture Competence
- Duties, Skills and Knowledge
- Become a Better Architect
- Functional and non-functional requirements
- Quality Attributes
- Availability
- Scalability
- Deployability
- Integrability
- Development and management of APIs
- REST
- SOAP
- gRPC
- GraphQL
- Web Sockets
- Webhooks
- EDA (Event-Drive Architecture)
- EDI (Electronic DAta Interchange)
- SSE (Server-Sent Events)
- AMQP
- MQTT
- Development and management of APIs
- Modifiability
- Performance
- Safety
- Security
- Proxy
- Network Attacks
- DDos
- DNS Spoofing
- MITM
- Rootkits
- Botnets
- IP Spoofing
- Web Security
- Top 10 OWASP
- Testability
- Serviceability
- Usability
- Reliability
- Observability
- RPS (Request per second)
- Metrícas de volumetria,
- TPS (Transaction per second)
- Architecture practices
- Architecturally Significant Requirements
- Designing an Architecture (ADD)
- Evaluating an Architecture
- Documenting an Architecture
- Managing Architecture Debt
- Introduction
- Cloud Architecture
- Internet of Things (IoT)
- Arquitecting Solutions Bank
- SDE-Intern
- What is expected?
- No academic degree or work experience
- Familiarize yourself with technologies
- Code well.
- What is expected?
- SDE-1 (0 years of experience) - This person only understands his system
- What is expected?:
- Can convert tasks into code
- Good software practices
- Good design practices (patterns)
- Implement connections to database or an external system (api calls - integrate systems)
- Graduated
- What is expected?:
- SDE-2 (2-6 years of experience) - This person understands his or her system and how it interacts with others.
- What is expected?
- SDE-1
- Understand the company vision mission
- Understand your system (Business unit of work)
- Design decisions or trade-offs (Business requirements - Drives the design decisions)
- Understand the interactions of the system with other systems
- Understand all the features that your system provides
- What is expected?
- SDE-3 (4-8 years of experience - Senior Software)
- What is expected?
- SDE-2
- Interat with other teams
- Think about the overall larger system everyone they are interacting with and make optimal decisions for them
- Set standards for code quality for their team
- Mentor young SE
- Can speak for their team (they don´t need a clearance, what they say is done)
- What is expected?
- SDE-4 (10-20 years of experience - Tech Lead) Here is another branch: Engineering Management 1 (EM-1, EM-2, EM-Senior, Director, CTO))
- What is expected?
- SDE-3
- Set standards for engineering across a business unit (standards based on common problems) 3.
- May have a little more management
- Other teams look to them for advice and solutions or libraries.
- What is expected?
- Senior staff engineer (15-25 years)
- Techcnical soluionts to large company-wide business problems
- Area developing products for other teams
- Principal engineer
- Do interviews
- Standards
- Make Open Source or paid solutions that many other people will use
- Distinguished enigneer
- World-wide solutions to technical problems (WebRTC, DynamoDB) - Products
- Star (People who have changed the history of programming, e.g. Linus Torvalds)
- MapReduce
- Page Rank