این مقاله درباره

مصاحبه فنی برنامه نویسی

مصاحبه فنی برنامه نویسی یعنی کارفرما روش فکر، کد و صداقت شما را می‌بیند. لایو کدینگ، سوال جونیور، React و SQL، و برنامه دو هفته‌ای بدون حفظ طوطی‌وار.

مصاحبه فنی برنامه نویسی؛ آمادگی Junior، لایو کدینگ و سوال‌های رایج

نوشته شده توسط محمد اصل زنجانی

بازبینی‌شده توسط روبینش

اولین نظر را بدهید — امتیاز خوانندگان روبینش

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

جست‌وجوهایی مثل «مصاحبه فنی چیست»، «سوالات مصاحبه فنی جونیور»، «لایو کدینگ چیست»، «سوال الگوریتم یا پروژه» و «سوال‌های React و SQL» معمولاً از کسی می‌آید که دوره دیده، رزومه فرستاده، و حالا می‌ترسد پشت لپ‌تاپ خالی بماند. در این راهنما مرحله‌های جلسه، لایو کدینگ، انتخاب الگوریتم یا پروژه، نمونه‌سؤال‌های وب، و یک برنامهٔ آمادگی کوتاه را به زبان ساده می‌نویسیم. سند ارائه در رزومه برنامه نویسی است، نقشهٔ ورود به بازار در چگونه برنامه نویس شویم، و اگر بازخورد روی کار خودتان می‌خواهید مسیر رزرو خدمات منتورینگ برنامه‌نویسی روبینش است — این مقاله استخدام را تضمین نمی‌کند.

We’re not just looking for people who can give the right answer. We want to see how you think, how you solve problems, and how you work with others.

منبع: Google Careers — How we hire
داشبورد فارسی آمادگی مصاحبه فنی روی لپ‌تاپ با چک‌لیست جلسه — روبینش | Rubinesh
مصاحبه فنی مهارت حفظ نیست؛ مهارت فکر کردن روی مسئله است.

مصاحبه فنی چیست و چه چیزی را می‌سنجد؟

مصاحبه فنی برنامه نویسی معمولاً چند لایه دارد. یک لایه دانش پایه است: متغیر، تابع، آرایه، درخواست HTTP، یا تفاوت GET و POST. لایهٔ دوم حل مسئله است: یک متن کوتاه می‌دهند و می‌خواهند راه‌حل بسازید. لایهٔ سوم ارتباط است: آیا سؤال می‌پرسید، فرض را می‌گویید، و وقتی اشتباه می‌کنید مسیر را عوض می‌کنید؟ خیلی از جونیورها فقط لایهٔ اول را تمرین می‌کنند و در جلسه روی لایهٔ دوم و سوم می‌مانند.

کارفرما دنبال نابغهٔ الگوریتم نیست مگر نقش همان باشد. در بیشتر تیم‌های محصول ایران، می‌خواهند ببینند شما یک باگ را تا منبع دنبال می‌کنید، کد خوانا می‌نویسید، و پروژهٔ رزومه‌تان را واقعاً فهمیده‌اید. اگر نتوانید بگویید «این فرم چه داده‌ای می‌فرستد و اگر سرور خطا بدهد چه می‌شود»، حفظ تعریف Virtual DOM کمکی نمی‌کند. مصاحبه جای نمایش سرعت تایپ هم نیست؛ جای نشان دادن روش کار است.

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

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

سوالات مصاحبه فنی جونیور معمولاً از کجا می‌آیند؟

برای جونیور، سؤال‌ها اغلب از همان چیزهایی است که در پروژهٔ اول باید دیده باشید. HTTP یعنی مرورگر از سرور چه می‌خواهد. وضعیت ۲۰۰ یعنی موفق، ۴۰۴ یعنی پیدا نشد، ۵۰۰ یعنی سرور خودش به مشکل خورده. کوکی و نشست یعنی سرور شما را بین دو درخواست چطور به یاد می‌آورد. اگر این‌ها را با داستان «فرم ورود» بگویید، بهتر از تعریف حفظ‌شده است. اتصال این مفاهیم به محصول را در راهنمای API جدا می‌توانید عمیق کنید؛ در جلسه یک مثال کافی است.

سؤال‌های شیءگرایی هم رایج‌اند: کلاس و شیء، تفاوت اینترفیس و کلاس انتزاعی، یا چرا تابع را کوچک نگه می‌دارید. لازم نیست مقالهٔ دانشگاهی بدهید. بگویید کلاس قالب است، شیء نمونه است، و تکرار منطق را با تابع مشترک کم می‌کنید. اگر زبانتان جاوااسکریپت است و کلاس کم استفاده کرده‌اید، دروغ نگویید. بگویید بیشتر با توابع و ماژول کار کرده‌اید و یک نمونه از پروژه‌تان بیاورید.

