مدرسة تطوير الواجهة: تحليل مهام مينسك ومجموعة جديدة في موسكو

افتتحت مجموعة جديدة اليوم في مدرسة ياندكس لتطوير الواجهة في موسكو. في الفترة من 7 سبتمبر إلى 25 أكتوبر ، ستجري المرحلة الأولى من التدريب. سيتمكن الطلاب من مدن أخرى من المشاركة فيها عن بُعد أو شخصيًا - ستدفع الشركة تكاليف الطريق والإقامة في بيت الشباب. ثانياً ، إنها المرحلة الأخيرة ستستمر حتى 3 كانون الأول (ديسمبر) ، ويمكن إكمالها شخصيًا فقط.

اسمي جوليا سيريديش ، كتبنا هذا المنشور مع سيرجي كازاكوف. نحن على حد سواء مطوري الواجهة في مكتب مينسك في ياندكس وخريجي SRI في السنوات الماضية.



بمناسبة افتتاح التسجيل في موسكو ، ننشر تحليلًا لمهام الالتحاق بالمدرسة السابقة - هنا في مينسك.

إذا تتبعنا تاريخ مهام SRI ، فقمنا من سنة إلى أخرى باختبار ثلاث مهارات مهمة للمبرمج:

  • تخطيط. كل مطور يجب أن يكون قادرًا على الكتابة. لا يحدث أن يكون لديك العم Seryozha الذي قام بكتابة الحروف للفريق بأكمله ، وأنك تكتب النصوص فقط. لذلك ، يجب على كل طالب أن يوضح كيف يعرف كيفية الطباعة.
  • جافا سكريبت. إذا كانت المسألة تقتصر على التنضيد ، فلن يكون لدينا مدرسة لتطوير الواجهة ، ولكن مدرسة تخطيط. واجهة مطوية جميلة يحتاج إلى إحياء. لذلك ، هناك دائمًا مهمة على JS ، ولكنها في بعض الأحيان مهمة أيضًا على الخوارزميات - نحن نحبها كثيرًا.
  • ربما يكون حل المشكلات هو المهارة الرئيسية للمطور. كل شيء يتغير بسرعة كبيرة في إنشاء واجهات. يشبه لويس كارول: "عليك أن تركض بنفس السرعة لمجرد البقاء في نفس المكان ، ولكن للوصول إلى مكان آخر ، يجب أن تجري مرتين بنفس السرعة." نحن نواجه كل يوم تقنيات جديدة - من الضروري أن نحسب حسابها ونكون قادرين على فهمها. لذلك ، في المهمة الثالثة ، اقترحنا فهم التقنيات التي عادة ما يكون مطور مبتدئ غير مألوف فيها.

في تحليل كل مهمة ، لن نخبر فقط عن الإجراء الصحيح ، ولكن أيضًا عن الأخطاء الشائعة.

المهمة 1: محفظة


المهمة الأولى قام بها مصمم Yandex.Collections Alexei Cherenkevich ، الذي يعرف كيفية التنضيد ، وزميله في الخدمة ، مصمم الواجهة Sergey Samsonov.

حالة


قم بإنشاء موقع محفظة: أخبرنا عن نفسك وعملك وتوقعاتك من المدرسة. يجب أن يتطابق الموقع مع التصميم المقترح قدر الإمكان (روابط إلى تخطيطات: 1000 بكسل ، 600 بكسل ، 320 بكسل ، مواصفات ). نحن مهتمون فقط بالتخطيط ، لذا يرجى عدم استخدام JavaScript.

عند التحقق ، سنأخذ في الاعتبار:

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

الإضافة ستكون:

  • استخدام حلول CSS الحديثة: فليكس بوكس ​​، الشبكة ، إلخ ؛
  • تخطيط التكيف.
  • استخدام ما قبل و (أو) postprocessors ، التجميع ، التصغير ، الأمثل لرمز الإخراج ؛
  • HTML التحقق من صحة النموذج ، زر تحميل ملف منمق.

المهمة ضخمة جدًا ، بحيث يمكنك تخطي ما لن ينجح. سيؤدي ذلك إلى انخفاض النتيجة قليلاً ، ولكن لا يزال بإمكانك إثبات معرفتك. عند الانتهاء ، أرسل لنا رابطين - إلى الحافظة والكود المصدري على GitHub.

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

