كيف استعدت للمقابلة # 1

يحدث أحيانًا أنك تريد تغيير الوظائف. في هذه الحالة ، لدينا عدة خيارات:



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


إذا كنت لا تزال تختار الخيار الثالث ، فأنت فعلت ما فعلته. وقد تلقيت عرضًا رائعًا: مجموعتي الخاصة (مؤخرًا ، اضطررت لتغيير C # المفضل لدي ، إلى php ، وكذلك إطار عمل bitrix) ، fintech ، ومع زيادة في الراتب. بالطبع ، أولاً وقبل كل شيء ، قررت تحديث معلوماتي. هذا النص هو ، أولاً وقبل كل شيء ، ورقة الغش الخاصة بي ، وقد تم تجميعها من نص الوظيفة الشاغرة لمنصب مهندس .NET من أحلامي.



ORM - Entity Framework / NHibernate



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



إيجابيات EF



  • يسمح لك بإنشاء جدول برمز أو باستخدام EF Designer وإنشاء قاعدة بيانات جديدة
  • يمكنك "أتمتة" إنشاء الكائنات ، وكذلك تتبع التغييرات على هذه الكائنات ، وبالتالي تبسيط عملية تحديث قاعدة البيانات
  • استخدام بناء جملة واحد (LINQ) لأي مجموعة من الكائنات ، سواء كانت بيانات من قاعدة بيانات ، أو مجرد قائمة ؛ إنه سريع بما فيه الكفاية ، إذا تم استخدامه بشكل صحيح ، كما أنه مقتضب بشكل معقول.
  • يمكن لـ EF استبدال أجزاء كبيرة من التعليمات البرمجية التي ستكتبها بنفسك.
  • يقلل وقت التطوير.
  • يدعم عمليات قاعدة البيانات غير المتزامنة.


سلبيات EF



  • استخدام نهج "غير تقليدي" لمعالجة البيانات غير متوفر مع كل قاعدة بيانات.
  • لأي تغيير في مخطط قاعدة البيانات ، سوف ترفض EF العمل ؛ التغييرات على الرمز مطلوبة.
  • يتم إنشاء كود SQL بطريقة غير خاضعة للرقابة ، يجب أن نثق في مطوري EF نفسها.
  • .


NHibernate



  • .
  • .
  • Unit Of Work.
  • .
  • .
  • .


NHibernate



  • .
  • , , XML — .
  • , .


Writing unit tests frameworks



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



الأطر الشعبية:



  • xUnit.net
  • اختبار MS
  • لا


بدءًا من Visual Studio 2019 ، تمت إضافة ثلاثة أنواع من المشاريع خصيصًا للاختبارات: xUnit Test Project (.NET Core) و MSTest Test Project (.NET Core) و NUnit Test Project (.NET Core)



سأعتبر أن



اختبارات xUnit في xUnit محددة على أنها الأساليب التي تطبق عليها الصفات الواقعية والنظرية.

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



مثال
[Fact]
    public void Should_do_somthing(){...}

    [Theory]
    [InlineData(20, 180, 80, ”good”)]
    [InlineData(20, 180, 50, ”bad”)]
    public void Should_measure_weight(int age, int height, decimal weight, string expected){...}

      
      







هناك نموذج كامل للاختبار الذي تقوم xUnit بتطبيقه بالكامل: Arrange-Act-Assert.



  • ترتيب: يحدد الشروط الأولية لتنفيذ الاختبار
  • Act: ينفذ اختبارًا (يمثل عادةً سطرًا واحدًا من التعليمات البرمجية)
  • تأكيد: يتحقق من نتيجة الاختبار


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



الطرق الأساسية
  • الكل (التجميع ، الإجراء): تؤكد هذه الطريقة أن جميع عناصر مجموعة المجموعة تتوافق مع إجراء الإجراء
  • يحتوي على (متوقع سلسلة فرعية ، سلسلة فعلية): تؤكد الطريقة أن السلسلة الفعلية تحتوي على سلسلة فرعية متوقعة
  • DoesNotContain(expectedSubString, actualString): , actualString expectedSubString
  • DoesNotMatch(expectedRegexPattern, actualString): , actualString expectedRegexPattern
  • Matches(expectedRegexPattern, actualString): , actualString expectedRegexPattern
  • Equal(expected, result): result expected
  • NotEqual(expected, result): result expected
  • Empty(collection): , collection
  • NotEmpty(collection): , collection
  • True(result): , true
  • False(result): , false
  • IsType(expected, result): , expected
  • IsNotType(expected, result): , expected
  • IsNull(result): , null
  • IsNotNull(result): , null
  • InRange(result, low, high): , low high
  • NotInRange(result, low, high): , low high
  • Same(expected, actual): , expected actual
  • NotSame(expected, actual): , expected actual
  • Throws(exception, expression): , expression exception




وبالتالي ، فقد مررنا 2 من 7 نقاط من الملخص.



في الجزء التالي:



  • أطر عمل DI
  • فهم تصميمات التطبيق (الطبقة n ، البصل).


شكرًا على القراءة ، لذا فهمت أنني لست الوحيد الذي يستعد لشيء ما ؛)



المواد: واحد ، اثنان ، ثلاثة



All Articles