Blogs

Node Js & Express Interview Question


  1. What is the difference between Node.js and Non-blocking I/O? and why is it significant?
  2. Node.js একটি রানটাইম যা সার্ভার সাইডে জাভাস্ক্রিপ্ট কোড চালানোর ক্ষমতা দেয়। এটি V8 ইঞ্জিন ব্যবহার করে, যা গুগল ক্রোমে ব্যবহারিত হয়। অন্যদিকে Non-blocking I/O হল একটি ইনপুট/আউটপুট অপারেশন কমপ্লিট পদ্ধতি যেখানে অপারেশনগুলি প্রোগ্রামের এক্সিকিউশনকে ব্লক করে না। অপারেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে, প্রোগ্রামটি অন্যান্য কাজগুলি চালিয়ে যায়। Node.js , Non-blocking I/O ব্যবহার করে স্কেল্যাবেল পাওয়ারফুল প্রোগ্রাম তৈরী করতে পারেWhat is the Event loop in Node.js and what are Its key features?
  3. Node.js এর ইভেন্ট লুপ গুরুত্বপূর্ণ  যা এর ইভেন্ট-চালিত আর্কিটেকচারের জন্য দায়ী। এটি একটি সিঙ্গেল থ্রেড যা একাধিক I/O অপারেশন পরিচালনা করে এবং অপারেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে অন্য কোড চালায়। ইভেন্ট লুপ বিভিন্ন ইভেন্টের জন্য অপেক্ষা করে এবং এগুলিকে একটি কলব্যাক ফাংশনের সাথে যুক্ত করে। যখন একটি ইভেন্ট সম্পূর্ণ হয় , ইভেন্ট লুপ কলব্যাক ফাংশনটি চালায় এবং queue ব্যবহার করে  নতুন ইভেন্টের জন্য চেক করে আর এভাবে পরের ইভেন্টের জন্য কলব্যাক চালায়।  Node.js এর ইভেন্ট লুপ অনেক পাওয়ারফুল এবং স্কেল্যাবেল সার্ভার-সাইড অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে, যা একসাথে অনেক ইভেন্ট হ্যান্ডেল করতে পারেHow Node.js handles multiple tasks even after being single-threaded?
  4. Node.js সিঙ্গেল-থ্রেডেড হলেও এটি একাধিক কাজ পরিচালনা করতে ইভেন্ট লুপ এবং নন-ব্লকিং I/O মডেল ব্যবহার করে। যখন কোনো I/O অপারেশন শুরু হয়, Node.js সেই অপারেশনটি ব্যাকগ্রাউন্ডে পাঠিয়ে দেয় এবং ইভেন্ট লুপটি অন্য কাজগুলি চালিয়ে যেতে থাকে। অপারেশনটি শেষ হলে, ঐ কলব্যাক ফাংশন ইভেন্ট কিউতে যোগ করা হয় এবং ইভেন্ট লুপ সেই কলব্যাকটি ইমপ্লিমেন্ট করে। এই পদ্ধতিতে, Node.js সিঙ্গেল থ্রেডের মধ্যে থেকেও সমান্তরালভাবে একাধিক কাজ করতে পারে।


  1. What are Node.js and asynchronous programming? and how does it create a non-blocking user interface?
  2. Node.js একটি সার্ভার-সাইড জাভাস্ক্রিপ্ট রানটাইম যেটা ইভেন্ট লুপ এবং নন-ব্লকিং I/O মডেলের মাধ্যমে স্কেলেবিলিটি দেয়। অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং হল একটি প্রোগ্রামিং পদ্ধতি যেখানে অপারেশনগুলি ব্লক না করে ব্যাকগ্রাউন্ডে চালানো হয় এবং অপারেশন শেষ হলে অন্য কলব্যাক ফাংশন কার্যকর করা হয়। Node.js ইভেন্ট লুপ এবং অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং ব্যবহার করে অপারেশনগুলিকে ব্যাকগ্রাউন্ডে চালিয়ে মেইন থ্রেডটিকে ফ্রি রাখে, যার কারণে দ্রুত এবং এক্সেকিউটাবল নন-ব্লকিং ইউজার ইন্টারফেস তৈরি হয়।What are node.js streams? How does it work?
  3. Node.js স্ট্রিমগুলি হল ডেটা হ্যান্ডলিং ইন্টারফেস যা ডেটা টুকরো টুকরো করতে ব্যবহার করা হয়, বিশেষ করে বড় ডেটা সেটের ক্ষেত্রে। 
  4. স্ট্রিমগুলি চার প্রকারের হয়: 
  5. রিডেবল
  6. রাইটেবল
  7. ডুপ্লেক্স এবং 
  8. ট্রান্সফর্ম।