لإضافة أكبر قدر ممكن من الموضوعية إلى نتيجة اختبار المهمة الأولى ، كان هناك الكثير من المعايير لهذا الاختبار.

معايير


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

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

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

تخطيط الدلالي . "كم مرة أخبروا العالم" أنه يجب تأطير الرابط كـ <a> ، يجب تأطير الزر كـ <زر>. لحسن الحظ ، امتثل معظم المرشحين لهذا المطلب. لم يتعرف الجميع على القائمة الكامنة في توقعات SRI بجعلها تستخدم علامات div ، ولكنها ليست مخيفة للغاية. كان هناك مرشح قام بإدخال جميع العلامات الدلالية التي كان يعرفها فقط - حيث كان ضروريًا وحيث لم يكن ضروريًا. على سبيل المثال ، بدلاً من القائمة ، <القسم> و <الجسيم>. ومع ذلك ، فإن الدلالات - إنها تدور حول فهم تكوين صفحتك والغرض من كل كتلة (الأغلبية فعلت ذلك هنا) ، وكذلك حول استخدام ما قبل و / أو معالجات ما بعد (قليلون فعلوا ذلك هنا ، على الرغم من أن هذا كان أيضًا في نقاط - كان يتم ربط scss في أغلب الأحيان) .

شريط التمرير العمل . في المهمة ، كتبنا أنه لا يمكن استخدام JS. تم اختبار القدرة على حل المشكلات هنا - يمكن إنشاء شريط التمرير باستخدام <input> و <label for = "# id"> وسائل الاتصال. يحدث كل السحر على مستوى المحدد # button-N: محددًا. شرائح منزلق. شرائح منزلق. عندما نقر على أحد مربعات اختيار الإدخال ، فإنه يذهب إلى الحالة المحددة. يمكننا استخدام هذا وتعيين الترجمة المطلوبة إلى الحاوية الخاصة بنا مع الشرائح: convert: translate (-33٪). انظر تنفيذ شريط التمرير هنا .

القوائم المنسدلة . كل ذلك انخفض إلى <input name = "accordion" type = "radio"> ومحدد مماثل: .accordion-item input: check ~ .accordion-item__content. انظر التنفيذ هنا .

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

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

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

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

تسطير زر تحميل الملف . من المتوقع أن نرى مجموعة من الإجراءات التالية: <input type = "file" id = "file" name = "file" class = "inputfile" /> و <label for = "file"> حدد ملفًا </ label>. وعلاوة على ذلك كان مطلوبا لإخفاء المدخلات وتسمية النمط. هناك طريقة أخرى مشتركة - لتقديم مدخلات شفافة ووضعها في أعلى الزر. لكن ليست كل المتصفحات تسمح بالتصميم <input type = "file"> ، ولا يمكن تسمية هذا الحل بالمتصفح المتقاطع بالكامل. وهو أكثر دلالة صحيحة لجعل تسمية.

التوافق عبر المستعرض . لقد تحققنا من أن كل شيء على ما يرام ، في الإصدارين الأخيرين من المتصفحات الحديثة (بدون IE ، كان المشاركون محظوظين) ، وكذلك في Safari على أجهزة iPhone وفي Chrome على androids.

على العكس من ذلك ، سجلنا نقاطًا إذا استخدم شخص ما JS أو Bootstrap: كلاهما جعل المهمة بأكملها بلا معنى. علاوة على ذلك ، فإن المشاركين في Bootstrap لم يتلقوا فقط ناقصًا ، ولكنهم فقدوا أيضًا الكثير من النقاط للدلالات والعناصر المنفذة.

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

كانت المهمة الأولى مفيدة للغاية للطالب في المقام الأول. أولئك الذين لم نقبلهم الآن لديهم ملخصًا موجزًا ​​- يمكنك إرفاقه بكل فخر بكل الردود أو وضعه على صفحات gh الخاصة بك.

المهمة 2: طريق النقل


مؤلف المهمة هو دينيس باليكو ، رئيس مجموعة واجهة البحث.

