برنامه نویسان، به مصاحبه بروید

برنامه نویسان، به مصاحبه بروید
عکس از ویدیوی کانال گرفته شده استآمیتیست های مبارز»

من حدود 10 سال به عنوان برنامه نویس سیستم برای لینوکس کار کردم. اینها ماژول های هسته (فضای هسته)، دیمون های مختلف و کار با سخت افزار از فضای کاربر (فضای کاربر)، بوت لودرهای مختلف (u-boot و غیره)، سیستم عامل کنترلر و موارد دیگر هستند. حتی گاهی اوقات این اتفاق می افتاد که رابط وب را قطع کند. اما بیشتر اوقات این اتفاق افتاد که مجبور شدم با یک آهن لحیم کاری بنشینم و با طراحان برد مدار چاپی تعامل داشته باشم. یکی از مشکلات چنین کاری این است که ارزیابی سطح شایستگی شما بسیار دشوار است، زیرا ممکن است یک کار را بسیار عمیق بدانید، اما ممکن است اصلاً کار دیگری را ندانید. تنها راه کافی برای درک اینکه کجا باید رفت و در حال حاضر چه جریان هایی وجود دارد این است که برای مصاحبه بروید.

در این مقاله می‌خواهم تجربه خود را از مصاحبه برای یک شغل خالی به عنوان برنامه‌نویس سیستم لینوکس، ویژگی‌های مصاحبه، شغل و نحوه ارزیابی سطح دانش شخصی خود از طریق برقراری ارتباط با کارفرمای آینده و آنچه که نباید انجام دهید را خلاصه کنم. از آن انتظار داشته باشید

این مقاله شامل یک مسابقه کوچک با جوایز خواهد بود.

ویژگی های این حرفه

یک برنامه نویس سیستمی، در زمینه خاصی که من در آن کار می کردم، یک متخصص کلی است: من باید هم کد می نوشتم و هم سخت افزار را اشکال زدایی می کردم. و اغلب نیاز بود خودتان چیزی را لحیم کنید. گهگاهی پیش می آمد که تنظیمات سخت افزاری من به توسعه دهندگان منتقل می شد. بنابراین، برای کار در این زمینه به دانش نسبتاً خوبی نیاز دارید، هم در زمینه مدارهای دیجیتال و هم در برنامه نویسی. به همین دلیل، مصاحبه برای موقعیت برنامه نویس سیستم اغلب شبیه جستجوی یک متخصص الکترونیک است.

برنامه نویسان، به مصاحبه بروید
یک ایستگاه کاری معمولی برای یک برنامه نویس سیستم.

عکس بالا محل کار معمولی من را هنگام اشکال زدایی درایورها نشان می دهد. تحلیلگر منطق صحت پیام های ارسالی را نشان می دهد، اسیلوسکوپ شکل لبه های سیگنال را نظارت می کند. همچنین، دیباگر jtag در قاب گنجانده نشده است، که زمانی استفاده می شود که ابزارهای اشکال زدایی استاندارد دیگر از عهده آن بر نمی آیند. و باید بتوانید با این همه تجهیزات کار کنید.

اغلب اتفاق می افتد که لحیم کردن مجدد برخی از عناصر و تصحیح خطاهای توپولوژی سریعتر و آسانتر از بردن محصول به نصاب است. و سپس یک ایستگاه لحیم کاری نیز در محل کار شما ساکن می شود.

