컴공 기초
- Concurrency: Threads Deadlocks, Starvation, Parallelization, Consistency & Coherence
- Networking: Inter-process communication, TCP/IP, DNS, Router, Load Balancer, Firewall
- Abstraction: OS, File system, DB, Cache
- Real-world performance: RAM, Disk, SSD
- Estimation: back-of-the-envelop calculation, Prototypes of Micro-benchmarks
- Distributed system: Availability, Reliability
대규모 시스템 디자인
- Clarifty constrains: Scope, Scales(request throughput, data read/write per second)
- High-level architecture: Component & Connections
- Front-end, Back-end, DB, Cache
- Component design: API, DB Schema, Class definition
- Design: Policies, Processes, Procedures, Methods, Tests, Components
- Topics: Feature sets, Interfaces, Class hierarchies
- Distributed systems under constraints: Simplicity, Limitations, Robustress, Trade-offs
- Graph: Graph traversal, Graph Runtime complexity, Distributed Hash table
- Resource estimation, Big Product design picture, Translation of abstract problems to a system
- API discusstions
- Binary tree, Cache, MapReduce
- Loop problems
- Index, Reverse Linked-list
- Compilers
- Memory Cache
운영체제
- Process / Thread : Resources
- Concurrency issues
- Locks: Mutex,Semaphore, Monitor
- Deadlock vs Livelock, how to avoid
- Context switching by OS or HW
- Scheduling
- Multi-core: “Modern” concurrency constraints
알고리듬
- Sort: Insertion, Radix, Quick, Merge, Heap
- Search: Binary, Quick
- Data structure: Array, Linked List, Stack, Queue, Set, Map, Tree, Binary Tree, Heap, Graph
- Math: Count, Probability, nCk
- Graph: Pointer, Matrix, Adjacency List
- Graph Traversal: BFS, DFS
- Recursion
실무 경험
- Monad Pattern
- git merge –> conflict
- Microservices: MSSQL to MySQL
- Vimeo CDS js file was hanging – CDN to local or <script async or defer>
- Dev process faster: Daily scrum
- Legacy codes managing
- Week point – cannot do things alone. needs someone to work with
- Redis global lock – restart – timeout – exxception json
- When requirements changed – Simplify then phase
- SSL management
- Customer obsession – but if customers are many? like vendors vs. buyers to reconcile
- PDF generation was slow – VARCHAR index was not working – changed to NVARCHAR – benchmark O(n) to O(logn)
- Horizontal team culture – all teams have the same power – daily scrum routine – but communcation cost higher – restrospective meeting after that
- Project Management – Breakdown tasks – Phase – Daily/Weekly check – Using Groupware(Asana) – Remote work between NJ and CA
- Refund logic – Clarify logic and sample numbers first using Excel and whiteboard
- Client-side / Server-side rendering for SEO
- Interface for all Classes?
- How to do Documantation
- Bug issuese – cannot resolve all – Prioritize, Merge, Leave as know issues
- Ad bidding policy – Work with Legal team, Biz team
- UX drag & drop feature – button position, trigger search event – develop with design team
- Benchmark performance & documentation for later use
- Explain current situation – Workaround, Mitigation – Permanent solution
- New coupon feature in 2 months – Drop requirements on customer side
- update npm – dependency issue – mobile app not working – roll back – keep legacy!
- Stripe pay API – Verify before sending – early warning
- git branch strategy – Git flow vs. Github flow – pull request, Code Review
- Performance improvement – all requests under 3 seconds to 1 second