
دليل عربي عملي للإجابة بثقة عن أسئلة تصميم أنظمة الواجهة الأمامية.
مقابلات تصميم أنظمة الواجهة الأمامية تبدو مرهقة عندما يبدأ السؤال واسعًا مثل: «صمّم لوحة مهام مشتركة». لا تبدأ بـ React أو WebSockets. ابدأ بما يحتاج المستخدم إلى إنجازه.
اسأل: هل ينشئ المستخدم مهمة ويعدلها وينقلها؟ هل اللوحة مشتركة؟ هل تظهر تغييرات الزملاء فورًا؟ هل المرفقات والعمل دون اتصال داخل النطاق؟
قل افتراضك بوضوح: سأصمم لوحة مهام ويب لأعضاء فريق مسجلين. يمكنهم رؤية الأعمدة وإنشاء المهام ونقلها ورؤية تغييرات الزملاء أثناء فتح اللوحة. المرفقات والعمل دون اتصال خارج النطاق.
بهذا لا تحاول تصميم كل Jira في مقابلة قصيرة.
المتطلبات الوظيفية تصف ما يفعله النظام: عرض اللوحة، نقل مهمة، تصفية المهام، ورؤية التغييرات. أما السرعة وإتاحة الوصول والموثوقية وقابلية التوسع فهي متطلبات جودة تؤثر في الاختيار المعماري.
عند نقل مهمة يكون التدفق واضحًا: يسحب المستخدم البطاقة، تتحدث الواجهة فورًا، يرسل العميل التغيير، يعيد الخادم الحالة المعتمدة، تصل التغييرات للمشاهدين الآخرين، وعند الفشل تعود المهمة مع رسالة مفهومة.
يحتاج العميل إلى معرف المهمة وعمودها وترتيبها وإصدارها. قد يكون عقد التحديث: PATCH للمهمة مع columnId وposition وversion. على الخادم إعادة الحالة النهائية مع إصدار جديد. عند تعديل مستخدمين لنفس المهمة، اذكر سياسة مثل آخر كتابة تفوز أو رفض نسخة قديمة مع تحديث الشاشة.
القائمة أو السحب أو إدخال النموذج حالة محلية. الفلاتر واللوحة المختارة تنتمي إلى URL. بيانات اللوحات والمهام القادمة من الخادم تنتمي إلى query cache. لا تنشئ نسخة دائمة ثانية من بيانات الخادم فقط لأن حدثًا فوريًا وصل.
استخدم polling للتحديث العرضي، وServer-Sent Events للدفع أحادي الاتجاه، وWebSockets عندما تحتاج الحضور أو الكتابة أو التعاون ثنائي الاتجاه. التقنية نتيجة لدرجة الحداثة المطلوبة وليست نقطة البداية.
في الواجهة المتفائلة احفظ snapshot، وحدّث الواجهة، وأرسل الطلب، ثم استعد snapshot عند الفشل. اشرح مسار الخطأ كما تشرح مسار النجاح.
تصميم أنظمة الواجهة الأمامية ليس مسابقة لذكر المكتبات. ابدأ بما يجب أن ينجزه المستخدم؛ عندها تصبح قرارات الحالة وAPI والرسم والتحديث الفوري قابلة للتبرير.
لا توجد تعليقات معتمدة بعد. قد تنتظر الردود الجديدة المراجعة.