این راهنمای جامع شامل همه نکاتی است که باید در مورد مصاحبه کدنویسی بدانید. به طور کامل توضیح می دهد که چه چیزی را یاد بگیرید، چگونه یاد بگیرید و مهمتر از آن چگونه راه حل را در طول مصاحبه ارائه دهید. اگر می خواهید در مصاحبه کدنویسی قبول شوید می توانید از دوره های مصاحبه کدنویسی ما از بهترین مدرسان جهان استفاده کنید.
به دنبال نکات و ترفندها نباشید، این چیزی است که شما را از شغل رویایی تان دور می کند.
هیچ راهنمایی و ترفندی برای به دست آوردن شغل وجود ندارد. فقط کار سختیه بنابراین اگر واقعاً می خواهید آن مصاحبه را ببرید، پس از خواندن این بخش بروید و با دوره ها تمرین کنید.
در این بخش می خوانید:
- مصاحبه کدنویسی چیست؟
- چگونه برای مصاحبه کدنویسی آماده شویم؟
- چگونه در مصاحبه کدنویسی بهترین عملکرد را داشته باشیم؟
مصاحبه کدنویسی چیست؟
آیا تا به حال رویای کار در یک شرکت بزرگ فناوری مانند مایکروسافت را داشته اید؟ اگر چنین است، مطمئن باشید که اکثر ما نیز همین کار را کرده ایم. و از آنجایی که تقاضای زیادی برای چند ده شغل وجود دارد، آنها به راهی نیاز دارند تا ببینند کدام نامزدها آمادگی بیشتری دارند.
قبل از اینکه به مصاحبه کدنویسی دعوت شوید، باید برای این موقعیت درخواست دهید و رزومه ای داشته باشید که در بین دیگران بدرخشد.
برای اکثر شرکت های فناوری، مصاحبه کدنویسی شامل الگوریتم ها و مشکلات ساختار داده است. به اینها به عنوان سؤالات حل مسئله فکر کنید، که در آن مصاحبه کننده به دنبال ارزیابی توانایی شما برای حل مشکلی است که قبلاً ندیده اید. یک مصاحبه تقریباً 45 دقیقه طول می کشد و یک یا دو مشکل کدنویسی به شما داده می شود. مصاحبه کننده از شما انتظار دارد که بهینه ترین راه حل را بیابید، آن را کدنویسی کنید و آنچه را که به تازگی برنامه نویسی کرده اید توضیح دهید.
در نهایت، شما این شانس را خواهید داشت که در مورد شرکت یا هر چیزی که به آن علاقه دارید از او سؤال بپرسید.
چگونه برای مصاحبه کدنویسی آماده شویم؟
میانبر یا ترفندی برای عبور از مصاحبه وجود ندارد. تنها راه برای یافتن راه حل های بهینه برای مسائل الگوریتمی، تمرین، حل هر چه بیشتر مسائل است.
در دو کلمه، کار سختی است.
ممکن است آن را دوست نداشته باشید و به دنبال ترفندی برای درک نحوه حل سؤالات مصاحبه باشید، اما وجود ندارد. یک لحظه فکر کنید: اگر چنین ترفندی وجود دارد، چرا همه از آن استفاده نمی کنند و در مصاحبه قبول نمی شوند؟
بنابراین، باید بدانید که تنها متغیر قبولی در مصاحبه، میزان تمرینی است که قبلاً انجام داده اید. تجربه، هوش و هر چیز دیگری در حال حاضر ثابت شده است. از این رو، زمان صرف شده برای تمرین، تفاوت بین نامزدهای قابل قبول را ایجاد می کند.
اولین قدم این است که به یک زبان برنامه نویسی رایج مانند سی یا سی پلاس پلاس، جاوا یا پایتون کاملا مسلط باشید. برخی از شرکت ها زبان های دیگر را نیز قبول دارند و اکثریت واضح به این سه زبان پایبند هستند. یکی را که بیشتر دوست دارید انتخاب کنید و به آن پایبند باشید. در نیمه راه آماده سازی تصمیم نگیرید که می خواهید زبان را تغییر دهید!
امروزه، معمولاً مصاحبه کدنویسی در مورد الگوریتم ها و ساختارهای داده است. آنها شامل برخی از موضوعات اساسی هستند که شما باید به طور کامل آنها را درک کنید، و حتی به رفتن به مصاحبه بدون تسلط به آنها فکر نکنید.
در زیر لیستی از الگوریتم ها و ساختارهای داده وجود دارد که باید بدانید. آنها را به ترتیب اهمیت آنها نوشته ایم و این بهترین مسیر یادگیری است.
پیچیدگی Big O:این بخش یک امر ضروری است و شالوده اساسی تفکر الگوریتمی شما را تشکیل می دهد. معنی آن را درک کنید و به نقطه ای برسید که می توانید پیچیدگی یک الگوریتم پایه را فقط با نگاه کردن به آن بگویید.
آرایه ها: در این مرحله باید با مفهوم آرایه ها آشنا باشید. این مبحث به مشکلاتی اشاره دارد که در آن آرایه فقط برای ذخیره سازی استفاده می شود و راه حل شامل تکنیک های اساسی مانند تکرار با دو اشاره گر است. یک مشکل کلاسیک این است که بررسی کنیم آیا یک آرایه داده شده جایگشت است یا خیر.
رشته ها: بدانید که چگونه یک رشته را در زبان خود دستکاری کنید و با مشکلاتی که از شما می خواهند آنها را به هم بپیوندید یا بچرخانید آشنا باشید.
لیست های پیوندی:معمولاً در مصاحبه با مشکل لیست پیوندی مواجه می شوید. در اینجا باید به موارد گوشه توجه ویژه ای داشته باشید. فکر کنید اگر لیست پیوندی خالی باشد چه اتفاقی می افتد؟ یا فقط یک عنصر دارد؟ یا می خواهید تا آخرین عنصر تکرار کنید؟ هنگامی که مشکلی را با لیست های پیوندی حل می کنید، در مورد موارد گوشه ای دو بار فکر کنید.
جداول هش:ساختار داده بنیادی که در اکثر مصاحبه ها وجود دارد. اگر در یک موضوع عمیق تر می شوید، جداول هش را انتخاب کنید. به کتابخانه جداول هش زبان خود مسلط باشید و حداقل پنج مسئله را تمرین کنید. در پایان، این چالش را انجام دهید: چگونه طولانی ترین زیرآرایه با ورودی های متمایز را پیدا می کنید؟
پشته ها:با این ایده آشنا باشید که می توانید فقط یک انتهای پشته را دستکاری کنید. این چالش را حل کنید: یک پشته را با MAX API پیاده سازی کنید، به این معنی که هر لحظه می توانید بپرسید حداکثر عنصر در پشته چیست.
صف ها: آنها را با پشته ها اشتباه نگیرید، زیرا آنها دو سر دارند. مسئله کلاسیک شبیه سازی یک صف را با استفاده از دو پشته پیاده سازی کنید.
Greedy:این تکنیک کاملاً ساده است و احتمالاً هر روز از آن استفاده می کنید. اساساً به اتخاذ بهترین تصمیم ممکن در یک لحظه خاص، بدون در نظر گرفتن پیامدهای آتی اشاره دارد. چند مشکل را تمرین کنید و فکر نکنید که با استفاده از Greedy می توان مشکلی را حل کرد.
انواع اولیه: بیشتر به دستکاری بیت و عملیات اساسی روی اعداد مربوط می شود. با این حال، برخی از مشکلات می توانند بسیار مشکل ساز شوند. چگونه می توانید تعداد 1 ها را در یک نمایش باینری بشمارید؟
درختان باینری: روی پیمایش ها، اجداد مشترک تمرکز کنید و به صورت بازگشتی در میان درختان تکرار کنید.
Heaps:آنها به طور گسترده در کاربردهای دنیای واقعی استفاده می شوند، بنابراین با heaps آشنا شوید! تمرین کنید تا زمانی که بتوانید از زمان استفاده از min-heap یا max-heap مطمئن شوید. چگونه می توانید پنج عنصر بزرگ را از یک دنباله اعداد چاپ کنید؟ آیا از min-heap یا max-heap استفاده می کنید؟
جستجو: جستجو موضوع اصلی است که همه باید بدانند. بنابراین، حداقل سه مسئله را با استفاده از جستجوی باینری تمرین کنید.
مرتب سازی:مطمئن شوید که می توانید ادغام و مرتب سازی سریع را پیاده سازی کنید. بهترین، متوسط و بدترین پیچیدگی های آنها را به خوبی بشناسید. اگر وقت دارید، Heapsort را نیز یاد بگیرید.
درختان جستجوی باینری:در مصاحبه کدنویسی به طور گسترده از آنها خواسته می شود و شما باید بتوانید تمام عملیات اصلی آنها از جمله حذف یک عنصر را پیاده سازی کنید!
Backtracking: اساساً به معنای ایجاد همه راه حل های ممکن و اتخاذ راه حل هایی است که مطابق با نیازهای شما هستند. یک مولد از مجموعه توان مجموعه و مسئله n-Queen را پیاده سازی کنید.
نمودارها:احتمالاً پرکاربردترین ساختار داده در علوم کامپیوتر هستند. آیا می دانستید که هر شبکه اجتماعی فقط یک نمودار بزرگ است؟ روی ایجاد یک کپی از نمودار در حافظه و تشخیص چرخه ها در نمودارها تمرین کنید.
برنامه نویسی پویا: برنامه نویسی پویا از نظر اکثر افراد ترسناک ترین موضوع است. اما این زیباترین است اگر تفکر پشت آن را درک کنید. بنابراین، پنج سوال رایج را تمرین کنید و با آنها بمانید تا زمانی که متوجه شوید تکرارها از کجا می آیند.
اگر بسیاری از موضوعات برای شما ناآشنا هستند، به این معنی است که باید بلافاصله یادگیری آنها را شروع کنید. دیگر نیازی به جستجوی آنلاین راهنماهای دیگر نیست، فقط بروید و تمرین کنید. به یاد داشته باشید که مصاحبه مبارزه با خودتان است، هر چه بیشتر تمرین کنید، شانس برنده شدن شما بیشتر می شود. این به شما بستگی دارد.
چگونه در مصاحبه کدنویسی بهترین عملکرد را داشته باشیم؟
معمولا هر مصاحبه دارای پنج بخش است که به تفصیل در مورد آن صحبت خواهیم کرد.
معرفی
این قسمت مصاحبه را شروع می کند و حدود سه تا پنج دقیقه طول می کشد. مصاحبه کننده می خواهد درباره شما اطلاعات بیشتری کسب کند و به شما این فرصت را می دهد که خودتان را معرفی کنید. به طور معمول، او علاقه مند است که شما قبلاً روی چه پروژه هایی کار کرده اید و کدام یک تأثیرگذارترین بوده است. اکنون، این فرصت شما برای درخشش است، پس آن را هدر ندهید!
سعی نکنید چاپلوس باشید تشخیص شخصیت جعلی که سعی می کند شما را فریب دهد آسان است. پس مطمئن باشید که شخصیت واقعی خود را نشان می دهید.
شما باید از قبل بدانید که قرار است در مورد پروژه مورد علاقه خود چه بگویید، بنابراین قبل از مصاحبه آن را آماده کنید. حالا بیشتر مردم فقط دو جمله کوتاه می گویند که بد است.
شما کدام یک از جواب های زیر را دوست دارید؟
"من برای مدیریت بهتر بیماران در بیمارستان ها روی یک وب اپلیکیشن کار کردم. من بک اند را در Node.js نوشتم."
یا
پروژه ای که من واقعاً از آن لذت بردم، ایجاد یک وب اپلیکیشن برای خدمات بهداشت ملی بود تا به آنها کمک کند تا بیماران را در بیمارستان مدیریت کنند. این بخشی از برنامه درسی دانشگاه بود، دو ماه طول کشید و من رهبر یک تیم سه نفره بودم.
ما پروژه را از یک ایده اولیه گرفتیم و آن را به یک برنامه واقعی تبدیل کردیم. من مسئول کدنویسی بک اند در Node.js و پایگاه داده در MongoDB بودم. این اولین اپلیکیشنی بود که برای مشتری ایجاد کردم و با فناوری های وب آشنایی نداشتم. روند توسعه تکراری بود و ما در راه اشتباهاتی داشتیم.
ما پروسه را برای کاربر ساده کردیم و کاربران می توانند به جای کدنویسی سخت، اتاق های بیمارستان را به راحتی بروز کنند.
من از این پروژه چیزهای زیادی یاد گرفتم، به خصوص اینکه چگونه در یک تیم کار کنم. لحظاتی بود که مشکلات فنی یا تیمی پیش آمد اما در نهایت همه چیز خوب پیش رفت و بالاترین امتیاز سال را گرفتیم!
این ارائه را به مزیت خود تبدیل کنید! مصاحبه کننده واقعاً علاقه مند است که اطلاعات بیشتری در مورد شما بیابد، بنابراین با یک معرفی مختصر از پروژه شروع کنید و توضیح دهید که در مورد چه چیزی است. سپس بگویید سهم شما چه بوده است (اگر با یک ایده هوشمندانه به تیم کمک کردید، آن را بگویید!)، و آنچه از فرآیند توسعه آموختید. همچنین می توانید ذکر کنید که چه تفاوتی برای کاربران ایجاد کرده اید.
شما باید یک یا دو دقیقه در مورد پروژه خود صحبت کنید.
مشکل را درک کنید
مصاحبه کننده به طور خلاصه بیانیه مشکلی را که باید حل کنید به شما می گوید. او جزئیات زیادی در مورد محدودیت ها، موارد یا نحوه دریافت داده به شما نمی دهد. این بخشی از کار شماست که هر چیزی را که برای حل مشکل نیاز دارید بخواهید. جمله را با صدای بلند تکرار کنید تا مطمئن شوید که آن را به درستی دریافت کرده اید.
به دنبال راه حل باشید
اکنون باید یک راه حل بهینه برای مشکل داده شده پیدا کنید. اگر قبلاً زیاد تمرین نکرده باشید، راه حل بهینه ای را پیدا نمی کنید.
یافتن راه حل ممکن است از ابتدا به طور طبیعی برای شما پیش نیاید. بنابراین، اولین چیزی که هنگام دریافت مشکل این است که یک ایده از ساختار داده ای که باید استفاده کنید، ایجاد کنید.
پس از مشاهده ساختار داده، به الگوریتم ها و مشکلات معمولی فکر کنید که قبل از استفاده از این ساختار داده دیده اید. به عنوان مثال، اگر مشکلی با درختان دریافت کردید، واضح است که باید از الگوریتم های مخصوص درختان مانند بازگشت استفاده کنید، درست است؟ اگر با مشکلی مواجه شدید که به شما می گوید حداقل یا حداکثر را بیابید، به انبوه، مرتب سازی یا پشته فکر کنید. و فهرست این گونه نمونه ها ادامه دارد.
نکته کلیدی در اینجا این است که تمرین اکنون حرف خود را خواهد گفت و من یک خبر خوب برای شما دارم! بسیاری از سوالات مصاحبه مشابه هستند، بنابراین احتمال زیادی وجود دارد که قبلاً یک مشکل مشابه را تمرین کرده اید و می توانید از آن شروع به راه حل بسازید.
حال، چیز دیگری که در این مرحله بسیار مهم است، صحبت با صدای بلند است. مصاحبه کننده علاقه مند است که روند تفکر شما را ببیند و توضیحات شما را بشنود. اکثر مردم در حالی که به راه حل فکر می کنند سه دقیقه ساکت می مانند و این بدترین استراتژی ممکن برای آنهاست.
یکی از آنها نباش! به مصاحبه گر کاری کنید که واقعاً بفهمد چه می خواهید بگویید، و تصور نکنید که هنگام شنیدن صحبت های شما خسته می شود. او آنجاست تا به روند تفکر شما گوش دهد. نترسید که ممکن است با یک راه حل بد شروع کنید، زمان برای بهبود آن وجود دارد!
دو نکته ای که می خواهم به خاطر بسپارید این است که قبل از آن زیاد تمرین کنید و در طول مصاحبه با صدای بلند صحبت کنید.
راه حل را کدنویسی کنید
اکنون به بخش جالب، کدنویسی راه حل رسیدیم. برای عملکرد خوب در این بخش، باید به زبانی که به آن کدنویسی می کنید، مسلط باشید، حتی اگر IDE برای کمک به شما نداشته باشید. برخی از شرکت ها از شما می خواهند روی تخته سیاه یا Google Docs، جایی که هیچ کلمه برجسته ای وجود ندارد، کدنویسی کنید، بنابراین مطمئن شوید که به زبان مسلط هستید.
مصاحبه کننده نمی خواهد ده دقیقه در سکوت کدنویسی کنید و سپس بگویید که تمام کرده اید. او از شما می خواهد که با صدای بلند صحبت کنید و همه چیزهایی را که می نویسید توضیح دهید.
دلیل آن ساده است: اگر توضیح ندهید، او نمی داند چه چیزی را کدنویسی می کنید. بنابراین، کار او را آسان کنید و در حین کدنویسی صحبت کنید.
همچنین کد خود را تمیز و مرتب نشان دهید. هیچ کس کدهای نامرتب را دوست ندارد که به سختی بتوان آنها را خواند. مطمئن شوید که کد شما توضیحی است.
پس از اتمام کدنویسی، احتمال زیادی وجود دارد که یک باگ را از دست بدهید. این اصلاً مشکلی نیست! وظیفه شما این است که خودتان کد را تعمیر کنید. بنابراین، به مصاحبه کننده بگویید: «من به تازگی کدنویسی را تمام کرده ام. آیا می توانم به کد نگاهی بیاندازم تا مطمئن شوم اشتباهی وجود ندارد؟». او با خوشحالی می گفت "بله، بیایید کد شما را بررسی کنیم".
سپس او را از طریق هر خط کد عبور می دهید و دوباره توضیح می دهید که در آنجا چه اتفاقی می افتد. اگر اشتباهی دیدی بگو! وانمود نکنید که کد بی نقص است، فقط به خودتان صدمه می زنید! بنابراین به سادگی بگویید: "من می بینم که یک باگ وجود دارد. در اینجا راه حلی برای حل آن وجود دارد، و شما تغییرات را ایجاد می کنید.
سوال بپرسید
و به اینجا رسیدیم، لحظه ای پس از اتمام کدنویسی باگ ها. اکنون مصاحبه کننده به شما این فرصت را می دهد که هر سوالی را که ممکن است به آن علاقه دارید از او بپرسید.
بسیاری از مردم می گویند که هیچ سوالی ندارند و این یک اشتباه بزرگ است. آنها فرصت بزرگی را برای کسب اطلاعات بیشتر در مورد شرکت و خود شغل از دست می دهند!
من واقعاً شما را تشویق می کنم که حداقل دو سؤال بپرسید. این شانس شماست که بفهمید کار در آن شرکت چگونه است!
می توانید بپرسید: "فرهنگ شرکت را چگونه است؟" یا «چه چیزی را در شغل خود بیشتر دوست دارید؟ یا "هفته اول شما در اینجا چگونه بود؟" یا "آیا می توانید انتخاب کنید که روی کدام پروژه کار کنید؟" یا «به طور معمول چه پروژه ای به افراد می دهید؟». تقریباً می توانید هر چیزی در مورد شرکت و شغل او بپرسید.
نتیجه گیری
مصاحبه کدنویسی همه چیز در مورد یافتن راه حل و توضیح آن است. دو نکته را باید از این مقاله به خاطر بسپارید: تمرین زیاد قبل از مصاحبه و بیان فرآیند تفکر خود در طول مصاحبه. آنها به یک اندازه مهم هستند و اگر به هر دو تسلط داشته باشید، مصاحبه را پشت سر گذاشته اید!