اختبار الترميز - السماح باستخدام الويب؟ [مغلق

StackOverflow https://stackoverflow.com/questions/456818

  •  19-08-2019
  •  | 
  •  

سؤال

أثناء توظيف مطور الويب .NET ، أعطي المرشح اختبار ترميز.

أميل إلى قصر المرشح على MSDN المثبت على خادم الاختبار - أعتقد أنه يحمل كل ما يحتاجه المرشح لإكمال المهمة.

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

السؤال هو هل أحتاج إلى السماح بالاستخدام المجاني للويب أثناء الاختبار؟

إذا كنت تعتقد أن اختبار الترميز بأكمله خطأ - أود أن أسمع بدائل قد تكون لديك من أجلي.

هل كانت مفيدة؟

المحلول

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

عندما كنت في المدرسة ، أصبحت الآلات الحاسبة بأسعار معقولة. نظرًا لأن استخدامها كان لا مفر منه ، فقد تم تغيير الامتحانات. لم يعد اختبار الأرقام البسيطة تم اختباره بالطريقة التي كان عليها من قبل (كان من المهم بعد ذلك). بدلاً من ذلك ، كان من المقرر اختبار تقنيات حل المشكلات.

نصائح أخرى

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

إذا كانت بضع دقائق من googling كافية ليس فقط لبعض الكود ، بل لتعلم ما يكفي عن ذلك ليكون قادرًا على الدفاع عن القرارات في الداخل ، فهو ذكي بما فيه الكفاية!

هناك اختبارات ، حيث يمكن إعطاء الوصول إلى الويب ، وهناك حيث لا معنى له حقًا.

الحالة حيث من الجيد السماح بالوصول إلى الويب

  • عندما من غير المرجح أن تجد 60 في المائة من الكود عبر الشبكة
  • عندما تطلب شرح الرمز بعد أن أكمل الكود
  • حل محدد للغاية باستخدام استعلام SQL ، والذي من غير المحتمل أن يتم العثور عليه على الويب

الحالة التي من الجيد أن تسمح بها للوصول إلى الويب

  • بعض البرامج الأساسية مثل ، Recurssion ، Fibonacci ، Factorial ، معالجة السلسلة ، برامج الخدعة الصغيرة ، إلخ. ليست هناك حاجة إلى الكمبيوتر حتى في بعض هذه الحالات

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

أعتقد أنه ليس من المهم حقًا معرفة كيفية حل مثل هذه المشكلات عن ظهر قلب - غالبًا ما يكون الوقت أكثر أهمية بكثير من معرفة كيفية البحث عن الإجابات.

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

أو كمثال من عالم ASP.NET ، اسأل السؤال الذي تمت مقابلته مثل: ما هو ViewState ، ما هو Postback ، ما هي الجلسة/الحالة ، إلخ.

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

يجب أن يكون من السهل جدًا منع نسخ وملابين من الانزلاق عبر الشقوق من خلال مطالبة المرشح بشرح رمزه.

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

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

هناك معرفة أساسية يجب أن يعرفها المطورون في مجال معين ؛ لكنك تريد أيضًا معرفة مدى سرعة تعلم أشياء جديدة. اختبار جيد IMO هو إلقاء سؤال تعرفه لا تعرف وانظر إلى المدة التي يمكن أن يكتشفها باستخدام الموارد التي سيحصل عليها لو كان موظفًا في شركتك.

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

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

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

من المهم أن تتأكد من أن المرشح الحيوي - أنت لا تريد أن يجلس المبرمج الخاص بك هناك عندما يتعثرون ، وليس المضي قدمًا ؛ تريد منهم استخدام أي موارد في متناول اليد - سواء كان MSDN ، واختيار أدمغة شخص آخر ، باستخدام الويب ، وما إلى ذلك - لإنجاز المهمة. يبدو أن Cut-n-paste من الويب يبدو وكأنه غش ، ولكن (أ) إذا قمت بتصميم مهمتك بعناية ، فسيكون ذلك فريدًا بما يكفي لعدم أن تكون هناك إجابة قياسية يمكنهم نسخها من الويب ، و (ب) غير هل إعادة استخدام التعليمات البرمجية الحالية جزء رئيسي من إنشاء البرامج؟ لا يختلف الأمر كثيرًا عن استخدام المكتبات الطرف الثالث ، لتجنب إعادة اختراع العجلة. على الجانب السلبي ، بالطبع ، تريد أيضًا أن يظهروا أنهم يستطيعون تطوير خوارزميات ، وبالتالي فإن المهمة الفريدة تحتاج إلى تضمين بعض العناصر التي تتطلب ذلك بدون حل على الويب بالفعل. المشكلة هي أن المنتديات هي كعب أخيل لكل ذلك لأنهم يمكنهم ببساطة طلب الحل وسيقوم شخص ما ، في مكان ما ، بتسليم الإجابة عن غير قصد!

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

إذا استخدم الويب لشيء بسيط مثل العثور على بناء الجملة أو المعلمات التي نسيها ، فلا تميزه. هذا امر طبيعي.

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

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

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

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

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

As do many other respondents, I'd rather employ a resourceful developer who know how to use the web to the fullest to draw on other's experiences and previous work, than a developer who limits himself and his applications to the MSDN way of doing things.

I copy other peoples code all the time - daily in fact. The knack of it depends on finding the right solution quickly and integrating it into your existing work.

So let your candidate use the web and ask him how he came to his solutions. You might learn more about him from his methods than from how will he can remember previous solutions.

Three things I'd do.

Let applicants send in a coding example along with their cv.

Let applicants produce some real-life code (maybe even pair-program with a developer on your team) this will show you if they can actually use the tools. Internet is a tool too so they should be able to use internet.

Let applicants solve a problem in pseudo code on a blackboard during the interview. In this case you can be their "internet" by helping them.

These three approaches will show you different things. The first is a good early warning mechanism but can easily be faked (they could just download oss code from the web somewhere). The second is good to see if they can actually code but they might score badly if they're unfamiliar with the tools you use. The third will show you if they can solve theoretical problems but won't show you if they actually are good team players or if they write maintainable code.

I recently had a friend start talking to me on IM, he was in a coding test job interview. He had a couple SQL questions. At first i thought, hell you've got to do this yourself. I'm not going to help you cheat during an interview.

Then i thought about it again. I've been answering questions and talking to him about various technical issues for years on IM as part of his work. So when he encounters problems in the real world with the job if he gets hired, he'll do the same thing.

We don't talk about it much, but having a good network of friends to ask questions, and knowing how to search out relevant answers on the net are a big part of being an effective programmer or sysadmin. I've met people who were super smart programmers, but didn't really know how to find information online. They missed a lot, were kind of out of the loop. Knowing how to use resources should be important.

When i do interviews i often ask people what websites they read, what development tools they use, and why. It's a similar thing. Sure it's not about how they write x line of code, but it's about how they work.

No how to get around somebody just copy and pasting "answers". Well first, don't ask questions which have pat answers. Secondly when i'm interviewing i like to give people some code, ask them to refactor it, have them talk through what they are thinking. Then ask them to write some new code which implements a feature. Pair program with them. It's hard to hide inability to code when pair programming. While they are pairing, it totally makes sense to say, "let's go look up the api on the date time library."

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top