یکی دیگر از ویژگی های توسعه در سطح درایور و سخت افزار این است که گوگل کمک نمی کند. اغلب شما باید به دنبال اطلاعاتی در مورد مشکل خود بگردید و سه لینک وجود دارد که دو تای آنها سوالات خود شما در برخی از انجمن ها هستند. یا حتی بدتر از آن، وقتی با یک سوال از همان مرد بیچاره روبرو می شوید که آن را 5 سال پیش در لیست پستی هسته پرسیده و هرگز پاسخی دریافت نکرده است. در این کار، علاوه بر خطاهایی در طراحی سخت افزار و نرم افزار، اغلب با خطاهای مستندسازی مواجه می شود - اینها احتمالاً شدیدترین و ناخوشایندترین مشکلات هستند. گاهی اوقات رجیسترها به اشتباه توصیف می شوند یا اصلاً توضیحی برای آنها وجود ندارد. چنین مشکلاتی تنها با وارد کردن علمی اعداد تصادفی در رجیسترهای خاص (نوعی معکوس) قابل حل هستند. اغلب اتفاق می افتد که پردازنده دارای برخی از عملکردها باشد، اما هیچ کس به جز شما این قابلیت را اجرا نکرده است (مخصوصا اگر پردازنده جدید باشد). و این به معنای راه رفتن در زمین با چنگک است که 70 درصد آن برای کودکان است. اما وقتی مستندات وجود داشته باشد، حتی با خطاها، این در حال حاضر پیشرفت است. اغلب اتفاق می افتد که هیچ مدرکی وجود ندارد، و این زمانی است که قدم زدن در میدان های مین زمانی شروع می شود که آهن در حال سوختن است. و بله، من نیز چنین مشکلاتی را با موفقیت حل کردم.

مصاحبه ها

نظر من این است که شما باید حداقل هر شش ماه یک بار برای مصاحبه بروید، حتی اگر شغل خود را دوست دارید و نمی خواهید آن را تغییر دهید. مصاحبه به شما امکان می دهد سطح خود را به عنوان یک متخصص درک کنید. من معتقدم با ارزش ترین مصاحبه ها آنهایی هستند که شکست می خورند. آنها کسانی هستند که به دقت نشان می دهند که کدام گلوگاه در دانش شما باید بهبود یابد.

ویژگی جالب دیگر کیفیت مصاحبه است. این مشاهدات من است و حقیقت ندارد، من اعتراف می کنم که فقط خوش شانس بودم. اگر مصاحبه طبق سناریو پیش برود:

  • از خودتان بگویید؛
  • ما چنین وظایفی داریم؛
  • دوست داری؟

و اگر بعد از این گفتگو از یکدیگر خوشتان بیاید ، سر کار بروید ، به طور معمول ، شرکت و وظایف بسیار دلپذیر و کافی می شوند. اگر یک مصاحبه شبیه گذر از 12 دایره جهنمی است: اولین مصاحبه با منابع انسانی، سپس مصاحبه با گروهی از برنامه نویسان، سپس کارگردان، تکالیف بیشتر و غیره، پس به طور معمول اینها سازمان های شکست خورده ای بودند که من در آنها کار نکردم. برای مدت بسیار طولانی باز هم، این یک مشاهده شخصی است، اما به عنوان یک قاعده، بوروکراسی بیش از حد و فرآیند استخدام طولانی مدت نشان می دهد که همان فرآیندهای دقیق در شرکت انجام می شود. تصمیمات به کندی و بی نتیجه گرفته می شود. موقعیت‌های مخالف هم وجود داشت، زمانی که حلقه‌های جهنم مصاحبه وجود داشت، و شرکت عالی شد، و زمانی که بعد از یک سیلی بر مچ دست، شرکت معلوم شد یک باتلاق است، اما این موارد نادر هستند.

اگر فکر می کنید که این سناریو: ملاقات کردید، در مورد خودتان صحبت کردید و استخدام شدید، فقط در شرکت های کوچک وجود دارد، پس خیر. من این را در شرکت های بسیار بزرگی دیده ام که بیش از صدها نفر را استخدام می کنند و در بازارهای جهانی نمایندگی دارند. این یک مکانیسم عادی است، به خصوص اگر سابقه کار غنی داشته باشید و این فرصت را داشته باشید که با کارفرمایان قبلی خود تماس بگیرید و در مورد شما بپرسید.

برای من، زمانی که یک شرکت می‌خواهد نمونه‌هایی از پروژه‌ها و کدهای خود را نشان دهد، نشانگر بسیار خوبی است. سطح آموزش متقاضی بلافاصله نشان داده می شود. و در مورد من، از نظر انتخاب نامزدها، این روش مؤثرترین روش انتخاب نسبت به مصاحبه نمایشی است. در واقع، شما می توانید در یک مصاحبه از هیجان شکست بخورید، یا برعکس، از آدرنالین خارج شوید. اما در کار واقعی، شما نمی توانید با وظایف واقعی کنار بیایید. و همچنین زمانی که خودم با مردم مصاحبه کردم با این موضوع مواجه شدم. یک متخصص می آید، خودش را عالی نشان می دهد، من او را دوست داشتم، او ما را دوست داشت. و من یک ماه با ساده ترین مشکل دست و پنجه نرم کردم و در نتیجه یک برنامه نویس دیگر در عرض چند روز آن را حل کرد. مجبور شدم از اون برنامه نویس جدا بشم.

