دليل مقابلة مهندس DevOps النهائي - ما الذي يجب طرحه وما يجب التحضير له





لقد بدأت التواصل في المدرسة وعملت مقابل المال لأكثر من 16 عامًا. حصلت على الكثير من الوظائف ، في الشركات الكبيرة والصغيرة ، ثم فتحت عملي الخاص وأوظف الناس بنفسي بانتظام. على مر السنين والخبرة ، قمت أنا والعديد من الآخرين بتطوير حدس المقابلة.



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



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



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




أولاً ، أستعرض جميع السير الذاتية بسرعة



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



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



في التحديد السريع للسير الذاتية ، تساعد القاعدة: كلما زادت التقنيات التي ألتقي بها ، كان ذلك أفضل. إذا كانت السيرة الذاتية للشخص تقول MySQL و Linux و Postgres و Apache وما إلى ذلك ، فهناك احتمالات. سمع الشخص على الأقل عن التكنولوجيا ، ومن يدري ، ربما عمل معهم بنفسه. لكن لنكن صادقين - يمكنك كتابة أي شيء في سيرتك الذاتية.



في المقابلة ، أول شيء أفعله هو التحقق من قاعدة البيانات



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



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



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




على سبيل المثال ، إليك لغز CCNA قياسي لفهم كيفية عمل الشبكات



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



ماذا يحدث في هذه اللحظة؟
: «, , , . , , MAC- , . , , . , ».






ثم أسأل عبر جميع طبقات نموذج OSI



هل سمع أحد عن بروتوكول Spanning Tree؟ حول بروتوكول الجذر ، حول طبقة IP؟ حسنًا ، كيف يعمل كل هذا؟ هل يفهم كيف يحدث التوجيه؟ حسنًا ، بكميات كبيرة: جداول التوجيه ، بروتوكول التوجيه الديناميكي ، طبقة النقل TCP. وهلم جرا وهكذا دواليك.



أريد أن أسمع الفرق بين TCP و UDP. سيجيبني أحد المتخصصين الجيدين عن سبب استخدام الأنظمة الهامة (على سبيل المثال ، نظام اسم المجال) للبروتوكول دون ضمان تسليم الرسائل (UDP).



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



أطرح أسئلة حول DNS



ما هي أنواع التسجيلات؟ هل يعرف المحاور الخاص بي ما هو سجل MX ، وكيف يعمل spf ، أو كيف يعمل DKIM.



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



يتم استخدام بروتوكول HTTP تمامًا في كل مكان الآن ، وأنا أسأل عنه



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



ثم قمت بتحويل انتباهي بسلاسة إلى بروتوكول TLS



كيف يعمل SSL \ TLS؟ يحتاج المهندس إلى فهم هذا على الأقل على المستوى الأساسي - هناك مرجع مصدق أساسي ، وقد وقع الشهادة ، ويتم استخدام الشهادة في مكان ما.



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



أجب تحت المفسد
, TLS-, HTTP-, - , HTTP-, . Nginx , , . TLS-, , TLS-. . , IP- SSL.



ننتقل إلى Linux و BASH



عليك أن تعرف كل شيء عن يونكس ، كل الأنظمة الشبيهة بيونكس. يجب أن تكون قادرًا على العمل مع Shell و Bash ، ومعرفة الأوامر الأساسية. ls ، mkdir ، إلخ.



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



في نظام التشغيل Linux ، سأطلب منك كيفية استبدال الأسطر في ملف بخطوط أخرى. أو كيفية تحليل بعض access.log في Nginx باستخدام BASH. لكي يتحدث الشخص عن awk ، عن القط ، عن النوع ، عن كل ما يساعد على العمل السريع.



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



ثم تحتاج إلى معرفة كيف تسير الأمور مع الافتراضية.



الافتراضية التقليدية ، الافتراضية من خلال برنامج Hypervisor. إذا بدأ المرشح في الحديث عن التماثل ، فهذا يعني أنه يعرف شيئًا ما.



سؤالي الرئيسي هو: ما الفرق بين المحاكاة الافتراضية للحاوية والمحاكاة الافتراضية لبرنامج Hypervisor العادي؟ من الجيد أن يقارن الشخص ما هو أفضل ، وما هو أسوأ ، وما هو مناسب للاستخدام.



الانتقال إلى الحاويات



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



السؤال عن نشر CI / CD



أنا مهتم بقائمة ضخمة من الأشياء: كيف يقوم بإعداد النشر التلقائي ، وكيف يقوم بإعداد التكامل المستمر؟ كيف يتم تجميع تطبيقاته ، هل يستخدم أنظمة تحليل الكود (PVS-Studio ، SonarQube). كيف يكتب الاختبارات ، أو كيف يدمج الاختبارات التي كتبها المطورون.



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



أخبرني كيف ينتشر شخص ما وسأفهم كل شيء. يمكن نشره باستخدام Helm في Kubernetes أو Ansible أو البرامج النصية أو أي شيء آخر مكتوب ذاتيًا.



حول نظام إدارة التكوين



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



تعرف على القدرة على كتابة التعليمات البرمجية



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



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



أسئلة المقابلة النهائية حول تخزين قاعدة البيانات



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






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



مجرد...
: fsync, , . Linux , , . , , . , . . . , .





لنلخص -



  • الشبكات
  • مستوى API
  • طبقة النقل TCP \ UDP
  • بروتوكولات DNS و HTTP
  • لينكس
  • حاوية و Hypervisor الافتراضية
  • CI / CD
  • نظام إدارة التكوين
  • حاويات
  • قاعدة البيانات


كل هذا يسمح لك بعمل صورة كاملة لشخص ما.



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



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



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



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



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



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



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



All Articles