أهم 50 أسئلة وأجوبة في مقابلات العمل في C# (2026)

أسئلة وأجوبة المقابلة C# للمبتدئين وخبرة 2/3/5/10 سنوات

فيما يلي أسئلة وإجابات مقابلة C# للمرشحين ذوي الخبرة الجدد وكذلك 5 أو 10 سنوات للحصول على وظيفة أحلامهم.

1) ما هو #C؟

C# هي لغة موجهة للكائنات وآمنة للنوع ومدارة ويتم تجميعها بواسطة .Net Framework لإنشاءها Microsoft لغة متوسطة.

👉 تنزيل مجاني بصيغة PDF: أسئلة وأجوبة المقابلة في لغة C#


2) شرح أنواع التعليق في C# مع الأمثلة

سطر واحد

على سبيل المثال:

//This is a single line comment

ثانيا. سطر متعدد (/* */)

على سبيل المثال:

/*This is a multiple line comment
We are in line 2
Last line of comment*/

ثالثا. تعليقات XML (///).

على سبيل المثال:

/// summary;
/// Set error message for multilingual language.
/// summary

3) هل يمكن تنفيذ كتل التقاط متعددة؟

لا، لا يمكن تنفيذ كتل التقاط متعددة من نفس النوع. بمجرد تنفيذ رمز الالتقاط المناسب، يتم نقل عنصر التحكم إلى الكتلة النهائية، ثم يتم تنفيذ التعليمات البرمجية التي تتبع الكتلة الأخيرة.


4) ما الفرق بين العام والثابت والباطل؟

يمكن الوصول إلى المتغيرات أو الأساليب العامة المعلنة في أي مكان في التطبيق. يمكن الوصول إلى المتغيرات أو الأساليب المعلنة بشكل عام دون إنشاء مثيل للفئة. لا يمكن الوصول إلى الأعضاء الثابتين عالميًا بشكل افتراضي، ويعتمد ذلك على نوع الوصول المعدل المستخدم. يقوم المترجم بتخزين عنوان الطريقة كنقطة إدخال ويستخدم هذه المعلومات لبدء التنفيذ قبل إنشاء أي كائنات. وVoid هو مُعدِّل للنوع ينص على أن الطريقة أو المتغير لا يُرجع أي قيمة.

كائن في C#

أسئلة المقابلة في لغة C#


5) ما هو الكائن؟

الكائن هو مثيل لفئة يمكننا من خلالها الوصول إلى أساليب تلك الفئة. يتم استخدام الكلمة الأساسية "جديد" لإنشاء كائن. ستحتوي الفئة التي تقوم بإنشاء كائن في الذاكرة على معلومات حول أساليب تلك الفئة ومتغيراتها وسلوكها.


6) تعريف البنائين

المُنشئ هو وظيفة عضو في فئة لها نفس اسم فئتها. يتم استدعاء المُنشئ تلقائيًا عند إنشاء فئة كائن. يقوم ببناء قيم أعضاء البيانات أثناء تهيئة الفصل.


7) ما هي المصفوفات الخشنة؟

المصفوفة التي تحتوي على عناصر من نوع المصفوفة تسمى مصفوفة خشنة. يمكن أن تكون العناصر ذات أبعاد وأحجام مختلفة. يمكننا أيضًا أن نطلق على المصفوفة الخشنة اسم مصفوفة من المصفوفات.


8) ما الفرق بين معلمات ref وout؟

يجب تهيئة الوسيطة التي تم تمريرها كمرجع قبل المرور إلى الطريقة بينما لا يلزم تهيئة المعلمة out قبل المرور إلى الطريقة.


9) ما فائدة عبارة "استخدام" في لغة C#؟

يتم استخدام الكتلة "الاستخدام" للحصول على المورد ومعالجته ثم التخلص منه تلقائيًا عند اكتمال تنفيذ الكتلة.


10) ما هو التسلسل؟