রিডেবল স্ট্রিমগুলি ডেটা পড়তে, রাইটেবল স্ট্রিমগুলি ডেটা লিখতে, ডুপ্লেক্স স্ট্রিমগুলি উভয়ই পড়তে এবং লিখতে এবং ট্রান্সফর্ম স্ট্রিমগুলি ডেটা পরিবর্তন করতে ব্যবহার করা হয়। স্ট্রিমগুলি ইভেন্ট-লুপ এবং অ্যাসিঙ্ক্রোনাস পদ্ধতিতে কাজ করে, যেখানে ডেটা একবারে একটি ছোট অংশ চাঙ্ক হিসেবে ব্যবহার করা হয়। এই পদ্ধতিতে, ডেটা রেডি করার সময় বড় ডেটা সেটের ক্ষেত্রে পারফরম্যান্স ভালো হয়।

  1. What is Node.js EventEmitter? 
  2. Node.js এর EventEmitter হল একটি ক্লাস যা ইভেন্ট-লুপ আর্কিটেকচারের মূল ভিত্তি। এটি বিভিন্ন ইভেন্ট তৈরি এবং পরিচালনা করতে ব্যবহার করা হয়। EventEmitter ক্লাসের মাধ্যমে আমরা ইভেন্ট ডিফাইন করতে, সেই ইভেন্টের জন্য লিসেনার বা হ্যান্ডলার সেট করতে এবং ইভেন্টগুলি ট্রিগার করতে পারি। যখন একটি ইভেন্ট ট্রিগার হয়, তখন তার লিসেনার ফাংশনগুলি এক্সেকিউট হয়। এর ফলে অ্যাপ্লিকেশনটি ইভেন্টের মাদ্ধমে নির্দিষ্ট কাজ করতে পারে, যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং এবং ইভেন্ট-লুপ এর সাহায্যে হয়।What are Node.js and Websocket? How does it work and why is it used in real-time applications?

Node.js একটি সার্ভার-সাইড জাভাস্ক্রিপ্ট রানটাইম যা ইভেন্ট-লুপ  এবং নন-ব্লকিং I/O মডেলের মাধ্যমে স্কেলেবিলিটি দেয়। WebSocket হল একটি কমিউনিকেশন প্রোটোকল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে বাইডিরেকশনাল, ফুল-ডুপ্লেক্স যোগাযোগ তৈরী করে, যার ফলে উভয় পক্ষই একসঙ্গে ডেটা সেন্ট এবং রিসিভ করতে পারে। এটি হ্যান্ডশেক এর  মাধ্যমে HTTP কানেকশন থেকে শুরু হয় এবং তারপর একটি পার্সিস্টেন্ট কানেকশন এস্টাব্লিশড করে। Node.js এবং WebSocket ব্যবহার করে রিয়েল-টাইম অ্যাপ্লিকেশন, যেমন চ্যাট অ্যাপ্লিকেশন, লাইভ নোটিফিকেশন, এবং গেমিং সার্ভার তৈরি করা হয়, যেখানে লাইভ ডেটা আপডেট এবং কম লেটেন্সি অত্যন্ত গুরুত্বপূর্ণ।Express Js Interview Question:


  1. What are the differences between app.route() and app.use()?
  2. app.route() এবং app.use() দুটি Express.js middleware ফাংশন যা রাউটিং এবং মাউন্টিং মিডলওয়েয়ের জন্য ব্যবহার হয়। app.route() দিয়ে আমরা একটি স্পেসিফিক রাউট মেথড এর জন্য একাধিক মিডলওয়েয়ার ফাংশন ডিফাইন করতে পারি এবং এটি পথের সাথে অ্যাড করতে পারি। app.use() হল একটি জেনেরিক মিডলওয়েয়ার ফাংশন যা সমস্ত হ্যান্ডলিং মিডলওয়েয়ারের জন্য ব্যবহার হয়। app.use() কে অ্যাপ্লাই করা যায় সমস্ত রাউট এবং এটি সাধারণভাবে গ্লোবাল মিডলওয়েয়ার হিসেবে কাজ করে যা একটি পথের সমস্ত হ্যান্ডলিং ফাংশনের আগে অন্য কোনো মিডলওয়েয়ার কাজ করতে পারে।What are the advantages and disadvantages of using middleware?
  3. মিডলওয়েয়ার ব্যবহারের সুবিধা এবং সমস্যাদুটোই আছে। সুবিধাগুলির মধ্যে রয়েছে কোড রিপিটেশন কম হয়, রিকোয়েস্ট বা রেস্পন্স সহজে পরিবর্তন করা, লজিং এবং বাগ হ্যান্ডলিং সহজে করা যায়। তবে তার সাথে সাথে মিডলওয়েয়ার ব্যবহারের কিছু সমস্যাও রয়েছে, যেমন কমপ্লেক্সিটি বাড়াতে পারে, কোড পড়ার সময় বেশি লাগতে পারে, এবং পারফর্মেন্স খারাপ হতে পারেHow is JSON and URL encoded body parsing done in Express?
  4. Express.js এ JSON এবং URL encoded বডি পার্সিং করার জন্য আমরা express.json() এবং express.urlencoded() মিডলওয়েয়ারগুলি ব্যবহার করি। express.json() ব্যবহার করে আমরা HTTP বডি থেকে JSON ডেটা পার্স করতে পারি এবং তা রিকোয়েস্ট অবজেক্টের req.body প্রপার্টির মধ্যে স্টোর করতে পারি। আর express.urlencoded() ব্যবহার করে আমরা URL-encoded ডেটা পার্স করতে পারি, যা রিকোয়েস্ট এর বডি থেকে ফর্ম ডেটা হিসেবে আসে এবং তা সহেজে req.body প্রপার্টির মধ্যে স্টোর করা হয়।
  5. How to create and use custom middleware in Express?
  6. Express.js এ কাস্টম মিডলওয়েয়ার তৈরি এবং ব্যবহার করার কিছু পদ্ধতি রয়েছে:  মিডলওয়েয়ার হল একটি ফাংশন যা রিকোয়েস্ট এবং রেসপন্স অবজেক্টগুলিকে পরিবর্তন করতে পারে এবং রিকোয়েস্ট প্রসেসিং পূর্বে এবং পরে অ্যাপ্লিকেশনের অপারেশনগুলির মধ্যে ইন্টারসেপ্ট করতে পারে। এটি একটি মিডলওয়েয়ার ফাংশন তৈরি করতে হলে, আমাদের ফাংশনে তিনটি প্যারামিটার দরকার হবে: request, response, এবং next। এখানে request হল রিকোয়েস্ট অবজেক্ট, response হল রেসপন্স অবজেক্ট, এবং next হল একটি ক্যালব্যাক ফাংশন যা মিডলওয়েয়ার থেকে বেরিয়ে যাওয়ার জন্য ব্যবহৃত হয়। কাস্টম মিডলওয়েয়ার ব্যবহার করতে, তা Express অ্যাপ্লিকেশনের পছন্দের রুট এর মধ্যে অ্যাড করতে হবে অথবা গ্লোবালভাবে অ্যাপ্লাই করতে হবে app.use() ফাংশন দিয়ে।What is the lifecycle of Express Middleware and how does it work?
  7. Express Middleware এর লাইফসাইকেল হল মিডলওয়েয়ার ফাংশনগুলির একটি সিকোয়েন্স, যা একটি রিকোয়েস্ট এর জন্য প্রসেসিং স্টার্ট থেকে শুরু হয় এবং রেসপন্স সম্পন্ন হওয়া পর্যন্ত চলে। এক্সপ্রেস অ্যাপ্লিকেশনে মিডলওয়েয়ার ফাংশনগুলি একত্রিত হয় এবং সম্পূর্ণ রিকোয়েস্ট প্রসেস করার জন্য চেইনিং করা হয়, যেখানে প্রতিটি মিডলওয়েয়ার নিজস্ব কাজ করে এবং পরবর্তী মিডলওয়েয়ারের জন্য next() কল করে পারে। মিডলওয়েয়ার মূলত রিকোয়েস্টের অবস্থান পরিবর্তন, রিকোয়েস্ট এর ডেটা পরিবর্তন, এবং রেসপন্স মধ্যে ডেটা সেট করার জন্য ব্যবহার হয়।
  8. How are static files served in Express?