من به ویژه به وظایف برنامه نویسی در مصاحبه ها اهمیت می دهم. و آنهایی که باید درست در طول جلسه، تحت استرس و تکالیف حل شوند. اولین نشان می دهد که چقدر برای حل سریع و دقیق مشکلات در یک موقعیت استرس زا و اضطراری آماده هستید. دومی سطح شایستگی و توانایی شما در جستجوی اطلاعات و حل مشکلات فعلی را نشان می دهد.

جالب ترین کارهایی که داشتم در مجموعه دفاعی کشورمان بود. در روند کار، من مجبور شدم مشکلات ساده و خارق العاده ای را حل کنم که برنامه نویسان تجاری هرگز رویای آنها را هم نمی دیدند. سوپرکامپیوترها، طراحی روترها، سیستم های مبارزه گره های مختلف - این فوق العاده هیجان انگیز است. وقتی در طول رژه مجموعه ای را می بینید که کد شما را ذخیره می کند، واقعاً خوب است. به اندازه کافی عجیب، مصاحبه با چنین شرکت هایی معمولاً بسیار ساده است، به معنای واقعی کلمه، مانند آن، پذیرفته شده است (احتمالاً ویژگی های نظامی، که دوست ندارند زیاد صحبت کنند)، روی هم قرار می گیرند. چالش هایی که من در آنجا با آن روبرو شدم واقعاً جالب و چالش برانگیز بود. با تجربه، مشخص شد که آنها برای یادگیری برنامه نویس سیستم با کیفیت بالا خوب هستند. معایب نیز وجود دارد و این حتی دستمزد کم نیست. در حال حاضر حقوق در مجموعه دفاعی کاملا مناسب و با پاداش و مزایا است. به عنوان یک قاعده، بوروکراسی زیادی وجود دارد، ساعات کاری طولانی، کارهای عجله بی پایان، و کار تحت استرس شدید. در موارد خاصی نمی توان پنهان کاری را رد کرد که مشکلات خاصی را برای سفر به خارج از کشور ایجاد می کند. به علاوه، البته، ظلم روسا، و این، افسوس، نیز اتفاق می افتد. اگرچه تجربه من از کار با نماینده مشتری فوق العاده خوشایند است. این برداشت جمعی از سه موسسه تحقیقاتی مختلف و شرکت های مرتبط با دستورات دفاعی دولتی است.

وظایف مصاحبه

برای جلوگیری از سوء تفاهم و برای افشا نشدن شرکت هایی که با آنها مصاحبه کردم، سرنوشت را وسوسه نمی کنم و جزئیات آنها را بیان می کنم. اما من برای هر مصاحبه، برای زمانی که مردم برای من صرف کردند، به خاطر فرصتی که از بیرون به خودم نگاه کردم سپاسگزارم. فقط می توانم بگویم که وظایف مربوط به شرکت های بزرگ بین المللی بود که در کشورهای مختلف نمایندگی داشتند.

من جالب ترین چیز را به شما می گویم: چه وظایفی در طول مصاحبه داده می شود. به طور کلی، رایج ترین سوالات برای جای خالی برنامه نویس سیستم و برنامه نویس میکروکنترلر، عملیات بیت است، در تمام تغییرات ممکن. بنابراین، خود را در این زمینه به بهترین شکل آماده کنید.

دومین موضوع قطبی کننده، تابلوهای راهنما هستند، این موضوع واقعاً باید از دندان شما خارج شود. تا نصف شب بیدارت کنند و همه چیز را بگویی و نشان بدهی.

من سؤالاتی را از چندین مصاحبه در ذهنم دزدیدم و آنها را در اینجا ارائه خواهم کرد، زیرا به نظرم بسیار جالب هستند. من عمداً به این سؤالات پاسخ نمی دهم تا خوانندگان بتوانند خودشان در نظرات به این سؤالات پاسخ دهند و هنگام گذراندن یک مصاحبه واقعی کمی پودر داشته باشند.

