لقد حصلت للتو على وظيفة مطور في Facebook. إليك كيف استعدت لمقابلاتي.

لقد أنهيت للتو سبع مقابلات في الموقع في شركات التكنولوجيا في وادي السيليكون. في النهاية قبلت عرضًا لوظيفة هندسة برمجيات من Facebook.

إليك كيف استعدت لهذه المقابلات ، وما تعلمته على طول الطريق.

رحلتي المتعددة السنوات نحو وادي السيليكون

عندما كنت أدرس علوم الكمبيوتر في جامعتي في أستراليا ، كنت أتصور دائمًا مستقبلي كمهندس برمجيات في وادي السيليكون.

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

تركت منصبي كمهندس iOS رئيسي في شركة رائعة في ملبورن وعادت إلى مدينتي بيرث من أجل الدراسة. هناك سأستعد لعملية المقابلة التي تنتظرني في وادي السيليكون. كنت أعلم أنه سيكون صعبًا وشاقًا بشكل لا يصدق.

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

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

إجراء المقابلات مهارة

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

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

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

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

الأنواع المختلفة من المقابلات التي واجهتها

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

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

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

سأستعرض بإيجاز كل موضوع من الموضوعات التي واجهتها.

مقابلات الخوارزمية

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

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

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

مقابلات التصميم المعماري

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

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

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

المقابلات السلوكية

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

عادة ما تكون الأسئلة على غرار:

كيف تتعامل مع الفشل؟

ما هي أكبر نقاط ضعفك؟

كيف تحل الخلافات؟

ماذا ستفعل بشكل مختلف؟

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

"نقطة ضعفي هي أنني شديد التركيز"

"كان كل خطأ جيري ، لقد كان مريضًا في معظم مراحل المشروع"

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

تناسب الثقافة

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

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

برمجة الزوج

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

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

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

البحث عن الأخطاء وإصلاحها

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

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

اختبار معرفة المجال

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

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

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

فهم أنظمة التشغيل

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

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

كيف يجب أن تستعد

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

الحد الأدنى من المعرفة

إذا سألني أي شخص عما شعرت أنه سيكون مجالات للتركيز عليها ، أقترح ما يلي:

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

متى تبدأ

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

لا تقلق

لديك هذا.

مصادر

مقابلة تجريبية

  • interviewing.io (تجريبي) ، مجاني
  • Pramp مجانا
  • CareerCup ، مدفوعة

الخوارزميات

  • كسر مقابلة المدونة ، كتاب
  • بايت بايت وموقع الويب ويوتيوب
  • CS50 ، يوتيوب
  • كعكة المقابلة ، الموقع الإلكتروني
  • HackerRank ، الموقع
  • LeetCode ، الموقع

أنظمة التشغيل

  • مفاهيم نظام التشغيل ، كتاب

التصميم المعماري

  • مقدمة في الهندسة المعمارية والأنظمة ، يوتيوب

سلوكية

  • مقدمة عن المقابلات السلوكية ، يوتيوب

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

آندي هوب (AndyyHope) | تويتر

مهندس iOS. Blogger / رئيس Swift و iOS twitter.com