سؤال رفتاری را فنی ندانید و رد نکنید. «یک بار که پروژه گیر کرد چه کردید؟» همان مهارت دیباگ است. جواب خوب وضعیت، کار شما، اقدام، و نتیجه را کوتاه می‌گوید. جواب ضعیف دیگران را مقصر می‌کند یا می‌گوید «خودم حل کردم» بدون جزئیات. اگر تجربهٔ شغلی ندارید، از پروژهٔ تمرینی بگویید: تست نوشتید، لاگ خواندید، از مستند کمک گرفتید. شبیه‌سازی این گفت‌وگو را می‌توانید با همکار یا در کد ریویو تمرین کنید؛ ریویو عادت توضیح دادن تصمیم است.

لایو کدینگ چیست و چطور آرام بمانیم؟

لایو کدینگ یعنی همان‌جا، با زمان محدود، مسئله‌ای را روی ادیتور یا تخته پیاده می‌کنید. مصاحبه‌کننده خروجی نهایی را تنها معیار نمی‌گذارد. می‌خواهد ببیند مسئله را تکرار می‌کنید، مثال کوچک می‌سازید، و قبل از کد زدن طرح می‌گویید. سکوت طولانی بدون حرف، بدتر از راه‌حل ناقص با توضیح است. اگر دستتان می‌لرزد، اول مسئله را با زبان خودتان بگویید. همان جمله استرس را کم می‌کند چون مغز از «باید کامل باشم» به «باید بفهمم» می‌رود.

لایو کدینگ فارسی: مسئله در یک پنل و ادیتور در پنل دیگر روی لپ‌تاپ — روبینش | Rubinesh
قبل از تایپ، مسئله را با یک مثال کوچک روی کاغذ یا کامنت بنویسید.

یک روال ساده این است: مسئله را بلند بخوانید، یک ورودی نمونه بسازید، خروجی مورد انتظار را بگویید، راه‌حل کند اما درست را انتخاب کنید، بعد اگر وقت ماند بهترش کنید. خیلی‌ها از بهینه‌ترین الگوریتم شروع می‌کنند و در وسط گم می‌شوند. برای جونیور، راه‌حل درست و خوانا معمولاً کافی است. اگر پیچیدگی زمانی را می‌دانید بگویید؛ اگر نمی‌دانید حدس نزنید. بگویید «الان روی درستی تمرکز می‌کنم، بعد اگر وقت بود سراغ هزینهٔ حلقه می‌روم».

وقتی گیر می‌کنید، همان را بگویید. «روی این حالت خالی مانده‌ام؛ یک تست برای آرایهٔ تهی می‌نویسم.» مصاحبه‌کننده اغلب راهنمایی می‌کند اگر ببیند شما مسیر دارید. راهنمایی را رقابت ندانید. آن را بگیرید، تکرار کنید، و ادامه دهید. کپی از حفظِ جواب اینترنت، وقتی سؤال کمی عوض شود می‌شکند. تمرین روی مسئله‌های کوتاه بهتر از تماشای ویدیوی «۱۵۰ سؤال» است.

الگوریتم حل کنیم یا پروژه نشان دهیم؟

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

حتی وقتی الگوریتم می‌پرسند، پروژه به کمکتان می‌آید. می‌توانید بگویید «این شبیه همان یکتا کردن ایمیل‌ها در پنل ثبت‌نام پروژهٔ من است». پل زدن بین تمرین انتزاعی و کار واقعی، شما را از داوطلبِ فقط‌تمرینی جدا می‌کند. برعکسش هم درست است: پروژه بدون اینکه بتوانید یک حلقه و یک شرط را روی تخته بنویسید، در لایو کدینگ می‌لنگد. هر دو را در حد نقش جونیور لازم دارید، نه در حد مسابقه.

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

سوال‌های React، SQL و مفاهیم وب

اگر نقش فرانت است، React یعنی قطعهٔ UI، حالت، و اثر جانبی. ممکن است بپرسند state چیست، props چیست، چرا لیست به key نیاز دارد، یا useEffect چه زمانی اجرا می‌شود. جواب را با صفحهٔ خودتان بگویید: «وقتی سبد عوض می‌شود، همان عدد باید دوباره رسم شود؛ این state است.» اگر Next.js در آگهی آمده، فرق صفحهٔ سروری و کلاینتی را در حد ساده بدانید؛ مسیر یادگیری ابزار را در یادگیری Next.js جدا آورده‌ایم تا این مقاله به آموزش فریم‌ورک تبدیل نشود.