Express.js এ স্ট্যাটিক ফাইলগুলি সার্ভ করার জন্য আমরা express.static() মিডলওয়েয়ার ব্যবহার করি। যখন আমরা এই মিডলওয়েয়ারটি অ্যাপ্লিকেশনের মধ্যে কনফিগার করি তখন একটি ডিরেক্টরির পথ সরাসরি বলে দিতে হয়। এক্সাম্পল হিসেবে , app.use(express.static('public')) যেখানে public  হল স্ট্যাটিক ফাইলগুলির ডিরেক্টরির নাম। এরপরে সার্ভার রিকোয়েস্ট পেতে যখন Express কনফিগার হবে, তখন সে এই ডিরেক্টরির সাথে মিলে স্ট্যাটিক ফাইলগুলির অ্যাক্সেস দেয় এবং তা ব্রাউজারে সার্ভ করে।

  1. What kind of tasks are required to configure a project in Express?

Express.js প্রজেক্ট কনফিগার করার জন্য প্রথমে আমাদের অ্যাপ্লিকেশনের মধ্যে Express ইন্সটল করতে হবে। এরপরে আমাদের এপ্লিকেশনের মূল ফাইলে এক্সপ্রেস ইমপোর্ট করতে হবে এবং সার্ভার পোর্ট সেট করতে হবে। এরপরে রাউটিং কনফিগার করার জন্য রাউটগুলি ডিফাইন করতে হবে, এবং যে রিকোয়েস্ট এবং রেসপন্স লজিক হবে তা প্রোগ্রাম করতে হবে। শেষে, স্ট্যাটিক ফাইলগুলির সেবা দেওয়ার জন্য প্রয়োজনীয় মিডলওয়েয়ারগুলি কনফিগার করতে হবে। এরপর আমরা yarn অথবা npm দিয়ে স্ক্রিপ্ট লিখে সার্ভ করতে পারবো। 




...

By Mostakimul Karim7/12/2024
Read More