حالة


لديك خريطة سماء نجمية. يعرض اسم كل نجم ، وكذلك المسافة منه إلى نجوم أخرى في ثوانٍ ضوئية. قم بتطبيق وظيفة الحل ، والتي يجب أن تأخذ ثلاث وسائط: كائن فيه المفاتيح هي أسماء النجوم ، والقيم هي المسافات إلى النجوم (في حركة المرور في اتجاه واحد في الفضاء) ، وكذلك أسماء نقاط البداية والنهاية للمسار - البداية والنهاية ، على التوالي. يجب أن تعيد الوظيفة أقصر مسافة من بداية النجمة إلى نهايتها والمسار الذي يجب أن تسير فيه.

وظيفة التوقيع:

const solution = function(graph, start, finish) { //   } 

عينة المدخلات:

 const graph = { start: { A: 50, B: 20 }, A: { C: 40, D: 20 }, B: { A: 90, D: 90 }, C: { D: 160, finish: 50 }, D: { finish: 20 }, finish: {} }; const start = 'start'; const finish = 'finish'; 

إخراج العينة:

 { distance: 90, path: ['start', 'A', 'D', 'finish'] } 

ملاحظة: إطار الحل موجود في src / folder ، ضع الحل في solution.js.

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

معايير


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

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

بشكل منفصل ، تم أخذ وضوح وقراءة الحل في الاعتبار. في جميع المؤتمرات في جميع أنحاء العالم يقولون إن عمل المبرمج يتكون من 80 ٪ يقرأون كود الآخرين. حتى تلاميذ المدارس يذهبون إلى مراجعة الكود - مع القيمين على بعضهم البعض. لذلك كان هذا المعيار وزنا كبيرا. كانت هناك أعمال لم تكن فيها متغيرات أطول من حرف واحد - من فضلك لا تفعل ذلك. كانت تعليقات المشاركين مسرورة للغاية - باستثناء التعليقات التي كانت متطابقة مع تعليقات Stella Chang.

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

القرار الصحيح:

 const solution = function(graph, START, FINISH) { //       const costs = Object.assign({[FINISH]: Infinity}, graph[START]); //     const parents = { [FINISH]: null }; Object.keys(graph[START]).reduce((acc, child) => (acc[child] = START) && acc, parents) const visited = []; let node; //  «» ,   do { node = lowestCostNode(costs, visited); let children = graph[node]; for (let n in children) { let newCost = costs[node] + children[n]; //         if (!costs[n] || costs[n] > newCost) { costs[n] = newCost; parents[n] = node; } } visited.push(node); } while (node) return { distance: costs[FINISH], path: optimalPath(parents) }; //     «»  function optimalPath(parents) { let optimalPath = [FINISH]; let parent = parents[FINISH]; while (parent && parent !== START) { optimalPath.push(parent); parent = parents[parent]; } optimalPath.push(START); return optimalPath.reverse(); } //        function lowestCostNode(costs, visited) { return Object.keys(costs).reduce((lowest, node) => { if (lowest === null || costs[node] < costs[lowest]) { if (!visited.includes(node)) { lowest = node; } } return lowest; }, null); }; }; 

المهمة 3: تقويم الأحداث


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

حالة


اكتب تقويمًا صغيرًا لعرض الجدول. يمكنك أن تأخذ أي جدول تريده. على سبيل المثال ، الجدول الزمني للمؤتمرات الأمامية في عام 2019.

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

موارد مفيدة


جدول المؤتمرات الأمامية:
confs.tech/javascript؟topics=javascript٪2Bcss٪2Bux

عمال الخدمة:
developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
developers.google.com/web/fundamentals/primers/service-workers

واجهة برمجة تطبيقات الإشعارات:
developer.mozilla.org/ru/docs/Web/API/Notifications_API

كانت المهمة الثالثة الأكثر إثارة للاهتمام للاختبار ، لأنه كان هناك الكثير من الحلول ، لكل منها حلها الخاص. فحصنا كيف يتعامل المرشح مع التقنيات غير المألوفة - ما إذا كان يعرف كيفية التحقيق ، وما إذا كان يختبر حلوله.

معايير


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

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

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

القدرة على ضبط تذكير بحيث يعمل حقًا بعد 3 ، 7 ، 14 يومًا. كان من الضروري فهم واجهة برمجة التطبيقات للإشعارات ، التي كان الرابط إليها مباشرًا في المهمة. لم ننتظر أي تطبيق محدد للتحقق مما إذا كان الوقت قد حان للدفع. تم قبول أي خيار عمل: التخزين في localStorage أو IndexDB أو الاقتراع الدوري من قبل عامل خدمة. يمكنك حتى إنشاء خادم دفع ( هذا مثال ) ، لكنه لن يعمل في وضع عدم الاتصال. كان من المهم بنفس القدر الحصول على دفعة بعد إغلاق الصفحة - وفتحت بعد بعض الوقت. إذا تم تذكير "مات" في نفس الوقت الذي تم فيه إغلاق الصفحة ، فلن يتم احتساب القرار. إنه أمر رائع عندما فكر الرجال في المفتشين وأتاحوا الفرصة للحصول على دفعة الآن - حتى لا تنتظر 3 أيام.

القدرة على جعل الأيقونة على سطح المكتب (PWA). لقد بحثنا عن ملف manifest.json باستخدام الرموز الصحيحة. قام بعض اللاعبين بعمل هذا الملف (أو تركوا الملف الذي تم إنشاؤه في CreateReactApp) - لكنهم لم يضفوا الرموز الصحيحة. ثم ، عند محاولة التثبيت ، حدث خطأ مثل "تحتاج إلى رمز آخر".

نمط الرمز وهيكل المشروع . كما هو الحال في المهمة الثانية ، نظرنا إلى نمط الشفرة المفردة (حتى لو لم يطابق أسلوبنا). بعض اللاعبين ثملوا لينتر - هذا شيء عظيم.

أخطاء في وحدة التحكم . إذا كان هناك مؤشر مباشر في وحدة التحكم على أن هناك شيئًا ما خطأ ، ولم ينتبه المشارك إليه ، فقد أخذنا نقاطًا.

النتائج


مضحك في قرارات المشاركين:

  • احتوى أحد الاستبيانات على النص التالي: "ساعد مبرمج صديق في تجميع تطبيق التفاعل. قال: لقد رميت عليه أسئلة عن ماذا وكيف ولماذا. أعجبتني كثيرًا ، أريد أن أعرف المزيد عن ذلك. " لقد أيدنا هذا الاستبيان بكل إخلاص ، لكن لسوء الحظ ، لم يساعده صديق المرشح في تقديم طلب عمل.
  • أرسل أحد المرشحين رابطًا إلى GitHub ، حيث يوجد أرشيف RAR - من الصعب التعليق على هذا بطريقة أو بأخرى. :)
  • اعترف مرشح آخر في التعليق على السطر الأول من ملف solution.js بصراحة بأنه قام بنسخ الخوارزمية.

تلقينا استبيانات من 76 مرشحًا وتم اختيار 23 منهم. تم إرسال الاستبيانات إلينا ليس فقط من مينسك ، ولكن أيضًا من موسكو وسانت بطرسبرغ وحتى تتارستان. فاجأ بعض الرجال بمهنهم الحالية: واحد منهم هو فاحص طبي والآخر طالب في جامعة الطب.

اتضح توزيع مثيرة للاهتمام للنجاح في استكمال المهام. أكمل المشاركون المهمة الأولى في المتوسط ​​بنسبة 60 ٪ ، والثانية - بنسبة 50 ٪ ، والثالثة تبين أنها الأصعب وتم الانتهاء منها في المتوسط ​​بنسبة 40 ٪.

للوهلة الأولى ، تبدو المهام معقدة وتستغرق وقتًا طويلاً. السبب ليس أننا نريد التخلص من أكبر عدد ممكن من المرشحين. أثناء التدريب ، يواجه الطلاب مهام حقيقية - لإجراء محادثة أو Yandex.Music للأطفال أو Yandex.Weather للأشخاص الذين يعتمدون على meteo. للقيام بذلك ، تحتاج إلى قاعدة البداية.

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

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

Source: https://habr.com/ru/post/ar454584/


All Articles