SOLID 원칙:
- 단일 책임 원칙: 각 클래스는 하나의 역할만 가져야 합니다.
- 개방/폐쇄 원칙: 클래스는 수정하지 않고 확장할 수 있어야 합니다.
- 리스코프 치환 원칙: 하위 클래스는 부모 클래스로 대체할 수 있어야 합니다.
- 인터페이스 분리 원칙: 일반적인 인터페이스보다 구체적이고 작은 인터페이스를 선호해야 합니다.
- 의존성 역전 원칙: 구체적인 구현 대신 추상화에 의존해야 합니다.
리트코드 문제 해결 패턴:
- 백트래킹 패턴: 백트래킹 문제에 대한 일반적인 접근 방식 (자바): subsets, permutations, combination sum, palindrome partitioning
- 비트 조작 패턴: 비트 조작 패턴에 대한 모든 유형과 활용 방법
- 동적 프로그래밍 패턴 1: 동적 프로그래밍 패턴
- DFS + BFS 패턴 (2): DFS와 BFS 문제 해결 패턴 (파트 2)
- 트리 패턴: 반복적 또는 재귀적인 DFS 및 BFS 트리 순회 및 레벨 순서 출력
- 슬라이딩 윈도우 패턴: 최빈 원소의 빈도
- 두 개의 포인터 패턴: 100일 동안 모든 두 포인터 문제 해결
- DFS + BFS 패턴 (1): DFS와 BFS 문제 해결 패턴 (파트 1)
- 그래프 패턴: 초보자를 위한 그래프 문제, 패턴 및 샘플 솔루션
- 단조 스택 패턴: 모노토닉 스택 기반 문제 해결을 위한 포괄적인 가이드 및 템플릿
- 문자열 문제 패턴: 중요한 문자열 문제 패턴
- 백트래킹 패턴: 백트래킹 (파트 3)
- 동적 프로그래밍 패턴 2: 동적 프로그래밍 패턴
- 이진 탐색 패턴: 파이썬 강력한 이진 탐색 템플릿
- 문자열 질문 패턴: 중요한 문자열 질문 패턴 모음
- 14 코딩 인터뷰 패턴: 코딩 인터뷰 문제 해결을 위한 14 가지 패턴
시스템 디자인 주요 개념:
- 확장성: Scalability
- 지연시간 대 처리량 비교: Latency vs Throughput
- CAP 이론: CAP Theorem
- ACID 트랜잭션: ACID Transactions
- 속도 제한: Rate Limiting
- API 설계: API Design
- 강력 일관성 대 최종 일관성: Strong vs Eventual Consistency
- 분산 추적: Distributed Tracing
- 동기식 대 비동기식 통신: Synchronous vs Asynchronous Communications
- 일괄 처리 대 스트림 처리: Batch Processing vs Stream Processing
- 내고장성: Fault Tolerance
ACID 속성:
- 원자성: 트랜잭션은 분할할 수 없는 단위이며 완전히 성공하거나 완전히 실패해야 합니다.
- 일관성: 각 트랜잭션은 데이터베이스의 일관성을 유지해야 합니다.
- 격리성: 트랜잭션은 서로 영향을 주지 않고 독립적으로 실행되어야 합니다.
- 지속성: 트랜잭션이 완료되면 시스템 장애를 견디더라도 지속되어야 합니다.