
عنوان:
Acing the System Design Interview
نویسنده:
Zhiyong Tan
انتشارات:
Manning Publications
تاریخ انتشار:
2024
حجم:
3.5MB
معرفی کتاب:" موفقیت در مصاحبه طراحی سیستم — راهنمای جامع برای مهندسان نرمافزار "
مصاحبه طراحی سیستم یکی از چالشبرانگیزترین مراحل استخدام در شرکتهای بزرگ فناوری است. کتاب موفقیت در مصاحبه طراحی سیستم به شما کمک میکند با رویکردی منظم و حرفهای، آماده پاسخگویی به پیچیدهترین سؤالات شوید و مهارتهایی را بیاموزید که در مسیر رسیدن به شغل دلخواهتان حیاتی هستند.
آنچه در این کتاب میآموزید:
- چگونگی طراحی سیستمهایی مقیاسپذیر و قابلاطمینان
- مبانی تراکنشهای توزیعشده برای تضمین یکپارچگی دادهها
- ساختار سرویسهای مدرن شامل API Gateway و Service Mesh
- درک و مقایسه الگوهای رایج API مانند REST، RPC و GraphQL
- تکنیکهای کشگذاری، ثبت لاگ، مانیتورینگ و هشداردهی
- نکات کلیدی برای انتقال مؤثر ایدهها در جلسات مصاحبه
درباره نویسنده:
ژییونگ تان مدیر تیم در شرکت PayPal و مهندس باسابقهای است که در Uber، Teradata و استارتاپهای مختلف فعالیت داشته است. او در نقشهای مصاحبهگر و مصاحبهشونده در دهها مصاحبه طراحی سیستم شرکت کرده و اکنون تجربیات خود را در قالب این کتاب با شما به اشتراک میگذارد.
چرا این کتاب ارزشمند است؟
- مبتنی بر تجربیات واقعی از مصاحبه در شرکتهای بزرگ مانند Amazon، Apple، ByteDance، و Uber
- مناسب برای توسعهدهندگان، معماران نرمافزار و مدیران مهندسی
- شامل تمرینهای عملی برای مفاهیم کلیدی طراحی سیستم
- آموزش مهارتهای ارتباطی برای افزایش تأثیرگذاری در مصاحبه
- راهنمایی برای پرسیدن سؤالات هوشمندانه از مصاحبهگر
مناسب چه کسانی است؟
برای همهی مهندسان نرمافزار که قصد دارند وارد شرکتهای تراز اول فناوری شوند یا در نقشهای فنی پیشرفتهتر فعالیت کنند. این کتاب ابزار شما برای تبدیل شدن به یک طراح سیستم توانمند و مصاحبهشوندهای حرفهای است.
در پایان این کتاب:
نهتنها به مهارت عبور موفق از مصاحبههای طراحی سیستم مسلط میشوید، بلکه بینشی عمیق درباره طراحی واقعی سیستمهای پیچیده و مقیاسپذیر کسب میکنید.
فهرست مطالب
- Contents
- Foreword
- Preface
- Acknowledgments
- About This Book
- Who Should Read This Book
- How This Book Is Organized: A Roadmap
- liveBook Discussion Forum
- Other Online Resources
- About the Author
- About the Cover Illustration
- Part 1
- Chapter 1. A Walkthrough of System Design Concepts
- A Discussion About Tradeoffs
- Should You Read This Book?
- Overview of This Book
- Prelude: A Brief Discussion of Scaling the Various Services of a System
- Chapter 2. A Typical System Design Interview Flow
- Clarify Requirements and Discuss Tradeoffs
- Draft the API Specification
- Connections and Processing Between Users and Data
- Design the Data Model
- Logging, Monitoring, and Alerting
- Search Bar
- Other Discussions
- Post-Interview Reflection and Assessment
- Interviewing the Company
- Chapter 3. Non-Functional Requirements
- Scalability
- Availability
- Fault-Tolerance
- Performance/Latency and Throughput
- Consistency
- Accuracy
- Complexity and Maintainability
- Cost
- Security
- Privacy
- Cloud Native
- Further Reading
- Chapter 4. Scaling Databases
- Brief Prelude on Storage Services
- When to Use vs. Avoid Databases
- Replication
- Scaling Storage Capacity with Sharded Databases
- Aggregating Events
- Batch and Streaming ETL
- Denormalization
- Caching
- Caching as a Separate Service
- Examples of Different Kinds of Data to Cache and How to Cache Them
- Cache Invalidation
- Cache Warming
- Further Reading
- Chapter 5. Distributed Transactions
- Event Driven Architecture (EDA)
- Event Sourcing
- Change Data Capture (CDC)
- Comparison of Event Sourcing and CDC
- Transaction Supervisor
- Saga
- Other Transaction Types
- Further Reading
- Chapter 6. Common Services for Functional Partitioning
- Common Functionalities of Various Services
- Service Mesh/Sidecar Pattern
- Metadata Service
- Service Discovery
- Functional Partitioning and Various Frameworks
- Library vs. Service
- Common API Paradigms
- Part 2
- Chapter 7. Design Craigslist
- User Stories and Requirements
- API
- SQL Database Schema
- Initial High-Level Architecture
- A Monolith Architecture
- Using an SQL Database and Object Store
- Migrations Are Troublesome
- Writing and Reading Posts
- Functional Partitioning
- Caching
- CDN
- Scaling Reads with a SQL Cluster
- Scaling Write Throughput
- Email Service
- Search
- Removing Old Posts
- Monitoring and Alerting
- Summary of Our Architecture Discussion So Far
- Other Possible Discussion Topics
- Chapter 8. Design a Rate-Limiting Service
- Alternatives to a Rate-Limiting Service and Why They Are Infeasible
- When Not to Do Rate Limiting
- Functional Requirements
- Non-Functional Requirements
- Discuss User Stories and Required Service Components
- High-Level Architecture
- Stateful Approach/Sharding
- Storing All Counts in Every Host
- Rate-Limiting Algorithms
- Logging, Monitoring, and Alerting
- Providing Functionality in a Client Library
- Further Reading
- Employing a Sidecar Pattern
- Chapter 9. Design a Notification/Alerting Service
- Functional Requirements
- Non-Functional Requirements
- Initial High-Level Architecture
- Object Store: Configuring and Sending Notifications
- Notification Templates
- Scheduled Notifications
- Notification Addressee Groups
- Unsubscribe Requests
- Handling Failed Deliveries
- Client-Side Considerations Regarding Duplicate Notifications
- Priority
- Search
- Monitoring and Alerting
- Availability Monitoring and Alerting on the Notification/Alerting Service
- Other Possible Discussion Topics
- Final Notes
- Chapter 10. Design a Database Batch Auditing Service
- Why Is Auditing Necessary?
- Defining a Validation with a Conditional Statement on a SQL Query’s Result
- A Simple SQL Batch Auditing Service
- Requirements
- High-Level Architecture
- Constraints on Database Queries
- Prevent Too Many Simultaneous Queries
- Other Users of Database Schema Metadata
- Auditing a Data Pipeline
- Logging, Monitoring, and Alerting
- Other Possible Types of Audits
- Other Possible Discussion Topics
- References
- Chapter 11. Autocomplete/Typeahead
- Possible Uses of Autocomplete
- Search vs. Autocomplete
- Functional Requirements
- Non-Functional Requirements
- Planning the High-Level Architecture
- Weighted Trie Approach and Initial High-Level Architecture
- Detailed Implementation
- Sampling Approach
- Handling Storage Requirements
- Handling Phrases Instead of Single Words
- Logging, Monitoring, and Alerting
- Other Considerations and Further Discussion
- Chapter 12. Design Flickr
- User Stories and Functional Requirements
- Non-Functional Requirements
- High-Level Architecture
- SQL Schema
- Organizing Directories and Files on the CDN
- Uploading a Photo
- Downloading Images and Data
- Monitoring and Alerting
- Some Other Services
- Other Possible Discussion Topics
- Chapter 13. Design a Content Distribution Network
- Advantages and Disadvantages of a CDN
- Requirements
- CDN Authentication and Authorization
- High-Level Architecture
- Storage Service
- Common Operations
- Logging, Monitoring, and Alerting
- Other Possible Discussions on Downloading Media Files
- Cache Invalidation
- Chapter 14. Design a Text Messaging App
- Requirements
- Initial Thoughts
- Initial High-Level Design
- Connection Service
- Sender Service
- Message Service
- Message-Sending Service
- Search
- Logging, Monitoring, and Alerting
- Other Possible Discussion Topics
- Chapter 15. Design Airbnb
- Requirements
- Design Decisions
- High-Level Architecture
- Functional Partitioning
- Create or Update a Listing
- Approval Service
- Booking Service
- Availability Service
- Logging, Monitoring, and Alerting
- Other Possible Discussion Topics
- Chapter 16. Design a News Feed
- Requirements
- High-Level Architecture
- Prepare Feed in Advance
- Validation and Content Moderation
- Logging, Monitoring, and Alerting
- Other Possible Discussion Topics
- Chapter 17. Design a Dashboard of Top 10 Products on Amazon by Sales Volume
- Requirements
- Initial Thoughts
- Initial High-Level Architecture
- Aggregation Service
- Batch Pipeline
- Streaming Pipeline
- Approximation
- Dashboard with Lambda Architecture
- Kappa Architecture Approach
- Logging, Monitoring, and Alerting
- Other Possible Discussion Topics
- References
- Appendices
- A. Monoliths vs. Microservices
- B. OAuth 2.0 Authorization and OpenID Connect Authentication
- C. C4 Model
- D. Two-Phase Commit (2PC)
- Index
مشخصات
نام کتاب
Acing the System Design Interview
نویسنده
Zhiyong Tan
انتشارات
Manning Publications
تاریخ انتشار
2024
ISBN
9781633439108
تعداد صفحات
473
زبان
انگلیسی
فرمت
حجم
3.5MB
موضوع
System Design