عندما نريد نقل كائن عبر شبكة، يتعين علينا تحويل الكائن إلى دفق من البايتات. تسمى عملية تحويل كائن إلى دفق من البايتات بالتسلسل. لكي يكون الكائن قابلاً للتسلسل، يجب أن يقوم بتطبيق واجهة ISerialize. إلغاء التسلسل هو العملية العكسية لإنشاء كائن من دفق من البايتات.


11) هل يمكننا استخدام الأمر "هذا" ضمن طريقة ثابتة؟

لا يمكننا استخدام "هذا" بطريقة ثابتة لأنه لا يمكننا استخدام المتغيرات/الطرق الثابتة إلا بطريقة ثابتة.


12) ما الفرق بين الثوابت والقراءة فقط؟

يتم الإعلان عن المتغيرات الثابتة وتهيئتها في وقت الترجمة. ولا يمكن تغيير القيمة بعد ذلك. يتم استخدام القراءة فقط فقط عندما نريد تعيين القيمة في وقت التشغيل.


13) ما هي فئة الواجهة؟ أعط مثالا واحدا على ذلك

الواجهة هي مطلقةtracفئة t التي تحتوي فقط على خاصية عامة مطلقةtracالطرق، وهذه الطرق لا تحتوي إلا على التصريح وليس التعريف. هذه المطلقةtracيجب تنفيذ طرق t في الفئات الموروثة.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 interface Guru99Interface
 {
  void SetTutorial(int pID, string pName);
  String GetTutorial();
 }

 class Guru99Tutorial : Guru99Interface
 {
  protected int TutorialID;
  protected string TutorialName;

  public void SetTutorial(int pID, string pName)
  {
   TutorialID = pID;
   TutorialName = pName;
  }

  public String GetTutorial()
  {
   return TutorialName;
  }

  static void Main(string[] args)
  {
   Guru99Tutorial pTutor = new Guru99Tutorial();

   pTutor.SetTutorial(1,".Net by Guru99");

   Console.WriteLine(pTutor.GetTutorial());

   Console.ReadKey();
  }
 }
}

14) ما هي أنواع القيم وأنواع المراجع؟

يحتوي نوع القيمة على قيمة بيانات داخل مساحة الذاكرة الخاصة به. مثال

int a = 30;

يقوم النوع المرجعي بتخزين عنوان الكائن حيث يتم تخزين القيمة. إنه مؤشر إلى موقع ذاكرة آخر.

string b = "Hello Guru99!!";

15) ما هو التحكم المخصص والتحكم المستخدم؟

عناصر التحكم المخصصة هي عناصر تحكم تم إنشاؤها ككود مُجمَّع (DLLs)، وهي أسهل في الاستخدام ويمكن إضافتها إلى صندوق الأدوات. يمكن للمطورين سحب عناصر التحكم وإفلاتها إلى نماذج الويب الخاصة بهم. يمكن إضافة السمات في وقت التصميم. يمكننا بسهولة إضافة عناصر تحكم مخصصة إلى تطبيقات متعددة (إذا كانت ملفات DLL مشتركة). لذا، إذا كانت خاصة، فيمكننا نسخها إلى دليل dll إلى bin لتطبيق الويب ثم إضافة مرجع ويمكننا استخدامها.

عناصر التحكم الخاصة بالمستخدم تشبه إلى حد كبير ملفات تضمين ASP، كما أنها سهلة الإنشاء. لا يمكن وضع عناصر التحكم الخاصة بالمستخدم في صندوق الأدوات ثم سحبها وإفلاتها منه. فهي تتمتع بتصميمها الخاص وبرمجتها. امتداد الملف لعناصر التحكم الخاصة بالمستخدم هو ascx.


16) ما هي الفئات المختومة في لغة C#؟

نقوم بإنشاء فئات مختومة عندما نريد تقييد الفصل المراد توريثه. معدّل مختوم يستخدم لمنع الاشتقاق من فئة ما. إذا قمنا بتحديد فئة مختومة كفئة أساسية بقوة، فسيحدث خطأ في وقت الترجمة.


17) ما هي طريقة التحميل الزائد؟