سوالات شماره 1

I. دانش SI. ورودی های زیر به چه معناست:

const char * str;

char const * str;

const * char str;

char * const str;

const char const * str;

آیا همه ورودی ها صحیح هستند؟

II. چرا این برنامه یک خطای بخش بندی ایجاد می کند؟

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

III. باهوش بودن.

یک چوب به طول یک متر وجود دارد. ده مورچه به طور تصادفی روی او می افتند و در جهات مختلف می خزند. سرعت حرکت یک مورچه 1 متر بر ثانیه است. اگر مورچه ای با مورچه دیگری برخورد کند، به اطراف می چرخد ​​و در جهت مخالف می خزد. حداکثر زمانی که باید منتظر بمانید تا همه مورچه ها از چوب بیفتند چقدر است؟

مصاحبه بعدی برای من یک شکست بود و آن را در تمرین برنامه نویسی خود مفیدترین مصاحبه می دانم. این نشان دهنده عمق بی کفایتی من بود. قبل از این مصاحبه با هر یک از این سؤالات آشنا بودم و مدام در تمرینم مطرح می شد، اما به نوعی اهمیت چندانی برای آنها قائل نبودم و بر همین اساس به خوبی آنها را درک نمی کردم. بنابراین من در این امتحان با شرمندگی مردود شدم. و من بسیار سپاسگزارم که چنین شکستی رخ داد؛ این هشیارترین تأثیر را روی من گذاشت. شما فکر می کنید که یک متخصص باحال هستید، طراحی مدار، رابط ها و کار با هسته را می دانید. و سپس شما سوالات واقعی دارید و شناور می شوید. پس بیایید ببینیم.

سوالات مصاحبه شماره 2

مشکلات سخت افزاری

  • نحوه چیدمان تماس های سیستم لینوکس به زبان اسمبلی در پردازنده ARM در x86. تفاوت در چیست؟
  • چه ابزارهای همگام سازی وجود دارد؟ کدام ابزارهای همگام سازی را می توان در یک زمینه وقفه استفاده کرد، کدام نمی تواند و چرا؟
  • تفاوت بین i2c bus و spi bus چیست؟
  • چرا ترمیناتورها در اتوبوس i2c وجود دارد و ارزش آنها چیست؟
  • آیا رابط RS-232 فقط روی دو سیم می تواند کار کند: RX و TX؟ در اینجا من پاسخ را می دهم: معلوم است که در 9600 بد است، اما می تواند!!!
  • و حالا سوال دوم: چرا؟
  • بهترین راه برای چیدمان خطوط سیگنال و برق در بردهای چند لایه چیست و چرا؟ برق داخل لایه ها یا خطوط سیگنال داخل لایه ها؟ (سوال به طور کلی صرفاً در مورد طراحی مدار است).
  • چرا خطوط دیفرانسیل دارای مسیرهایی هستند که همه جا با هم هستند؟
  • اتوبوس RS-485. معمولاً در چنین خطی ترمیناتور وجود دارد. با این حال، ما یک مدار ستاره داریم، با تعداد متغیری از ماژول های پلاگین. چه ابزاری برای جلوگیری از برخورد و تداخل باید استفاده شود؟
  • درختان قرمز و دوتایی چیست؟
  • چگونه با cmake کار کنیم؟
  • سوالاتی در مورد ساخت یوکتو لینوکس.

اهداف این مصاحبه:

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. ترجمه متن فنی از روسی به انگلیسی.

یک مصاحبه موفق، تضمینی برای کار موفق نیست

این فصل احتمالاً حتی برای برنامه نویسان نیست (البته برای آنها نیز) بلکه بیشتر برای HR است. مناسب ترین شرکت ها به دقت به نتایج مصاحبه ها نگاه نمی کنند. اشتباه کردن طبیعی است؛ اغلب آنها به این می پردازند که چگونه یک فرد می داند چگونه مشکلات را حل کند و استدلال کند.

