سوال‌های رایج در مصاحبه‌های کاری Node.js


۱۷ شهریور ۱۳۹۹
سوال‌های رایج در مصاحبه‌های کاری Node.js

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

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

سوال‌های JavaScript و TypeScript

اگر شما می‌خواهید یک توسعه‌دهنده Node.js باشید، داشتن دانش بالا در زبان JavaScript، یک ضرورت مطلق است. یادگیری موارد اصولی مانند انواع Scopeها، Closureها، تفاوت‌‌های میان انواع متغیر و ایجاد انواع مختلف تابع، شما را متمایز می‌کنند و تاثیر زیادی بر کیفیت کدهایتان خواهند داشت.

همچنین باید یادگیری TypeScript را شروع کنید. امروزه بیشتر توسعه‌دهندگان Node.js از TypeScript استفاده می‌کنند.

سوال‌هایی که ممکن است در رابطه با TypeScript از شما بپرسند:

  1. چرا و چه زمانی از TypeScript به‌جای JavaScript استفاده می‌کنید؟
  2. آیا TypeScript از همه اصول برنامه‌نویسی شیء‌گرا پشتیبانی می‌کند؟
  3. چرا code validator به بخش‌های خاصی از کدهای TypeScript اخطار می‌دهد؟

فریم‌ورک‌های Node.js

داشتن دانشی از اصول اولیه Node.js بسیار مهم است. Event loop چگونه کار می‌کند؟ چرا باید از متدهای synchronous استفاده نکنید؟ کار با Node.js را می‌توان بیشتر در رابطه با رسیدگی به APIها دانست و فریم‌ورکی که باید با آن آشنا باشید Express.js است. به همین دلیل شما باید چگونگی رفع خطاهای به‌وجود آمده در Express و مکانیسم MiddleWareها را بدانید.

سوال‌های رایج در این بخش عبارتند از:

  1. چگونه می‌توان مقیاس یک برنامه Node.js را افزایش داد؟
  2. Express middleware چگونه کار می‌کند؟
  3. چه زمانی باید از متدهای asynchronous و synchronous استفاده کرد؟

سوال‌های مربوط به REST/GraphQL/WebSocket

بسیاری از برنامه‌های Node.js با انواع مختلف API سروکار دارند بنابراین دانش شما در این زمینه بسیار مهم خواهد بود. تاچندی قبل، تجربه کار با REST APIها، انواع مختلف متدهای اعتبارسنجی و اتصال متدهای HTTP به endpointها کافی بود. اما درحال حاضر شما باید چیزهای زیادی درمورد WebSocketها و GraphQL بدانید. می‌توانید انتظار داشته باشید که درباره اینکه کدام مورد در چه شرایطی بهتر است، از شما سوال کنند. مقیاس‌پذیری و بهینه‌سازی تعداد عملیات‌ها هم می‌تواند جزئی از سوال‌های مصاحبه شما باشد.

سوال‌هایی که ممکن است از شما پرسیده شوند:

  1. درباره مفاهیم کلیدی GraphQL مانند product-centric، hierarchical یا client-specified queries توضیح دهید.
  2. بهترین روش‌های اعتبارسنجی API را توصیف کنید.
  3. چگونه تصمیم می‌گیرید از کدام نوع API در پروژه خود استفاده کنید؟

معماری

هر برنامه دارای نوعی معماری است که در نحوه کارکرد آن و چگونگی پیش‌برد برنامه به بهترین وجه ممکن، تاثیرگذار است. این ایده خوبی است که به یادگیری انواع معماری برنامه مانند monolithic و میکروسرویس‌ها بپردازید.

حیطه سوال‌هایی که ممکن است پرسیده شود:

  • روش‌های برقراری ارتباط در میان برنامه‌ها (مستقیم یا غیرمستقیم بودن ارتباط مد نظر است).
  • آیا از Event/queues استفاده می‌شود؟

برخی از سوال‌ها عبارتند از:

  1. با تغییر معماری یک برنامه از monolithic به میکروسرویس می‌توانید به چه دستاوردهای عملکردی دست پیدا کنید؟ این دستاوردها چگونه به‌دست می‌آیند؟
  2. پیچیده‌ترین معماری که با آن کارکرده‌اید چیست؟ می‌توانید آن را توصیف کنید؟
  3. CQRS چگونه کار می‌کند و چه زمانی توسعه آن ارزشمند است؟

