تجربیات من از مصاحبه برنامه نویسی جهت استخدام

این نوشته صرفا یک تجربه شخصی می باشد.در واقع تا حالا جایی برای مصاحبه نرفته بودم طی این سالها یا برای خودم کار کردم یا در هر شرکت و پروژه ای که مشغول شدم با توجه به شناختی که قبلا از من داشتن مستقیم رفتم سرکار.بعد از پایان کارم در پروژه اخیری که مشغول بودم تصمیم گرفتم تجربه ای جدید کسب کنم، از طریق سایت های کاریابی برای حدود 10 شرکت رزومه فرستادم.در روزمه چند عنوان مختلف با میزان سطحی که در هر زمینه دارم نوشتم:Yii Framework پیشرفتهReact Native متوسط+React Js متوسط +Unity 2D متوسط +Android (java) متوسط +Django Framework مبتدی+همینجا ذکر کنم تمرکز اصلی من Yii هست.به چند دلیل نگران بودم:1- شخصا معتقدم که آدمی که زیاد بلده در واقع خیلی بلد نیست، نوشتن همه موارد بالا بار منفی بیشتری دارد.2-در React رزومه قابل قبولی نداشتم، هرچی که یاد گرفتم و انجام دادم به صورت تفریحی بود.3- برای اندروید با جاوا زیاد برنامه نوشتم و رزومه نسبتا قابل قبولی بود، اما بیشتر از 1 سال بود که کار جدیدی انجام نداده بود و بیشتر از طریق اخبار و مقالات موارد تکنیکی رو دنبال می کردم.4- عاشق بازی سازی هستم و به صورت پاره وقت روی یک بازی برای خودم کار می کنم، تجربه کار سنگین باهاش نداشتم.5- علاقه خاصی به python دارم و شروعش با Django بود و اصلا نمی دونم چرا Django رو نوشتم؟؟؟6- و مهم ترین دلیل نگرانیم: همه برنامه نویس های حتما این تجربه رو دارند که متاسفانه هرچی یاد بگیری، بازم چیزی برای یادگیری وجود داره و همیشه به این فکر میکنی که هیچی یاد نداری و یک چیزی کمه!!!5شرکت باهام تماس گرفتن و4 تا از اونها رفتم برای مصاحبه.مصاحبه ها معمولاً به 4 بخش مختلف تقسیم میشه:بخش 1 : به نظرم بدترین بخش این قسمت هست، یک فرم کاغذی میدن دستت که تمام اونایی که ایمیل کردی رو دوباره بنویسی: نام، نام خانوادگی، چی بلدی، کجا کار کردی، مامانت کیه بابات کیه، چند تا بچه هستین تو خانواده، چرا ازدواج نکردی و از اینجور چیزای مزخرف!!!بخش 2: سوالای روانشناسی و شخصیتی ازت می پرسند: چطور آدمی هستی، دستور پذیری، نقد پذیری، خوش برخوردی، اگر با مشکلی در کار مواجه بشی چه کاری می کنی، چقدر آدم پیگیری هستی، وقت شناسی.در یکی از شرکت های بیشتر از 500 سوال روانشناسی به صورت 4گزینه ای جواب دادم و خوشبتختانه این سوالات آنلاین بود که باید طی مدت حداکثر 3 ساعت جواب می دادم.برای برنامه نویس ها سوالات بخش 2، بشدت براشون اهمیت داره، متاسفانه اینطوری جا افتاده برنامه نویس ها آدم های بدقولی هستند، دیر میان و زود میرن، ممکنه وسط کار ول کنن و دیگه با شرکت همکاری نکنندبخش 3: بخش شیرین و دلنشین فنی : این بخش به 3 قسمت تقسیم میشه:1- در مورد کارایی که انجام دادی می پرسن، چالش ها و مشکلاتی که در کار داشتی و اینکه چطوری مشکل رو حل کردی، تجربیات کار تیمی.2- سوالات عمومی برنامه نویسی پرسیده میشه، سوالات تخصصی در زمینه ای که روزمه دادی، سوالات مربوط به Git و هرچی که ذهنشون برسه!همونطور که گفتم به دلیل اینکه تو رزومم موارد مختلفی نوشتم سطح سوالات خیلی نوسان داشت، چیزهای که یادم میاد از من پرسیدند:تفاوت بین public، private و protected در کلاس ها چیست؟چرا از static method استفاده می کنیم؟منظور از redux چیست؟جهت پایداری بیشتر برنامه در اندروید چه کارهایی می تونیم انجام بدیم؟با Design patterns آشنا هستی؟ اگر بله، از چه دیزاین هایی استفاده کردی کردی؟منظور از observer چیه؟منظور از devops چیست؟منظور از agile چیست؟چقدر با اسکرام آشنای هستی؟ توضیح بده؟منظور از sprint چیست؟منظور از trunk based development چیست؟درباره معماری اندروید توضیح بده؟فایربیس چیست؟ چه بخش هایی داره و کجا استفاده کردی؟نحوه کار با Firebase Crash Reporting توضیح بده؟دستور add چیست؟ منظورش git بود.منظور از pull request چیست؟م memory leak توضیح بده؟فرق functional component و class component چیه؟منظور از props drilling چیست؟در مورد useState ، useEffect ، useContext ، useReducer توضیح بده؟با لینوکس کار کردی؟در stackoverflow تا حالا سوال پرسیدی؟ اگر پرسیدی در مورد چی بوده؟ به پاسخ مورد نظر رسیدی؟ اگر تا حالا نپرسیدی چرا؟تا حالا سرچ عمیق انجام دادی؟ و در مورد چی بود؟اخبار و موارد جدید تکنیکی رو ا ز کجا دنبال می کنی؟ مثلا اگر بگید سایت ویرگول ممکنه بپرسند اسم چند نفر از اشخاصی که دنبال می کنی بگو؟ ممکنه بره اون شخص رو پیدا کنه و بگه در خصوص فلان نوشته برداشتت چی بود؟از عمد سوالات رو به صورت درهم نوشتم چون در مصاحبه های من به همین صورت پراکنده سوال شد و باید تشخیص می دادم که مربوط به چه مبحثی هست. سوالات دیگری هم پرسیده شد که یادم نیست.یکی از شرکت ها در این بخش هم 2 برگه سوال بهم داد که جواب بدم؟ سوالات به 3 بخش هوش، الگوریتم و ترجمه انگلیسی به فارسی و برعکس تقسیم شده بود.3- اگر سوالات فنی رو مناسب جواب بدی ازت دعوت می کنن یک روز برای تست بری، یک پروژه تعریف می کنن و باید این پروژه رو در مدت زمان معینی انجام بدی.معمولا کلیت و ساختار پروژه تست رو به صورت انگلیسی برات همون لحظه ایمیل میکنن و می گن شروع کنکه بعد از اینجام پروژه تست، ازت در موردن نحوه کدنویسی سوالاتی می پرسند و اینکه چکار کردی و چرا مثلا به این روش این کارو انجام دادی.4- مصاحبه با مدیرعامل یا رئیس رئیستون، که ترکیبی از سوالات بخش 1 و 2 هست و موارد تکمیلی در خصوص شیوه کار و چارت سازمانی، حقوق، بیمه و ...تجربیات من و کارآیی که قبل از مصاحبه باید انجام دادم:در کل مصاحبه ها زیاد سخت نبودنبا اعتماد بنفس باشید و حتی اگر به سوالی اشتباه جواب دادید اعتماد به نفس خودتون رو از دست ندید من اشتباه هم زیاد داشتم، مثلا اون برگه سوالات که بهم دادن مطمئنم 80درصدشو اشتباه زدم، observer اشتباه جواب دادم و کلی چیز دیگه...معمولا اگر اشتباه جواب بدید هیچی نمی گن میرن سوالای بعدی.در برخی موارد توضیح زیاد می دادم که باعث گیج شدن طرف میشد.نقات قوت خودم رو شناسایی کردم و به بهشون اعتماد کردم.مقالات فنی زیادی مطالعه کردمتجربیات دیگران از مصاحبه خوندمتمرینات ذهنی انجام دادم به این دلیل که متاسفانه مقداری آدم خجالتی و کم رویی هستم، برام سخته از اول گرم بگیرم.صادقانه پاسخ می دادم و سوالاتی که بلد نبودم راحت می گفتم بلد نیستم.در مواردی که بلد بودم اصلا بزرگنمایی نکردم.سعی کردم در کلیه موارد خودم باشم.در توضیحات در خصوص خودم اغراق نکردم.از رفتار های بعضا تند مصاحبه کننده جا نخورید.از قبل در خصوص شرکت مصاحبه کننده تحقیق می کردم؟اگر در github پروژه ای کار کرده باشید خیلی مثبت هست.در پایان مصاحبه ها معمولا می گن اگر سوالی دارید بپرسید، من سوالات زیر پرسیدم:ساعات کاری به چه صورت است؟ آیا شناور دارند؟ و امکان انجام دورکاری؟دقیقا قرار است که چه کاری به من محول بشه؟چه انتظاراتی از من دارند؟اضافه کاری محاسبه می شود؟سیستم پاداش وجود دارد؟تشویق و تنبیه چگونه است؟بیمه و سایر اضافات قانونی پرداخت می شود؟تیم های کاری معمولا چند نفره هستند؟نوع سیستم کاری و چارت سازمانی شرکت چیه؟...در خصوص مسائل مالی با صراحت صحبت کنید.نتیجه مصاحبه ها:کل این فرآیند ها برای من 1 هفته طول کشید و یکی از شرکت ها از من دعوت کرد برای تست که پذیرفته شدم و چندروز بعد رسما شروع به کار کردم، بقیه شرکت ها هم خبر ندادند.امیدوارم این تجربه برای شما مفید باشه