SQL برای خیلی از نقش‌های جونیور وب ظاهر می‌شود. SELECT یعنی خواندن، WHERE یعنی فیلتر، JOIN یعنی وصل کردن دو جدول با کلید مشترک. مثال انسانی: جدول سفارش و جدول مشتری. اگر بپرسند ایندکس چیست، بگویید مثل فهرست کتاب است تا همهٔ صفحات را خط‌به‌خط نخوانند — و بگویید ایندکس زیاد نوشتن را هم سنگین می‌کند. لازم نیست مدیر دیتابیس باشید. لازم است یک گزارش ساده را روی کاغذ بکشید.

مفاهیم وب را دست‌کم نگیرید. CORS یعنی مرورگر به سایت دیگری اجازهٔ خواندن پاسخ را بدون اجازه نمی‌دهد. HTTPS یعنی مسیر بین شما و سرور رمز می‌شود. XSS یعنی تزریق اسکریپت در صفحهٔ دیگران. برای جونیور، دانستن «چرا خطرناک است و چه کار ساده‌ای جلویش را می‌گیرد» از نام بردن ده حمله مهم‌تر است. اگر نقش بک‌اند است، اعتبارسنجی ورودی و ذخیره نکردن رمز به‌صورت متن ساده را با مثال بگویید.

روز مصاحبه: چطور مسئله را بلند فکر کنیم؟

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

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

پایان جلسه معمولاً نوبت سؤال شماست. سؤال خوب نشان می‌دهد به کار واقعی فکر کرده‌اید: تیم ریویو دارد؟ هفتهٔ اول روی چه چیزی سوار می‌شوید؟ موفقیت نود روزه چیست؟ سؤال «حقوق چقدر است؟» را اگر خودشان باز نکرده‌اند برای مرحلهٔ بعد بگذارید مگر زمان‌بندی‌تان حیاتی باشد. بعد از جلسه، همان روز نکته‌ها را بنویسید. همان یادداشت برای جلسهٔ بعد بهتر از «حس کردم بد بود» است.

اشتباهات رایج در مصاحبه فنی برنامه‌نویسی

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

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

برنامه آمادگی دو هفته‌ای بدون حفظ طوطی‌وار

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

تقویم دو هفته‌ای فارسی آمادگی مصاحبه کنار لپ‌تاپ — روبینش | Rubinesh
هر روز یک مسئلهٔ تمام‌شده بهتر از یک پلی‌لیست تمام‌نشده است.

معیار پیشرفت تعداد ویدیو نیست. معیار این است که بتوانید بدون نگاه به کد بگویید پروژه چه می‌کند، و یک مسئلهٔ سی‌دقیقه‌ای را با حرف زدن جلو ببرید. اگر بعد از دو هفته هنوز داستان پروژه قاطی است، اول همان را درست کنید. لایو کدینگ روی پروژهٔ مبهم سوار نمی‌شود. مسیر بلند مهارت را در نقشه راه برنامه‌نویس شدن ببینید؛ این مقاله فقط لایهٔ جلسه است.

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

جمع‌بندی

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

سؤالات متداول

مصاحبه فنی چیست؟

جلسه‌ای برای دیدن روش فهم مسئله، نوشتن کد و رفتار وقتی گیر می‌کنید — نه فقط حفظ تعریف کتاب. رزومه و پروژه زنده را جایگزین نمی‌کند.

لایو کدینگ چیست؟

پیاده‌سازی یک مسئله با زمان محدود روی ادیتور یا تخته، در حضور مصاحبه‌کننده. توضیح فرض و مثال کوچک معمولاً مهم‌تر از سریع‌ترین الگوریتم است.

برای جونیور الگوریتم مهم‌تر است یا پروژه؟

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

چه سوال‌های React و SQL رایجی پرسیده می‌شود؟

state و props، key در لیست، تفاوت GET و POST، فیلتر SQL و JOIN ساده. جواب را با مثال صفحه یا جدول خودتان بگویید نه با تعریف حفظ‌شده.

از کجا جلسه تمرینی رزرو کنیم؟

این مقاله تضمین قبولی نیست. مسیر همراهی شخصی در صفحه خدمات منتورینگ برنامه‌نویسی روبینش است؛ مقایسه با دوره را در مقاله جدا بخوانید.