2025Oracle Java Lead DSA SystemDesign CheatSheet
2025Oracle Java Lead DSA SystemDesign CheatSheet
class LRUCache {
class Node {
int key, value;
Node prev, next;
Node(int k, int v) { key = k; value = v; }
}
2. Producer-Consumer (wait/notify)
class SharedBuffer {
private final Queue<Integer> buffer = new LinkedList<>();
private final int capacity = 5;
return result;
}
class FileNode {
String name;
boolean isDirectory;
List<FileNode> children;
Requirements:
- Input: Long URL, Output: Short URL
- Redirect short URL to original
- Analytics on usage
Components:
- API Gateway
- URL Encoding Service
- Database (NoSQL like Cassandra or Redis)
- Cache Layer for fast redirects
- Analytics Queue (Kafka) -> Analytics Processor
Tech Stack:
- Java Spring Boot, Redis, Cassandra, Kafka, Nginx
Design Considerations:
- Use base62 encoding for shortening
- Rate limiting for API
- Consistent hashing or Snowflake ID for unique IDs
Common Patterns:
1. API Gateway Pattern
- Handles routing, authentication, rate limiting
- Tech: Spring Cloud Gateway or Zuul
3. Saga Pattern
- Distributed transaction management
- Tech: Orchestration (Camunda) or Choreography (events)
Best Practices:
- Use DTOs to isolate layers
- Version your APIs
- Centralized config management (Spring Cloud Config)