اذهب إلى المحتوى

نظرة على امتحان 483-70 حول لغة البرمجة #C من مايكروسوفت


حسام برهان

تُعتبر لغة #C وتُلفظ "سي شارب" غنيّة عن التعريف. فهذه اللغة التي بات عمرها أكثر من 15 عام، أصبحت إحدى اللّغات الأساسيّة في عالم الأعمال. لقد نمت #C من مجرّد كونها لغة عاديّة تستخدم البرمجة كائنيّة التوجّه (OOP) إلى لغة ذات إمكانيّات واسعة وتسهيلات كبيرة جدًّا لخدمة المطوّرين في بناء تطبيقات مؤسّساتيّة بالترافق مع بيئة تطوير ممتازة وهي Visual Studio التي تتكامل مع #C في تقديم الحلول المناسبة للمطوّر.

csharp-483-70.png

تستطيع أن ترى #C  في جميع الأماكن، فلقد أصبحت لغة البرمجة الرئيسيّة التي تتبنّاها مايكروسوفت. تستطيع أن تستخدمها في بناء تطبيقات لويندوز وتطبيقات لأنظمة لينوكس (عن طريق مشروع Mono)، كما يمكنك أن تبني باستخدامها تطبيقات ويب بأنواعها، وإذا أحببت أن تستخدمها في بناء تطبيقات سحابيّة فهي معتمدة في عدد من الخدمات السحابيّة مثل Windows Azure و Amazon AWS. أمّا إذا أردت دخول عالم تطبيقات الأجهزة الذكيّة فستبلي بلاءً حسنًا! فبعد ظهور شركة Xamarin (المنبثقة عن مشروع Mono لتشغيل تطبيقات دوت نت على أنظمة لينوكس) أصبح بإمكانك كتابة تطبيقات أصيلة native applications للعمل على Android و iOS و Windows Phone، وغيرها.

نبذة عن الامتحان

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

يجري الامتحان ضمن المركز المعتمد في توقيت مُحدّد تلتزم به. تكون القاعة التي سيجري فيها الامتحان مراقبة، وبعد أن يقوم الموظّف المختص بتحميل أسئلة الامتحان على الحاسوب يبدأ التوقيت.

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

المجالات الرئيسيّة لأسئلة الامتحان

فيما يلي المجالات الرئيسيّة للامتحان، والنسبة المئويّة لمساهمة كلّ منها في أسئلة الامتحان:

  • إدارة سير البرنامج (25%)
  • إنشاء واستخدام الأنواع (24%)
  • تنقيح التطبيقات وحمايتها (25%)
  • الوصول إلى البيانات (26%)

1. إدارة سير البرنامج

ستحتاج في هذا المجال إلى الفهم الجيّد والصحيح لكلّ من النقاط التالية التي تُعبّر عن مدى قدرتك على التحكّم بسير البرنامج بشكل سليم. ويغطّي الجوانب التالية:

  • التعامل مع مسارات التنفيذ المتعدّدة multithreading والمعالجة غير المتزامنة asynchronous processing، والمقدرة على استخدم مكتبة مهام تفرّعيّة مثل ParallelFor و Plinq و Tasks، واستخدام الكلمتين المحجوزتين async و await، وإدارة البيانات باستخدام المجموعات المتزامنة concurrent collections.
  • إدارة مسارات التنفيذ المتعدّدة عن طريق مزامنة المصادر synchronous resources، واستخدام القفل locking، وإيقاف تشغيل مهمة task، وأيضًا إنشاء طرائق ذات مسارات تنفيذ آمنة لمعالجة الشروط التسابقيّة race conditions لمسارات التنفيذ.
  • التعامل مع سير البرنامج عن طريق التعامل مع المصفوفات arrays والمجموعات collections، واتخاذ القرارات في البرنامج باستخدام عبارات switch وif/then بالإضافة إلى العوامل الأخرى، كما يجب التمكّن من تقييم وحساب التعابير البرمجيّة.
  • التعامل مع الأحداث events والردود callbacks عن طريق إنشاء معالجات أحداث، والاشتراك في الأحداث وإلغاء الاشتراك بها، واستخدام أنواع نوّاب delegates مضمّنة لإنشاء الأحداث، وإنشاء نوّاب delegates مُخصّصة وتعابير lambda وطرائق عديمة الاسم anonymous methods.
  • معرفة كيفيّة معالجة الاستثناء الناتجة عن الأخطاء التي قد تقع أثناء التنفيذ وذلك عن طريق معالجة مختلف الاستثناءات exceptions من مختلف المصادر عن طريق الكتلة try-catch-finally، وتعلّم كيفيّة رمي الاستثناءات، وتحديد الوقت المناسب لإعادة رمي الاستثناءات، وإنشاء استثناءات مُخصّصة.

2. إنشاء واستخدام الأنواع

