نصائح للمرشحين من مبرمج إجراء مقابلات على Facebook



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

في هذه المقالة ، أود أن أوضح أهم الدروس التي تعلمتها من تجربة إجراء مقابلات مع المبرمجين على Facebook. آمل أن يلقيوا الضوء على بعض ملامح هذه العملية ، التي تسببت في الكثير من الأعصاب المرهقة للغاية.

شكل


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

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

نحن بحاجة لمعرفة كيف تتعامل مع الصعوبات. إذا كنت ، عن طريق الصدفة ، تستطيع أن تقرأ الحل عن ظهر قلب مباشرة من Cracking The Coding Interview ، فلن نعرف شيئًا عن قدرتك على حل المشكلات.

أفضل الممارسات للمقابلات الوظيفية


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

  1. اطرح أسئلة توضيحية.
  2. تحليل خيارات الحل ، إيجابيات وسلبيات
  3. مشروع الكود
  4. عرض تنفيذ الحل
  5. اختبار الحل الخاص بك

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

ذكي طرح الأسئلة

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

  • هل يجب القيام بذلك بدون ذاكرة إضافية؟
  • ما الإدخال يجب أن نركز عليه؟
  • ما هو أكثر أهمية - الأداء أو انخفاض استهلاك الذاكرة؟

وبهذه الطريقة يمكنك التركيز على ما يهم حقًا وإخراج كل شيء آخر من عقلك. معرفة ما لا يمكنك التفكير فيه لا تقل قيمة عن معرفة أن الأمر يتطلب اهتمامًا خاصًا.

لا تفكر

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

"هل نفترض أن جميع القيم إيجابية؟"

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

خيارات الحل

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

لا يمكننا أن نأخذ ونضع الإجابة الصحيحة لك. ولكن إذا كنت تقترح خيارين ، A و B ، وتسأل: "ما هو النهج ، في رأيك ، هو الأكثر ملاءمة هنا؟" ، ثم سنختار بالتأكيد ما يبدو أكثر مثل الذي تريده.

صياغة الحل الخاص بك في شكل رمز

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

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



اكتب التنفيذ

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

الاتصالات!

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

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

تجريب

الغريب أن هذه الخطوة مهملة في أغلب الأحيان. أود أن أقول إن 98 ٪ من المطورين الذين كانوا في مقابلاتي يجب أن يولوا المزيد من الاهتمام لمراجعة قراراتهم.

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

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

ماذا تفعل إذا كنت لا تعرف ماذا تفعل


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

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

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

حسنًا ، على سبيل المثال ، لديك مهمة:

عند تقديم اقتراح ، احسب عدد المرات التي يظهر فيها كل حرف من الحروف الأبجدية.

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

  • شجرة البحث الثنائية
  • مجموعة
  • جدول التجزئة
  • شجرة AVL
  • كومة
  • تحويل

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

ابحث عن فكرة


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

دعنا نقول:

إعطاء صفيفين فرزها من نوع Integer ، A و B ؛ مطلوب لدمج B من A. ومن المفترض أن A يمكنه استيعاب جميع العناصر من B ؛ عدد العناصر التي تم تهيئتها في المصفوفات هو m و n ، على التوالي.

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

هنا المساحة الحرة تمنحك الفرصة لتحسين عملية الدمج. يمكن الاطلاع على الحل الكامل هنا .

طلب المساعدة


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

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

في الختام


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

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

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


All Articles