أسئلة مقابلات C# Fundamentals & Modern Language Features في .NET
10 سؤال عن C# Fundamentals & Modern Language Features من مسار .NET. اقرأ الإجابة المختصرة لكل سؤال هنا، وافتح السؤال للشرح الكامل والأمثلة والأخطاء الشائعة والمصادر.
- مبتدئ
ما الفرق الأساسي بين Value Types و Reference Types في لغة C# وكيف تخزن في الذاكرة؟
الـ Value Types ترث من System.ValueType وتخزن قيمتها مباشرة (غالباً في الـ Stack أو داخل الكائن الحاوي)، بينما الـ Reference Types ترث من System.Object وتخزن مراجعها في الـ Stack وتشير لبيانات في الـ Managed Heap.
اقرأ الشرح الكامل - متوسط
ما هي عمليتا Boxing و Unboxing في C# ولماذا يجب تجنبهما في المسارات البرمجية عالية الكثافة؟
Boxing هو تحويل Value Type إلى كائن object في الـ Heap مع حجز ذاكرة إضافي، وUnboxing هو استخراج القيمة الأصلية؛ وتكرارهما يرهق الـ Garbage Collector ويبطئ الأداء.
اقرأ الشرح الكامل - مبتدئ
ما الفرق بين Record و Class في C# الحديثة ومتى تفضل استخدام Records؟
الـ Records مصممة لكائنات القيمة غير القابلة للتعديل (Immutability) وتوفر مقارنة تلقائية استناداً للقيم (Value-based equality) مع دعم تعبير with للنسخ غير التدميري.
اقرأ الشرح الكامل - مبتدئ
كيف تعمل ميزة Nullable Reference Types في C# وما دور التحليل الثابت لمسار الكود (Flow Analysis)؟
تميز المراجع التي تقبل null (مثل string?) عن التي لا تقبله (string)، ويقوم المترجم بالتحليل الثابت لتحذيرك قبل الوقوع في NullReferenceException وقت التشغيل.
اقرأ الشرح الكامل - متوسط
كيف تطورت ميزة Pattern Matching وتعبيرات switch في C# الحديثة؟
أصبحت تدعم أنماط الخصائص (Property Patterns)، والأنماط الموضعية (Positional)، والأنماط العلائقية (Relational)، والـ List Patterns لصياغة شروط معقدة بسلاسة وأمان.
اقرأ الشرح الكامل - مبتدئ
ما الفرق بين Delegate و Action و Func وما دور كلمة event في حماية التغليف؟
الـ Delegate هو مؤشر دالة آمن للأنواع؛ Func تعيد قيمة وAction لا تعيد شيئاً، وكلمة event تمنع المشتركين الخارجيين من استدعاء أو مسح قائمة المستمعين باستثناء += و -=.
اقرأ الشرح الكامل - متقدم
ما هي بنية Span<T> و ReadOnlySpan<T> وكيف تتيح معالجة البيانات دون أي تخصيص في الـ Heap (Zero-Allocation)؟
هي ref struct تمثل نافذة متجاورة متصلة على أي مساحة ذاكرة (Stack, Heap, أو Unmanaged Memory) وتسمح بتقطيع ومعالجة البيانات دون نسخ أو حجز مصفوفات جديدة.
اقرأ الشرح الكامل - متوسط
كيف يطبق نمط التخلص القياسي (IDisposable Pattern) وما الفرق بين الموارد المدارة وغير المدارة (Managed vs Unmanaged)؟
الموارد المدارة يتحكم بها الـ CLR تلقائياً، بينما غير المدارة (مثل مقابض ملفات نظام التشغيل ومقابس الشبكة) تتطلب تحريراً صريحاً عبر IDisposable ودالة Dispose().
اقرأ الشرح الكامل - متقدم
ما هو مفهوم التباين الجيني (Variance) في C# وما الفرق بين التغاير (out Covariance) والتباين العكسي (in Contravariance)؟
التغاير (out) يتيح استخدام نوع أكثر تحديداً كمخرجات (Assignment to base)، بينما التباين العكسي (in) يتيح استخدام نوع أكثر عمومية كمدخلات.
اقرأ الشرح الكامل - متقدم
ما هي مولدات الشيفرة المصدرية (C# Source Generators) وكيف تفوقت على الـ Reflection وقت التشغيل؟
هي ميزة في مجمع Roslyn تفحص الكود أثناء الترجمة وتولد ملفات C# حقيقية تدمج في البناء، مما يوفر أداءً فائقاً ويفحص الأنواع مسبقاً دون تكلفة Reflection.
اقرأ الشرح الكامل