5 أشياء تحتاج إلى معرفتها في مقابلة البرمجة

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

هذه القائمة غير الشاملة للأسئلة كانت تدور في ذهني طوال الوقت.

  • "هل من المفترض أن أتحدث من خلال الرمز الخاص بي؟"
  • "كم مرة يجب أن أتواصل مع القائم بإجراء المقابلة؟"
  • "يا إلهي ، لقد نسيت إنشاء مثيل للمتغير الخاص بي! هل حُكم عليّ ؟! "
  • "ما رأي المحاور في إجابتي؟"
  • "هل من الجيد أن أفعل هذا؟"

… والقائمة تطول…

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

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

النضالانه حقيقي.

1. فكر دائما في المستقبل

غالبًا ما تسمع المحاور يسأل هذا: "حسنًا ، أعتقد أن هذا يبدو جيدًا. الآن ، كيف يمكنك تحسين هذا الرمز؟ "

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

  • جودة الكود
  • بعض المخاوف / الاختناقات التي لم يتم إثارتها في جلسة تخطيط الخوارزمية
  • كيف يمكنك توسيع نطاق الحل في متناول اليد.

لا يعني مجرد حل المشكلة أنك ستحصل تلقائيًا على عرض.

على سبيل المثال ، عندما تنظر إلى هذا الجزء من الكود أدناه ، ماذا يفعل؟ كيف يمكن تحسين ذلك؟ ما الذي قد يتسبب في كسرها؟

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

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

ماذا يعني هذا في جلسة الترميز

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

2. هناك أكثر من إجابة واحدة

هناك دائمًا أكثر من طريقة لحل مشكلة مقابلة البرمجة. دائما . عادة ما تكون هناك طرق متعددة لمعالجة المشكلة ، قد لا يكون بعضها هو الأمثل.

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

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

تمرين برمجة لتوضيح وجهة نظري:

دمج قائمتين مرتبطتين تم فرزهما. (إنه مرتبط بـ Leetcode إذا كنت ترغب في محاولة الحل). في الأساس يمكنك معالجة هذا بعدة طرق:

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

ما هي الطرق الأخرى التي يمكنك التفكير بها؟

3. OOP لم يمت

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

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

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

كتابة التعليمات البرمجية لأجهزة الكمبيوتر لفهمها أمر سهل. كتابة التعليمات البرمجية للبشر صعبة.

4. صياغة سيرتك الذاتية

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

سيرتك الذاتية هي بطاقة عملك. إنه انطباع الشركة الأول عنك.

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

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

5. التواصل في وقت مبكر والتواصل في كثير من الأحيان

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

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

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

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

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

ماذا يعني هذا في جلسة الترميز

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

6. [إضافي] استخدم التجريد

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

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

ماذا يعني هذا في جلسة الترميز

دعنا نقارن ونقارن بين هذين الكود:

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

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

لماذا أرغب في مشاركة تجربتي؟

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

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

نأمل أن تكون هذه النصائح قادرة على مساعدة باحث آخر عن عمل! حظا طيبا وفقك الله! ؟

إذا كنت قد استمتعت بهذه المقالة ، فإليك بعض المقالات الموصى بها التي كتبتها:

  • كيف حصلت على عروض من Microsoft و Amazon و Twitter بدون شهادة Ivy-league
  • كيف تكتب سيرة ذاتية رائعة لمهندسي البرمجيات
  • كيف أتمتة بحثي عن الوظائف عن طريق بناء زاحف ويب
  • كيفية تصميم النظام

الموارد والأدوات التي أوصي بها

  • عناصر برمجة المقابلات: رائعة لمشاكل البرمجة الأكثر صعوبة
  • Cracking The Coding Interview: رائع لتغطية علوم الكمبيوتر التأسيسية
  • OneNote: أستخدم هذا لتخزين كافة مقتطفات التعليمات البرمجية
  • Evernote: لكل شيء آخر
  • CodeRunner: أحب تطبيق Mac هذا! لقد استخدمت هذا عدة مرات لتشغيل نصوص / وظائف Python المخصصة وهي تعمل بشكل جيد للغاية. ؟
  • Jobscan: صديق يدير هذه الشركة. لقد سمعت الكثير من الأشياء الرائعة حول هذا الموضوع ، ويجب أن تجربهم من أجل أداة فحص السيرة الذاتية الخاصة بهم.
  • Refdash: يديره مجموعة من موظفي Google السابقين. نوعية المقابلات الوهمية هنا؟. المحاورون هم موظفو Google السابقون. أوصي بشدة بتجربتهم.
  • CodePath: مؤسسة غير ربحية تساعد الأشخاص على الاستعداد لمهنة في مجال التكنولوجيا. ناثان وتيم شخصان رائعان وقد تعلمت الكثير منهما. المجتمع مفيد للغاية والجميع على استعداد لتقديم يد المساعدة.
  • محددات النقاط الدقيقة: أحضرها إلى مقابلتك. أنا أوصي بهم بشدة!

زهيا تشونغ مهندس برمجيات في تويتر. يعمل في فريق قياس الإعلانات في سياتل ، حيث يقيس تأثير الإعلانات وعائد الاستثمار للمعلنين.

يمكنك العثور عليه على Twitter و LinkedIn.