التحميل الزائد للطريقة هو إنشاء طرق متعددة بنفس الاسم مع توقيعات فريدة في نفس الفئة. عندما نقوم بالتجميع، يستخدم المترجم دقة التحميل الزائد لتحديد الطريقة المحددة التي سيتم استدعاؤها.


18) ما الفرق بين Array و Arraylist؟

في المصفوفة، يمكن أن يكون لدينا عناصر من نفس النوع فقط. حجم المصفوفة ثابت عند المقارنة. تشبه قائمة المصفوفات المصفوفة، لكن ليس لها حجم ثابت.


19) هل يمكن تجاوز الطريقة الافتراضية الخاصة؟

لا، لأنه لا يمكن الوصول إليها خارج الفصل.


20) وصف معدّل إمكانية الوصول "الداخلي المحمي".

يمكن الوصول إلى المتغيرات/الطرق الداخلية المحمية داخل نفس التجميع وأيضًا من الفئات المشتقة من هذه الفئة الأصلية.


21) ما هي الاختلافات بين فئات System.String وSystem.Text.StringBuilder؟

System.String غير قابل للتغيير. عندما نعدل قيمة متغير سلسلة، يتم تخصيص ذاكرة جديدة للقيمة الجديدة ويتم تحرير تخصيص الذاكرة السابق. تم تصميم System.StringBuilder ليكون له مفهوم السلسلة القابلة للتغيير حيث يمكن إجراء مجموعة متنوعة من العمليات دون تخصيص موقع ذاكرة منفصل للسلسلة المعدلة.


22) ما الفرق بين System.Array.CopyTo() و System.Array.Clone() ؟

باستخدام Clone() الطريقة، نقوم بإنشاء كائن مصفوفة جديد يحتوي على كافة العناصر الموجودة في المصفوفة الأصلية واستخدامه CopyTo() طريقة. يتم نسخ كافة عناصر المصفوفة الموجودة إلى مصفوفة أخرى موجودة. كلتا الطريقتين تؤديان نسخة ضحلة.


23) كيف يمكننا ترتيب عناصر المصفوفة تنازلياً؟

باستخدام Sort() الأساليب المتبعة من قبل Reverse() الأسلوب.


24) اكتب بناء جملة C# للقبض على الاستثناء

للقبض على استثناء، نستخدم كتل محاولة الالتقاط. يمكن أن تحتوي كتلة الالتقاط على معلمة من نوع system.Exception.

على سبيل المثال:

try {
    GetAllData();
} 
catch (Exception ex) {
}

في المثال أعلاه، يمكننا حذف المعلمة من بيان الصيد.


25) ما الفرق بين الواجهة و abstracالفئة تي؟

تحتوي الواجهات على جميع الطرق التي لها تصريح فقط ولكن ليس لها تعريف. في حالة مطلقةtracفي فئة t، يمكننا أن نمتلك بعض الطرق الملموسة. أما في فئة الواجهة، فجميع الطرق عامة.tracقد تحتوي الفئة t على طرق خاصة.


26) ما الفرق بين طريقتي Finalize() وDispose()؟

Dispose() يتم استدعاؤه عندما نريد أن يقوم الكائن بتحرير أي موارد غير مُدارة معه. على الجانب الآخر، Finalize() يتم استخدامه لنفس الغرض، لكنه لا يضمن تجميع البيانات المهملة للكائن.


27) ما هي المراجع الدائرية؟

المرجع الدائري هو الموقف الذي يكون فيه مصدران أو أكثر مترابطين مع بعضهما البعض مما يؤدي إلى حالة القفل ويجعل الموارد غير قابلة للاستخدام.


28) ما هي الأدوية العامة في C#.NET؟

تُستخدم العناصر العامة لإنشاء فئات أكواد قابلة لإعادة الاستخدام لتقليل تكرار الكود وزيادة أمان النوع والأداء. باستخدام العناصر العامة، يمكننا إنشاء فئات مجموعات. لإنشاء مجموعة عامة، يجب استخدام مساحة اسم System.Collections.Generic بدلاً من الفئات مثل ArrayList في مساحة اسم System.Collections. تعزز العناصر العامة استخدام الأنواع ذات المعلمات.


