المبرمجين ، اذهب إلى المقابلات

المبرمجين ، اذهب إلى المقابلات
الصورة مأخوذة من فيديو من القناة"الجمشت المقاتل»

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

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

ستتضمن المقالة مسابقة صغيرة بجوائز.

ميزات المهنة

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

المبرمجين ، اذهب إلى المقابلات
محطة عمل نموذجية لمبرمج الأنظمة.

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

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

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

مقابلات

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

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

  • أخبرنا عن نفسك؛
  • لدينا مثل هذه المهام؛
  • تحب؟

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

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

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

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

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

مهام المقابلة

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

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

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

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

الأسئلة رقم 1

I. معرفة SI. ماذا تعني الإدخالات التالية:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

هل جميع الإدخالات صحيحة؟

ثانيا. لماذا سيلقي هذا البرنامج خطأ تجزئة؟

int main ()
{
       fprintf(0,"hellon");
       fork();
       return(0);
}

ثالثا. لتصبح ذكيا.

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

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

أسئلة المقابلة رقم 2

مشاكل الأجهزة.

  • كيف يتم ترتيب مكالمات نظام Linux بلغة التجميع على معالج ARM على x86. ماهو الفرق؟
  • ما هي أدوات المزامنة الموجودة؟ ما هي أدوات المزامنة التي يمكن استخدامها ضمن سياق المقاطعة، وأيها لا يمكن استخدامها، ولماذا؟
  • ما هو الفرق بين حافلة i2c وحافلة spi؟
  • لماذا توجد أجهزة إنهاء في الحافلة i2c وما قيمتها؟
  • هل يمكن لواجهة RS-232 أن تعمل فقط على سلكين: RX وTX؟ وهنا سأعطي الجواب: اتضح أن الأمر سيء عند 9600، لكن يمكن!!!
  • والآن السؤال الثاني: لماذا؟
  • ما هي أفضل طريقة لترتيب خطوط الإشارة والطاقة في اللوحات متعددة الطبقات ولماذا؟ الطاقة داخل الطبقات أم خطوط الإشارة داخل الطبقات؟ (السؤال بشكل عام يتعلق بتصميم الدوائر فقط).
  • لماذا تحتوي الخطوط التفاضلية على مسارات تسير معًا في كل مكان؟
  • حافلة RS-485. عادة ما تكون هناك أجهزة إنهاء على مثل هذا الخط. ومع ذلك، لدينا دائرة نجمية، مع عدد متغير من الوحدات الإضافية. ما هي وسائل تجنب الاصطدامات والتداخلات التي ينبغي استخدامها؟
  • ما هي الأشجار الحمراء والثنائية؟
  • كيفية العمل مع cmake؟
  • أسئلة حول بناء yocto Linux.

أهداف هذه المقابلة:

1. اكتب دالة تنقلب إلى uint32_t كل البتات. (يحظى العمل باستخدام البتات بشعبية كبيرة في المقابلات، وأنا أوصي به)
2.

int32_t a = -200;
uint32_t b = 200;
return *(uint32_t) * (&a)) > b;

ماذا ستعيد هذه الوظيفة؟ (الحل على الورق، بدون كمبيوتر)

3. وظيفة لحساب الوسط الحسابي لعددين int32_t.

4. ما هي طرق الإخراج في البرامج، بما في ذلك. في سيل من الأخطاء

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

أسئلة المقابلة رقم 3

  1. تم تقديم مثال على كود اجتياز الشجرة؛ من الضروري معرفة ما يتم فعله في هذا الكود والإشارة إلى الأخطاء.
  2. اكتب مثالاً على الأداة المساعدة ls. مع الخيار الأبسط "-l".
  3. أعط مثالاً لكيفية إجراء الارتباط الثابت والديناميكي. ماهو الفرق؟
  4. كيف يعمل RS-232؟ ما هو الفرق بين RS-485 وRS-232؟ ما الفرق بين RS-232 وRS-485 من وجهة نظر المبرمج؟
  5. كيف يعمل USB (من وجهة نظر المبرمج)؟
  6. ترجمة النص الفني من الروسية إلى الإنجليزية.

المقابلة الناجحة ليست ضمانة للعمل الناجح

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

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

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

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

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

النتائج

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

مسابقة P/S

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

المبرمجين ، اذهب إلى المقابلات

المبرمجين ، اذهب إلى المقابلات

المصدر: www.habr.com

إضافة تعليق