الفرمية 4-خطوات
يُختبر القدرة على تصميم أنظمة معقدة تحت القيود في مقابلات المقابلة. هنا هو الفرمية التي نتعلمها للهندسة.
خطوة 1: المتطلبات (5 دقائق)
تبيّن المتطلبات الوظيفية وغير الوظيفية قبل رسم أي شيء.
# تصميم اختصار URL
وظيفي: اختصار URL، التوجيه، الألقاب المخصصة، التحليلات
غير وظيفي: 100 مليون URL/يوم، نسبة 10:1 للقراءة والكتابة، 99.9% من توافر النظام
مقياس: 1,160 كتابة/ثانية، 11,600 قراءة/ثانيةخطوة 2: التصميم العام
رسم المكونات الرئيسية ومشاكلهم.
[العميل] → [مستوى التحميل] → [خادم API] → [قاعدة البيانات]
↓
[层 التخزين المؤقت]خطوة 3: التصميم التفصيلي
دخل عميق في المكونات الأشد أهمية.
function generateShortUrl(longUrl) {
const id = generateUniqueId();
return base62Encode(id);
}العوامل الشائعة
حظر السرعة
class RateLimiter {
async isAllowed(userId) {
const key = `ratelimit:${userId}:${Math.floor(Date.now() / 60000)}`;
const count = await this.redis.incr(key);
return count <= 100;
}
}مشاكل ممارسة
| النظام | المفاهيم الرئيسية | صعوبة |
|---|---|---|
| اختصار URL | التحليلات، التخزين المؤقت، تصميم قاعدة البيانات | سهل |
| نشر الأخبار | الجذب ضد الدفع، الفاناوت، ترتيب | صعب |
| نظام المحادثة | WebSockets، الحضور، تخزين الرسائل | صعب |
| حظر السرعة | حزمة التokens، النافذة المتحركة، Redis | متوسط |
النهاية
مارس الفرمية، وليس فقط الحلول. يريد المترجم رؤية عملية التفكير، وليس تصميمًا محفورًا في الذاكرة.