یکی از مشکلات کلیدی این است که یک نامزد با موفقیت مشکلات را در طول مصاحبه حل می کند، خود را یک متخصص عالی نشان می دهد، اما در اولین کار واقعی شکست می خورد. دروغ نمی گویم، این اتفاق برای من هم افتاده است. من با موفقیت تمام حلقه های جهنم را طی کردم ، تمام کارهای آزمایشی را حل کردم ، اما در شرایط واقعی به دلیل بی تجربگی ساده کار بسیار سخت بود. سوار شدن سخت ترین کار نیست. سخت ترین چیز ماندن در هیئت مدیره این شرکت است.

بنابراین من به شرکت های بیشتری اعتماد دارم که مصاحبه های ساده ای با نامزد انجام می دهند و می گویند: بعد از یک ماه اول کار مشخص می شود که آیا شما برای ما مناسب هستید یا خیر. این مناسب ترین رویکرد است، بله، شاید کمی گران باشد، اما بلافاصله مشخص می شود که چه کسی کیست.

گزینه دیگری برای مصاحبه وجود دارد: وقتی آن را با موفقیت پشت سر می گذارید، اما بر اساس نتایج مصاحبه متوجه می شوید که کارفرما کاملاً ناکافی است. اگر به من پیشنهاد شود که به عنوان یک کارآفرین انفرادی کار کنم، بلافاصله از کار امتناع می کنم و درآمدهای زیادی را وعده می دهم. این نوعی فرار مالیاتی برای یک سازمان فعال است و چرا باید مشکلات کارفرما باعث نگرانی من به عنوان یک برنامه نویس شود؟ گزینه دیگر سازمان های دولتی مختلف است. من مصاحبه ای داشتم که در نتیجه آن حقوق خوبی به من پیشنهاد شد، اما گفتند برنامه نویس قبلی استعفا داد، مریض شد، فوت کرد، به دلیل مشغله کاری زیاد هوس کرد و روز کاری شما از ساعت 8 صبح شروع می شود. . از چنین جایی هم دوید تا پاشنه هایش برق بزند. بله، HR، لطفاً توجه داشته باشید که برنامه نویسان آماده هستند تا حتی از خوشمزه ترین کارها را رد کنند، اگر روز کاری باید از صبح زود شروع شود.

در پایان یک ویدیوی عالی از انتخاب برنامه نویس می دهم که اسکرین شات آن در ابتدای این مقاله آورده شده است. من هم بیش از یک بار چنین مصاحبه ای داشتم. اگر در مرحله سؤالات استبداد می بینید، پس به خود احترام بگذارید، برخیزید، وسایل خود را بردارید و بروید - این طبیعی است. اگر منابع انسانی و مدیر در طول مصاحبه خود را با هزینه شما ابراز می کنند، این نشان می دهد که شرکت سمی است و شما نباید در آنجا کار کنید مگر اینکه رئیس های ناکافی را دوست داشته باشید.

یافته ها

برنامه نویسان، به مصاحبه بروید! و همیشه سعی کن ترفیع بگیری فرض کنید اگر N پول دریافت کردید، برای مصاحبه با حداقل N*1,2 یا بهتر N*1,5 بروید. حتی اگر بلافاصله این جای خالی را نگیرید، متوجه خواهید شد که برای این سطح دستمزد چه چیزی لازم است.
مشاهدات من نشان داده است که دانش خوب زبان انگلیسی، تجربه کافی در صنعت و اعتماد به نفس تصمیم می گیرند. دومی کیفیت اصلی است، مانند همه جا در زندگی. به عنوان یک قاعده، یک نامزد مطمئن تر می تواند در مصاحبه، حتی با اشتباهات بیشتر، بهتر از یک متقاضی عالی، اما خجالتی تر و فعال تر عمل کند. در مصاحبه های خود موفق باشید!

مسابقه P/S

اگر نمونه های جالبی از مشکلاتی دارید که منابع انسانی شما را با آن بار کرده است، در نظرات خوش آمدید. ما یک مسابقه کوچک آماده کرده ایم - شرایط ساده است: شما غیرمعمول ترین وظیفه ای را که در طول مصاحبه انجام داده اید می نویسید، خوانندگان آن را ارزیابی می کنند (به علاوه)، و پس از یک هفته نتایج را جمع بندی می کنیم و به برنده با چیزهای سرگرم کننده پاداش می دهیم.

برنامه نویسان، به مصاحبه بروید

برنامه نویسان، به مصاحبه بروید

منبع: www.habr.com

اضافه کردن نظر