فرایند پاسخ به مصاحبه طراحی
چارچوب ۴ مرحلهای مصاحبه System Design: شفافسازی نیازمندیها، طراحی سطح بالا، عمیقشدن و جمعبندی — با مثال
چرا چارچوب؟
مصاحبه System Design بدون ساختار = آشفتگی و وقتتلفکردن. این چارچوب ۴ مرحلهای، مسیر روشن میدهد و به مصاحبهگر نشان میدهد سیستماتیک فکر میکنید.
مرحله ۱: شفافسازی نیازمندیها (۵-۱۰ دقیقه)
هرگز مستقیم دیاگرام نکشید! اول بپرسید:
- ویژگیهای اصلی چیست؟ «توییتر» = تایملاین، توییت، فالو — نه DM و ترند!
- مقیاس؟ DAU؟ QPS؟ نسبت خواندن/نوشتن؟
- محدودیتهای فنی؟ تأخیر هدف؟ سازگاری؟ دستگاهها؟
خروجی: لیست ۳-۵ ویژگی + اعداد تخمین (مبحث قبل)
مرحله ۲: طراحی سطح بالا (۱۰-۱۵ دقیقه)
- API اولیه را تعریف کنید (امضاها، نه پیادهسازی)
- دیاگرام بلوکی: کلاینت ← LB ← سرویس ← دیتابیس/کش
- مدل داده اولیه: جداول/موجودیتهای اصلی
با مصاحبهگر چکاین کنید: «تا اینجا موافقید؟»
مرحله ۳: عمیقشدن (۱۵-۲۰ دقیقه)
مهمترین جزء را انتخاب و جزئیات طراحی کنید:
- «قلب سیستم کجاست؟» — تایملاین توییتر، کوتاهکننده URL
- تریدآفها را صریح: «Push یا Pull؟ من Push را انتخاب میکنم چون...»
- گلوگاهها را پیدا و حل کنید
مرحله ۴: جمعبندی (۵ دقیقه)
- نقاط ضعف طراحی خودتان را بیان کنید!
- «با رشد ۱۰ برابری چه میشود؟»
- بهبودهای ممکن آینده
مثال سریع: «سیستم تایملاین»
| مرحله | خلاصه اقدام |
|---|---|
| شفافسازی | ۱۰۰M DAU، خواندن ۱۰۰:۱، p99 < ۲۰۰ms |
| سطح بالا | API: getTimeline() ← سرویس Feed + کش + DB |
| عمیق | Pull ساده اما کند؛ Push با Fan-out سریع — ترکیب برای سلبریتیها! |
| جمعبندی | محدودیت: تازگی فالو جدید؛ راهحل: hybrid |
نکته طلایی: مصاحبه System Design «گفتگو» است نه امتحان! فکر بلند، دیاگرام بکشید (حتی متنی)، از مصاحبهگر بازخورد بگیرید و جهت بگیرید.
جمعبندی
- ۴ مرحله: شفافسازی ← سطح بالا ← عمیق ← جمعبندی
- اول بپرسید، بعد طراحی کنید
- تریدآفها را صریح و با دلیل بگویید
- ضعفهای خودتان را خودتان بگویید — نشانه بلوغ!
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.