دیتابیس

این روزها به سختی برنامه‌ای پیدا می‌شود که نیاز به ذخیره داده‌ها نداشته باشد. به همین دلیل در مصاحبه کاری شما سوال‌هایی مانند اینکه با چه دیتابیسی کار کرده‌اید، آیا تجربه شما محدود به دیتابیس‌های رابطه‌ای (PostgreSQL، MySQL) است یا از دیتابیس‌های NoSQL (MongoDB, Elasticsearch) هم استفاده کرده‌اید؟ چگونه می‌توان آنها را بهینه‌سازی کرد؟ وجود خواهند داشت.

سوال‌های رایجی که ممکن است درباره دیتابیس‌ها از شما پرسیده شود به‌صورت زیر است:

  1. تفاوت‌های میان optimistic locking و pessimistic locking.
  2. چه عواملی در انتخاب یک دیتابیس مناسب دخیل هستند؟
  3. جوانب مثبت و منفی دیتابیس‌های غیر رابطه‌ای.

تست

هیچ برنامه خوب اما تست نشده‌ای وجود ندارد. به همین دلیل داشتن دانش کافی از unit testing، integration testing، ene-to-end testing بسیار ضروری است. برخی از سوال‌های زمینه تست برنامه که ممکن است در مصاحبه شما وجود داشته باشند در رابطه با mocking، injections یا test pyramid خواهند بود.

برخی سوال‌ها عبارتند از:

  1. در کدام مرحله از فرایند توسعه باید برنامه‌‎تان را تست کنید؟
  2. چه مواردی در انتخاب نوع تست دخیل هستند؟
  3. چالش‌های خاص موجود در توسعه مداوم تست‌های integration چیست؟

الگوهای طراحی

این روزها، شرکت‌ها نیازمند توسعه‌دهندگانی هستند که اهمیت الگوهای طراحی را درک کنند. در بسیاری از موارد می‌توانید فقط با استفاده از الگوی طراحی مناسب، کد نامناسب و غیرقابل تغییر خود را به یک ماژول آسان برای نگهداری و مقیاس‌پذیری تبدیل کنید. در بعضی موارد ممکن است درباره اینکه چگونه وابستگی‌ها‌ی پروژه‌تان را به برنامه اضاف می‌کنید (dependency injection)، از شما سوال شود.

سوال‌های مربوط به الگوی طراحی در مصاحبه Node.js به شرح زیر هستند:

  1. مزایا و معایت استفاده از تزریق وابستگی چیست؟
  2. تفاوت‌‌‌های observer و pub/sub در چیست؟
  3. چه زمانی الگوی طراحی API Gateway به کار می‌آید؟ چه زمانی می‌توان از این الگو استفاده کرد؟

DevOps

توسعه‌دهندگان خوب Node.js فقط به کدنویسی محدود نمی‌شوند بلکه می‌توانند یک محیط توسعه را برای یکپارچه‌سازی مداوم (CI) برنامه‌شان آماده کنند. اگر متقاضی کار در شرکتی باشید که مباحث DevOps مانند CI مورد حائز اهمیتی برایش باشد باید منتظر سوال‌هایی در رابطه با containerization و ابزارهایی برای خودکار کردن فرایند CI، باشید.

سوال‌های رایج در این حیطه عبارتند از:

  1. با کدام ابزارهای CI کار کرده‌اید؟
  2. تجربه کاری شما با Docker به چه صورت است؟
  3. آیا تجربه کار با AWS/GCP داشته‌اید؟

مهارت‌های فردی

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

  • آیا تا‌به‌حال مربی‌گری برای توسعه‌دهندگان تازه‌کار را تجربه کرده‌اید؟
  • آیا مستقیما با کاربران در تماس بوده‌اید؟
  • زبان انگلیسی شما چقدر قوی است؟

چکیده

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

منبع: https://tsh.io/blog/node-interview-questions

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

توسعه‌دهندگان درباره‌ی ما چه می‌گویند

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیت‌های سرویس دیتابیس‌شون اینه که خودشون به صورت دوره‌ای بکآپ میگیرن.
...

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)