1. Goroutines & Concurrency
- Goroutines là gì, khác gì với thread
- Channel (buffered vs unbuffered)
- Select statement
- WaitGroup, Mutex, RWMutex
- Race condition và cách xử lý
- Context package và cách sử dụng
2. Data Types & Structures
- Slice vs Array (capacity, length, append)
- Map internals và khi nào map không an toàn
- Pointer và khi nào nên dùng pointer
- Interface{} và type assertion
- Struct embedding và composition
3. Interface & Methods
- Interface satisfaction (implicit)
- Empty interface
- Method với pointer receiver vs value receiver
- Interface segregation principle
4. Error Handling
- Error wrapping (fmt.Errorf với %w)
- Custom error types
- Panic, recover, defer
- Best practices cho error handling
5. Memory Management
- Garbage collection trong Go
- Stack vs Heap allocation
- Memory leak common cases
- Escape analysis
6. Testing
- Unit test, benchmark test
- Table-driven tests
- Mocking và interface
- Coverage testing
7. Common Packages
- net/http cho web server
- encoding/json
- database/sql
- Popular frameworks: Gin, Echo, Fiber
8. Design Patterns
- Singleton, Factory
- Worker pool pattern
- Fan-in, Fan-out pattern
- Pipeline pattern
9. Best Practices
- Code organization (package structure)
- Naming conventions
- Error handling patterns
- Dependency injection
- Goroutine leak là gì? Cách phát hiện và xử lý?
- Khi nào dùng channel, khi nào dùng mutex?
- Giải thích về nil interface và nil pointer
- Làm sao để handle graceful shutdown?
- Cách optimize performance trong Go?
- Implement worker pool
- Rate limiter
- Concurrent safe cache
- Simple HTTP server với middleware
- Database connection pooling
Đối với Mid mình nghĩ bạn nên xoáy sâu về phần GMP cách thức nó hoạt động, Garbage Collection và Design System nếu có