29) ما هو تجمع الكائنات في .NET؟

مجموعة الكائنات هي حاوية تحتوي على كائنات جاهزة للاستخدام. tracيُظهر هذا الأمر الكائن المستخدم حاليًا، بالإضافة إلى إجمالي عدد الكائنات في المجموعة. وهذا يقلل من عبء إنشاء الكائنات وإعادة إنشائها.


30) قم بإدراج أنواع الاستثناءات شائعة الاستخدام في .net

ArgumentException، ArgumentNullException، ArgumentOutOfRangeException، ArithmeticException، DivideByZeroException، OverflowException، IndexOutOfRangeException، InvalidCastException، غير صالحOperationException، IOEndOfStreamException، NullReferenceException، OutOfMemoryException، StackOverflowException وما إلى ذلك.


31) ما هي الاستثناءات المخصصة؟

في بعض الأحيان تكون هناك بعض الأخطاء التي يجب معالجتها وفقًا لمتطلبات المستخدم. يتم استخدام الاستثناءات المخصصة لهم ويتم استخدام الاستثناءات المحددة.


32) ما هي المندوبين؟

المندوبون هم نفس المؤشرات الوظيفية C++، ولكن الاختلاف الوحيد هو أنها آمنة للكتابة، على عكس المؤشرات الوظيفية. المفوضون مطلوبون لأنه يمكن استخدامهم لكتابة المزيد من الوظائف العامة الآمنة للنوع.


33) كيف ترث فئة إلى فئة أخرى في C#؟

تُستخدم علامة النقطتين كعامل وراثة في لغة C#. ما عليك سوى وضع علامة النقطتين ثم اسم الفصل.

public class DerivedClass : BaseClass

34) ما هي الفئة الأساسية في .net التي تشتق منها جميع الفئات؟

System.Object

35) ما الفرق بين تجاوز الطريقة والتحميل الزائد للطريقة؟

في تجاوز الطريقة، نقوم بتغيير تعريف الطريقة في الفئة المشتقة التي تغير سلوك الطريقة. التحميل الزائد للطريقة هو إنشاء طريقة بنفس الاسم داخل نفس الفئة ولها توقيعات مختلفة.


36) ما هي الطرق المختلفة التي يمكن من خلالها تحميل الطريقة بشكل زائد؟

يمكن تحميل الطرق بشكل زائد باستخدام أنواع بيانات مختلفة للمعلمة، وترتيب مختلف للمعلمات، وعدد مختلف من المعلمات.


37) لماذا لا يمكنك تحديد معدّل إمكانية الوصول للطرق الموجودة داخل الواجهة؟

في الواجهة، لدينا طرق افتراضية لا تحتوي على تعريف للطريقة. جميع الأساليب موجودة ليتم تجاوزها في الفئة المشتقة. لهذا السبب كلهم ​​​​علنيون.


38) كيف يمكننا تعيين الفصل ليكون موروثًا، مع منع تجاوز الطريقة؟

قم بإعلان الفصل كعام واجعل الطريقة مغلقة لمنع تجاوزها.


39) ماذا يحدث إذا كانت الواجهات الموروثة لها أسماء طرق متعارضة؟

يعتمد التنفيذ عليك حيث أن الطريقة موجودة داخل فئتك الخاصة. قد تكون هناك مشكلة عندما تتوقع الطرق من واجهات مختلفة بيانات مختلفة، ولكن بقدر ما يتعلق الأمر باهتمامات المترجم، فأنت بخير.


40) ما هو الفرق بين الهيكل والفئة؟

تُعتبر البنى متغيرات من نوع القيمة، بينما تُعتبر الفئات أنواعًا مرجعية - وهو تمييز يظهر بشكل متكرر في أسئلة مقابلة البرمجة الكائنيةتتسبب الهياكل المخزنة على المكدس في زيادة الحمل الزائد ولكنها تؤدي إلى استرجاع أسرع، ولا يمكن توريث الهياكل.


