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

تحتوي المهمة عادةً على تنفيذ أساليب CRUD إلى ملف من خلال
قائمة وحدة تحكم مع كيان أو كيانين بالإضافة إلى التحقق من صحة بعض الحقول. على سبيل المثال ، سأقدم موقفا كلاسيكيا مع مستخدم يحتاج إلى تنفيذ التحقق من صحة البريد الإلكتروني والهاتف وفقًا لقالب معين ، وبذلك يكون قادرًا على الدخول من 1 إلى 3 هواتف. هناك الكثير من الإجابات ، وهناك عدد قليل جدًا من الأماكن - بناءً على ذلك ، يكون التحديد صعبًا للغاية.
بدأت في التحقق من جميع المهام في صف واحد ، واتضح أن الأمر يستغرق حوالي 30 دقيقة لاختبار الأداء من خلال إطلاق وتعليق كل مهمة ، واضطررت إلى مراجعة منهجية التحقق واستنباط معايير للتصفية السريعة للرمز عالي الجودة بشكل غير كافٍ. على سبيل المثال ، عند فتح حل على github ، أرى أن كل الشفرة تتركز في عدة فئات وحتى مكدسة في حزمة واحدة - رفض سريع (ماذا عن مبادئ OOP؟).
قد يجد الكثيرون أن هذا النهج غير عادل ، ليقولوا إن المشكلة قد تم حلها ، وأن الكود يعمل ، لكن حياة المتدرب والمبتدئين قاسية ولا ترحم.
في هذا الصدد ، أقدم قائمة التوصيات الخاصة بإكمال مهمة الاختبار
- يجب أن يعمل قرارك وفقًا لـ ToR
اتبع بعناية المتطلبات المنصوص عليها في شروط حل المشكلة. لا تفكر في حقولك في الكيانات ، ولا تغير شروط التحقق ، إلخ. و هكذا. هذا يدل على مدى اهتمامك بالتفاصيل ، وهو أمر مهم جدًا للمطور. - تحقق بعناية المهمة المكتملة
انتهى المهمة - تحقق من الأداء. أولاً ، الوظيفة الرئيسية الموصوفة في ToR ، ثم إضافية. حاول "كسر" التطبيق الخاص بك: تحقق من التطبيق أو أدخله على نحو كاف للمهمة ، إذا قمت بإدخال بيانات غير صالحة ، فإن البيانات تكون متشابهة قدر الإمكان. تذكر أن إصلاح كل ما تجده. - ترميز
يجب أن تكون جميع الملفات في نفس الترميز ، في رأيي في UTF-8. تكوين IDE الخاص بك لهذا الغرض. تذكر أنه إذا كان لديك Windows ، فقد يكون لدى المراجع نظام Linux ، كما أن القرفصاء الإضافية مع الترميز مضيعة للوقت بالنسبة للمراجع. - لا ترتكب في ارتكاب واحد
يجب أن تلتزم أثناء حل مشكلتك ، أضف أوصافًا واضحة إلى الالتزامات. إذا كنت تعرف اللغة الإنجليزية ، فهي أفضل في اللغة الإنجليزية. يشير هذا بشكل غير مباشر إلى أنك لم تدمج فقط حل شخص آخر من البوابة ، لكنك كتبت الكود بنفسك. - حاول ألا تدمج قرارات الآخرين
نظرًا لأنك تطالب بالحد الأقصى لشهر يونيو ، فغالبًا ما لا تزال تفتقر إلى الخبرة الكافية لاستخدام رمز شخص آخر. قد تختلف شروط المهمة بعض الشيء ، وعندما تقوم ببساطة بنسخ حل شخص آخر ، فقد يكون ذلك بالفعل غير متوافق مع المهمة الحالية. ويجب إكمال المهمة تمامًا مع المهمة (انظر P1). - إضافة الملف التمهيدي
إضافة ملف readme.md إلى جذر المشروع. صف بإيجاز طلبك ، وضح تفسيرات إضافية لبدء التشغيل ، إذا لزم الأمر. إذا كان لديك مهام أخرى مكتملة بالفعل ، فأضف الملف التمهيدي هناك أيضًا. على سبيل المثال ، إذا كنت مهتمًا بمرشح ، فيمكنني الاطلاع على الكود الآخر. وإذا لم تذهب هنا ، فيمكنك أيضًا إرفاق هذا الرمز في سيرتك الذاتية. - جعل قائمة مريحة
يجب أن يكون التطبيق سهل الاستخدام. تذكر أن وقت التحقق محدود في كثير من الأحيان ، لذا قم بتحميل التطبيق مسبقًا بالبيانات ، وأضف طريقة لإظهار جميع الكيانات (الموجودة في الشروط). يجب أن يكون التنقل في القائمة مناسبًا ، على سبيل المثال باستخدام الأرقام. وأحيانًا يقومون بتنفيذها بطريقة لحذف كيان ما ، تحتاج إلى إدخال "حذف" في وحدة التحكم. ومع ذلك ، لا يمكن للمرء الإفراط في ذلك وتجاوز نطاق المعارف التقليدية. - تفعل أفضل ما تسمح به مهاراتك.
نظرًا لأنك قررت تنفيذ مهمة الاختبار ، فاقرب من حلها بأقصى عائد. حتى لو كانت المهمة تافهة وبسيطة ، فلن تحتاج إلى التعامل مع حلها بشكل رسمي وكتابة رمز على ركبتك. وإذا لم تذهب إلى هذه الشركة ، فسوف يكون لديك حل مكتمل على جيثب ، وهو ممارسة. - لا تنسى مبادئ OOP
دع الأمر يبدو لك مهمة صغيرة ، لا تنسى - المهمة هي اختبار ، وجافا هي في المقام الأول لغة وجوه المنحى. وسوف ينظرون ليس فقط في قابلية تشغيل التطبيق ، ولكن أيضا في التعليمات البرمجية. تعد جودة الكود جزءًا مهمًا للغاية من الحل . لا تكتب كود السباغيتي. ضع كل شيء في الفصول ، الحزم. قم بإنشاء واجهات عند الضرورة ، وقم بإجراء عمليات نقل إلى ENUM ، إذا لزم الأمر. - محاولة استخدام أنماط التصميم
سيُظهر التطبيق الناجح لنمط تصميم واحد على الأقل أن لديك فكرة عن أنماط التصميم (أو أنك لا تفعل ذلك). قبل تطبيق هذا النمط أو ذاك مباشرة - اكتشف ماهية الفكرة وكيف يجب أن تعمل ولماذا تم ابتكارها. إذا رأيت أنماطًا في الكود ، فيمكنني في المقابلة طرح سؤال حول النموذج المطبق. - استخدام الموارد
من الأفضل أن تؤخذ جميع الرسائل المعروضة للمستخدم في الموارد وتؤخذ من هناك. سيُظهر هذا للمراجع أنك تعرف كيفية التعامل مع الموارد وفهم ما يتم استخدامها. يتم عرض أفضل الرسائل باللغة الإنجليزية. - تذكر إعادة تعريف حيث يساوي & hashcode
- استخدم ميزات java8 + مثل تعبيرات lambda والجداول
لا تنس أنه في كثير من الأحيان المجموعات أكثر ملاءمة من مجموعة. إذا انخفض الاختيار لصالح المجموعات ، فاستخدم المجموعات الصحيحة. يجب أن تكون مستعدًا في المقابلة لتبرير اختيارك لصالح مجموعة أو مجموعة معينة. - اختبارات
إذا كنت تستطيع ، كتابة الاختبارات ، ولكن هذا بالفعل خمسة مع عدد قليل من الإيجابيات. في كثير من الأحيان ، من المفهوم أن أي رمز جيد عادة ما تكون مغطاة في الاختبارات. على الرغم من أن المهمة الموضحة في المثال ، إلا أن عدم وجود اختبارات لن يكون ناقصًا ، لأن هذا تطبيق بسيط لوحدة التحكم لمعرفة java core.
ملخص
يرسل نصف كبير المتقدمين حلاً للمشكلة دون أخطاء ، ورمزًا صلبًا - الوحدات التي تمر عبر الانتقاء الطبيعي وتندرج في الجولة التالية. يتلقى جميع فناني الأداء تعليقات. أولئك الذين كتبوا رمزًا قويًا جاء لإطلاقه - ملاحظات شخصية ، وأولئك الذين أرسلوا معكرونة مكتوبة على ركبهم - أصبحوا أكثر تعميماً.
ملاحظة: آمل أن تساعدك نصيحتي ، المتقدمين الأعزاء على أداء مهام الاختبار بشكل أفضل ، وأقل احتمالًا أن تبكي المختبرين بالدموع الدامية. حظا سعيدا في البحث الخاص بك ومكانا جيدا بداية!