يختبر هذا المجال مدى قدرتك على التعامل مع الأنواع المضمّنة ضمن إطار العمل دوت نت، بالإضافة إلى مدى قدرتك على إنشاء أنواع جديدة. وأيضًا فهم الفرق الأساسيّ بين أنواع القيمة value types والأنواع المرجعيّة reference types. ويغطّي الجوانب التالية:

  • إنشاء أنواع جديدة عن طريق إنشاء أنواع قيمة value types (مثل structs و enum) وأنواع مرجعيّة reference types وأنواع عموميّة generic types، وإنشاء بانيات constructors ومتغيّرات ساكنة static variables وخصائص مُفهرسَة indexed properties. وأيضًا زيادة تحميل الطرائق overload methods وتجاوز الطرائق override methods.
  • استخدام الأنواع وذلك عن طريق فهم عمليّة التعليب box وإلغاء التعليب unbox لأنواع القيمة، والتحويل cast بين الأنواع، والتعامل مع الأنواع الديناميكيّة dynamic، والتأكّد من التوافقيّة مع الشيفرة غير المُدارة unmanaged code (أي الشيفرة المكتوبة بلغات برمجة لا تتبع لإطار العمل .net)
  • فرض التغليف encapsulation وذلك باستخدام الخصائص، ومحدّدات الوصول (public و private و protected).
  • إنشاء بنية أصناف هرميّة عن طريق تصميم وتحقيق واجهة interface، والوراثة من صنف أساس، إنشاء وتحقيق الأصناف بالاستناد إلى الواجهات IComparable و IEnumerable و IDisposal و IUnknown.
  • إنشاء أنواع جديدة والبحث عن الأنواع أثناء التشغيل runtime باستخدام تقنيّة reflection، وإنشاء وتطبيق وقراءة السمات attributes باستخدام هذه التقنيّة، وتوليد الشيفرة أثناء تشغيل البرنامج باستخدام CodeDom وتعابير lambda، واستخدام الأنواع من فضاء الاسم System.Reflection.
  • إدارة دورة حياة كائن عن طريق التعامل مع المصادر غير المُدارة unmanaged resources، وتحقيق الواجهة IDisposable والتعامل معها.
  • التعامل مع النصوص وذلك باستخدام الأصناف StringBuilder و StringWriter و StringReader، والبحث ضمن النصوص وتنسيقها.

3. تنقيح التطبيقات وحمايتها

يختبر هذا المجال مدى قدرتك على التعامل أدوات التنقيح واكتشاف الأخطاء، وكيفيّة حماية بيانات التطبيق والتحقّق منها. ويغطّي الجوانب التالية:

  • التحقّق من المدخلات عن طريق التحقّق من البيانات بتنسيق JSON، وإدارة سلامة البيانات، وتقييم تعبير نظامي regular expression للتحقّق من تنسيق المُدخلات، واستخدام الدوال المضمّنة للتحقّق من نوع البيانات والمحتوى، والمقدرة على كتابة التعابير النظاميّة أيضًا.
  • إجراء تشفير متماثل symmetric وغير متماثل asymmetric، حيث يتم اختيار خوارزميّة التشفير المناسبة، وإنشاء وإدارة الشهادات certificates، والتعامل مع فضاء الاسم System.Security، وتشفير الدفوقات streams.
  • إدارة التجميعات assemblies عن طريق إضافة إصدار لتجميعة، وتوقيع التجميعات باستخدام أسماء قويّة، ووضع تجميعة ضمن ذاكرة التجميعات العامّة global assembly cache، وإنشاء تجميعة WinMD.
  • تنقيح تطبيق بإنشاء وإدارة توجيهات directives للمترجم، واختيار نمط مناسب لعمليّة بناء التطبيق، والتعامل مع أدوات مراقبة الأداء للتطبيق، والتعامل مع التسجيل logging وتعقّب الأثر tracing، واختبار أداء التطبيقات profiling applications، وإنشاء ومراقبة عدّادات الأداء performance counters، وأيضًا الكتابة إلى مسجّل الأحداث event log.

4. الوصول إلى البيانات

يختبر هذا المجال مدى قدرة المطوّر على الوصول إلى البيانات والتعامل معها عن طريق العديد من التقنيّات المهمّة حيث يغطّي الجوانب التالية:

  • إجراء عمليات دخل/خرج عن طريق الكتابة والقراءة من الملفات والدفوقات streams، والكتابة والقراءة من الشبكة باستخدام الأصناف الموجودة ضمن فضاء الاسم System.Net، وإجراء عمليات دخل/خرج غير متزامنة asynchronous operations.
  • التعامل مع البيانات عن طريق الحصول على البيانات من قاعدة البيانات وتحديثها، والتعامل مع البيانات بتنسيق JSON وXML، والحصول على البيانات عن طريق خدمات ويب web services.
  • الاستعلام عن البيانات والكائنات ومعالجتها باستخدام LINQ وذلك عن طريق الاستعلام عن البيانات باستخدام عوامل مثل: projection، join، group، take، skip، aggregate، وإنشاء طرائق للتعامل مع استعلامات LINQ، واختيار البيانات المستعلم عنها وتهيئتها باستخدام الأنواع عديمة الاسم anonymous types، والتنفيذ القسري لاستعلام، وقراءة وتصفية وإنشاء بنى المعطيات باستخدام LINQ to XML.
  • سَلْسَلَة serialize البيانات، وإعادة تجميعها deserialize وذلك عن طريق السَلْسَلَة وإعادة التجميع باستخدام السَلْسَلَة الثنائيّة binary serialization والسَلْسَلَة المخصّصة والسَلْسَلَة باستخدام مُسَلْسِل XML ومُسَلْسِل JSON.
  • تخزين البيانات ضمن المجموعات collections واستردادها منها، حيث يتوجّب التمكّن من تخزين البيانات واستردادها باستخدام القواميس dictionaries والمصفوفات والقوائم lists والمجموعات الرياضيّة sets والأرتال queues، واختيار نوع مناسب لمجموعة، وتهيئتها، وإضافة العناصر إليها، وإزالتها منها، واستخدام المجموعات ذات النوع المُحدّد typed collections والمجموعات ذات النوع غير المُحدّد non-typed collections، وإنشاء مجموعات مُخصّصة، وتحقيق واجهات المجموعات.

تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...