س.مرتضی موسوی
س.مرتضی موسوی
خواندن ۳ دقیقه·۲ سال پیش

در یک مصاحبه جاوا اسکریپت چه می‌گذرد(قسمت سوم)

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

قسمت اول / قسمت دوم

۲۹- کال‌بک فانکشن یا Callback Function چی هست؟

فانکش callback تابعی است که قرار است بعد از تابع دیگری اجرا شود. در جاوا اسکریپت و دیگر زبان‌های مفسری اجرای کدها به صورت خط به خط است، زمانیکه در ترجمه خط به خط کد‌ها مفسر به یک بخشی از کد برای مثال به یک تابع برخورد می‌کند که فرآیند دریافت پاسخ توسط تابع طولانی است، همزمان با اجرای آن بخش از کد، به خط‌های بعدی برنامه رفته و آن‌ها را اجرا می‌کند.

function callbackFunction(name) { console.log(&quotHello &quot + name); } function outerFunction(callback) { let name = prompt(&quotPlease enter your name.&quot); callback(name); } outerFunction(callbackFunction);

۳۰- وظیفه promise در جاوا اسکریپت چی هست؟

از Promise همانند callback function برای مدیریت کردن دستورات غیر همزمان یا asynchronous استفاده می‌کنیم. منظور از دستورات غیر همزمان این است که در این نوع پردازش، زمانی که پردازشگر شروع به پردازش می‌کند، بدون اینکه منتظر اتمام پردازش اول باشد، پردازش دوم را شروع می‌کند.

const promise = new Promise(function (resolve, reject) { // promise description });

۳۱- چرا باید از promise استفاده کنیم؟

باعث می‌شود کدهای خوانا و تمیز‌تری بنویسیم، که قابلیت خطایابی و مدیریت کردن بالاتری نسبت به callback function‌ها دارد.


۳۲- سه حالت promise که در ES6 معرفی شدند چی هستند؟

- حالت pending: این حالت اولیه Promise قبل از شروع عملیات است.
- حالت Fulfilled: این حالت نشان می دهد که عملیات مشخص شده تکمیل شده است.
- حالت Rejected: این حالت نشان می‌دهد که عملیات به پایان نرسیده است در این صورت یک خطا برگردانده می‌شود.


۳۳- کال‌بک hell چی هست؟

یک آنتی پترن با چندین کال‌بک تو در تو است که خواندن و دیباگ کردن کد را هنگام برخورد با دستورات ناهمزمان یا asynchronous سخت می‌کند.

async1(function(){ async2(function(){ async3(function(){ async4(function(){ .... }); }); }); });

۳۴- قابلیت server-sent events یا SSE چی هست؟

به مرورگر این امکان را می دهد تا Updateهای ارسالی از طرف سرور را دریافت کند.


۳۵- چگونه اعلان‌های SSE توسط سرور دریافت می‌شود؟

ابجکت EventSource برای دریافت اعلان‌های رویداد ارسال شده توسط سرور استفاده می‌شود:

if (typeof EventSource !== &quotundefined&quot) { var source = new EventSource(&quotsse_generator.js&quot); source. = function (event) { document.getElementById(&quotoutput&quot) += event.data + &quot<br>&quot }; }

۳۶- ازکجا بفهمیم مرورگر از SSE پشتیبانی می‌کند یا خیر؟

if (typeof EventSource !== &quotundefined&quot) { // Server-sent events supported. Let's have some code here! } else { // No server-sent events supported }

۳۷- در SEE چه رویداد‌های در دسترس هستند؟

- رویداد onopen: زمانی که یک اتصال به سرور برقرار شود، اتفاق می افتد.
- رویداد : زمانی اتفاق می افتد که یک پیام دریافت شود
- رویداد : زمانی که یک خطا رخ دهد اتفاق می افتد.


۳۸- پرامیس یا promise چی هست؟

پرامیس‌ برای مدیریت کردن عملیات ناهمگام استفاده میشن.

new Promise(function (resolve, reject) { resolve(); // or reject(); });

۳۹- کاربرد resolve و reject در پرامیس چی هست؟

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


۴۰- قواعد اصلی promise در جاوا اسکریپت؟

پرامیس ابجکتی است که متد ()then. سازگار با استاندارد را ارائه می‌کند.
زمانی که پرامیس در حالت اجرا باشد می‌تواند به حالت رد شده یا تایید شده تغییر حالت دهد.
زمانی پرامیس به یکی از حالت resolve یا reject تغییر حالت داد نباید به هیچ حالت دیگری تغییر کند.


۴۱- تفاوت بین Callback و Promise چی هست؟

قبل از آنکه promise معرفی شود برای انجام چند وظیفه‌ی غیر هم زمان از callback function استفاده ی زیادی می‌شد. استفاده از callback function ها مشکلاتی نیز به همراه داشت، که یکی از این مشکلات این بود که در برخی موارد منجر به تولید کدی می‌شد، که مدیریت کردن و خطایابی آن بسیار مشکل بود و گاهی غیر قابل کنترل بود. به این کد به اصطلاح callback hell می‌گویند. در نتیجه برای جلوگیری از وقوع این مسئله promise معرفی شد.


جاوا اسکریپتjavascriptمصاحبه شغلیبرنامه نویسی
mortezamosavi@yahoo.com
شاید از این پست‌ها خوشتان بیاید