Node.js یک چارچوب محبوب جاوا اسکریپت برای توسعه back-end است، بنابراین تقاضای زیادی برای توسعه دهندگانی وجود دارد که می دانند چگونه از آن استفاده کنند. اگر برای یک مصاحبه آتی برای چنین موقعیتی آماده می شوید، آمادگی بسیار مهم است.
در اینجا 20 مورد از رایج ترین سوالات مصاحبه در Node.js و برخی از بینش های آماده سازی برای آنها آورده شده است.
20 سوال برتر مصاحبه Node.js
اجزای برنامه
مصاحبه شما احتمالاً با یک کاوش مقدماتی در برنامه های Node.js آغاز می شود. شما باید آماده باشید تا متداول ترین مؤلفه ها و نحوه ساختاربندی، افزودن و صادرات برنامه خود را شرح دهید.
پاسخ به این سؤالات حتی بدون تجربه تولید ساده ترین است. با ساختارهای فایل و ابزارهای خط فرمانی که روزانه از آنها استفاده می کنید با آزمایش راحت باشید.
عملکرد ماژول ها در Node.js چیست؟
ماژول ها توابع مرتبطی هستند که معمولاً به صورت یک فایل به کد شما وارد می شوند. آنها را مانند کتابخانه های جاوا اسکریپت و سایر زبان ها در نظر بگیرید. شما می توانید ماژول ها را در بسته هایی برای پروژه های خاص گروه بندی کنید.
نقش فایل package.json در برنامه Node.js چیست؟
فایل package.json در دایرکتوری ریشه بسته زندگی می کند و تمام ابرداده های مورد نیاز برای ساخت آن را در خود نگه می دارد. ابرداده شامل ارجاعاتی به تمام ماژول ها و وابستگی های بسته شما، از جمله شماره نسخه آنها می باشد.
چگونه بسته ها را برای یک پروژه Node.js مدیریت می کنید؟
می توانید بسته ها را با استفاده از یک مدیریت بسته نصب یا به روز کنید. مدیران بسته Node.js معمولاً شامل یک رجیستری از بسته ها و یک ابزار CLI برای نصب و مدیریت نسخه ها و وابستگی های آنها هستند. رایج ترین آنها npm است، اما می توانید از موارد دیگر مانند Yarn یا pnpm استفاده کنید.
دانش کاربردی
Node.js به سرعت در حال تبدیل شدن به یک استاندارد صنعتی است، بنابراین باید درک کنید که چگونه با بقیه خطوط لوله تجاری سازگار است.
برای این سؤالات، باید آماده توضیح دهید که چرا تیم شما ممکن است از Node.js در مقابل ابزارهای دیگر استفاده کند. Node.js برای برخی از برنامه ها عالی است اما می تواند مشکلات قابل توجهی را در زمینه اشتباه ایجاد کند. برای رفع این کاستی ها، توسعه دهندگان چارچوب های مختلفی را ایجاد و استفاده می کنند. اگرچه این لیست طولانی است و همیشه در حال تغییر است، شما باید حداقل نیمی از فریمورک های محبوب و آنچه را که ارائه می دهند را بدانید.
Node.js همچنین ویژگی هایی را ارائه می دهد که احتمالاً از آنها در هر برنامه آماده تولید استفاده می کنید. آماده باشید تا در مورد هر چیزی که قبلاً و چگونه اجرا کرده اید صحبت کنید. در غیر این صورت، نقش آنها را شرح دهید و آنها را با ویژگی های مشابه در سایر برنامه ها مقایسه کنید.
محبوب ترین فریم ورک های کاربردی وب Node.js کدامند؟
محبوب ترین فریم ورک Node.js کتابخانه Express.js است. از دیگر فریمورکهای شایان ذکر میتوان به Koa، Sails.js، Meteor، Fastify، Next.js و Socket.IO اشاره کرد.
رایج ترین موارد استفاده برای Node.js چیست؟
شما معمولاً از Node.js برای برنامه های حساس به داده یا زمان واقعی که حجم زیادی از درخواست ها را مدیریت می کنند استفاده می کنید. رایج ترین نمونه ها عبارتند از:
- ابزارهای چت و همکاری در زمان واقعی
- جریان
- معماری میکروسرویس
- اینترنت اشیا (IoT)
- برنامه های تک صفحه ای (SPA)
دلایلی برای انتخاب Node.js به عنوان Back End چیست؟ پی اچ پی یا زبان دیگری؟
مدل ناهمزمان Node.js برای برنامه هایی با درخواست های همزمان بسیار سریعتر و پایدارتر از بسیاری از زبان های دیگر است. Node.js همچنین به شما امکان می دهد سمت سرور و سرویس گیرنده خود را با استفاده از پایگاه کد یکسان به طور همزمان توسعه دهید. همچنین از جاوا اسکریپت برای توسعه front-end و back-end استفاده می کند که این کار را برای توسعه دهندگان جدید آسان تر می کند.
نقش متغیر NODE_ENV چیست؟
متغیر NODE_ENV به شما امکان می دهد خروجی ساخت برنامه خود را برای محیط آن بهینه کنید. میتوانید آن را روی یک مقدار سفارشی تنظیم کنید، اما بهترین روش استفاده از یکی از دو مقدار رایج، توسعه یا تولید است، زیرا اکثر ابزارها به طور پیشفرض با اینها کار میکنند.
ماژول کریپتو در Node.js چیست؟
ماژول رمزنگاری عملکرد رمزنگاری را برای محیط های توسعه یا تولید به عنوان یک اقدام امنیتی اضافه ارائه می دهد. این شامل پوششهایی برای توابع هش، HMAC، رمزگشایی، رمزگشایی، علامتگذاری و تأیید OpenSSL میشود.
Stubs در Node.js چیست، aو چگونه از آنها استفاده می شود؟
یک خرد یک روال است که مخفف یک برنامه بزرگتر است، که معمولاً با تست های واحد استفاده می شود. این کد را وادار به ارزیابی در طول یک مسیر خاص می کند و به عنوان یک مکان نگهدار برای یک مسیر اجرای برنامه خاص عمل می کند.
کدهای خروج مورد استفاده در Node.js چیست؟
Node.js از کدهای خروج برای نشان دادن وضعیت فرآیندهای خود استفاده می کند. یک فرآیند سالم زمانی که دیگر عملیات ناهمزمان معلق وجود ندارد، 0 را برمی گرداند، اما Node.js کدهایی را برای خطاها در زمان اجرا، کنترل کننده ها، استثناهای کشف نشده و خطاهای عمومی سطح بالا ارائه می دهد. با اینها و قانون کدهای خروج بزرگتر از 128 آشنا شوید.
Node.js Internals
اکنون که درک خود را از زمان و نحوه استفاده از Node.js نشان داده اید، زمان آن رسیده که دانش فنی خود را به رخ بکشید.
استفاده حداکثری از ویژگیهای امضای Node.js میتواند برای کاربران جدید دشوار باشد، بهویژه با توجه به قدرت آن در مدیریت کارآمد همزمانی. بیشتر مشکلات در برنامههای Node.js از تلاش برای جا دادن متدولوژیهای سایر چارچوبها و زبانها در پارادایم Node.js ناشی میشود.
شما می خواهید توضیحاتی در سطح متوسط تا سطح بالا در مورد این مفاهیم اساسی برای این سوالات ارائه دهید. در حالت ایدهآل، شما نشان خواهید داد که این مفاهیم را درک میکنید و میتوانید این مفاهیم را به شخص دیگری آموزش دهید.
چارچوب بندی دانش خود از طریق قیاس یک استراتژی رایج است. بسیاری از راهنماها اغلب از یک قیاس رستوران استفاده می کنند – جایگزین حلقه رویداد با یک سرور، مشتریان با میزهای مهمان و غیره. با این حال، اگر تجربه ای در صنعت خدمات ندارید، می توانید آنالوگ خود را تغییر دهید تا متمایز شود.
Node.js چگونه همزمانی را مدیریت می کند؟
Node.js از یک مدل حلقه رویداد تک رشته ای به جای یک مدل درخواست و پاسخ چند رشته ای استفاده می کند. عملیاتی که انتظار می رود همزمان اجرا شوند باید به حلقه رویداد اجازه دهند تا فراخوانی توابع را ادامه دهد در حالی که I/O به صورت ناهمزمان رخ می دهد.
چرا Node.js است تک رشته ای، و پیامدهای آن چیست؟
به جز فراخوانی های خاص کتابخانه، مدل حلقه رویداد Node.js به صورت تک رشته ای عمل می کند. پیادهسازیهای کدگذاری شده بومی اکثر عملیات I/O را انجام میدهند، که نگرانیهای threading را انتزاعی میکنند. Node.js همچنین قابلیت چند رشته ای را با اجازه دادن به حلقه رویداد به نخ های گروه کارگر ارائه می دهد.
وقتی حجم کاری مرتبط با هر کلاینت در هر لحظه کوچک باشد، Node.js بهتر از فناوریهای استاندارد مبتنی بر چند رشته عمل میکند. با این حال، برای به دست آوردن این مزیت، باید برنامه را برای استفاده از توابع ناهمزمان بنویسید و مورد استفاده باید برای اجرای مدل حلقه رویداد مناسب باشد. بهتر است یک Node.js Front End رسیدگی به درخواستها و یک Back End با استفاده از یک چارچوب متفاوت برای رسیدگی به وظایف پردازش فشرده اجرا شود.
حلقه های رویداد در Node.js چیست؟
حلقه رویداد یک رشته واحد است که درخواست ها را دریافت و زمان بندی می کند. در صورت امکان درخواستها را به رشتههای ناهمزمان منتقل میکند و ورودی/خروجی غیرمسدود کنندهای را که هسته Node.js را تشکیل میدهد، ارائه میکند.
انواع مختلف توابع API در Node.js چیست؟
توابع API در Node.js یا ناهمزمان (غیر مسدود کننده) یا همزمان (مسدود کننده) هستند. همه روشهای ورودی/خروجی در کتابخانه استاندارد Node.js نسخههای ناهمزمان را ارائه میکنند و ممکن است پاسخهای تماس را بپذیرند. برخی نیز نسخه های همزمان را ارائه می دهند که محبوب ترین آنها کتابخانه libuv است.
تفاوت بین عملکردهای مسدود کننده و غیر مسدود کننده چیست؟
توابع مسدود کردن از اجرای فراخوانی های تابع بعدی تا پایان عملیات عملکرد مسدود کننده جلوگیری می کند. یک تابع غیر مسدود کننده به یک رشته جداگانه واگذار می شود و به سرور اجازه می دهد تا به فراخوانی API زیر برود.
تا حد امکان باید با استفاده از توابع غیر مسدود کننده کد بنویسید تا عملیات همزمان امکان پذیر باشد. این امر به ویژه در محیط هایی که تأخیر می تواند بر ترتیب اجرا در یک مدل همزمان تأثیر بگذارد صادق است.
Event Emitters چیست و نقش آنها چیست؟
اشیاء متعلق به کلاس EventEmitter Emitter نامیده می شوند. Emitter تابعی است که حاوی روشی برای پیوست کردن توابع (ثبت شنوندگان) به یک رویداد و برای راهاندازی (انتشار) آن رویداد است. هنگامی که یک رویداد منتشر می شود، تمام شنوندگان آن به صورت همزمان فراخوانی می شوند.
تفاوت بین روش های process.nextTick و setImmediate چیست؟
Process.nextTick و setImmediate در مراحل مختلف حلقه رویداد فعال می شوند. متد setImmediate یک فراخوانی را در چرخه بعدی حلقه رویداد اجرا می کند و متد process.nextTick بلافاصله پس از پایان عملیات در مرحله حلقه رویداد فعال می شود.
تفاوت بین تماس و وعده چیست؟
Callback ها توابعی هستند که به عنوان آرگومان به توابع دیگر منتقل می شوند. آنها بخشی از همان وظیفه در دنباله حلقه رویداد هستند، و تضمین می کنند که مقدار تابع داخلی برای تابع خارجی در هنگام اجرای آن در دسترس است.
Promises مکانهایی برای دادههایی هستند که ممکن است بعداً در دسترس باشند. Promises به حلقه رویداد اجازه می دهد تا در دنباله خود منتظر بماند در حالی که وعده به صورت ناهمزمان ارزیابی می شود.
Callback Hell چیست و چرا رخ می دهد؟
جهنم بازگشت به تماس، که به عنوان هرم عذاب نیز شناخته می شود، توسط تماس های عمیق تو در تو ایجاد می شود و اغلب نتیجه منطق ناهمزمان به درستی اجرا نشده است. تماس های تو در تو خواندن و اشکال زدایی کد را دشوار می کند.
فورک ها در زمینه Node.js چیست؟
دستور fork یک مورد خاص از spawn است که نمونه جدیدی از موتور V8 را ایجاد می کند که Node.js روی آن اجرا می شود و به فرآیندهای والد و فرزند اجازه می دهد با هم ارتباط برقرار کنند. این برای ایجاد یک استخر کارگر برای استفاده کارآمدتر از پردازنده های چند هسته ای و ارسال پیام های فردی بین فرآیندها مفید است.
در نهایت
Node.js یک محیط محبوب است، اما شما باید مانند هر ابزار دیگری از آن به درستی استفاده کنید. بهعنوان یک توسعهدهنده، باید درک کنید که چگونه با بقیه یک پشته توسعه مطابقت دارد.
این مقاله سؤالات اساسی در مورد استفاده از Node.js را که احتمالاً در یک مصاحبه شغلی با آنها روبرو می شوید، پوشش می دهد. با این حال، انجام یک مصاحبه فراتر از به خاطر سپردن پاسخ های صحیح است. شما باید نشان دهید که مطالب را به طور کامل درک می کنید و می توانید آن را با کلمات خود توصیف کنید.
اگر تجربه عملی ندارید، باید به مطالعات موردی نگاه کنید. اینها میتوانند به شما در درک مفاهیم عمیقتر کمک کنند، مانند اینکه کدام الگوها ناهمزمان به نظر میرسند اما نیستند یا چه زمانی باید یک کد مناسب برای حلقه رویداد ایجاد کنید. اینکه بدانید چگونه از Express با Node.js نیز استفاده کنید، ضرری ندارد.
]