41) كيفية استخدام الأنواع الفارغة في .Net؟

يمكن أن تأخذ أنواع القيم إما قيمها العادية أو قيمة فارغة. تسمى هذه الأنواع بالأنواع الخالية.

Int? someID = null;
If(someID.HasVAlue)
{
}

42) كيف يمكننا إنشاء مصفوفة ذات قيم غير افتراضية؟

يمكننا إنشاء مصفوفة ذات قيم غير افتراضية باستخدام Enumerable.Repeat.


43) ما هو الفرق بين عاملي "is" و "as" في c#؟

يتم استخدام عامل "is" للتحقق من توافق الكائن مع نوع معين، ويعيد النتيجة كقيمة منطقية.

يتم استخدام عامل "as" لتحويل كائن إلى نوع أو فئة.


44) ما هو مندوب البث المتعدد؟

يُطلق على المفوض الذي تم تعيين معالجات متعددة له اسم مندوب البث المتعدد. يتم تعيين كل معالج لأسلوب ما.


45) ما هي المفهرسات في C# .NET؟

تُعرف الفهارس بأنها ذكية المصفوفات في C#. يسمح بفهرسة مثيلات الفصل بنفس طريقة المصفوفة.

على سبيل المثال:

public int this[int index]    // Indexer declaration

46) ما هو الفرق بين "رمي" و"رمي السابقين" في .NET؟

تحافظ عبارة "throw" على مكدس الأخطاء الأصلي، بينما تحتوي عبارة "throw ex" على المكدس. tracمن نقطة رميهم. يُنصح دائمًا باستخدام كلمة "رمي" لأنها توفر معلومات أكثر دقة عن الخطأ.


47) ما هي سمات C# وأهميتها؟

توفر لغة C# للمطورين طريقة لتحديد العلامات التعريفية لبعض الكيانات، على سبيل المثال. تسمى الفئة والطريقة وما إلى ذلك بالسمات. يمكن استرداد معلومات السمة في وقت التشغيل باستخدام الانعكاس.


48) كيفية تنفيذ نمط تصميم مفرد في لغة #C؟

في النمط المفرد، يمكن أن تحتوي الفئة على مثيل واحد فقط وتوفر نقطة وصول إليها عالميًا.

على سبيل المثال:

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

49) ما هو الفرق بين البث المباشر وctype؟

يتم استخدام DirectCast لتحويل نوع الكائن الذي يتطلب أن يكون نوع وقت التشغيل هو نفس النوع المحدد في DirectCast.

يتم استخدام Ctype للتحويل حيث يتم تعريف التحويل بين التعبير والنوع.


50) هل كود C# كود مُدار أم غير مُدار؟

C# عبارة عن تعليمات برمجية مُدارة لأن وقت تشغيل اللغة العامة يمكنه ترجمة تعليمات برمجية C# إلى لغة متوسطة.


51) ما هو تطبيق وحدة التحكم؟

تطبيق وحدة التحكم هو تطبيق يمكن تشغيله في موجه الأوامر في Windows. لأي مبتدئ على .نت، يعد إنشاء تطبيق وحدة تحكم هو الخطوة الأولى المثالية للبدء بها.


52) أعط مثالاً لإزالة عنصر من قائمة الانتظار

يتم استخدام طريقة dequeue لإزالة عنصر من قائمة الانتظار.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Queue qt = new Queue();
   qt.Enqueue(1);
   qt.Enqueue(2);
   qt.Enqueue(3);

   foreach (Object obj in qt)
   {
    Console.WriteLine(obj);
   }
    Console.WriteLine(); Console.WriteLine();
    Console.WriteLine("The number of elements in the Queue " + qt.Count);
    Console.WriteLine("Does the Queue contain " + qt.Contains(3));
    Console.ReadKey();
   }
 }
}

هذه لغة C# وما يتصل بها أسئلة مقابلة WPF سيساعدك ذلك أيضًا في اختبارك الشفهي (الشفوي).

تلخيص هذه التدوينة بـ: