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

تبحث Google باستمرار عن المهندسين. بصفتي SRE ، أستطيع أن أقول على وجه اليقين أنك
بحاجة إلى صفوفنا . ملفات تعريف الارتباط في المطابخ الصغيرة والقهوة في آلات القهوة في انتظارك. كل ما عليك فعله هو الحصول على مقابلة. هذا أمر صعب ، لكنه حقيقي - بمجرد أن
وصفت قصتي بالفعل باحثًا عن عمل ، والآن ، من بين أمور أخرى ، أجري مقابلات أيضًا. لذا سأخبرنا الآن كيف نجري مقابلات مع المهندسين.
لا ، لم أصبح مجندًا. تتضمن
عملية المقابلة أولاً محادثة مع المجند. هذه محادثة عامة "ماذا وأين" (أي وصف العملية لحالتك الخاصة) ونفس
الفحص من قبل الجميع من الاستبيان مع العديد من خيارات الإجابة. بدا الفحص في ذلك الوقت أساسيًا للغاية بالنسبة لي ، وأظن أنك أجبت على مثل هذه الأسئلة مائة مرة بالفعل. ثم سيتم إجراء المقابلات من قبل المهندسين - زملائك المستقبليين (قريبون أو بعيدون ، هكذا تسير الأمور ، كوكبنا صغير جدًا).
(مهم: أصف العملية كما أعرفها ، في المناصب الهندسية (مهندس البرمجيات (SWE) ومهندس موثوقية الموقع (SRE).) بالنسبة للمتدربين ، يمكن أن تتغير التغييرات العملية ، وكذلك العملية من حيث المبدأ ، حيث يقوم قسم الموارد البشرية بتعديل العملية لتحقيق استخدم المعلومات المقدمة هنا فقط لتمثيل ما يمكن توقعه تقريبًا - ولكن ليس عرضًا عامًا! المعلومات الدقيقة عن كيفية سير العملية لك شخصيًا ستكون معلومات حصرية وحصرية من المجند. قد تكون المعلومات قديمة بالفعل. - راقب راجع قسم How We Hire للحصول على أحدث المعلومات وقت قراءة هذه المقالة).أولاً ، ستكون هناك بعض المقابلات من خلال
جلسات hangout / مقابلة . هذه بالفعل مقابلة كاملة ، كما قلت أعلاه - سيجري المهندسون مقابلة ، ويفترض أن المرشح "سوف يفكر بصوت عال" في العملية + كتابة عشرات أو سطرين في أي لغة برمجة (نعم ، للأسف ، حتى الآن في Google).
تم تصميم مقابلتي لمدة 45 دقيقة تقريبًا أو ناقص عشر دقائق ، ولكن عادةً ما أحاول ملاءمة 45 دقيقة بالضبط. من هذا الوقت ، خمس دقائق لمقدمة موجزة ومعلومات عامة ، 30-35 دقيقة للأسئلة والمناقشة ، ثم خمس دقائق لأسئلة المرشح (إن وجدت).
بشكل عام ، الغرض من مهندس المقابلة هو جمع معلومات
حول عدة محاور لمهارات المرشح (مثل مهارات الترميز ، ومعرفة الخوارزميات وهياكل البيانات ، وما إلى ذلك). لكن أهم شيء في المقابلة هو معرفة كيف يفكر الشخص. أي أنه من المهم دائمًا إيجاد الحدود عندما لا يعرف الشخص الحل. لكل محاور أسلوبه الخاص (خاصة للمقابلات الهاتفية): يحتفظ شخص ما بعشرات الأسئلة في المتجر من أسئلة الإحماء (التي يتمثل حلها في كتابة دورة من ثلاثة أسطر) إلى الأسئلة الصعبة حتى شرحها. لدى شخص ما 2-3 أسئلة "مفضلة" ، يمكن لأي منها أن يتحول من قبل عشرات الجوانب وكيفية التبسيط والتعقيد ، اعتمادًا على ما يوضحه المحاور. أنا متأكد من أنه لا تزال هناك خيارات ، لكني لا أعرف عنها.
لقد جربت كلتا التقنيتين ، وأنا أفضل هذه الأخيرة: اعتمادًا على السيرة الذاتية واحترام الذات للمرشح ، أستخدم نموذج سؤال أكثر ملاءمة. السؤال مفتوح دائمًا (بعد كل شيء ، متى رأيت آخر بيان دقيق للمشكلة في صناعتنا؟) - واعتمادًا على ماذا وكيف يسأل المرشح ، أقوم بتبسيط أو تعقيد السؤال بحيث أنه بنهاية الدقائق العشر الأولى كتب بالفعل حل تافه. نادرًا ما يكون هذا صعبًا ، فالحل تافه.
الأسئلة "لماذا أنت متأكد من أنها تعمل؟" يتم طرحها بشكل تافه. (إذا لم يصف المرشح على الفور حدود قابلية التطبيق أو الاختبارات) ، وما مدى تعقيد الحل. إنه يعطي فقط معلومات يعرف المرشح كيف يرمز ويفهم ما كتبه. لكن الترميز ليس كافيًا - عليك أن تكون قادرًا على التفكير ، لذا فإن الأسئلة التالية هي: كيف تتخلص من القيود؟ كيف تقوم بعمل أفضل؟ إما (ما يحدث عندما يكون المرشح جيدًا جدًا أو يعرف الحل من التجربة فقط) كيفية جعل الشفرة تعمل بموجب هذه القيود الإضافية أو غيرها.
هذا يعطي حزمة من الإشارات على الفور - ولكن كم يعرف المرشح كيفية التكيف مع التغييرات في المهمة؟ وكم هو جاهز للتفكير في حلول بديلة للغاية؟ كما أن المناقشة نفسها ذات أهمية أيضًا - يتم طرح السؤال دائمًا علنًا قدر الإمكان ، لذلك هناك عشرات الطرق لفهمه. هل يتم توضيح بيئة الأعمال ، أم أنها مجرد قيود فنية؟ هل تؤخذ القيود التقنية في الاعتبار؟ على سبيل المثال ، عدة مرات قلت أن "1e12 كائنات متوقعة" ، والمرشح لا يقيم كم هذا. وهذا يكاد يكون تيرابايت ، إذا بايت لكل كائن. أو ~ 116.5 غيغابايت إذا بت. أو 4.3 تيرابايت إذا كان int32. حسنًا ، فهمت النقطة. لا ، تذكر هذا ليس ضروريًا - ليس في الامتحان ، لم يأخذ أحد الآلة الحاسبة. الهاتف ، نعم ، حتى في البحث. وبالمناسبة ، يمكنك أن تسأل.
وهذه هي الطريقة التي سأثير بها الصعوبة أو ببساطة تعديل المهمة لكل وقت المقابلة المتاحة. نعم ، من الممكن أن يكون هذا هو الخبز العامل الرئيسي للمقابل ، ويأكل مثل هذه المهام على الإفطار والغداء والعشاء. حسنًا ، في هذه الحالة
، تحتوي
بطاقة السفر الخاصة بي على سؤال مختلف تمامًا. على سبيل المثال ، بدلاً من الرسوم البيانية - للبرمجة الديناميكية. أو على القوائم. أو بشكل عام السؤال هو ، حيث يتطلب الحل الأمثل حفنة. الشيء الرئيسي هو محيط مختلف ، مهمة مختلفة.
أهم شيء هنا هو إعطاء مهمة بسيطة للغاية في نفس الوقت حتى يتمكن المرشح من حل وإظهار المهارات الأساسية ، ورفع الصعوبة إلى مستوى لا يعرف فيه المرشح الإجابة حتى يتمكن من إظهار كيف يفكر. إذا استطاع في الوقت نفسه العثور على حل لمشكلة أكثر تعقيدًا - فلا بأس ، ولكن إذا كان المرشح قادرًا على حل كل شيء على الإطلاق ، فهذا هو ثقب من الشخص الذي تمت مقابلته ولم يعد سؤالًا أكثر تعقيدًا.
تريد تفاصيل؟ فيما يلي أحد الأسئلة التي لن يتم طرحها عليك ببساطة لأنه يعتبر بالفعل "مسربًا" - أي أنه من المحتمل ألا يفكر المرشح به ، ولكن تذكر. كما كتبت أعلاه ، من المهم كيف يفكر المرشح ، وليس كيف يتذكر ... لذا ، فإن السؤال هو:
تنفيذ ذاكرة التخزين المؤقت LRU .
بشكل عام ، المهمة جميلة ، لأنها تسمح بأشكال عديدة من المهمة وأشكال عديدة من التفسير. على سبيل المثال ، يمكنك طرح سؤال مباشرة في الجبهة "تنفيذ ذاكرة التخزين المؤقت LRU". يمكن صياغته على أنه "تخيل أن خدمتنا لمعالجة الطلب تتحقق من وجود كائن خارجي. كيف يمكنني تسريع المعالجة؟ " - توقع جملة واضحة جدًا "فلنقم فقط بتخزين النتيجة". ماذا يمكن أن يسأل "لكن كيف؟". و "ماذا لو أردنا التحكم في الحد الأقصى للذاكرة التي تستهلكها ذاكرة التخزين المؤقت هذه؟". يترك السؤال مفتوحًا - وأي واجهة برمجة تطبيقات يجب أن توفر ذاكرة التخزين المؤقت هذه. من أجل البساطة ، يمكنك دائمًا تقليلها لتعيين (مفتاح ، قيمة) + الحصول على (مفتاح) ؛ ولكن يمكنك إضافة TTL. ممكن مع get (key، fetch_func). بشكل عام ، يمكن أن يعطي تقييم API المقترح أيضًا إشارة إضافية حول تجربة المرشح وأسلوب تفكيره.
سيعطي الحل التافه على hashmap O (1) عند get () + O (N) في المجموعة () (هذا صحيح ، أليس كذلك؟). إذا تم ربط جميع العناصر بشكل إضافي (من خلال تنظيم ارتباط مزدوج) ، فسيكون من الممكن الحصول على O (1) لكلتا العمليتين. إذا كنت بحاجة إلى إضافة TTL ... أعتقد أن الفكرة واضحة. إذا كنت تريد ، دعنا نناقش في التعليقات: تخيل أنك سئل هذا السؤال ، كيف ستفكر؟ ما الحل الذي تقترحه؟ ..
وبأي لغة برمجة؟ نعم ، ما الذي يعجبك ، فيه أكثر. C ++؟ رائع. اذهب؟ عظيم بيثون مرحبًا بك دائمًا. بيرل؟ نادر الآن ، ولكن نعم أيضًا. وجاوا نعم. وجافا سكريبت (على الرغم من أنه أكثر تعقيدًا بالنظر إلى ذاكرة الحل).
لذا ، بعد حوالي 40 دقيقة من بداية المقابلة ، سيتم قطع رحلة الفكر المرشحة ، ولكن هذا لا يعني أن كل شيء سيء. هذا فقط يعني أن الوقت قد حان.
بعد المقابلة نفسها ، يكتب المحاور تقريرًا ، غالبًا مع نسخة تفصيلية لما حدث في المقابلة. سيتم استخدام هذا التقرير لصنع القرار. أنا شخصيا أحجز حوالي ساعة بعد المقابلة مباشرة من أجل تسجيل الدقائق الكاملة للمحادثة بذاكرة جديدة ، والبعض يكتب ببساطة على ورقة نسخة شبه كاملة خلال المقابلة.
بعد إجراء مقابلة هاتفية ، بناءً على تقارير جميع من أجريت معهم المقابلات ، يتم اتخاذ قرار بشأن الدعوة إلى المواجهة. سيكون يوم كامل من المقابلات في أحد المكاتب: عدة مقابلات في الصباح ، ثم تناول الغداء (والتعرف على غرفة الطعام في المكتب :) وبعد ذلك أكثر من ذلك. عند إجراء مقابلة في SRE ، ستكون هذه مقابلات مختلفة ،
وستخبرك قائمة المجندين بها ، بما في ذلك الترميز و
NALSD : تصميم نظام واسع النطاق غير تجريدي. المفتاح هو غير مجردة (أي ليس الكلمات العامة "نحن بحاجة إلى قاعدة بيانات") و "على نطاق واسع" (أي ، إذا كانت هناك حاجة إلى قاعدة بيانات ، ثم تحت البيتابايت ، على سبيل المثال). يمكنك
قراءة المزيد هنا والمزيد في مكان العثور على المواد في البحث. لقد جندت عدة روابط للتدريب. هذه نقطة مهمة جدًا في المقابلة - ببساطة لأنه عند العمل لدى شركة Google ، عليك التفكير والنظر في الأنظمة من هذه المنظورات.
بشكل عام ، لا تختلف المقابلات الشخصية كثيرًا عن المقابلات الهاتفية - قضايا مماثلة وعملية مماثلة. في الوقت نفسه ، نحاول ترتيب الأسئلة حتى لا نطرح نفس السؤال مرتين.
ماذا يمكنني أن أضيف عن عملية المقابلة؟ إستمتع! لا ، بجدية ، استرخ واستمتع. مقابلة هاتفية؟ مجرد محادثة مع محاور مثير للاهتمام. معلومات جديدة مضمونة وخبرة جديدة. المقابلات الشخصية؟ أكثر متعة! أنت في رحلة عمل على حساب صاحب العمل المستقبلي :) قم بجولة حول المدينة ، والتعرف على الأصدقاء. ويكفل يوم كامل من الترفيه والمحادثات المثيرة للاهتمام.
وبعد هذا اليوم الممتع ، يكتب كل شخص أجرى مقابلة معك تقريرًا ، مع البروتوكول الكامل للمحادثة. يتم جمع جميع بيانات المقابلة
ومراجعتها من قبل لجنة مستقلة . هذا مهم: لا أحد من الذين يعرفونك شخصيا يشارك في القرار. ولا أحد ممن أجريت معهم مقابلات متورطون بشكل مباشر. كل هذا يهدف إلى القضاء على التحيز في القرار. التقييم هو فقط للامتثال للمعيار المطلوب لمعيار التوظيف. إذا كنت غير محظوظًا وفشلت ، يمكنك دائمًا المحاولة مرة أخرى خلال عام. لهذا العام ، يمكنك تنظيم معرفتك وسد الثغرات المكتشفة.
هل لديك أي أسئلة؟ اسأل في التعليقات.
هل هناك مصلحة في تجربة المقابلة قبل المقابلة؟ هناك خدمات للمقابلة الوهمية (على سبيل المثال ،
مرة ومرتين ، لكنها ليست من الشركة نفسها ، لذلك لا توجد ضمانات) ؛ في بعض الأحيان تدير Google حملات مماثلة.
ونعم ، لا تتردد
في تقديم نفسك. إذا كنت تؤمن بسحر "تقديم أحد الموظفين" - اكتب إليّ ، فسأقدم طلبك. ولكام!