সরাসরি পর্বে যান
পর্ব ৯০ · ৯৩-এর মধ্যে · মডিউল ১৪

MCQ প্রশ্নব্যাংক — ফুল-স্ট্যাক ওয়েব

Full-Stack Web MCQ Bank — Module-wise Questions with Every Option Explained

A practice page in Bangla with 264 full-stack web MCQs in course order, from strategy through modules 1 to 13 with links to revise each module: concept, code-output, status-code, bug-finding, tool-choice and short numerical questions, each marked easy, medium or hard, with version-dependent questions stating the version. Every option opens an explanation of why it is right or wrong, and a first-attempt score shows which module to revise.

এই পর্বে যা করবেন

  • ফুল-স্ট্যাকের MCQ কোন ছাঁচে আসে তা চেনা, আর বাদ দেওয়ার পদ্ধতিতে উত্তর বের করা
  • 400 বনাম 422, 401 বনাম 403 বনাম 404, 502 বনাম 504-এর মতো জোড়া এক নজরে আলাদা করা
  • React-এর snapshot, key, effect আর Node-এর event loop-এর কোড পড়ে আউটপুট বলা
  • N+1, pagination, cache, latency আর SMS segment-এর ছোট numerical দ্রুত করা
  • Version-নির্ভর আচরণ (Next.js 16, Prisma 7, Vitest 5, MSW 3) পুরোনো টিউটোরিয়াল থেকে আলাদা করা
  • পুরো কোর্সের প্রশ্নে নিজের দুর্বল মডিউল খুঁজে সেই পর্বে ফেরা

১ · MCQ কীভাবে সামলাবেন — প্রশ্নের ধরন, বাদ দেওয়া আর সময়

ফুল-স্ট্যাকের MCQ-তে নম্বর বেশি হারায় একটি শব্দ এড়িয়ে যাওয়ায়: “dev-এ” না “production-এ”, “server-এ” না “browser-এ”, “Next.js 14” না “Next.js 16”. ভুল অপশনগুলো জেনেশুনে বানানো, একে বলে distractor. এই কোর্সের distractor-গুলো ঘুরেফিরে কয়েকটি চেনা ভুল ধারণা থেকেই আসে: frontend-এর যাচাইকে যথেষ্ট ভাবা, পুরোনো version-এর নিয়ম, আর “চলছে, তাই ঠিক”।

পরীক্ষার প্রস্তুতি বলতে এখানে বোঝায় বিশ্ববিদ্যালয়ের Web Engineering বা Web Technologies কোর্স, চাকরির লিখিত পরীক্ষা, ইন্টারভিউর আগের ঝালাই, আর নিজের দক্ষতা মাপা। এ ধরনের প্রশ্ন প্রায়ই আসে, তবে নিজের পরীক্ষার ধরন আলাদা হতে পারে।

প্রশ্নের ছয় ছাঁচ

ধরনউদাহরণকৌশল
ধারণাLibrary বনাম framework, SSR বনাম SSGসংজ্ঞার একটি চাবি-শব্দ ধরুন: “কে কাকে ডাকে”, “কখন HTML বানানো হয়”
কোড পড়ে আউটপুটsetN(n + 1) তিনবার, event loop-এর ক্রমখাতায় প্রতিটি লাইনের পরের অবস্থা লিখুন, মাথায় নয়
কোন status codeঅন্যের order, ভুল JSON, নিয়ম ভাঙা bodyআগে প্রশ্নটির নাম দিন: পড়া গেল? কে? অনুমতি? নিয়ম?
ভুল খোঁজাCleanup নেই, await নেই, owner শর্ত নেইযা নেই তা খুঁজুন; ভুল প্রায়ই অনুপস্থিত একটি লাইন
সঠিক টুলSSE না WebSocket, select-এর বদলে includeপ্রয়োজনের দিক দেখুন: এক দিক না দুই দিক, কয়টি query
ছোট numericalN+1-এর query সংখ্যা, OFFSET-এর সারি, download সময়একক আগে লিখুন: kB না kbit, ms না s

কৌশল ১ · বাদ দেওয়ার পদ্ধতি — একটি status code প্রশ্ন ধাপে ধাপে

সঠিক উত্তর সরাসরি খোঁজার চেয়ে ভুল বাদ দেওয়া প্রায়ই সহজ। একে বলে elimination method. নিচের প্রশ্নের প্রতিটি ভুল অপশন একটি নিয়ম দিয়ে কাটুন।

  1. পরিস্থিতিIDORআগে নাম দিন
  2. পরিচয়?ক বাদlogin আছে
  3. Server ভাঙল?গ বাদভুল নয়
  4. গোপন?খ বাদ403 জানিয়ে দেয়
  5. উত্তরঘ · 404অস্তিত্ব লুকানো
প্রশ্ন (মাঝারি)বাজারঘর API
রিনা login করা ক্রেতা। তিনি
GET /orders/42 চাইলেন, কিন্তু
order 42 মিতুর। কোন order আছে,
তা বাইরের কাউকে জানানো যাবে না।
কোন status সবচেয়ে উপযুক্ত?

ক) 401
খ) 403
গ) 500
ঘ) 404
ধাপ ২ক কাটুন
401 মানে “আপনি কে, জানি না”
রিনার session বৈধ
পরিচয় জানা আছে
→ ক খাটে না
ধাপ ৩গ কাটুন
500 মানে server-এর ভুল
এখানে কোড ঠিকই চলেছে
অনুমতি যাচাই নিজেই
সিদ্ধান্ত নিয়েছে
→ গ খাটে না
ধাপ ৪খ কাটুন
403 বলে “আছে, কিন্তু আপনার নয়”
এতে order 42-এর অস্তিত্ব
ফাঁস হয়; id গুনে গুনে
কেউ অন্যের order খুঁজতে পারে
→ শর্তের সাথে খ মেলে না
ধাপ ৫উত্তর ঘ
Query-তে owner শর্ত:
where id = 42
  AND userId = রিনা
কিছু না পেলে 404
নেই আর অন্যের, বাইরে থেকে
একই রকম দেখায়
  1. আগে পরিস্থিতির নাম দিন। একজন বৈধ ব্যবহারকারী id বদলে অন্যের জিনিস চাইছেন। এটি IDOR-এর পরিস্থিতি (পর্ব ৪৮)।
  2. 401 পরিচয় না থাকার উত্তর। রিনা login করা, তাই ক বাদ (পর্ব ৩৩)।
  3. 500 শুধু server-এর অপ্রত্যাশিত ভুলে। অনুমতি না দেওয়া একটি সচেতন সিদ্ধান্ত, ভুল নয়, তাই গ বাদ (পর্ব ২৮)।
  4. 403 অস্তিত্ব জানিয়ে দেয়। সাধারণভাবে 403 যুক্তিসংগত, কিন্তু প্রশ্নের শর্ত বলছে অস্তিত্ব গোপন রাখতে হবে, তাই খ বাদ। শর্তটিই উত্তর ঠিক করে।
  5. উত্তর ঘ, 404. Owner শর্ত query-তে বসালে “নেই” আর “অন্যের” একই উত্তর দেয়। প্রতিটি ভুল অপশন একটি আলাদা ভুল ধারণা থেকে বানানো, ভালো distractor-এর এটিই চিহ্ন।

কৌশল ২ · প্রতিটি status code একটি নির্দিষ্ট প্রশ্নের উত্তর

Status code-এর MCQ-তে চারটি অপশনই প্রায়ই “ভুল কিছু হয়েছে” বোঝায়। পার্থক্য হয় প্রশ্নে: কী ব্যর্থ হলো? নিচের ছবির বাঁ দিকের প্রশ্নটি খুঁজে পেলেই ডান দিকের code বেরিয়ে আসে। এর পূর্ণ আলোচনা পর্ব ৩৩-এ, আর 502 ও 504 পর্ব ০২-এ।

কী ব্যর্থ হলো, আর কোন code

Each status code answers one narrow question; name the failure first

ব্যর্থতার প্রশ্ন আর status code নয়টি সারি। Body পড়া যায়নি হলে 400. পরিচয় নেই হলে 401. পরিচয় আছে কিন্তু অনুমতি নেই হলে 403. জিনিস নেই বা অস্তিত্ব গোপন হলে 404. পড়া গেছে কিন্তু নিয়ম ভেঙেছে হলে 422. এখনকার অবস্থার সাথে সংঘাত হলে 409. বেশি অনুরোধ হলে 429. পেছনের server খারাপ উত্তর দিলে 502. পেছন থেকে সময়মতো উত্তর না এলে 504. কী ব্যর্থ হলো Status Body পড়াই গেল না 400 পরিচয় নেই বা অবৈধ 401 পরিচয় আছে, অনুমতি নেই 403 নেই, বা অস্তিত্ব গোপন 404 পড়া গেছে, নিয়ম ভেঙেছে 422 এখনকার অবস্থার সাথে সংঘাত 409 সীমার বেশি অনুরোধ 429 পেছনের server খারাপ উত্তর দিল 502 পেছন থেকে সময়মতো এল না 504

কৌশল ৩ · Version-নির্ভর প্রশ্নে পুরোনো টিউটোরিয়ালের উত্তরই ফাঁদ

Framework-এর আচরণ version-এ বদলায়, আর পুরোনো ব্লগ বা AI-এর উত্তর প্রায়ই আগের নিয়ম বলে। প্রশ্নে version লেখা থাকলে সেটিই আসল তথ্য। এই কোর্স যা সত্যিকারের run-এ দেখেছে, তার কয়েকটি:

টুলপুরোনো ধারণাকোর্সের version-এ
Next.js 16middleware.tsনতুন নাম proxy.ts, ফাংশনও proxy (পর্ব ৫৭)
Next.js 16params.id সরাসরিparams একটি Promise, তাই await params (পর্ব ৫১)
Next.js 16fetch নিজে থেকে cache হয়Cache স্পষ্ট: "use cache", cacheLife, cacheTag; updateTag শুধু Server Action-এ (পর্ব ৫৩)
Prisma 7URL থাকে schema.prisma-য়URL config ফাইলে, client-এর সাথে driver adapter (পর্ব ৩৯)
Vitest 5mock-এর ডাক test থেকে test-এ জমেclearMocks ডিফল্টে true (পর্ব ৭৩)
MSW 3onUnhandledRequestনাম onUnhandledFrame; পুরোনো নাম নীরবে উপেক্ষিত (পর্ব ৭৭)
Next.js, Viteenv runtime-এ পড়া হয়NEXT_PUBLIC_ আর VITE_ build-এ JavaScript-এ বসে যায় (পর্ব ৭৮)

Version না লেখা থাকলে সাধারণ, স্থির নিয়মটি বাছুন (যেমন “আসল অনুমতি server-এ”), আর এমন অপশন এড়িয়ে চলুন যা শুধু একটি পুরোনো version-এ সত্য ছিল।

কৌশল ৪ · একক আগে, হিসাব পরে

বিষয়সূত্রফাঁদ
Downloadসময় = kB × 8 ÷ kbpsByte আর bit-এ ৮ গুণ; 1 Mbps = 1,000 kbps
N+1Query = 1 + N; include দিলে সাধারণত 2প্রতি সারির জন্য আলাদা query গুনতে ভুলবেন না
Offset paginationপড়া সারি ≈ OFFSET + LIMITPage যত পেছনে, খরচ তত বেশি; cursor-এ প্রায় LIMIT
Cacheগড় = hit rate × hit সময় + miss rate × miss সময়Hit rate ৯০% মানে miss ১০%, শূন্য নয়
Little's lawL = λ × WW সেকেন্ডে লিখুন, ms নয়
Pollingঅনুরোধ/সেকেন্ড = ব্যবহারকারী ÷ intervalগড় দেরি interval-এর অর্ধেক

কৌশল ৫ · Negative marking আর সময়

ধরা যাক ঠিক হলে +১, ভুলে −০.২৫. চার অপশনে অন্ধ আন্দাজের গড় লাভ +০.০৬২৫; একটি নিশ্চিতভাবে বাদ দিলে প্রায় +০.১৬৭; দুটি বাদ দিলে +০.৩৭৫. তাই একটিও বাদ দিতে পারলে আন্দাজ লাভজনক। কত কাটে বা আদৌ কাটে কি না, তা পরীক্ষাভেদে আলাদা; নিজের পরীক্ষার নিয়ম দেখে নিন।

সময় ভাগ করুন দুই দফায়: প্রথমে ধারণার প্রশ্ন; কোড পড়া বা numerical লাগলে চিহ্ন দিয়ে এগিয়ে যান। পরে চিহ্নিতগুলো, খাতায় প্রতিটি ধাপ লিখে।

বারোটি বড় ফাঁদ

ফাঁদভুল ধারণাসঠিক কথা
State“setN(n + 1) তিনবার মানে +৩”একই render-এর snapshot, তাই +১; updater দিলে +৩ (পর্ব ১০)
Key“Index দিয়ে key দিলেই হলো”সারি সরলে state ভুল সারিতে যায়; স্থির id দিন (পর্ব ১১)
Effect“Dev-এ দুবার চলা মানে bug”StrictMode cleanup পরীক্ষা করে, production-এ হয় না (পর্ব ১৩)
যাচাই“Form-এ Zod আছে, তাই API নিরাপদ”Server-এ আবার যাচাই লাগে (পর্ব ২৭)
CORS“CORS server-কে রক্ষা করে”প্রয়োগ করে browser; curl-এ CORS নেই (পর্ব ৫০)
JWT“JWT encrypted”সই আছে, কিন্তু payload পড়া যায় (পর্ব ৪৬)
লুকানো বোতাম“Admin বোতাম লুকিয়েছি”API সরাসরি ডাকা যায়; server-এ অনুমতি (পর্ব ৪৮)
Server Action“Server-এ চলে, তাই নিরাপদ”এটি একটি public endpoint; ভেতরে auth আর যাচাই (পর্ব ৫৪)
ORM“ORM ব্যবহার করছি, তাই query কম”Loop-এ query মানে N+1 (পর্ব ৪২)
Stock“আগে পড়ি, তারপর লিখি”দুই অনুরোধ একসাথে এলে oversell; শর্তসহ update বা transaction (পর্ব ৪৩)
Env“Container-এর env বদলালে browser নতুন মান পাবে”NEXT_PUBLIC_ build-এর সময় বসে যায় (পর্ব ৭৮)
Test“Test সবুজ, তাই ঠিক”ভুল option নামে mock নীরবে কাজ না-ও করতে পারে (পর্ব ৭৭)

এই পাতার প্রশ্নগুলো সম্পর্কে: প্রশ্নগুলো এই কোর্সের জন্য নতুন করে লেখা, এ ধরনের প্রশ্ন প্রায়ই আসে এমন ধারণা থেকে। কোনোটিই কোনো নির্দিষ্ট পরীক্ষা, বিশ্ববিদ্যালয় বা প্রতিষ্ঠানের আসল প্রশ্ন নয়। “বাজারঘর” একটি কাল্পনিক দোকান, আর সব টাকার অঙ্ক ও গতি ধরে নেওয়া। Version-নির্ভর তথ্য কোর্সের পর্বগুলোর সত্যিকারের run থেকে নেওয়া, লেখার সময়ের version-এ (React 19.3, Next.js 16.4, Express 5.3, Prisma 7.10.1, Vitest 5.1, Playwright 1.64); নতুন version-এ বদলাতে পারে। পূর্ণ সমাধানের numerical পর্ব ৮৯-এ; কারণসহ লিখিত উত্তর পর্ব ৯১-এ, আর ইন্টারভিউর প্রশ্ন পর্ব ৯২ ও ৯৩-এ।

২ · মডিউল ১ — ফুল-স্ট্যাকের মানচিত্র (১৮টি প্রশ্ন)

মডিউল ১ — ফুল-স্ট্যাকের মানচিত্র (১৮টি প্রশ্ন)

অনুরোধের পথ, rendering-এর দুই অক্ষ, architecture, কাজের পরিবেশ আর TypeScript. নম্বর বেশি হারায় 502 বনাম 504, SPA বনাম CSR আর “type চলার সময়ও থাকে” ধরনের ভুলে; ঝালিয়ে নিন পর্ব ০২, পর্ব ০৩ আর পর্ব ০৬.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ০১–০৬

(সহজ) Express-এ আপনি শুধু একটি route function লিখে দেন; কখন সেটি ডাকা হবে, তা ঠিক করে Express নিজে। এই নীতির নাম কী?

  • Separation of concerns
  • Declarative UI
  • Inversion of control
  • Leaky abstraction

(মাঝারি) একটি React bundle gzip-এর পরে 150 kB (kB = 1000 byte). 5 Mbps সংযোগে শুধু নামাতে, অন্য সব সময় বাদ দিয়ে, কত লাগবে?

  • 0.24 সেকেন্ড
  • 0.03 সেকেন্ড
  • 2.4 সেকেন্ড
  • 240 সেকেন্ড

(সহজ) বাজারঘরের checkout-এ coupon-এর ছাড় React কোডে হিসাব করে মোট দাম API-তে পাঠানো হয়। কেউ curl দিয়ে মোট ১ টাকা পাঠালেন। সঠিক সমাধান কোনটি?

  • JavaScript minify করে হিসাব লুকানো
  • CORS কড়া করে অন্য origin বন্ধ করা
  • Frontend-এ আরও কড়া validation যোগ করা
  • Server-এ database-এর দাম থেকে মোট আবার হিসাব করা

(সহজ) Reverse proxy ৬০ সেকেন্ড অপেক্ষা করেও পেছনের app থেকে কোনো উত্তর পেল না। Browser কোন status দেখবে?

  • 502 Bad Gateway
  • 504 Gateway Timeout
  • 500 Internal Server Error
  • 408 Request Timeout

(মাঝারি) নতুন TCP সংযোগ আর TLS 1.3, RTT 30 ms. সংযোগ তৈরিতে TCP-র এক RTT আর TLS-এর এক RTT লাগে, তারপর অনুরোধ যাওয়া-আসায় আরেক RTT, আর server-এর কাজ 120 ms. TTFB প্রায় কত?

  • 120 ms
  • 180 ms
  • 210 ms
  • 300 ms

(মাঝারি) ১০০টি অনুরোধের ৯৫টি 20 ms-এ আর ৫টি 400 ms-এ শেষ হলো। গড় আর p99 কত?

  • গড় 39 ms, p99 400 ms
  • গড় 210 ms, p99 400 ms
  • গড় 39 ms, p99 20 ms
  • গড় 20 ms, p99 39 ms

(সহজ) কোন বক্তব্যটি সঠিক?

  • SPA আর CSR একই জিনিসের দুই নাম
  • SSR পাতায় কোনো JavaScript লাগে না
  • SSG প্রতিটি অনুরোধে HTML বানায়
  • SPA, MPA বলে navigation-এর কথা; CSR, SSR, SSG বলে HTML তৈরির কথা

(মাঝারি) দিনে ২০ লাখ অনুরোধ আসে। CDN-এর hit rate ৯৫% থেকে ৯৯% হলো। Origin-এ দিনে অনুরোধ কত থেকে কত হলো?

  • ১৯ লাখ থেকে ১৯.৮ লাখ
  • ১ লাখ থেকে ২০ হাজার
  • ১ লাখ থেকে ৯৬ হাজার
  • ৫০ হাজার থেকে ১০ হাজার

(মাঝারি) বাজারঘরের “আমার অর্ডার” পাতায় লগইন করা ব্যবহারকারীর তথ্য থাকে। উত্তরের জন্য কোন Cache-Control সবচেয়ে নিরাপদ?

  • public, max-age=3600
  • s-maxage=60
  • private, no-store
  • public, max-age=31536000, immutable

(মাঝারি) একটি অর্ডারে ৪টি সেবা পরপর লাগে, প্রতিটির availability ৯৯.৫%, ব্যর্থতা স্বাধীন, আর চারটিই লাগবে। পুরো পথের availability প্রায় কত?

  • প্রায় ৯৮.০%
  • ৯৯.৫%
  • প্রায় ৯৯.০%
  • ৯৯.৫%-এর বেশি

(সহজ) বাজারঘরের mobile app-এর জন্য আলাদা একটি backend বানানো হলো, যা কয়েকটি সেবার ডেটা জুড়ে ঠিক সেই app-এর পর্দার মতো করে পাঠায়। এই pattern-এর নাম কী?

  • API gateway
  • BFF (Backend for Frontend)
  • Modular monolith
  • Repository

(মাঝারি) একটি Express route handler ২০০ লাইনের: SQL লেখে, দাম আর ছাড় হিসাব করে, email পাঠায়, HTML-এর উত্তর বানায়। এই anti-pattern আর তার প্রচলিত সারাই কোনটি?

  • God component; সব logic একটি React component-এ নেওয়া
  • Circular dependency; import-এর ক্রম বদলানো
  • Distributed monolith; প্রতিটি কাজকে আলাদা microservice করা
  • Fat controller; নিয়ম service-এ আর ডেটা repository-তে সরানো

(কঠিন) package.json-এ range ^0.4.2. নিচের কোন version এই range-এ পড়ে?

  • 0.5.0
  • 1.0.0
  • 0.4.9
  • 0.4.1

(সহজ) CI-তে dependency বসানোর জন্য npm ci কেন ভালো?

  • Lockfile হুবহু মানে আর অমিল হলে থেমে যায়
  • প্রতিবার lockfile নতুন version দিয়ে আপডেট করে
  • সব package-এর সর্বশেষ version নামায়
  • devDependency কখনো বসায় না

(মাঝারি) একটি Vite project-এর .env-এ VITE_PAY_SECRET=example-secret লিখে client কোডে import.meta.env দিয়ে পড়া হলো। Production build-এর পরে কী হবে?

  • মানটি শুধু server-এ থাকবে, client-এ undefined
  • মানটি JavaScript bundle-এ ঢুকে সবার কাছে পৌঁছাবে
  • Vite মানটি encrypt করে bundle-এ রাখবে
  • Build error দিয়ে থেমে যাবে

(মাঝারি) TypeScript strict mode-এ নিচের কোড compile ও চালালে কী হবে?

const x: any = JSON.parse('{"p":1}');
console.log(x.price.toFixed(2));
  • Compile error: x-এ price নেই
  • 0.00 ছাপবে
  • undefined ছাপবে
  • Compile হবে, চলার সময় TypeError আসবে

(মাঝারি) নিচের কোড strict mode-এ compile হয়। চালালে কী ছাপবে?

const o = JSON.parse('{"qty":"2"}') as { qty: number };
console.log(o.qty + 2);
  • 22
  • 4
  • NaN
  • চলার সময় TypeError

(সহজ) নিচের কোন কাজ interface দিয়ে করা যায় না, কিন্তু type দিয়ে যায়?

  • একই নামে দুবার লিখে ঘর জোড়া লাগানো
  • একটি optional ঘর রাখা
  • 'paid' | 'due' ধরনের union লেখা
  • অন্য একটি আকার থেকে ঘর নিয়ে বাড়ানো

৩ · মডিউল ২ — React-এর ভিত্তি (২৭টি প্রশ্ন)

মডিউল ২ — React-এর ভিত্তি (২৭টি প্রশ্ন)

এখানে বেশিরভাগ প্রশ্ন কোড পড়ে ফল বলার। নম্বর হারায় snapshot আর batching-এ (পর্ব ১০), 0 &&-এর ফাঁদে (পর্ব ০৮), index key-এ (পর্ব ১১) আর effect-এর cleanup ও stale closure-এ (পর্ব ১৩)।

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ০৭–১৫

(মাঝারি) main.tsx-এ <StrictMode> আছে, আর পাতায় দুটি <T />. vite build-এর production build-এ প্রথম পর্দায় কী দেখা যাবে?

let n = 0;
function T() {
  n = n + 1;
  return <p>{n}</p>;
}
  • 2, 4
  • 1, 2
  • 1, 1
  • Error: render-এ বাইরের ভ্যারিয়েবল বদলানো যাবে না

(সহজ) React component-এর নাম কেন বড় হাতের অক্ষরে (PascalCase) শুরু করতে হয়?

  • বড় হাতের নাম দ্রুত render হয়
  • শুধু ESLint-এর পছন্দের রীতি, ফলে কোনো পার্থক্য নেই
  • TypeScript ছোট হাতের নাম compile করতে পারে না
  • ছোট হাতের নাম JSX-এ HTML ট্যাগ হিসেবে ধরা হয়

(মাঝারি) নিচের কোন কাজ একটি component-এর render-এর ভেতরে রাখলে component আর pure থাকে না?

  • Module-এর বাইরের একটি counter বাড়ানো
  • props-এর দাম থেকে মোট হিসাব করা
  • এই render-এ বানানো নতুন array-তে push করা
  • Intl দিয়ে দাম বাংলায় সাজানো

(মাঝারি) items একটি খালি array. <div>{items.length && <Cart />}</div> পর্দায় কী আঁকবে?

  • কিছুই না, div খালি থাকবে
  • Cart component
  • একটি 0
  • Error: number child দেওয়া যায় না

(মাঝারি) Automatic JSX runtime-এ <p className="dam">চাল</p> compile হয়ে মোটামুটি কোন ডাক হয়?

  • document.createElement("p")
  • React.createElement("p", "dam", "চাল")
  • jsx("p", { class: "dam" }, "চাল")
  • jsx("p", { className: "dam", children: "চাল" })

(সহজ) ব্যবহারকারীর লেখা review comment দেখাতে হবে। নিচের কোনটি XSS-এর ঝুঁকি তৈরি করে?

  • <div dangerouslySetInnerHTML={{ __html: comment }} />
  • <p>{comment}</p>
  • <p title={comment}>রিভিউ</p>
  • <p>{comment.toUpperCase()}</p>

(মাঝারি) function Badge({ label = "নতুন" }). কোন ডাকে ভেতরে label-এর মান "নতুন" হবে?

  • <Badge label={null} />
  • <Badge label="" />
  • <Badge label={undefined} />
  • <Badge label={0} />

(সহজ) একটি Button component-এ ৬টি স্বাধীন boolean prop আছে। মোট কয় রকম অবস্থা তৈরি হতে পারে?

  • ১২
  • ৬৪
  • ৩৬
  • ৩২

(মাঝারি) Parent-এর state বদলাল। তার Child কোনো prop পায় না, আর memo নেই। কোনটি ঠিক?

  • Child ফাংশন আবার চলবে, কিন্তু পার্থক্য না থাকলে DOM বদলাবে না
  • Child চলবে না, কারণ তার props বদলায়নি
  • Child-এর পুরো DOM মুছে নতুন করে বসবে
  • Child unmount হয়ে তার state হারাবে

(কঠিন) n শুরুতে 1. এক ক্লিকে handler-এ নিচের তিন লাইন চলে। পরের render-এ n কত?

setN(n + 2);
setN(n + 2);
setN(x => x * 3);
  • 15
  • 3
  • 9
  • 5

(মাঝারি) নিচের বোতামে কী ভুল আছে?

<button onClick={addToCart(item.id)}>
  কার্টে যোগ
</button>
  • onClick-এর বদলে onclick লিখতে হবে
  • addToCart render-এর সময়ই চলে, ক্লিকে নয়
  • button-এ onClick দেওয়া যায় না
  • Handler-এ কোনো argument পাঠানো যায় না

(মাঝারি) user একটি object state. Handler-এ user.city = "খুলনা"; setUser(user); লেখার পরে পর্দা বদলায় না। সঠিক সারাই কোনটি?

  • setUser(user) দুবার ডাকা
  • user-কে useRef-এ রাখা
  • forceUpdate-এর মতো কোনো উপায়ে render ঘটানো
  • setUser({ ...user, city: "খুলনা" })

(কঠিন) চাল, ডাল, তেল: তিন সারি, key হিসেবে index, প্রতিটিতে uncontrolled input. ব্যবহারকারী ডালের সারিতে “২ কেজি” লিখলেন, তারপর চালের সারি মুছে দেওয়া হলো। “২ কেজি” এখন কোন পণ্যের পাশে?

  • ডাল
  • চাল
  • তেল
  • লেখাটি মুছে যাবে

(সহজ) একটি অর্ডারের লাইনের list-এ কোনটি সবচেয়ে খারাপ key?

  • line.id
  • Math.random()
  • item.sku
  • `${order.id}-${line.no}`

(মাঝারি) একটি list-এর জন্য চারটি boolean: isLoading, isError, isEmpty, isSuccess. নিয়ম: যেকোনো সময় ঠিক একটি true. কয়টি মিশ্রণ অবৈধ?

  • ১২
  • ৪
  • ১১
  • ১৬

(সহজ) <input type="number">-এ ব্যবহারকারী 5 লিখলেন। Handler-এ const qty = e.target.value; console.log(qty + 1); কী ছাপবে?

  • 6
  • NaN
  • undefined1
  • 51

(মাঝারি) React 19-এ submit চলার সময় বোতাম বন্ধ রাখতে useFormStatus() কোথায় ডাকতে হবে?

  • যে component <form action> render করে, তার ভেতরেই
  • Form-এর ভেতরে বসানো একটি আলাদা child component-এ
  • App-এর root component-এ
  • onSubmit handler-এর ভেতরে

(সহজ) একটি input-এ value={name} আছে, কিন্তু onChange নেই। ব্যবহারকারী টাইপ করলে কী হবে?

  • লেখা ঢুকবে, আর name নিজে থেকেই বদলাবে
  • অ্যাপ crash করবে
  • ঘরটি read-only-র মতো আচরণ করবে, dev-এ warning আসবে
  • এটি uncontrolled input হয়ে DOM নিজে মান রাখবে

(মাঝারি) StrictMode ছাড়া (production build) একটি component-এর id প্রথমে 1, পরে 2 হলো। Console-এ কোন ক্রম আসবে?

useEffect(() => {
  console.log("setup", id);
  return () => console.log("cleanup", id);
}, [id]);
  • setup 1, cleanup 1, setup 2
  • setup 1, cleanup 2, setup 2
  • setup 1, setup 2, cleanup 1
  • setup 1, cleanup 1, setup 1, cleanup 1, setup 2

(কঠিন) useEffect(() => { const t = setInterval(() => setN(n + 1), 1000); return () => clearInterval(t); }, []); — কয়েক সেকেন্ড পরেও পর্দায় 1. সবচেয়ে ভালো সারাই কোনটি?

  • Dependency array থেকে [] সরিয়ে দেওয়া
  • useEffect-এর বদলে useLayoutEffect
  • Cleanup সরিয়ে দেওয়া
  • setN(x => x + 1) লেখা

(মাঝারি) Search বাক্সে দ্রুত লেখার সময় পুরোনো শব্দের দেরিতে আসা উত্তর নতুন ফল ঢেকে দিচ্ছে। কোন উপায় সমস্যাটির মূল ঠিক করে?

  • শুধু debounce যোগ করা
  • Effect-এর cleanup-এ AbortController দিয়ে আগের অনুরোধ বাতিল
  • useLayoutEffect-এ fetch করা
  • প্রতিটি উত্তর বসানোর আগে setTimeout দিয়ে অপেক্ষা

(মাঝারি) নিচের component-এ কী ভুল?

function Price({ product }) {
  if (!product) return null;
  const [qty, setQty] = useState(1);
  return <p>{product.price * qty}</p>;
}
  • কিছু render-এ useState ডাকা হবে না, তাই hook-এর ক্রম বদলাবে
  • Component null ফেরত দিতে পারে না
  • JSX-এর ভেতরে গুণ করা যায় না
  • useState-এ শুরুর মান দেওয়া যায় না

(মাঝারি) একটি হিসাবে 15 ms লাগে। Component ৩০০ বার render হলো, নির্ভরতা বদলাল ৬ বার। useMemo দিলে, মেলানোর খরচ বাদে, হিসাবে মোট কত সময় যাবে?

  • 4500 ms
  • 15 ms
  • 90 ms
  • 4590 ms

(মাঝারি) বোতামটি তিনবার চাপা হলো, আর অন্য কোনো কারণে re-render হয়নি। Console আর পর্দায় কী দেখা যাবে?

function Likes() {
  const r = useRef(0);
  const up = () => { r.current += 1; console.log(r.current); };
  return <button onClick={up}>{r.current}</button>;
}
  • Console 1, 2, 3; পর্দায় 3
  • Console 1, 1, 1; পর্দায় 0
  • Error: ref বদলানো যায় না
  • Console 1, 2, 3; পর্দায় 0

(কঠিন) {isVip ? <Counter /> : <Counter />} — একই জায়গায়, key ছাড়া। Counter-এ 5 পর্যন্ত গোনার পরে isVip উল্টে গেল। Counter-এর state কী হবে?

  • শূন্য থেকে শুরু হবে, কারণ শাখা বদলেছে
  • 5-ই থাকবে
  • Error দেবে
  • দুটি আলাদা Counter পাশাপাশি দেখাবে

(কঠিন) স্থায়ী key-সহ list [A, B, C, D] থেকে [B, C, D, A] হলো। React-এর সামনে থেকে হাঁটা lastPlacedIndex নিয়মে কয়টি DOM node সরবে?

  • ১টি: A
  • ৩টি: B, C, D
  • ৪টি, সবই নতুন করে তৈরি হবে
  • কোনোটিই নয়

(মাঝারি) React 19-এ createRoot দিয়ে চালানো একটি অ্যাপে setTimeout-এর ভেতরে পরপর setA(1) আর setB(2) ডাকা হলো। সাধারণ অবস্থায় কতবার render হবে?

  • দুবার, প্রতিটি update-এ একবার
  • একবারও নয়, timeout-এ state বদলায় না
  • একবার
  • চারবার

৪ · মডিউল ৩ — বড় React অ্যাপ (২৪টি প্রশ্ন)

মডিউল ৩ — বড় React অ্যাপ (২৪টি প্রশ্ন)

State কোথায় থাকবে, কোন টুল কখন, আর কোন ঘড়িতে cache পুরোনো হয়। নম্বর বেশি হারায় staleTime বনাম gcTime, selector-এ নতুন object আর error boundary কী ধরে না, সেখানে। ঝালিয়ে নিন পর্ব ১৬, পর্ব ১৯ আর পর্ব ২৩.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ১৬–২৩

(সহজ) বাজারঘরের একটি dropdown খোলা না বন্ধ, সেই মান শুধু dropdown নিজেই ব্যবহার করে। মানটি কোথায় রাখা সবচেয়ে ভালো?

  • Redux store-এ, যাতে সবাই দেখতে পায়
  • Dropdown component-এর নিজের useState-এ
  • URL-এর query string-এ
  • TanStack Query-র cache-এ

(মাঝারি) বাজারঘরের পণ্যের তালিকায় ক্রেতা “দাম: কম থেকে বেশি” আর “বিভাগ: চাল” বাছলেন। লিংকটি বন্ধুকে পাঠালে তিনিও যেন একই তালিকা দেখেন, আর Back চাপলে আগের বাছাই ফেরে। এই মান কোথায় রাখা সবচেয়ে ভালো?

  • তালিকা component-এর useState-এ
  • Redux store-এ
  • localStorage-এ
  • URL-এর search params-এ, যেমন ?sort=price&cat=rice

(সহজ) কোন জিনিসটি browser-এর localStorage-এ রাখা সবচেয়ে বড় ভুল?

  • ব্যবহারকারীর password বা গোপন token
  • Dark না light theme
  • ঝুড়ির পণ্যের id আর পরিমাণ
  • পছন্দের ভাষা, বাংলা না English

(মাঝারি) একটি reducer inc action-এ count এক বাড়ায়। এখন count 3. একটি click handler-এ পরপর দুবার dispatch({ type: 'inc' }) ডাকা হলো। পরের render-এ count কত?

  • 3
  • 4
  • 5
  • Error, এক handler-এ একবারের বেশি dispatch চলে না

(সহজ) React 19-এ একটি context-এর মান নিচের component-গুলোকে দেওয়ার নতুন সরল লেখা কোনটি?

  • শুধু createContext-এর default মান বদলানো
  • নিচের component-এ use(ThemeContext, 'dark') লেখা
  • <ThemeContext value="dark"> দিয়ে মুড়িয়ে দেওয়া
  • window.theme-এ মান রাখা

(কঠিন) Cart-এর state আর dispatch দুটি আলাদা context-এ। AddButton শুধু CartDispatchContext পড়ে, আর provider-এর ভেতরে children হিসেবে বসানো। Cart-এ পণ্য বাড়লে AddButton-এর কী হবে?

  • আবার render হবে না
  • সব context consumer-এর মতো আবার render হবে
  • শুধু memo দিয়ে মুড়লে তবেই render বাঁচবে
  • দুই context থাকায় React error দেবে

(মাঝারি) একটি Zustand store-এ ঝুড়ি, মেনু আর ব্যবহারকারী আছে। একটি component লিখেছে const all = useStore((s) => s), যদিও সে শুধু ঝুড়ির সংখ্যা দেখায়। ফল কী?

  • শুধু ঝুড়ি বদলালে render হবে
  • Maximum update depth exceeded error
  • Provider না থাকায় কিছুই দেখাবে না
  • মেনু বা ব্যবহারকারী বদলালেও render হবে

(মাঝারি) Redux Toolkit-এর createSlice-এর একটি reducer-এ লেখা state.lines.push(action.payload), কিছু return নেই। কোনটি ঠিক?

addLine(state, action) {
  state.lines.push(action.payload);
}
  • Bug: state সরাসরি বদলে যাচ্ছে, UI আপডেট হবে না
  • ঠিক আছে, Immer এটি থেকে নতুন state বানাবে
  • Error, কারণ reducer কিছু ফেরত দেয়নি
  • push শুধু thunk-এর ভেতরে চলে

(সহজ) Redux-এর তিন মূলনীতির মধ্যে কোনটি পড়ে না?

  • Component state সরাসরি বদলাতে পারে
  • একটিই store, সত্যের এক উৎস
  • State শুধু পড়ার জন্য
  • বদল করে pure reducer

(মাঝারি) TanStack Query v5-এ একটি query-তে retry: 2 দেওয়া, delay default (প্রতি চেষ্টায় দ্বিগুণ, ১ সেকেন্ড থেকে)। Server সবসময় 503 দেয়। মোট কয়টি অনুরোধ যাবে, আর network-এর সময় বাদে কত সেকেন্ড অপেক্ষা?

  • ৪টি, ৭ সেকেন্ড
  • ২টি, ১ সেকেন্ড
  • ৩টি, ৩ সেকেন্ড
  • ৩টি, ৪ সেকেন্ড

(মাঝারি) TanStack Query-র default বিন্যাসে (staleTime 0, gcTime ৫ মিনিট) পণ্যের পাতা বন্ধ করে ২ মিনিট পরে আবার খোলা হলো। কী ঘটবে?

  • Cache মুছে গেছে, তাই আবার loading spinner
  • পুরোনো ডেটা সাথে সাথে দেখাবে, পেছনে নতুন করে আনবে
  • পুরোনো ডেটা দেখাবে, কোনো অনুরোধ যাবে না
  • gcTime-এর কারণে error দেখাবে

(মাঝারি) Category বদলালেও পণ্যের তালিকা বদলাচ্ছে না। Bug কোথায়?

useQuery({
  queryKey: ['products'],
  queryFn: () => fetchProducts(category),
});
  • staleTime খুব কম
  • queryFn-কে arrow function লেখা যায় না
  • fetch-টি useEffect-এ সরাতে হবে
  • queryKey-তে category নেই

(সহজ) React Router-এর অ্যাপে মেনুতে সাধারণ <a href="/cart"> লেখা হলো, <Link> নয়। Click করলে কী হয়?

  • Router নিজে click ধরে, তাই কোনো পার্থক্য নেই
  • কিছুই হয় না, URL বদলায় না
  • React error দেয়
  • পুরো পাতা নতুন করে load হয়, React-এর state হারায়

(মাঝারি) React Router Data mode-এ /account/orders খুললে দুটি route মেলে: parent-এর loader ৩০০ ms, child-এর loader ২০০ ms নেয়। দুটির ডেটা প্রায় কতক্ষণে তৈরি?

  • ৫০০ ms
  • ৩০০ ms
  • ২০০ ms
  • Render শেষে useEffect-এ আনা হয়, তাই সময় অজানা

(মাঝারি) cPanel-এর Apache-এ তোলা React SPA-তে /products/3 সরাসরি খুললে 404. সঠিক সমাধান কোনটি?

  • Route-এর path ছোট হাতের অক্ষরে লেখা
  • প্রতিটি পণ্যের জন্য আলাদা HTML ফাইল রাখা
  • .htaccess-এ অচেনা path-কে index.html-এ পাঠানো
  • সব Link-কে navigate() দিয়ে বদলানো

(মাঝারি) React Hook Form-এর একটি ২০ ঘরের form প্রতিটি টাইপে পুরো render হচ্ছে। সবচেয়ে সম্ভাব্য কারণ কোনটি?

  • Form-এর ওপরের অংশে watch() ডাকা হয়েছে
  • ঘরগুলো register দিয়ে যুক্ত
  • handleSubmit ব্যবহার করা হয়েছে
  • zodResolver বসানো হয়েছে

(সহজ) একটি Zod schema থেকে TypeScript type আলাদা করে না লিখে পেতে কোনটি ব্যবহার হয়?

  • schema.safeParse()
  • z.infer<typeof schema>
  • ঘরটিকে any ঘোষণা করা
  • JSON.parse(schema)

(কঠিন) Checkout form একই Zod schema দিয়ে client আর server দুই দিকে যাচাই করে। Body-তে price: 1 আসে, schema-য় price একটি ধনাত্মক সংখ্যা। কোন নকশা ঠিক?

  • Server database থেকে দাম নেবে, client-এর price উপেক্ষা করবে
  • Schema পাশ করেছে, তাই দাম মেনে নেওয়া
  • Client-এ যাচাই থাকায় server-এ কিছু লাগবে না
  • Schema-য় price-এর ন্যূনতম মান ১০০ করা

(মাঝারি) একটি বোতামের লেখার relative luminance 0.2, পটের 1. Contrast ratio = (Lবড় + 0.05) ÷ (Lছোট + 0.05). WCAG AA-তে ফল কী?

  • 5:1, সাধারণ লেখায় পাশ
  • 4.2:1, কোনো লেখাতেই পাশ নয়
  • 4.2:1, সাধারণ লেখায় পাশ
  • 4.2:1, শুধু বড় লেখায় পাশ

(মাঝারি) Tailwind v4 project-এ একটি div-এ class="promo p-4". index.css-এ কোনো @layer ছাড়া লেখা .promo { padding: 2rem }. Padding কত হবে?

  • 16px, কারণ utility সবসময় জেতে
  • দুটি যোগ হয়ে 48px
  • 32px
  • HTML-এ যে class আগে লেখা, সেটি

(সহজ) একটি Button-এর নিজের class px-4, আর বাইরে থেকে className="px-2" আসে। বাইরেরটি যেন নিশ্চিত জেতে, কোন টুল এই সংঘাত মেটায়?

  • শুধু clsx
  • CSS Modules
  • tailwind-merge
  • প্রতিটি class-এ !important

(মাঝারি) পণ্যের পাতার চারপাশে একটি error boundary আছে। নিচের কোন error এটি ধরবে না?

  • ছবির component render-এর সময় throw করল
  • দামের component-এ null-এর property পড়তে গিয়ে render-এ error
  • তালিকার একটি নাতি component render-এ ভাঙল
  • “ঝুড়িতে দিন” বোতামের onClick-এ throw

(মাঝারি) ধরুন ধীর ফোনে network 250 kB/s আর JavaScript চালাতে 2 ms/kB লাগে। অন্য খরচ বাদে 3,000 ms বাজেটে সর্বোচ্চ কত kB JavaScript পাঠানো যায়?

  • 500 kB
  • 1,500 kB
  • 750 kB
  • 250 kB

(মাঝারি) নিচের code splitting চালালে admin route-এ error আসে। Admin.jsx-এ লেখা আছে export function Admin() {…}. কারণ কী?

const Admin = lazy(() => import('./Admin.jsx'));
// <Suspense fallback={<Spinner />}><Admin /></Suspense>
  • Suspense-এর fallback ভুল জায়গায়
  • lazy default export চায়, এখানে named export
  • lazy component-এর ভেতরে ঘোষণা করা উচিত ছিল
  • Vite dynamic import সমর্থন করে না

৫ · মডিউল ৪ — Node.js আর Express backend (২৪টি প্রশ্ন)

মডিউল ৪ — Node.js আর Express backend (২৪টি প্রশ্ন)

Event loop-এর ক্রম, middleware-এর সারি, যাচাই আর error-এর পথ। নম্বর বেশি হারায় nextTick বনাম promise, “params সবসময় string”, Express 5-এর async error আর 400, 413, 415, 422-এর পার্থক্যে। ঝালিয়ে নিন পর্ব ২৪, পর্ব ২৬ আর পর্ব ২৮.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ২৪–৩১

(মাঝারি) Node.js 24-এ নিচের CommonJS ফাইল চালালে কী ছাপা হবে?

const fs = require('node:fs');
fs.readFile(__filename, () => {
  setTimeout(() => console.log('T'), 0);
  setImmediate(() => console.log('I'));
  Promise.resolve().then(() => console.log('P'));
  process.nextTick(() => console.log('N'));
  console.log('S');
});
  • S P N T I
  • N P S I T
  • S N P I T
  • S N P T I

(সহজ) একটি node:http handler res.writeHead(200) আর res.write('ok') ডাকল, কিন্তু res.end() ডাকল না। Client কী দেখবে?

  • উত্তর শেষ হয় না, request ঝুলে থাকে
  • Node নিজে end ডেকে ok পাঠায়
  • 500 Internal Server Error
  • কোনো header-ই যায় না

(মাঝারি) একটি API সেকেন্ডে ৬০টি request পায়, আর প্রতিটির মোট সময় (অপেক্ষাসহ) ২০০ ms. Little’s Law (L = λ × W) অনুযায়ী গড়ে একসাথে কতটি request চলমান?

  • ১২,০০০টি
  • ৩০০টি
  • ৬০টি
  • ১২টি

(মাঝারি) Express-এ /products/sale চাইলে ভুল handler চলছে, কারণ /products/:id আগে নিবন্ধিত। সঠিক সংশোধন কোনটি?

  • :id-কে regex দিয়ে বাঁধা, Express 5-এ এটিই একমাত্র পথ
  • /products/sale route-টি /products/:id-এর আগে নিবন্ধন করা
  • দুটিকেই app.use দিয়ে লেখা
  • দুটিকে আলাদা router-এ রাখলেই ক্রম আর লাগে না

(সহজ) DELETE /api/cart/items/7 সফল হলো, আর উত্তরে কোনো body পাঠানো হবে না। কোন status সবচেয়ে উপযুক্ত?

  • 201
  • 204
  • 202
  • 404

(মাঝারি) Express 5-এ GET /products/7-এর handler-এ নিচের শর্ত লেখা। ফল কী?

app.get('/products/:id', (req, res) => {
  if (req.params.id === 7) return res.json(product7);
  res.status(404).json({ error: 'not found' });
});
  • product7 ফেরত আসে, কারণ Express id-কে সংখ্যা বানায়
  • Route নিবন্ধনের সময় TypeError
  • 400 Bad Request
  • সবসময় 404, কারণ id একটি string

(মাঝারি) Express 5.3-এ GET /api/x পাঠালে console-এ কোন ক্রমে ছাপা হবে?

app.use((req, res, next) => { console.log('A'); next(); console.log('A2'); });
app.use('/api', (req, res, next) => { console.log('B'); next(); });
app.get('/api/x', (req, res) => { console.log('H'); res.json({ ok: true }); });
  • A B H A2
  • A A2 B H
  • A H A2
  • H B A A2

(মাঝারি) shop.example-এর React অ্যাপ api.example-এ fetch দিয়ে POST পাঠায়। কোন অবস্থায় browser আগে একটি OPTIONS preflight পাঠাবে?

  • কোনো বিশেষ header ছাড়া সাধারণ GET
  • একই origin-এর API-তে POST
  • Content-Type: application/json সহ POST
  • Terminal থেকে curl দিয়ে POST

(সহজ) Login route-এ express-rate-limit বসানো, এক মিনিটে ৫ বারের বেশি চেষ্টা নিষেধ। ষষ্ঠ চেষ্টায় কোন status আসবে?

  • 401
  • 403
  • 503
  • 429

(মাঝারি) Zod 4-এ query যাচাই z.object({ minPrice: z.coerce.number() }). URL-এ ?minPrice= (খালি) এলে কী হবে?

  • Validation error: expected number
  • পাশ করবে, minPrice হবে 0
  • পাশ করবে, minPrice হবে ""
  • পাশ করবে, minPrice হবে undefined

(মাঝারি) z.object({ name: z.string() }).parse({ name: 'রিনা', isAdmin: true })-এর ফল কী (Zod 4)?

  • { name: 'রিনা' }
  • { name: 'রিনা', isAdmin: true }
  • Error: unrecognized key
  • undefined

(সহজ) একটি JSON-only endpoint-এ client Content-Type: text/plain দিয়ে body পাঠাল। এই কোর্সের error ছাঁচে কোন status?

  • 413
  • 422
  • 415
  • 409

(মাঝারি) Express 5-এ একটি async handler-এর ভেতরে await-এর পরে throw new Error('boom'). শেষে চার argument-এর error middleware আছে, যা 500 {"code":"INTERNAL"} পাঠায়। Client কী পাবে?

  • 500, body {"code":"INTERNAL"}
  • কোনো উত্তর নয়, request ঝুলে থাকে
  • 200, খালি body
  • Process নেমে যায়, সংযোগ বিচ্ছিন্ন

(মাঝারি) একটি payment API-তে প্রতি চেষ্টায় timeout ৫০০ ms, মোট ২ বার চেষ্টা, মাঝে ২৫০ ms অপেক্ষা। সবচেয়ে খারাপ ক্ষেত্রে ব্যবহারকারী কত ms অপেক্ষা করবেন?

  • ১,০০০ ms
  • ৭৫০ ms
  • ১,২৫০ ms
  • ১,৫০০ ms

(সহজ) Production-এ একটি অপ্রত্যাশিত bug-এ TypeError হলো। Client-কে কী পাঠানো উচিত?

  • পুরো stack trace, যাতে ডিবাগ সহজ হয়
  • সাধারণ 500 বার্তা আর একটি requestId
  • Error-এর আসল message আর SQL query
  • 200 দিয়ে খালি ফল, যাতে ব্যবহারকারী ভয় না পান

(সহজ) Service স্তর OrderNotFoundError ছোড়ে। একে HTTP 404-এ বদলানোর কাজ কোথায় হওয়া উচিত?

  • Repository-তে
  • Service-এর ভেতরে res.status(404) দিয়ে
  • Database trigger-এ
  • Controller বা central error handler-এ

(মাঝারি) Function parameter দিয়ে dependency injection-এ repository, service আর controller জোড়া লাগানো উচিত কোথায়?

  • প্রতিটি service-এর ভেতরে new দিয়ে
  • প্রতিটি route handler-এর ভেতরে প্রতি request-এ
  • অ্যাপ শুরুর একটি জায়গায়, composition root-এ
  • একটি global variable-এ, যা সবাই import করে

(মাঝারি) নিচের service ফাংশনে নকশার মূল ভুল কোনটি?

export async function placeOrder(req, res) {
  const items = req.body.items;
  const total = await priceItems(items);
  res.status(201).json({ total });
}
  • async ব্যবহার করা
  • 201 status দেওয়া
  • ফাংশনের নাম ক্রিয়াপদ দিয়ে শুরু
  • Service সরাসরি req আর res-এ নির্ভর করছে

(মাঝারি) একটি ৬ MB ছবি Base64 করে JSON-এর ভেতরে পাঠালে body মোটামুটি কত বড় হবে?

  • ৬ MB
  • প্রায় ৮ MB
  • ১২ MB
  • প্রায় ৪.৫ MB

(মাঝারি) ব্যবহারকারীর upload করা ছবি নিজের server-এর disk-এ রাখতে হবে। কোন পথটি সবচেয়ে নিরাপদ?

  • Random নামে, web root-এর বাইরে, execute বন্ধ রেখে
  • ব্যবহারকারীর দেওয়া মূল নামে public/uploads-এ
  • public folder-এ, extension .jpg নিশ্চিত করে
  • Extension দেখে, .jpg হলে যেকোনো জায়গায়

(সহজ) Upload করা ফাইল সত্যিই PNG কি না, সবচেয়ে নির্ভরযোগ্যভাবে কী দেখে বোঝা যায়?

  • ফাইলের extension
  • Client-এর পাঠানো MIME type
  • ফাইলের আকার
  • ফাইলের শুরুর byte, মানে magic bytes

(মাঝারি) একটি API সেকেন্ডে গড়ে ২০০টি request পায়। প্রতি request-এ ৩টি JSON log লাইন, প্রতিটি গড়ে ৩০০ byte. দিনে প্রায় কত log তৈরি হয়?

  • প্রায় 15.6 GB
  • প্রায় 0.65 GB
  • প্রায় 5.2 GB
  • প্রায় 124 GB

(মাঝারি) SIGTERM পাওয়ার পর একটি Express server-এর graceful shutdown-এর সঠিক ক্রম কোনটি?

  • সাথে সাথে process.exit(), তারপর DB বন্ধ
  • DB বন্ধ → server.close() → readiness 503
  • readiness 503 → drain → server.close() → DB বন্ধ → exit
  • liveness 500 → restart-এর অপেক্ষা

(সহজ) Production-এ DATABASE_URL সেট করতে ভুলে যাওয়া হয়েছে। অ্যাপের সবচেয়ে ভালো আচরণ কোনটি?

  • চালু হয়ে যাওয়া, প্রথম DB call-এ error দেওয়া
  • শুরুতেই যাচাই করে স্পষ্ট বার্তা দিয়ে থেমে যাওয়া
  • কোডে লেখা একটি default database-এ চলা
  • নীরবে memory-তে ডেটা রেখে চলা

৬ · মডিউল ৫ ও ৬ — API নকশা আর ডেটাবেস (৩৯টি প্রশ্ন)

মডিউল ৫ — API নকশা (১৮টি প্রশ্ন)

Method-এর অর্থ, status code-এর জোড়া, pagination-এর খরচ, versioning আর GraphQL বনাম tRPC. নম্বর বেশি হারায় 400 বনাম 422, 401 বনাম 403, আর safe বনাম idempotent গুলিয়ে ফেলায়; ঝালিয়ে নিন পর্ব ৩২ আর পর্ব ৩৩.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৩২–৩৭

(সহজ) কোন জোড়াটি HTTP method-এর অর্থের সাথে মেলে?

  • POST safe আর idempotent
  • PUT safe, PATCH সবসময় idempotent
  • DELETE idempotent, কিন্তু safe নয়
  • GET safe, কিন্তু idempotent নয়

(মাঝারি) Express 5-এ শুধু app.use(express.json()) আছে। Client Content-Type: application/merge-patch+json দিয়ে {"stock":1} PATCH করল, আর handler req.body ফেরত দেয়। কী দেখা যাবে?

  • Status 200, কিন্তু req.body undefined
  • Status 200, body-তে {"stock":1}
  • Express নিজে 415 Unsupported Media Type দেয়
  • Express নিজে 400 Bad Request দেয়

(মাঝারি) একটি অর্ডার বাতিল করার কাজ, যা CRUD-এ সরাসরি পড়ে না। Resource-ধাঁচের API-তে কোন নকশা সবচেয়ে মানানসই?

  • GET /api/orders/17/cancel
  • DELETE /api/orders/17
  • POST /api/cancelOrder, body-তে id
  • POST /api/orders/17/cancellation

(সহজ) লগইন করা একজন ক্রেতার token বৈধ, কিন্তু তিনি admin-এর report endpoint ডাকলেন, যার অস্তিত্ব গোপন নয়। কোন status?

  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 409 Conflict

(মাঝারি) একটি অর্ডারের অনুরোধ সব যাচাই পেরোল: method ঠিক, token বৈধ, অনুমতি আছে, JSON পড়া গেল, নিয়মও মানা হয়েছে। কিন্তু চা মজুত আছে ২টি, চাওয়া হয়েছে ৫টি। কোন status?

  • 422 Unprocessable Content
  • 400 Bad Request
  • 409 Conflict
  • 503 Service Unavailable

(মাঝারি) একটি API-তে একই Idempotency-Key দিয়ে দ্বিতীয় অনুরোধ এলো, কিন্তু body আগেরটির থেকে আলাদা (qty 2-এর বদলে 3). খসড়া মানের পরামর্শ অনুযায়ী উত্তর কী?

  • 422, key ভিন্ন body-তে আবার ব্যবহার হয়েছে
  • আগের জমানো 201 উত্তরটি ফেরত দেওয়া
  • নতুন একটি অর্ডার তৈরি করে 201
  • 409, আগেরটি এখনো চলছে

(কঠিন) একটি পণ্যের পাতায় ৫০,০০০ অনুরোধ, পুরো উত্তর ৪০০ KB. ৯০% অনুরোধে If-None-Match মেলে আর 304 আসে, যার আকার ০.৫ KB. ETag ছাড়া সবগুলোতে পুরো উত্তর গেলে যত ডেটা যেত, তার তুলনায় সাশ্রয় প্রায় কত?

  • ঠিক ৯০%
  • প্রায় ১০%
  • প্রায় ১০০%
  • প্রায় ৮৯.৯%

(সহজ) পাতার আকার ২০, আর ক্রেতা চাইলেন পাতা ৫,০০১. LIMIT 20 OFFSET ? দিয়ে লিখলে ডেটাবেসকে প্রায় কতটি সারি পেরোতে হবে?

  • ২০টি
  • প্রায় ১,০০,০২০টি
  • প্রায় ৫,০২০টি
  • পুরো table-এর সব সারি

(মাঝারি) দামে সাজানো তালিকায় cursor pagination লেখা হলো। কোন WHERE শর্তে কোনো সারি হারায় না, আবার দুবারও আসে না?

  • WHERE price > :lastPrice
  • WHERE price >= :lastPrice
  • WHERE id > :lastId
  • WHERE (price, id) > (:lastPrice, :lastId)

(মাঝারি) নিচের Express কোডে ?sort=price এলে SQL-এ কী ঘটে?

const rows = await db.all(
  'SELECT * FROM products ORDER BY ? LIMIT 20',
  [req.query.sort]
);
  • Query চলে, কিন্তু price কলাম ধরে sort হয় না
  • দাম ধরে ঠিকঠাক sort হয়
  • Syntax error দিয়ে query ব্যর্থ হয়
  • ইনপুট SQL-এ ঢুকে injection ঘটে

(সহজ) একটি public JSON API-র কোন বদলটি পুরোনো client ভাঙতে পারে, অর্থাৎ breaking change?

  • Response-এ নতুন ঐচ্ছিক ঘর যোগ
  • একটি নতুন endpoint যোগ
  • Request-এ একটি নতুন বাধ্যতামূলক ঘর যোগ
  • OpenAPI-তে একটি operation-এর বর্ণনা বদল

(মাঝারি) ধরে নেওয়া হলো, v1-এ প্রথম সপ্তাহে ৮০,০০০ call, আর Deprecation জানানোর পর প্রতি সপ্তাহে call অর্ধেক হয়: calls(n) = ৮০,০০০ × ০.৫n. সবচেয়ে কম কোন n-এ call ১,০০০-এর নিচে নামে?

  • ৬
  • ৭
  • ৪০
  • ১০

(মাঝারি) RFC 9745-এর Deprecation আর পুরোনো Sunset header-এর অর্থের পার্থক্য কোনটি?

  • দুটি একই কথা, শুধু নাম আলাদা
  • Deprecation মানে endpoint ইতিমধ্যে বন্ধ
  • দুটিই শুধু OpenAPI document-এ লেখা হয়
  • Deprecation নিরুৎসাহ জানায়, Sunset বন্ধের সম্ভাব্য সময় জানায়

(মাঝারি) একটি GraphQL query ২০টি অর্ডার আনে, আর প্রতিটির customer আর items field আলাদা resolver-এ সরাসরি SQL চালায়। Batching ছাড়া কতটি SQL, আর প্রতি request-এ DataLoader দিলে কতটি?

  • ২১, আর DataLoader-এ ২
  • ৪১, আর DataLoader-এ ২১
  • ৪১, আর DataLoader-এ ৩
  • ১, কারণ GraphQL নিজে JOIN করে

(সহজ) একটি GraphQL server-এর monitoring শুধু HTTP status গোনে, আর ৫xx না দেখলে “সব ঠিক” বলে। এই নকশার ফাঁক কোনটি?

  • ব্যর্থ field-এর উত্তরও প্রায়ই 200, ভুল থাকে errors-এ
  • প্রতিটি field আলাদা URL-এ যায়
  • GraphQL সব ভুলে 500 দেয়, তাই গোনা বেশি হয়
  • GraphQL-এ HTTP status থাকেই না

(কঠিন) একটি GraphQL schema-য় product.stock field Int! (non-null), আর product নিজে nullable. Stock-এর resolver ভুল ছুড়ল। উত্তরে product-এর কী হবে?

  • শুধু stock null হবে, বাকি field থাকবে
  • পুরো product null হবে, আর errors-এ ভুল থাকবে
  • পুরো উত্তর HTTP 500 হবে
  • stock-এর জায়গায় 0 বসবে

(মাঝারি) tRPC-র একটি procedure-এ .input(z.object({ qty: z.number().int() })) আছে। TypeScript client ঠিক type পায়। তবু Zod-এর যাচাই রাখা কেন জরুরি?

  • Zod থাকলে client bundle ছোট হয়
  • Zod থেকেই tRPC-র schema file তৈরি হয়
  • Type না থাকলে tsc build চালাবে না
  • Type চলার সময় মুছে যায়, আর network-এর ইনপুট অবিশ্বস্ত

(মাঝারি) কোন ক্ষেত্রে tRPC-র বদলে REST আর OpenAPI চুক্তি বেশি মানানসই?

  • একই দলের TypeScript monorepo-তে React আর Node
  • একসাথে deploy হওয়া একটি Next.js অ্যাপ
  • অন্য ভাষায় লেখা partner-এর জন্য public API
  • নিজের দলের internal admin panel

মডিউল ৬ — ডেটাবেস আর ORM (২১টি প্রশ্ন)

Parameter, connection pool, Prisma 7-এর নতুন setup, migration-এর নিরাপদ ক্রম, সম্পর্ক, N+1 আর race condition. Query গোনা আর pool-এর সময়ের হিসাবে ভুল বেশি হয়; ঝালিয়ে নিন পর্ব ৪২ আর পর্ব ৪৩.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৩৮–৪৪

(সহজ) নিচের দুটি লাইনে input হলো x' OR '1'='1. কোনটি নিরাপদ, আর কেন?

// A
pool.query("SELECT * FROM products WHERE slug = '" + input + "'");
// B
pool.query("SELECT * FROM products WHERE slug = $1", [input]);
  • A, কারণ quote দিয়ে ঘেরা আছে
  • B, কারণ মান parameter হিসেবে আলাদা যায়
  • দুটিই সমান নিরাপদ
  • কোনোটিই নয়, ORM ছাড়া নিরাপদ হয় না

(মাঝারি) একটি connection pool-এর max ৮. একসাথে ৪০টি query এলো, প্রতিটি ৫০ ms. সংযোগ খোলার সময় বাদে সব শেষ হতে কাছাকাছি কত সময় লাগবে?

  • ৫০ ms
  • ২,০০০ ms
  • ৪০০ ms
  • ২৫০ ms

(মাঝারি) একটি অ্যাপে order.save() লিখলে object নিজেই ডেটাবেসে লেখে, আর অন্য অ্যাপে আলাদা repository.save(order) সেই কাজ করে। দুটি নকশার নাম যথাক্রমে কী?

  • Active Record, Data Mapper
  • Data Mapper, Active Record
  • Query builder, ORM
  • Raw SQL, Active Record

(মাঝারি) Prisma 7.10.1-এ পুরোনো অভ্যাসে schema.prisma-র datasource-এ url = env("DATABASE_URL") রাখা হলো। prisma validate কী বলবে, আর URL কোথায় যাবে?

  • শুধু সতর্কতা দেবে, কোনো বদল লাগবে না
  • .env-এ নাম বদলালেই error যাবে
  • Error দেবে; URL যাবে Prisma-র config ফাইলে, client-এ adapter
  • Error দেবে; URL শুধু new PrismaClient(url)-এ যাবে

(সহজ) দাম ৳৯৯.৫০, আর schema-য় ঘর pricePaisa Int. কোন মানটি রাখা ঠিক?

  • 99.5
  • 9950
  • 99
  • 99500

(মাঝারি) Prisma-তে নিচের কোড চলল, আর req.query.owner পাঠানো হয়নি। ১২টি অর্ডারের টেবিলে কী ফেরত আসবে?

const ownerId = req.query.owner; // undefined
const orders = await prisma.order.findMany({
  where: { ownerId },
});
  • ownerId null এমন অর্ডারগুলো
  • P2025 error
  • খালি তালিকা
  • ১২টি অর্ডারই

(সহজ) Production-এ Git-এ রাখা বাকি migration-গুলো চালাতে Prisma-র কোন কমান্ড ঠিক?

  • prisma migrate deploy
  • prisma migrate dev
  • prisma db push
  • prisma migrate reset

(মাঝারি) চলমান অ্যাপে address কলাম ভেঙে area আর city করতে হবে, downtime ছাড়া। Expand and contract-এর সঠিক ক্রম কোনটি?

  • পুরোনো কলাম মোছা, নতুন যোগ, অ্যাপ বদল
  • নতুন কলাম যোগ, অ্যাপ সেখান থেকে পড়া, তারপর backfill
  • যোগ, sync, backfill, পড়া বদল, পরে মোছা
  • এক migration-এ নাম বদল আর ভাগ

(কঠিন) PostgreSQL-এ সেশন S1 একটি transaction খোলা রেখেছে। S2-এর ALTER TABLE products S1-এর জন্য অপেক্ষায়। ক্ষতি সীমিত রাখতে migration ফাইলে কোনটি সবচেয়ে কাজের?

  • Serializable isolation চালু করা
  • ALTER-এর আগে ছোট lock_timeout বসানো
  • ALTER-এর সাথে CONCURRENTLY লেখা
  • কিছু না, SELECT আটকায় না

(মাঝারি) Prisma-য় Order আর Product-এর সম্পর্কে পরিমাণ আর কেনার সময়ের দামও রাখতে হবে। পরে পণ্যের দাম ১৮৫ থেকে ২১০ টাকা হলে পুরোনো রসিদ যেন বদলায় না। কোন নকশা?

  • Implicit many-to-many, products Product[]
  • রসিদ দেখানোর সময় Product থেকে দাম পড়া
  • Order-এ একটি productId কলাম
  • Explicit OrderItem, সাথে qty আর unitPricePaisa

(মাঝারি) PostgreSQL-এ OrderItem.orderId একটি foreign key. কোন কথাটি ঠিক?

  • এতে index নিজে থেকে তৈরি হয় না, হাতে দিতে হয়
  • Foreign key দিলেই PostgreSQL index বানায়
  • Index না থাকলে শুধু জায়গা বাঁচে, গতিতে প্রভাব নেই
  • Prisma relation লিখলেই index তৈরি হয়

(মাঝারি) Prisma schema-য় বাধ্যতামূলক userId Int-এর @relation-এ কোনো onDelete লেখা নেই। তৈরি migration-এ PostgreSQL-এ কী বসবে?

  • ON DELETE CASCADE
  • ON DELETE SET NULL
  • ON DELETE RESTRICT
  • কোনো foreign key-ই বসবে না

(মাঝারি) নিচের কোড ২৫টি অর্ডার আনে। মোট কতটি SQL যাবে, আর প্রতিটির RTT ৫ ms হলে শুধু network-এ অপেক্ষা কত?

const orders = await prisma.order.findMany({ take: 25 });
for (const o of orders) {
  o.customer = await prisma.user.findUnique({ where: { id: o.customerId } });
  o.items = await prisma.orderItem.findMany({ where: { orderId: o.id } });
}
  • ২৬টি, ১৩০ ms
  • ৫১টি, ২৫৫ ms
  • ৩টি, ১৫ ms
  • ৫১টি, ৫ ms

(সহজ) N+1 ঠেকাতে একজন লুপের await-গুলো Promise.all-এ মুড়ে দিলেন। কোন কথাটি ঠিক?

  • Query সংখ্যা ১ + ১-এ নেমে আসে
  • N+1 পুরোপুরি সমাধান হয়ে যায়
  • Prisma এতে error দেয়
  • Query সংখ্যা একই থাকে, শুধু আড়াল হয়

(মাঝারি) Prisma 7.10.1-এ PostgreSQL-এর সাথে relationLoadStrategy: 'join' ব্যবহার করতে কী লাগে, লেখার সময়ের docs অনুযায়ী?

  • Generator-এ relationJoins preview চালু করে generate
  • কিছু না, ডিফল্টেই চালু
  • প্রতিটি @relation-এ strategy লেখা
  • pg-র বদলে আলাদা driver adapter বসানো

(মাঝারি) PostgreSQL-এর Read Committed-এ নিচের কোড চলে। মজুত ১, আর দুজন ক্রেতা একসাথে কিনলেন। কী হতে পারে?

await prisma.$transaction(async (tx) => {
  const p = await tx.product.findUnique({ where: { id } });
  if (p.stock < 1) throw new Error('OUT_OF_STOCK');
  await tx.product.update({ where: { id }, data: { stock: p.stock - 1 } });
});
  • Transaction থাকায় একজনই কিনতে পারবেন
  • সবসময় deadlock হবে
  • দুটি অর্ডারই হতে পারে, মজুত দেখাবে ০
  • একটি P2034 error পাবে

(সহজ) একটি সারির মজুতের race ঠেকাতে Prisma-তে সবচেয়ে সরল আর নির্ভরযোগ্য পথ কোনটি?

  • React-এ বোতাম একবার চাপার পর বন্ধ করা
  • updateMany-তে stock ≥ qty শর্ত দিয়ে count দেখা
  • findUnique-এর পরে update, একটি transaction-এ
  • মজুত Redis cache-এ রেখে সেখান থেকে যাচাই

(মাঝারি) Outbox-এর relay একটি event পাঠাল, কিন্তু publishedAt বসানোর আগেই crash করল। এরপর কী ধরে নিতে হবে?

  • Event ঠিক একবারই গেছে
  • Event চিরতরে হারিয়ে গেছে
  • অর্ডারটিও rollback হবে
  • Event আবার যেতে পারে, consumer-কে idempotent হতে হবে

(মাঝারি) Redis থেকে পড়তে ১ ms, ডেটাবেসে ১৯ ms, Redis-এ লিখতে ১ ms. Cache-aside-এ hit rate ৯০% হলে গড় সময় কত? (গড় = G + (১ − h)(L + S))

  • ৩ ms
  • ২ ms
  • ১০ ms
  • ১৯ ms

(মাঝারি) একটি জনপ্রিয় key-এর জন্য তিনটি Node.js instance-এর প্রতিটিতে process-এর ভেতরের Map দিয়ে single-flight আছে। Key মুছে যাওয়ার পর প্রতি instance-এ ৪০টি অনুরোধ একসাথে এলো। ডেটাবেসে কতবার যাবে?

  • ১ বার
  • ১২০ বার
  • ৩ বার
  • ৪০ বার

(সহজ) Cache-aside-এ একটি পণ্যের দাম বদলানোর পরে প্রচলিত নিরাপদ ক্রম কোনটি?

  • আগে cache-এর key মোছা, তারপর ডেটাবেসে লেখা
  • ডেটাবেসে commit, তারপর key DEL
  • কিছু না, TTL শেষ হলে নিজে বদলাবে
  • শুধু Redis-এ নতুন দাম SET করা

৭ · মডিউল ৭ ও ৮ — Authentication আর Next.js (৪৫টি প্রশ্ন)

মডিউল ৭ — Authentication আর নিরাপত্তা (১৮টি প্রশ্ন)

Login, token, অনুমতি আর অ্যাপের নিরাপত্তার তালিকা। নম্বর বেশি হারায় 401 বনাম 403 বনাম 404-এ, “cookie মুছলেই logout” ভাবনায়, আর state বনাম PKCE-র কাজ গুলিয়ে ফেলায়। ঝালিয়ে নিন পর্ব ৪৫ থেকে পর্ব ৫০.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৪৫–৫০

(মাঝারি) একজন আক্রমণকারী আগে থেকে একটি session id জেনে সেটি ক্রেতার browser-এ বসিয়ে দিলেন। ক্রেতা login করার পরেও server একই id রাখল, ফলে আক্রমণকারীও logged in. Express-এ মূল প্রতিকার কোনটি?

  • Cookie-তে HttpOnly যোগ করা
  • Login সফল হলে req.session.regenerate()
  • Session secret আরও লম্বা করা
  • SameSite=Strict বসানো

(মাঝারি) Idle timeout ২০ মিনিট, absolute timeout ৬০ মিনিট। ক্রেতা ০ মিনিটে login করে ১৫, ৪০, ৫৮ আর ৬৩ মিনিটে অনুরোধ পাঠালেন। কোন অনুরোধটি প্রথম 401 পাবে?

  • ৬৩ মিনিটের
  • ৫৮ মিনিটের
  • ১৫ মিনিটের
  • ৪০ মিনিটের

(মাঝারি) React-এর fetch-এ credentials: 'include' আছে, আর API-র উত্তরে Access-Control-Allow-Origin: *. Cookie-সহ অনুরোধের উত্তর browser পাতাকে পড়তে দিচ্ছে না। Server-এ কী লাগবে?

  • নির্দিষ্ট origin আর Access-Control-Allow-Credentials: true
  • Cookie-তে SameSite=None দেওয়াই যথেষ্ট
  • CORS header পুরো সরিয়ে দেওয়া
  • শুধু Access-Control-Allow-Methods: * যোগ করা

(সহজ) একটি সাধারণ সই করা JWT-র payload সম্পর্কে কোন কথাটি সঠিক?

  • Payload encrypted, key ছাড়া পড়া যায় না
  • সই থাকায় payload কেউ দেখতে পায় না
  • Payload যে কেউ পড়তে পারেন, তবে বদলালে সই মেলে না
  • HTTPS থাকলে payload আর পড়া যায় না

(মাঝারি) নিচের Express কোডে JWT যাচাইয়ের সবচেয়ে বড় ফাঁক কী?

import { jwtVerify } from 'jose';
const { payload } = await jwtVerify(token, key);
req.user = payload;
  • algorithms, issuer আর audience বেঁধে দেওয়া নেই
  • Token-এর মেয়াদ যাচাই হচ্ছে না
  • await ব্যবহার করা ভুল
  • Payload req-এ রাখা যায় না

(কঠিন) Refresh rotation আর reuse detection চালু। কেউ ক্রেতার refresh token R1 চুরি করলেন। ক্রেতা নিজে refresh করে R2 পেলেন। এরপর চোর R1 পাঠালেন। ভালো নকশায় server কী করবে?

  • R1 মেনে নতুন token দেবে
  • শুধু R1 প্রত্যাখ্যান করবে, R2 চলতে থাকবে
  • Access token-এর মেয়াদ বাড়িয়ে দেবে
  • পুরো token family বাতিল করবে, সবাইকে আবার login করতে হবে

(মাঝারি) OAuth login-এ authorization code মাঝপথে কেউ হাতে পেলেও যেন সেটি token-এ বদলাতে না পারেন, এই কাজটি মূলত কোনটি করে?

  • state মান
  • PKCE-র code_verifier
  • nonce
  • শেষে / ছাড়া redirect URI

(সহজ) Social login-এ একজন ব্যবহারকারীকে database-এ স্থায়ীভাবে চেনার সবচেয়ে ঠিক চাবি কোনটি?

  • Provider-এর দেওয়া email
  • ব্যবহারকারীর পুরো নাম
  • Issuer আর sub একসাথে
  • Provider-এর access token

(মাঝারি) PKCE verifier বানাতে ৪৮ byte এলোমেলো মান base64url করা হলো, padding ছাড়া। Verifier কত অক্ষরের হবে?

  • ৪৮
  • ৯৬
  • ১২৮
  • ৬৪

(কঠিন) একজন কর্মীর role ADMIN থেকে STAFF করা হলো। তাঁর browser-এ থাকা JWT access token-এ এখনো role: ADMIN, মেয়াদ বাকি ১৫ মিনিট। বদলটি সাথে সাথে কার্যকর করার পথ কোনটি?

  • Token-এ tokenVersion রেখে প্রতি অনুরোধে database-এর মানের সাথে মেলানো
  • Frontend-এ admin মেনু লুকিয়ে দেওয়া
  • Server থেকে token-এর payload-এ role বদলে দেওয়া
  • Refresh token-এর মেয়াদ বাড়ানো

(মাঝারি) Profile update route-এ prisma.user.update({ where: { id }, data: req.body }) লেখা। একজন ক্রেতা পাঠালেন {"name":"Rafi","role":"ADMIN"}. সমস্যার নাম আর প্রতিকার কী?

  • SQL injection; raw query বাদ দেওয়া
  • Mass assignment; শুধু অনুমোদিত ঘর বেছে নেওয়া
  • CSRF; token যোগ করা
  • UI bug; form থেকে role ঘর লুকানো

(মাঝারি) নিচের route-এ কোন bug সবচেয়ে গুরুতর?

app.get('/api/orders/:id', requireAuth, async (req, res) => {
  const order = await prisma.order.findUnique({
    where: { id: req.params.id },
  });
  res.json(order);
});
  • Login যাচাই নেই
  • Async handler Express 5-এ চলে না
  • মালিকানার শর্ত নেই, তাই IDOR
  • res.json-এর বদলে res.send লাগবে

(মাঝারি) “Password ভুলে গেছেন” পাতা অচেনা email-এ লেখে “এই email-এ কোনো account নেই”, আর চেনা email-এ “লিংক পাঠানো হয়েছে”. এর ঝুঁকি আর প্রতিকার কী?

  • CSRF; form-এ token দেওয়া
  • Bot; শুধু CAPTCHA বসানো
  • User enumeration; সব ক্ষেত্রে একই উত্তর আর একই সময়
  • অচেনা email-এ 404 ফেরত দেওয়া

(সহজ) একজন ক্রেতা reset লিংক দিয়ে নতুন password বসালেন। এরপর server-এর সবচেয়ে জরুরি কাজ কোনটি?

  • সব session আর বাকি token বাতিল, মালিককে নোটিশ
  • Reset token আরও ২৪ ঘণ্টা চালু রাখা
  • নতুন password মেইলে পাঠিয়ে নিশ্চিত করা
  • কিছু না, বাকি session চলতে পারে

(কঠিন) ৬ অঙ্কের এলোমেলো OTP, আর প্রতিটি OTP-তে সর্বোচ্চ ৫টি চেষ্টা। অনুমান করে একটি OTP মেলানোর সম্ভাবনা কত?

  • ০.০৫%
  • ০.০০০১%
  • ০.৫%
  • ০.০০০৫%

(মাঝারি) React 19-এ <a href={shop.website}>, আর ব্যবহারকারী website ঘরে লিখেছেন javascript:alert(1). লিংকে ক্লিক করলে কী হয়?

  • alert(1) চলে, কারণ JSX attribute escape করে না
  • React URL-টি আটকায়, ক্লিকে একটি error হয়, কোডটি চলে না
  • Build-এর সময়ই error দেয়
  • লিংকের জায়গায় লেখাটি হুবহু দেখায়

(মাঝারি) “URL দিয়ে ছবি আনা” ফিচারে server শুধু দেখে URL-এর লেখায় localhost বা 127.0.0.1 আছে কি না। তবু SSRF থাকতে পারে কেন?

  • HTTPS URL হলে যাচাই কাজ করে না
  • CORS server-এর fetch আটকায় না বলে
  • বড় ছবি server-কে ধীর করে বলে
  • Redirect, DNS বা অন্যভাবে লেখা IP ভেতরের ঠিকানায় নিতে পারে

(সহজ) পণ্যের বিবরণে বিক্রেতার লেখা HTML দেখাতে হবে, তাই dangerouslySetInnerHTML লাগছে। নিরাপদ পথ কোনটি?

  • আগে DOMPurify দিয়ে sanitize, তারপর বসানো
  • সরাসরি বসানো, React নিজেই escape করবে
  • শুধু script tag regex দিয়ে মুছে ফেলা
  • লেখার দৈর্ঘ্য ২০০ অক্ষরে সীমিত করা

মডিউল ৮ — Next.js (২৭টি প্রশ্ন)

App Router, Server ও Client Component, Next.js 16-এর স্পষ্ট cache, Server Action, rendering কৌশল, hydration, proxy, SEO আর বাংলা i18n. নম্বর বেশি হারায় পুরোনো টিউটোরিয়ালের default-এ: middleware.ts, synchronous params, আর ধরে নেওয়া cache. ঝালিয়ে নিন পর্ব ৫১ থেকে পর্ব ৫৯.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৫১–৫৯

(সহজ) Next.js App Router-এ app/(marketing)/about/page.tsx ফাইলটি কোন URL-এ খোলে?

  • /(marketing)/about
  • /marketing/about
  • /about
  • কোনো URL-এ নয়, 404

(মাঝারি) app/docs/[...slug]/page.tsx আছে। /docs/setup/node খুললে await params-এর মান কী?

  • { slug: ['setup', 'node'] }
  • { slug: 'setup/node' }
  • { slug: ['node'] }
  • পাতা খোলে না, 404

(মাঝারি) একটি Server Component পাতা stream শুরুর আগেই login না থাকলে redirect('/login') ডাকে। Browser কোন HTTP status পায়?

  • 301
  • 401
  • 200
  • 307

(মাঝারি) একটি Server Component লিখল <BuyButton onClick={() => console.log('x')} />, যেখানে BuyButton একটি Client Component. কী ঘটবে?

  • Browser-এ ক্লিকে x লগ হবে
  • Error হবে, কারণ সাধারণ function serializable নয়
  • Prop-টি নীরবে বাদ পড়বে
  • ক্লিকে server-এর terminal-এ x লগ হবে

(সহজ) “Server Component আর SSR একই জিনিস” কথাটি সম্পর্কে কোনটি ঠিক?

  • ঠিক, দুটিই server-এ HTML বানানো
  • ঠিক, কারণ Client Component কখনো SSR হয় না
  • ভুল, কারণ Server Component SSR-এর বদলি
  • ভুল; SSR বলে HTML কোথায় তৈরি, Server Component বলে কোড browser-এ যায় কি না

(মাঝারি) Root layout.tsx (Server Component) সরাসরি createContext দিয়ে বানানো একটি ThemeProvider বসাতে চায়। সবচেয়ে ভালো পথ কোনটি?

  • “use client” দেওয়া একটি Providers ফাইলে রেখে layout-এ children ঘিরে বসানো
  • Root layout-এর মাথায় “use client” দেওয়া
  • Layout-এ সরাসরি Provider বসানো, কিছু বদলানো লাগে না
  • প্রতিটি পাতায় theme fetch করা

(কঠিন) একটি পাতায় তিনটি query: user (১০০ ms), সেই user-এর orders (৩০০ ms, user-এর id লাগে), আর recommendations (৫০০ ms, স্বাধীন)। সবচেয়ে ভালো সাজালে মোট সময় প্রায় কত?

  • ৯০০ ms
  • ৪০০ ms
  • ৫০০ ms
  • ৩০০ ms

(মাঝারি) Next.js 16-এ কোনটি অনেক অনুরোধ জুড়ে টিকে থাকা cache দেয়?

  • React-এর cache()
  • useMemo
  • ডিফল্ট fetch, কিছু লেখা ছাড়াই
  • “use cache”, সাথে cacheLife

(মাঝারি) একটি পণ্যের পাতায় স্টকের query লাগে ৮০০ ms, সেটি <Suspense>-এ রেখে stream করা হলো। কোন কথাটি ঠিক?

  • পুরো পাতা এখন ৮০০ ms-এর অনেক আগে শেষ হয়
  • প্রথম অংশ আগে দেখা যায়, পুরো উত্তর তবু প্রায় ৮০০ ms
  • স্টক আলাদা একটি HTTP অনুরোধে আসে
  • কোনো পার্থক্য নেই, Suspense শুধু নকশার জন্য

(মাঝারি) নিচের Server Action-এ সবচেয়ে বড় নিরাপত্তার ফাঁক কোনটি? Action-টি শুধু admin পাতার form থেকে ডাকা হয়, আর সেই পাতা অ-admin-কে redirect করে।

'use server'
export async function deleteProduct(id: string) {
  await db.product.delete({ where: { id } });
  revalidatePath('/admin/products');
}
  • Action-এর ভেতরে login আর role যাচাই নেই
  • revalidatePath আগে ডাকা উচিত
  • id-র type string হওয়ায় SQL injection
  • কোনো ফাঁক নেই, পাতাই রক্ষা করছে

(মাঝারি) একটি Server Action-এ Zod-এর যাচাই ব্যর্থ হলে ব্যবহারকারীকে প্রতিটি ঘরের ভুল দেখাতে হবে। Production-এ কোন পথ কাজ করে?

  • throw new Error দিয়ে বার্তা ছোড়া
  • server-এ console.log করা
  • fieldErrors ফেরত দেওয়া, আর useActionState দিয়ে দেখানো
  • ভুলের পাতায় redirect করা

(সহজ) Browser-এ JavaScript বন্ধ। কোন ধরনের Server Action ব্যবহার তবু কাজ করবে?

  • form-এর action prop-এ বসানো action
  • বোতামের onClick থেকে ডাকা action
  • useEffect থেকে ডাকা action
  • useOptimistic দিয়ে ডাকা action

(সহজ) Next.js-এ generateStaticParams কী করে?

  • প্রতি অনুরোধে URL থেকে params পড়ে
  • পাতার title আর description বানায়
  • কত সেকেন্ড পরপর পাতা নতুন হবে তা ঠিক করে
  • Build-এর সময় কোন params-এর পাতা বানাতে হবে তার তালিকা দেয়

(মাঝারি) cacheComponents: true দেওয়া একটি Next.js 16 প্রকল্পের next build-এর route table-এ /cart-এর পাশে ◐ চিহ্ন। এর অর্থ কী?

  • পাতাটি পুরো static, কোনো অংশ পরে আসে না
  • পাতাটি পুরো dynamic, কিছুই আগে তৈরি নয়
  • Static shell আগে তৈরি, dynamic অংশ পরে stream হয়
  • Build-এ পাতাটি ব্যর্থ হয়েছে

(মাঝারি) output: 'export' দিয়ে Next.js সাইট shared hosting-এ তোলা হবে। নিচের কোনটি সেখানে চলবে না?

  • Client Component-এ useState
  • Form-এর Server Action
  • Build-এ বানানো static পাতা
  • Link দিয়ে client-side navigation

(মাঝারি) একটি Client Component-এর render-এ লেখা: {typeof window !== 'undefined' ? 'Browser' : 'Server'}. সরাসরি পাতা খুললে কী ঘটার সম্ভাবনা সবচেয়ে বেশি?

  • দুই জায়গাতেই Browser লেখা আসে
  • কোনো সমস্যা ছাড়াই Server দেখায়
  • Server-এ ReferenceError হয়ে পাতা ভাঙে
  • Hydration mismatch, কারণ server আর client-এর প্রথম render আলাদা

(সহজ) suppressHydrationWarning সম্পর্কে কোন কথাটি সঠিক?

  • এক element-এর এক স্তরের warning চুপ করায়, অমিল ঠিক করে না
  • পুরো subtree-এর সব অমিল ঠিক করে দেয়
  • Server-এর HTML-কে client-এর মতো করে দেয়
  • Component-টির hydration পুরো বন্ধ করে

(কঠিন) একটি পাতার paint হয় ৬০০ ms-এ। JavaScript প্রস্তুত ১৪০০ ms-এ, চালাতে ২৫০ ms আর hydrate করতে ১৫০ ms লাগে। Paint থেকে সচল হওয়া পর্যন্ত মৃত সময় কত?

  • ৮০০ ms
  • ১৮০০ ms
  • ১২০০ ms
  • ৪০০ ms

(সহজ) একটি প্রকল্প Next.js 16-এ তোলা হলো, root-এ আছে middleware.ts. Docs অনুযায়ী এখন প্রস্তাবিত পথ কী?

  • কিছু বদলাতে হবে না, middleware.ts-ই প্রস্তাবিত
  • ফাইলের নাম proxy.ts, আর function-এর নাম proxy
  • কোডটি app/route.ts-এ সরানো
  • next.config-এ middleware: true লেখা

(মাঝারি) একটি Next.js route handler-এ POST /api/orders-এর body বৈধ JSON, কিন্তু ফোন নম্বর বাংলাদেশি ধাঁচে নেই, তাই Zod যাচাই ব্যর্থ। কোন status সবচেয়ে মানানসই?

  • 400
  • 201
  • 405
  • 422

(মাঝারি) Payment gateway একই webhook (একই event id) দুবার পাঠাল, কারণ প্রথমবার উত্তর দেরিতে গিয়েছিল। স্বাক্ষর দুবারই বৈধ। অর্ডার যেন একবারই পরিশোধিত হয়, তার জন্য কী লাগে?

  • Event id unique রেখে একবারই জমা করা
  • শুধু HMAC যাচাই
  • দ্বিতীয়বার 500 ফেরত দেওয়া
  • request.json() দিয়ে পড়া

(সহজ) Root layout-এ title: { template: '%s | বাজারঘর', default: 'বাজারঘর' }. একটি পাতা নিজে কোনো title দেয় না। সেই পাতার <title> কী?

  • | বাজারঘর
  • %s | বাজারঘর
  • বাজারঘর
  • খালি title

(মাঝারি) Canonical link আর 301 redirect-এর পার্থক্য কোনটি?

  • দুটিই ব্যবহারকারীকে আসল URL-এ পাঠায়
  • 301 ব্যবহারকারীকেও সরায়; canonical শুধু search engine-কে জানায়, আর সেটি সংকেত
  • Canonical আদেশ, 301 শুধু পরামর্শ
  • কোনো পার্থক্য নেই

(কঠিন) Layout-এর metadata-তে openGraph: { siteName: 'বাজারঘর', images: ['/og.png'] }, আর পাতার metadata-তে শুধু openGraph: { title: 'মসুর ডাল' }. পাতার HTML-এ কী আসবে?

  • শুধু og:title, layout-এর siteName আর ছবি হারাবে
  • তিনটিই, কারণ দুই object গভীরভাবে মেলে
  • শুধু layout-এর openGraph, পাতারটি বাদ
  • Build error

(মাঝারি) দাম ১২,৩৪,৫৬৭.৫০ টাকা Intl.NumberFormat('bn-BD', { style: 'currency', currency: 'BDT' }) দিয়ে দেখালে Node-এর ICU-তে কোন ধাঁচ আসে?

  • ৳1,234,567.50
  • ১,২৩৪,৫৬৭.৫০৳
  • 12,34,567.50 BDT
  • ১২,৩৪,৫৬৭.৫০৳

(সহজ) JavaScript-এ "ক্ষ".length-এর মান কত?

  • 1
  • 3
  • 2
  • 9

(মাঝারি) বাজারঘরের proxy.ts URL-এ ভাষা না পেলে কোন ক্রমে ভাষা ঠিক করে /bn বা /en-এ পাঠায়?

  • আগে Accept-Language, তারপর cookie
  • IP-র দেশ দেখে
  • আগে cookie, তারপর Accept-Language
  • সবসময় /bn, কিছু না দেখে

৮ · মডিউল ৯ ও ১০ — Real-time, background কাজ আর অন্য framework (৩৬টি প্রশ্ন)

মডিউল ৯ — Real-time আর background কাজ (১৮টি প্রশ্ন)

কোন পথে খবর যায়, কাজ কখন queue-তে যায়, আর একই ঘটনা দুবার এলে কী হয়। নম্বর বেশি হারায় polling-এর হার, SMS segment আর “webhook আসার আগেই paid” ধরনের ফাঁদে; ঝালিয়ে নিন পর্ব ৬০ থেকে পর্ব ৬৫.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৬০–৬৫

(সহজ) একটি অর্ডারের অবস্থা দিনে দুই-তিনবার বদলায়, আর ক্রেতা শুধু পাতা খোলা রেখে দেখেন। কোন পথ সবচেয়ে সহজ ও যথেষ্ট?

  • Socket.IO দিয়ে দুই দিকের সংযোগ
  • কয়েক সেকেন্ড পরপর polling, বা SSE
  • প্রতিটি বদলে web push
  • প্রতি সেকেন্ডে পুরো পাতা reload

(সহজ) একটি browser WebSocket সংযোগ খুলতে GET অনুরোধে Upgrade: websocket পাঠাল, আর server রাজি। উত্তরের status কী?

  • 200 OK
  • 426 Upgrade Required
  • 204 No Content
  • 101 Switching Protocols

(মাঝারি) একটি Socket.IO chat দুটি process-এ চলে, সামনে round-robin load balancer, client প্রথমে polling দিয়ে শুরু করে। দুটি জিনিস লাগবে কোনগুলো?

  • Redis-এর মতো adapter আর sticky session
  • একটি CDN আর বড় timeout
  • আরও বেশি process আর বড় memory
  • শুধু ছোট pingInterval

(মাঝারি) Socket.IO-তে pingInterval ২০ সেকেন্ড আর pingTimeout ১৫ সেকেন্ড। একটি ফোন একটি pong পাঠানোর ঠিক পরেই network হারাল। Server সবচেয়ে দেরিতে প্রায় কখন সংযোগ বন্ধ করবে?

  • ১৫ সেকেন্ড পরে
  • ২০ সেকেন্ড পরে
  • ৩৫ সেকেন্ড পরে
  • ৪০ সেকেন্ড পরে

(মাঝারি) একটি সাইটে ১,৮০০টি পাতা খোলা, প্রতিটি ৬ সেকেন্ড পরপর অর্ডারের অবস্থা জিজ্ঞেস করে (short polling). Server-এ প্রতি সেকেন্ডে কতটি অনুরোধ আসে, আর একটি খবর গড়ে কত দেরিতে পৌঁছায়?

  • ১০,৮০০টি, গড় দেরি ৬ সেকেন্ড
  • ৩০০টি, গড় দেরি ৬ সেকেন্ড
  • ৩০০টি, গড় দেরি ৩ সেকেন্ড
  • ৬০০টি, গড় দেরি ৩ সেকেন্ড

(কঠিন) একটি SSE stream-এ নিচের byte এল; প্রতিটি লাইনের শেষে newline, আর শেষ লাইনের পরেও একটি ফাঁকা লাইন আছে। Browser-এর EventSource কয়টি event দেবে, আর শেষটির data কী?

id: 7
data: ready

: ping

event: price
data: 120
data: 130
  • ২টি; শেষটির type price, data “120” আর “130” newline দিয়ে জোড়া
  • ৩টি; মাঝের ping-ও একটি event
  • ৩টি; 120 আর 130 আলাদা দুটি event
  • ২টি; শেষটির data শুধু “130”

(মাঝারি) Local-এ SSE ঠিক চলে, কিন্তু production-এ Nginx-এর পেছনে event-গুলো অনেক দেরিতে একসাথে দলা হয়ে আসে। প্রথমে কী সন্দেহ করবেন?

  • Browser-এ ছয়টির বেশি tab
  • Server ভুল retry মান পাঠাচ্ছে
  • Last-Event-ID header হারিয়ে যাচ্ছে
  • Proxy-র buffering বা compression

(মাঝারি) একটি AI উত্তর stream করতে React app-কে POST body আর Authorization: Bearer header পাঠাতে হবে। কোন client-side হাতিয়ার ঠিক?

  • Browser-এর EventSource
  • প্রতি সেকেন্ডে short polling
  • fetch POST, response body-র reader আর AbortController
  • Web push subscription

(মাঝারি) BullMQ-তে একটি job attempts: 4 আর backoff: { type: 'exponential', delay: 500 } দিয়ে দেওয়া, jitter নেই। প্রতিবার ব্যর্থ হলে চারটি চেষ্টার মাঝে মোট কত অপেক্ষা?

  • ৩,৫০০ ms
  • ৭,৫০০ ms
  • ১,৫০০ ms
  • ২,০০০ ms

(মাঝারি) Email provider একটি ঠিকানাকে স্থায়ীভাবে অবৈধ বলল, তাই job প্রতিবার একই ভুলে ব্যর্থ হয়। BullMQ-তে সবচেয়ে ঠিক আচরণ কোনটি?

  • attempts ১০০ করে বারবার চেষ্টা
  • UnrecoverableError ছুড়ে retry বন্ধ, failed তালিকায় রাখা
  • catch করে চুপচাপ completed ফেরত দেওয়া
  • Redis থেকে job হাতে মুছে ফেলা

(কঠিন) Route handler আগে PostgreSQL-এ order commit করে, তারপর BullMQ (Redis)-এ “invoice পাঠাও” job দেয়। মাঝখানে process মরে গেলে job হারায়। কোন নকশা এটি ঠেকায়?

  • Commit-এর আগে job দেওয়া
  • Job-এ attempts বাড়ানো
  • Job-এর বদলে fire-and-forget promise
  • একই transaction-এ outbox সারি, পরে relay দিয়ে queue-তে

(মাঝারি) ১৫০ অক্ষরের একটি বাংলা SMS, আর ১৭০ অক্ষরের একটি শুধু-ইংরেজি SMS (সাধারণ GSM-7 অক্ষর)। প্রতিটি কয়টি segment-এ যাবে?

  • বাংলা ১, ইংরেজি ২
  • বাংলা ৩, ইংরেজি ২
  • বাংলা ২, ইংরেজি ২
  • বাংলা ৩, ইংরেজি ১

(মাঝারি) একটি মেইলের ক্ষেত্রে SPF, DKIM আর DMARC-এর ভূমিকা কোন জোড়ায় ঠিক মেলে?

  • SPF: কোন server পাঠাতে পারে; DKIM: সই, বদল হয়নি; DMARC: From-এর মিল আর নীতি
  • SPF: encryption; DKIM: spam score; DMARC: bounce
  • SPF: সই; DKIM: server তালিকা; DMARC: unsubscribe
  • তিনটিই একই কাজ, যেকোনো একটি যথেষ্ট

(মাঝারি) Browser থেকে সরাসরি object storage-এ ছবি তুলতে হবে, আর store নিজেই ৫ MB-এর বড় ফাইল প্রত্যাখ্যান করবে। কোন পদ্ধতি?

  • Bucket-এর CORS-এ সীমা লেখা
  • Presigned POST, policy-তে content-length-range
  • Browser-এর JavaScript-এ ফাইলের আকার দেখা
  • এক বছরের মেয়াদের presigned GET

(মাঝারি) ক্রেতারা incoming/ prefix-এ ছবি তোলেন, কিন্তু অনেকে form জমা না দিয়ে চলে যান, তাই মালিকহীন ফাইল জমে। Store-কে দিয়েই পরিষ্কার করানোর হাতিয়ার কোনটি?

  • ওই prefix-এ কয়েক দিনের মেয়াদের lifecycle নিয়ম
  • Bucket CORS কড়া করা
  • Cache-Control-এ ছোট max-age
  • Key-কে content-hash বানানো

(সহজ) পেমেন্টের পরে ক্রেতা /payment/return?status=success-এ ফিরলেন, কিন্তু webhook এখনো আসেনি। Order-কে PAID কখন করবেন?

  • Return URL-এ success দেখামাত্র
  • Browser-এর cookie-তে success থাকলে
  • Client যে অঙ্ক পাঠায় তা মিললে
  • স্বাক্ষরসহ webhook বা validation API যাচাই আর অঙ্ক মেলার পরে

(কঠিন) Payment-এর অবস্থা PAID. Gateway একই payment.succeeded ঘটনা (একই event id) আবার পাঠাল, কারণ আগের উত্তর তার কাছে পৌঁছায়নি। Webhook handler কী ফেরত দেবে?

  • 409 Conflict, কারণ ঘটনাটি duplicate
  • কিছু না বদলে 200, কারণ event id আগেই আছে
  • আবার order নিশ্চিত করে 200
  • 500, যাতে gateway পরে আবার পাঠায়

(মাঝারি) Checkout session তৈরির অনুরোধ timeout হলো। একই অর্ডারের জন্য আবার পাঠাতে হবে। কোনটি duplicate session ঠেকায়?

  • আগের মতো একই Idempotency-Key দিয়ে পাঠানো
  • প্রতিবার নতুন random key দেওয়া
  • Timeout বাড়িয়ে ৫ মিনিট করা
  • দ্বিতীয়বার অঙ্ক এক পয়সা কমিয়ে পাঠানো

মডিউল ১০ — অন্য framework (১৮টি প্রশ্ন)

একই ধারণা, ভিন্ন নাম: reactivity, ORM-এর N+1, যাচাইয়ের status আর mass assignment. নম্বর হারায় Vue-র destructure, Django-র lazy QuerySet আর FastAPI-র blocking call-এ; ঝালিয়ে নিন পর্ব ৬৬ থেকে পর্ব ৭১.

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৬৬–৭১

(সহজ) Vue 3-এর Composition API-তে নিচের কোড console-এ কী ছাপবে?

const count = ref(2)
const triple = computed(() => count.value * 3)
count.value = 5
console.log(triple.value)
  • 6
  • undefined
  • 15
  • TypeError

(মাঝারি) Vue 3-এ নিচের কোড চালালে console-এ কী আসবে?

const state = reactive({ n: 1 })
let { n } = state
state.n = 2
console.log(n)
  • undefined
  • 2
  • 1
  • Proxy {n: 2}

(মাঝারি) একটি Nuxt পাতা server-এ render হয় আর পণ্যের তালিকা API থেকে আনে। <script setup>-এ সরাসরি $fetch লিখলে সাধারণ সমস্যা কী, আর কী লিখবেন?

  • $fetch server-এ চলে না; axios লাগবে
  • কোনো সমস্যা নেই; শুধু Pinia যোগ করুন
  • onMounted-এর ভেতরে $fetch
  • ডেটা দুবার আনা হয়; await useFetch('/api/products')

(মাঝারি) Angular-এর signal দিয়ে লেখা নিচের কোড console-এ কী ছাপবে?

const qty = signal(1);
const total = computed(() => qty() * 40);
qty.set(3);
console.log(total());
  • 40
  • 120
  • [Function]
  • NG0203 error

(মাঝারি) Svelte 5-এ items একটি $state array. একজন developer মোট দাম রাখতে $effect-এর ভেতরে total = … লিখলেন। ভালো পদ্ধতি কোনটি?

  • যেমন আছে রাখা, $effect-ই নিয়ম
  • let total = $derived(items.reduce(…))
  • setInterval দিয়ে প্রতি সেকেন্ডে হিসাব
  • পুরোনো $: label দিয়ে লেখা

(সহজ) SvelteKit-এ database থেকে পড়তে হবে আর secret ব্যবহার করতে হবে। load কোন ফাইলে লিখবেন?

  • +page.ts
  • +page.svelte
  • +layout.ts
  • +page.server.ts

(মাঝারি) Django-তে নিচের লাইনগুলো চললে, শুরুতে query সংখ্যা ০ ধরে, মোট কতটি SQL ডেটাবেসে যাবে?

qs = Product.objects.filter(stock__gt=0)
qs = qs.order_by("price")
n = len(qs)
rows = list(qs)
  • ১টি
  • ২টি
  • ৪টি
  • ০টি

(মাঝারি) Django-তে প্রতিটি পণ্যের অনেকগুলো tag (ManyToMany). ২০টি পণ্যের তালিকায় প্রতিটির tag দেখাতে হবে। কম query-র জন্য কোনটি?

  • select_related('tags')
  • শুধু raw SQL লেখা
  • prefetch_related('tags')
  • Template-এর লুপে p.tags.all, কিছু না বদলে

(সহজ) Production-এ Django চালানোর আগে কোন তিনটি setting সবচেয়ে জরুরি?

  • DEBUG=True, SQLite, runserver
  • TIME_ZONE, LANGUAGE_CODE, STATIC_URL
  • কোডে লেখা SECRET_KEY, CORS সবার জন্য খোলা
  • DEBUG=False, গোপন SECRET_KEY, ALLOWED_HOSTS

(মাঝারি) FastAPI-তে body model-এ price: int, কোনো model_config নেই। Client {"price": "abc"} পাঠাল। কী আসবে?

  • 422, detail-এ loc-সহ ভুলের তালিকা
  • 400 Bad Request, খালি body
  • 200, price ০ ধরে
  • 500 Internal Server Error

(কঠিন) একটি uvicorn process-এ FastAPI route async def, আর ভেতরে time.sleep(1.5). একসাথে ৪টি request এলো। শেষ request প্রায় কখন উত্তর পাবে?

  • প্রায় ১.৫ সেকেন্ডে
  • প্রায় ৩ সেকেন্ডে, thread pool ভাগ করে
  • প্রায় ৬ সেকেন্ডে
  • কখনো না, সবাই timeout

(মাঝারি) FastAPI-তে handler একটি user object ফেরত দেয় যাতে password_hash আছে। Client-এ hash যেন না যায়, তার সবচেয়ে ভালো উপায় কোনটি?

  • প্রতিটি handler-এ হাতে del করা
  • Input model-এ extra='forbid'
  • শুধু নিরাপদ field-এর response_model=UserOut
  • React-এ field টি না দেখানো

(মাঝারি) Laravel-এ Product model-এ protected $guarded = [];. একটি route Product::create($request->all()) চালায়, আর কেউ body-তে is_featured: true পাঠাল। কী হবে?

  • is_featured বাদ যাবে
  • MassAssignmentException আসবে
  • 422, কারণ field অচেনা
  • is_featured সত্যিই true হয়ে সেভ হবে

(সহজ) Laravel-এর Blade-এ <p>{!! $bio !!}</p>, আর ব্যবহারকারীর লেখা $bio-তে একটি <script> আছে। Browser-এ কী হবে?

  • Script লেখা হিসেবে দেখাবে
  • Blade compile error দেবে
  • Script চলবে, XSS ঘটবে
  • Script tag আপনাআপনি মুছে যাবে

(মাঝারি) Laravel-এ ১০টি পণ্যের তালিকায় প্রতিটির বিভাগের নাম দেখাতে হবে। Product::with('category')->get() দিয়ে আনলে মোট কয়টি SQL query যাবে?

  • ১১টি
  • ২টি
  • ১টি
  • ১০টি

(মাঝারি) একটি transaction-এ Hibernate ৮টি পণ্য আনে, যারা ২টি category-তে ছড়ানো; লুপে প্রতিটির lazy category পড়া হয়। মোট কতটি SQL?

  • ৩টি
  • ৯টি
  • ১টি
  • ৮টি

(মাঝারি) Spring Boot-এ @Valid দেওয়া body যাচাইয়ে ব্যর্থ। ক্রেতার form-এ কোন ঘর ভুল তা দেখাতে হবে, status 422. কী করবেন?

  • কিছু না, ডিফল্টই 422 আর ঘরের তালিকা
  • প্রতিটি controller-এ try/catch
  • @Valid সরিয়ে দেওয়া
  • @RestControllerAdvice দিয়ে 422 ProblemDetail

(সহজ) Rails-এ Product নামের model-এর জন্য, কোনো setting না লিখে, ডিফল্ট টেবিলের নাম কী? এই নীতির নাম কী?

  • Product; dependency injection
  • products; convention over configuration
  • tbl_product; auto-configuration
  • হাতে না লিখলে error; configuration over convention

৯ · মডিউল ১১ ও ১২ — Testing আর production (৩৯টি প্রশ্ন)

মডিউল ১১ — Testing (১৮টি প্রশ্ন)

কোন স্তরে কোন test, কোন query বা locator, আর কোন নকল কোথায়। নম্বর বেশি হারায় toBe বনাম toEqual, getBy বনাম queryBy, আর version-নির্ভর ডিফল্টে: Vitest 5-এর clearMocks (পর্ব ৭৩) আর MSW 3-এর option-এর নাম (পর্ব ৭৭)।

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৭২–৭৭

(সহজ) কোন বর্ণনাটি ক্লাসিক test pyramid-এর সাথে মেলে?

  • সবচেয়ে বেশি E2E, সবচেয়ে কম unit
  • সবচেয়ে বেশি unit, মাঝে কম integration, চূড়ায় অল্প E2E
  • সবচেয়ে বেশি integration, ভিত্তিতে static check
  • প্রতিটি স্তরে সমান সংখ্যক test

(মাঝারি) একটি suite-এ ৪০০টি unit test (প্রতিটি ৫ ms), ৬০টি integration test (প্রতিটি ১৫০ ms) আর ৮টি E2E test (প্রতিটি ৬ সেকেন্ড), সব একটির পর একটি চলে। মোট সময় কত?

  • ১১ সেকেন্ড
  • ৪৮ সেকেন্ড
  • ১০৭ সেকেন্ড
  • ৫৯ সেকেন্ড

(মাঝারি) একটি mutation tool ৪০টি mutant বানাল। ৩৪টি অন্তত একটি test-এ লাল হলো, ৬টি সব test পার হয়ে গেল, timeout বা error নেই। Mutation score কত?

  • ৮৫%
  • ১৫%
  • ৩৪%
  • ১০০%

(মাঝারি) Vitest-এ নিচের test চালালে কী হবে?

test('ঝুড়ির id', () => {
  expect([1, 2]).toBe([1, 2]);
});
  • পাস করবে, কারণ দুই array-এর মান এক
  • TypeError দিয়ে থামবে
  • ফেল করবে, কারণ দুটি আলাদা array object
  • Skip হবে

(মাঝারি) একটি ফাইলের module স্তরে const send = vi.fn(). দুটি test-এর প্রতিটি একবার send() ডেকে expect(send).toHaveBeenCalledTimes(1) দেখে। Vitest 5.1-এর ডিফল্ট config-এ ফল কী?

  • দুটিই পাস করবে
  • প্রথমটি পাস, দ্বিতীয়টি ফেল, কারণ ডাক হবে ২
  • দুটিই ফেল করবে
  • Vitest error দেবে, কারণ vi.fn module স্তরে চলে না

(সহজ) “শুধু ঢাকার সময়ে শুক্রবার ৫% ছাড়” নিয়মের unit test যেকোনো দিনে, অপেক্ষা ছাড়া আর প্রতিবার একই ফলে চালাতে হবে। কোন হাতিয়ার সবচেয়ে উপযুক্ত?

  • শুধু শুক্রবারে CI চালানো
  • vi.useFakeTimers() আর vi.setSystemTime(...)
  • একটি snapshot test
  • তারিখের অংশ test থেকে বাদ রাখা

(সহজ) Testing Library-র নথির পছন্দের ক্রমে কোন query সবশেষে ব্যবহার করার কথা?

  • getByRole
  • getByLabelText
  • getByText
  • getByTestId

(মাঝারি) নিচের component test-এর উদ্দেশ্য, তালিকা আসার পরে “লোড হচ্ছে” লেখা নেই তা দেখানো। লেখা সত্যিই সরে গেলেও test ভুল দিয়ে থামে। ভুলটি কোথায়?

await screen.findByRole('list');
expect(screen.getByText('লোড হচ্ছে'))
  .not.toBeInTheDocument();
  • findByRole-এর বদলে getByRole লাগবে
  • not.toBeInTheDocument বলে কোনো matcher নেই
  • getByText না পেলে ভুল ছোড়ে; এখানে queryByText লাগবে
  • বাংলা লেখা দিয়ে খোঁজা যায় না

(মাঝারি) একটি component render-এর পরে network থেকে পণ্যের তালিকা আনে, আর তালিকা কয়েকশো ms পরে আসে। প্রথম পণ্যটি দেখা যায় কি না যাচাইয়ের সঠিক লেখা কোনটি?

  • expect(screen.getByRole('listitem')).toBeInTheDocument()
  • expect(await screen.findAllByRole('listitem')).not.toHaveLength(0)
  • expect(screen.queryByRole('listitem')).toBeNull()
  • await new Promise(r => setTimeout(r, 500)) দিয়ে অপেক্ষা

(সহজ) Supertest দিয়ে POST /api/orders-এর test-এ উত্তর 201 এল। ভালো API integration test আর কী যাচাই করবে?

  • Test database-এ order-এর সারিটি ঠিক মানসহ তৈরি হয়েছে কি না
  • বোতামের রং ঠিক আছে কি না
  • কিছু না, 201-ই যথেষ্ট প্রমাণ
  • Server কোন port-এ listen করেছে

(মাঝারি) একটি app-এর service নিজেই transaction খুলে commit করে। Test-এর ডেটা আলাদা রাখার কোন পথটি এখানে নির্ভরযোগ্য নয়?

  • প্রতিটি test-এর আগে truncate
  • Template থেকে worker-প্রতি আলাদা database
  • প্রতিটি test ফাইলে নতুন database
  • প্রতিটি test একটি transaction-এ, শেষে rollback

(মাঝারি) একটি test একই Idempotency-Key দিয়ে একই order-এর POST দুবার পাঠায়। সঠিক নকশার API-তে test কী প্রত্যাশা করবে?

  • Database-এ দুটি order, দুটিই 201
  • দ্বিতীয়টিতে 500
  • Database-এ একটিই order, দ্বিতীয় উত্তরে আগের ফল
  • দ্বিতীয়টিতে 401

(সহজ) Playwright-এ “অর্ডার সফল” লেখা দেখা যায় কি না যাচাইয়ের কোন লেখাটি শর্ত পূরণ পর্যন্ত নিজে বারবার দেখে?

  • expect(await page.getByText('অর্ডার সফল').isVisible()).toBe(true)
  • await page.waitForTimeout(2000)
  • await expect(page.getByText('অর্ডার সফল')).toBeVisible()
  • expect(await page.getByText('অর্ডার সফল').count()).toBe(1)

(মাঝারি) ৪০টি Playwright test-এর প্রতিটি UI দিয়ে login করে, প্রতিবার ৩ সেকেন্ড। Setup project-এ একবার login করে storageState ব্যবহার করলে login-এর মোট সময় কত কমবে?

  • ১১৭ সেকেন্ড
  • ১২০ সেকেন্ড
  • ৩ সেকেন্ড
  • ৩৭ সেকেন্ড

(মাঝারি) পাতায় পাঁচটি পণ্যের কার্ড (listitem), প্রতিটিতে “কার্টে যোগ করুন” বোতাম। “চাল ৫ কেজি” কার্ডের বোতামে ক্লিকের সবচেয়ে নির্ভরযোগ্য locator কোনটি?

  • page.getByRole('button', { name: 'কার্টে যোগ করুন' })
  • page.getByRole('listitem').filter({ hasText: 'চাল ৫ কেজি' }).getByRole('button', { name: 'কার্টে যোগ করুন' })
  • page.locator('button').first()
  • page.locator('.card:nth-child(3) .btn')

(মাঝারি) MSW 3 ব্যবহার করা একটি প্রজেক্টে handler নেই এমন যেকোনো অনুরোধে test ব্যর্থ করাতে চান। server.listen(...)-এ কোন option লিখবেন?

  • { onUnhandledRequest: 'error' }
  • { strict: true }
  • { bypass: false }
  • { onUnhandledFrame: 'error' }

(মাঝারি) একটি checkout service ডাকে বাইরের payment gateway, একটি SMS সেবা আর দোকানের নিজের PostgreSQL. Integration test-এ কোনগুলো নকল করা যুক্তিসংগত?

  • তিনটিই নকল
  • Gateway আর SMS নকল, PostgreSQL আসল
  • কোনোটিই নয়, সব আসল
  • শুধু PostgreSQL নকল

(কঠিন) ১০০টি test-এর প্রতিটি প্রতি run-এ স্বাধীনভাবে ১% সম্ভাবনায় flaky ফেল করে। একটি run পুরো সবুজ হওয়ার সম্ভাবনা প্রায় কত?

  • প্রায় ৩৭%
  • ৯৯%
  • প্রায় ৯০%
  • ০%

মডিউল ১২ — Production-এ পাঠানো (২১টি প্রশ্ন)

কোন মান build-এ জমে যায় আর কোনটি runtime-এ (পর্ব ৭৮), image আর pipeline-এর ক্রম (পর্ব ৮০, পর্ব ৮১), আর SLO, burn rate ও Core Web Vitals-এর ছোট হিসাব (পর্ব ৮৩, পর্ব ৮৪)। ফাঁদ সাধারণত NEXT_PUBLIC_, no-cache বনাম no-store আর শতাংশের হরে।

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৭৮–৮৪

(সহজ) একটি Next.js অ্যাপের staging সার্ভারে NODE_ENV-এর মান কী রাখা উচিত, আর পরিবেশের নাম কোথায় রাখবেন?

  • NODE_ENV=staging
  • NODE_ENV=development
  • NODE_ENV=production, আর নামের জন্য APP_ENV=staging
  • NODE_ENV খালি রাখা

(মাঝারি) Vite 8-এর একটি SPA-র .env-এ VITE_API_URL আর PAYMENT_SECRET (prefix ছাড়া) আছে। Browser-এর কোডে import.meta.env.PAYMENT_SECRET পড়লে production build-এ কী পাওয়া যায়?

  • undefined
  • secret-এর আসল মান
  • Build ব্যর্থ হয়
  • একটি এলোমেলো নকল মান

(মাঝারি) একটি নতুন checkout user id-র stable hash দিয়ে ১০% ব্যবহারকারীকে দেখানো হচ্ছে। এখন শতাংশ ২০% করা হলো। আগের ১০% দলের কী হবে?

  • নতুন করে এলোমেলো দল হবে, অনেকে পুরোনো পাতায় ফিরবেন
  • সবাই পুরোনো checkout-এ ফিরবেন
  • সবাইকে আবার login করতে হবে
  • তাঁরা নতুন checkout-এই থাকবেন, সাথে আরও ১০% যোগ হবে

(মাঝারি) নিচের কোন import-এ bundler অব্যবহৃত function নিরাপদে বাদ দিতে (tree shake) সবচেয়ে ভালো পারে?

  • const { debounce } = require('lodash')
  • import { debounce } from 'lodash-es'
  • import * as _ from 'lodash-es' আর _[name]() দিয়ে ডাকা
  • CDN থেকে পুরো lodash-এর script ট্যাগ

(মাঝারি) একটি দোকানের প্রথম পাতার বাজেট ≤ 150 kB (gzip). এখন JS 96 kB, CSS 18 kB আর font 30 kB. বাজেটে আর কত kB জায়গা বাকি?

  • 54 kB
  • 6 kB
  • বাজেট 6 kB ছাড়িয়ে গেছে
  • 36 kB

(মাঝারি) Production-এ browser-এর ভুল আসল ফাইল আর লাইনে দেখতে চান, কিন্তু মূল source সবার কাছে খোলা রাখতে চান না। সবচেয়ে ভালো পথ কোনটি?

  • Source map একেবারেই না বানানো
  • Map বানিয়ে server-এ প্রকাশ্যে রাখা
  • build.sourcemap: 'hidden', map error tracker-এ upload, server থেকে মুছে ফেলা
  • Minification বন্ধ রাখা

(সহজ) Next.js অ্যাপের Dockerfile-এ multi-stage build ব্যবহারের প্রধান লাভ কোনটি?

  • চূড়ান্ত image-এ শুধু চালানোর দরকারি জিনিস থাকে, তাই ছোট আর কম ঝুঁকির
  • Database migration নিজে চলে
  • NEXT_PUBLIC_ মান runtime-এ বদলানো যায়
  • SIGTERM নিজে থেকে সামলায়

(মাঝারি) docker stop-এর পরে একটি container-এর exit code 143 দেখা গেল। এর মানে কী?

  • সময়সীমা পেরিয়ে SIGKILL-এ মারা গেছে
  • Handler সব কাজ শেষ করে স্বাভাবিকভাবে বের হয়েছে
  • মেমরি শেষ হয়ে গেছে
  • Process SIGTERM সংকেতে থেমেছে

(মাঝারি) একটি Node অ্যাপের .dockerignore লেখা হচ্ছে, আর Dockerfile-এ npm ci আছে। নিচের কোনটি .dockerignore-এ রাখা ভুল?

  • node_modules
  • .env
  • .git
  • package-lock.json

(মাঝারি) একটি pull request-এর CI-তে দ্রুত ফল পাওয়ার জন্য ধাপগুলোর কোন ক্রম সবচেয়ে যুক্তিসংগত?

  • npm ci → lint ও type check → unit → database-সহ integration → build → E2E
  • E2E → build → unit → lint
  • lint → unit → npm ci → build
  • deploy → test → build

(মাঝারি) বাজারঘরের অ্যাপ production-এ ৪টি instance-এ চলে। CI/CD pipeline-এ prisma migrate deploy কখন আর কতবার চালানো সবচেয়ে নিরাপদ?

  • প্রতিটি instance চালু হওয়ার সময়, মোট ৪ বার
  • নতুন কোড traffic পাওয়ার পরে, সুবিধামতো সময়ে
  • একটি আলাদা job-এ একবার, নতুন release traffic পাওয়ার আগে
  • প্রতিটি pull request-এর CI-তে, production database-এ

(কঠিন) একটি workflow pull_request_target-এ চলে, তারপর PR-এর head commit checkout করে npm ci আর test চালায়। নিরাপত্তার দিক থেকে মূল সমস্যা কী?

  • pull_request_target ধীর
  • অচেনা কোড secret আর লেখার অনুমতিসহ চলে
  • Fork-এর PR-এ কোনো test চালানো যায় না
  • npm ci lockfile বদলে দেয়

(মাঝারি) একটি serverless API-র ৪০টি কপি একসাথে চলছে, প্রতিটির connection pool ৩, আর PostgreSQL-এর max_connections ১০০. কী ঘটবে, আর সমাধান কী?

  • ১২০টি সংযোগ চাওয়া হবে, সীমা ছাড়াবে; pool ছোট আর pooler লাগবে
  • ৪৩টি সংযোগ, কোনো সমস্যা নেই
  • সব কপি একটি pool ভাগ করে, তাই ৩টি সংযোগ
  • PostgreSQL নিজে max_connections বাড়িয়ে নেবে

(সহজ) একটি cPanel shared hosting-এ root নেই আর Node অ্যাপ চালানোর সুবিধা নেই। Next.js-এ বানানো একটি তথ্যের সাইট সেখানে স্বচ্ছন্দে চালানোর পথ কোনটি?

  • next start চালিয়ে রাখা
  • Static export করে ফাইলগুলো public_html-এ তোলা
  • pm2 cluster mode
  • Docker container চালানো

(মাঝারি) ঢাকা থেকে একটি server প্রায় ১,৫০০ কিলোমিটার দূরে। Fiber-এ আলো প্রতি মিলিসেকেন্ডে প্রায় ২০০ কিলোমিটার যায় ধরলে, তাত্ত্বিক সর্বনিম্ন round-trip time কত?

  • ৭.৫ ms
  • ৫ ms
  • ১৫০ ms
  • ১৫ ms

(মাঝারি) একটি সেবার SLO ৩০ দিনে ৯৯.৯৫% উপলব্ধতা। পুরো উপলব্ধতা ধরে হিসাব করলে মাসিক error budget কত মিনিট?

  • ৪৩.২ মিনিট
  • ০.৭২ মিনিট
  • ২১.৬ মিনিট
  • ২১৬ মিনিট

(মাঝারি) একটি সেবার SLO ৯৯.৫% সফল request. গত এক ঘণ্টায় request-এর ২% ব্যর্থ হয়েছে। এই এক ঘণ্টার burn rate কত?

  • ২
  • ০.৫
  • ৪
  • ০.২৫

(সহজ) নিচের কোনটি চারটি golden signal-এর একটি নয়?

  • Latency
  • Traffic
  • Saturation
  • Code coverage

(মাঝারি) একটি layout shift-এ সরে যাওয়া element-গুলো viewport-এর ৫০% জুড়েছিল, আর সবচেয়ে বেশি সরেছে viewport-উচ্চতার ৩০%. এই shift-এর score কত, আর একা এটিই পাতার CLS হলে কোন শ্রেণি?

  • ০.১৫, উন্নতি দরকার
  • ০.১৫, ভালো
  • ০.৮০, খারাপ
  • ০.৩০, খারাপ

(সহজ) Cache-Control: no-cache আর no-store-এর পার্থক্য কোনটি?

  • দুটি একই কাজ করে
  • no-cache রাখে কিন্তু প্রতিবার যাচাই করে; no-store রাখেই না
  • no-cache রাখেই না; no-store রেখে যাচাই করে
  • no-cache শুধু CDN-এর জন্য, no-store শুধু browser-এর জন্য

(মাঝারি) Reverse proxy-তে gzip বা Brotli চালু করার সময় কোন ধরনের ফাইল সংকোচন থেকে বাদ রাখা উচিত?

  • HTML
  • JavaScript
  • JSON উত্তর
  • AVIF বা WebP ছবি

১০ · মডিউল ১৩ — Stack বাছাই আর ক্যাপস্টোন (১২টি প্রশ্ন)

মডিউল ১৩ — Stack বাছাই আর ক্যাপস্টোন (১২টি প্রশ্ন)

এখানে প্রশ্ন আসে সিদ্ধান্তের ছক, AI-এর লেখা কোড যাচাই আর ক্ষমতার হিসাব থেকে। নম্বর হারায় ওজনের গুণে, ৮৬,৪০০ দিয়ে ভাগ ভুলে যাওয়ায় আর “চলে, তাই ঠিক” ভাবায়; ঝালিয়ে নিন পর্ব ৮৫, পর্ব ৮৬, পর্ব ৮৭ আর পর্ব ৮৮।

যে পর্বগুলো ঝালিয়ে নেবেন · পর্ব ৮৫–৮৮

(মাঝারি) তিনটি মাপকাঠির ওজন 50, 30, 20. Stack A-র স্কোর 4, 3, 5; Stack B-র 5, 2, 3. ওজন দেওয়া মোট (÷ 100) অনুযায়ী ফল কী?

  • B জেতে, কারণ সবচেয়ে ভারী মাপকাঠিতে B-র স্কোর 5
  • A জেতে, 12 বনাম 10
  • A জেতে, 3.90 বনাম 3.70
  • দুটি সমান, 3.80

(সহজ) তিনজনের একটি দল আগে Django আর PostgreSQL production-এ চালিয়েছে। আট সপ্তাহে একটি admin-ভারী inventory app বানাতে হবে, অল্প ট্রাফিক। কোন বাছাই সবচেয়ে যুক্তিসংগত?

  • Django আর PostgreSQL
  • সদ্য প্রকাশিত একটি নতুন framework
  • Kubernetes-এ পাঁচটি microservice
  • শূন্য থেকে শিখে MERN

(মাঝারি) “Innovation token” ধারণাটি stack বাছাইয়ে কী পরামর্শ দেয়?

  • যত বেশি নতুন প্রযুক্তি, তত ভালো পণ্য
  • কখনো কোনো নতুন প্রযুক্তি নেওয়া চলবে না
  • প্রতিটি প্রযুক্তির জন্য লাইসেন্স কিনতে হয়
  • অল্প কয়েকটি নতুন প্রযুক্তি, শুধু যেখানে তা পণ্যের মূল সুবিধা দেয়

(সহজ) AI সহকারী একটি npm package-এর নাম দিল, যা আপনি আগে কখনো দেখেননি। Install-এর আগে প্রথম যাচাই কোনটি?

  • সরাসরি npm install করে চালিয়ে দেখা
  • npm view দিয়ে package আছে কি না আর তার বিবরণ দেখা
  • একই AI-কে জিজ্ঞেস করা নামটি ঠিক কি না
  • শুধু GitHub-এ star গোনা

(মাঝারি) একজন ডেভেলপার তাড়াহুড়োয় npm i raect লিখলেন (react-এর বদলে)। এর সবচেয়ে বড় ঝুঁকি কী?

  • npm নিজে নাম শুধরে react বসাবে
  • শুধু bundle একটু বড় হবে
  • সবসময় E404 আসবে, তাই কোনো ঝুঁকি নেই
  • কাছাকাছি নামের অন্য কারও package install হয়ে তার কোড চলতে পারে

(মাঝারি) Next.js 16-এর একটি পাতায় AI পুরোনো ধাঁচে লিখেছে, আর পাতার type হাতে লেখা { params: { id: string } }. Build সফল। /products/7 খুললে কী দেখা যায়?

export default function Page({ params }) {
  return <h1>পণ্য {params.id}</h1>;
}
  • “পণ্য 7” ঠিকঠাক দেখায়
  • পাতা খোলে, কিন্তু পণ্যের নম্বর নেই
  • Build ব্যর্থ হয়েছিল, পাতা খোলে না
  • 404 পাতা

(মাঝারি) একটি অ্যাপের DAU ১,০০,০০০, প্রতিজন দিনে ২০টি অনুরোধ করেন, আর peak factor ৪. Peak-এ মোটামুটি কত req/s?

  • প্রায় ২৩
  • প্রায় ২,২২২
  • প্রায় ৯৩
  • ৫,০০,০০০

(মাঝারি) একটি database প্রতি সেকেন্ডে ৩০০টি SQL পায়, প্রতিটি গড়ে ৪০ ms connection ধরে রাখে। Little-এর সূত্রে গড়ে কতটি connection ব্যস্ত থাকে?

  • ১২
  • ১২,০০০
  • ৭.৫
  • ৩০০

(মাঝারি) Peak-এ cache করা যায় এমন ৪,০০০টি পড়া আসে প্রতি সেকেন্ডে, আর database আরামে সেকেন্ডে ৮০০টি নিতে পারে। Cache-এর hit rate অন্তত কত হতে হবে?

  • ৮০%
  • ২০%
  • ১০০%
  • ৫০%

(সহজ) ক্যাপস্টোনের “checkout” milestone-এর জন্য কোনটি ভালো acceptance criterion?

  • Checkout পাতা সুন্দর দেখাবে
  • Checkout দ্রুত হবে
  • Checkout-এর কোড লেখা হবে
  • স্টক ১ থাকলে দুজন একসাথে কিনলে একটিই order হবে, অন্যজন “স্টক নেই” দেখবেন

(মাঝারি) একজন ডেভেলপার টাকায় দাম রেখে মোট হিসাব করছেন। নিচের JavaScript কী ছাপবে?

const total = 0.1 + 0.2;
console.log(total === 0.3);
  • true
  • false
  • NaN
  • TypeError

(মাঝারি) ক্যাপস্টোনের checkout milestone-এর কোড লেখা শেষ, পর্দাও চলছে। কিন্তু “স্টক ১, দুজন একসাথে কিনলেন” acceptance criterion-এর test এখনো লেখা হয়নি, আর দল email-এর milestone শুরু করতে চায়। সবচেয়ে ভালো সিদ্ধান্ত কোনটি?

  • এগিয়ে যাওয়া, সব test শেষে একসাথে লেখা
  • Race-এর test বাদ দেওয়া, কারণ শুরুতে ক্রেতা কম
  • আগে race-এর test লিখে criterion পাস করানো, তারপর email
  • Email আগে, কারণ ক্রেতা সেটিই প্রথম দেখেন

AI-এর যুগে — AI দিয়ে আরও MCQ বানান, কিন্তু উত্তর নিজে যাচাই করুন

AI মুহূর্তে শত শত MCQ বানাতে পারে, কিন্তু ফুল-স্ট্যাকের প্রশ্নে সে প্রায়ই পুরোনো version-এর আচরণকে “সঠিক” বলে, অস্তিত্বহীন option বা package লেখে, অথবা একই প্রশ্নে দুটি সঠিক অপশন রাখে। Framework দ্রুত বদলায়, আর AI-এর শেখা লেখার বড় অংশ পুরোনো টিউটোরিয়াল। তাই AI-এর বানানো প্রশ্ন অনুশীলনের ভালো কাঁচামাল, উত্তরপত্র নয়।

AI-এর প্রচলিত ভুলউদাহরণকীভাবে ধরবেন
পুরোনো APIPages Router-এর getServerSideProps, middleware.ts, সরাসরি params.idনিজের version-এর অফিসিয়াল docs দেখুন; ছোট project-এ চালান
বানানো option বা packageঅস্তিত্বহীন config key, অচেনা npm নামnpm view আর docs-এ খুঁজুন (পর্ব ৮৬)
দুটি সঠিক অপশন401 আর 403 দুটোই খাটে, কারণ শর্ত অস্পষ্টপ্রশ্নে শর্তটি যোগ করতে বলুন, যেমন “অস্তিত্ব গোপন”
ভুল আউটপুট, নিশ্চিত সুরেEvent loop-এর ক্রম, setN-এর ফলকোডটি নিজে চালিয়ে আউটপুট মেলান
অনিরাপদ “সঠিক উত্তর”Frontend-এ শুধু বোতাম লুকানো, origin: '*' credentials-সহঅনুমতি আর যাচাই server-এ আছে কি না দেখুন
বানানো উৎস“অমুক পরীক্ষায় এসেছিল”উৎস দেখাতে না পারলে দাবি বাদ

নিচের প্রম্পটটি AI-কে নির্দিষ্ট version-এ প্রশ্ন বানাতে বলে, আর যাচাইয়ের উপায়ও চায়:

আমি ফুল-স্ট্যাক ওয়েব ডেভেলপমেন্টের MCQ পরীক্ষার প্রস্তুতি নিচ্ছি। বিষয়: [যেমন: React useEffect cleanup / Express error middleware / Next.js 16 caching / Prisma relation] Version: [যেমন: React 19, Next.js 16, Express 5, Prisma 7] কঠিনতা: [সহজ / মাঝারি / কঠিন] ১০টি MCQ বানাও। প্রতিটির জন্য: ১. ঠিক ৪টি অপশন, শুধু একটি সঠিক। দরকারি সব কোড আর তথ্য প্রশ্নেই থাকবে। ২. যে আচরণ version-এ বদলেছে, সেখানে version উল্লেখ করো আর অফিসিয়াল docs-এর কোন পাতায় মিলিয়ে দেখব তা বলো। ৩. কোড পড়ে আউটপুট বলার প্রশ্নে কোডটি এমন রাখো যাতে আমি নিজে চালিয়ে মেলাতে পারি। ৪. প্রতিটি ভুল অপশন কোন ভুল ধারণা থেকে এসেছে, এক লাইনে লেখো। ৫. কোনো package বা option-এর নাম নিশ্চিত না হলে “নিশ্চিত নই” লেখো; নাম বানাবে না। ৬. কোনো প্রশ্নকে কোনো নির্দিষ্ট পরীক্ষা বা প্রতিষ্ঠানের আসল প্রশ্ন বলে দাবি করবে না।

যাচাইয়ের চেকলিস্ট

কেন এই উত্তর ভুল? — রিভিশনের কৌশল আর বড় ধারণা

আগে নিজে ভাবুন, তারপর খুলে দেখুন।

প্র ০১এতগুলো প্রশ্ন দিয়ে কীভাবে রিভিশন করলে সবচেয়ে বেশি কাজে লাগে?

একটানা পড়ে যাওয়া, মানে প্রশ্ন দেখা, উত্তর চাপা আর এগোনো, সবচেয়ে কম কাজে লাগে। শেখার গবেষণায় বারবার কার্যকর পাওয়া গেছে দুটি অভ্যাস: নিজে থেকে মনে করা (active recall) আর বিরতি দিয়ে ফেরা (spaced repetition).

  • এক মডিউল, পুরো মনোযোগ: একবারে একটি অংশ নিন। চাপার আগে খাতায় উত্তর আর এক লাইনের কারণ লিখুন, যেমন “owner শর্ত নেই, তাই IDOR”. কারণ লিখতে না পারলে ঠিক হলেও ভুল গুনুন।
  • ভুলের খাতা: প্রতিটি ভুলের পাশে প্রশ্ন নয়, নিয়মটি লিখুন: “একই render-এ state একটি snapshot”. পরীক্ষায় একই নিয়ম অন্য কোডে আসে।
  • পর্বে ফিরুন: একটি মডিউলে চারটির বেশি ভুল হলে তার পর্ব আবার পড়ুন। ১, ৩ আর ৭ দিন পরে শুধু ভুলগুলো করুন, অপশন পড়ার আগেই উত্তর বলে।
  • কোড চালিয়ে দেখুন: আউটপুটের প্রশ্নে ভুল হলে কোডটি নিজের যন্ত্রে বা পর্বের live block-এ চালান। নিজের চোখে দেখা ফল সহজে ভোলা যায় না।
  • ভুলের ধরন আলাদা গুনুন: ধারণায় ভুল মানে পর্বে ফেরা; কোড পড়ায় ভুল মানে ধীরে, লাইন ধরে অবস্থা লেখা; হিসাবে ভুল মানে একক আর সূত্র আবার দেখা।

একটি বাস্তব সূচি এমন হতে পারে: দিনে একটি বা দুটি মডিউল, ঘড়ি ধরে প্রতি প্রশ্নে এক মিনিট। সব শেষ হলে এলোমেলো ২০টি ভুল প্রশ্ন আবার করুন, কারণ পরীক্ষায় বিষয় মিশে আসে: একই প্রশ্নে React-এর state আর API-র status code থাকতে পারে। এলোমেলো অনুশীলন কঠিন লাগে, তবে মনে থাকে বেশি।

দ্বিতীয়বারে স্কোর বাড়ে অপশন মনে থাকার জন্যও। তাই নিজেকে যাচাই করতে কোডের একটি লাইন বা একটি সংখ্যা বদলে নিজের প্রশ্ন বানান, তারপর চালিয়ে মেলান।

মূল উপলব্ধি: প্রশ্ন নয়, পেছনের নিয়ম মনে রাখাই লক্ষ্য।

প্র ০২400 আর 422, 401 আর 403, 403 আর 404: এই জোড়াগুলোতে এত ভুল হয় কেন?

কারণ চারটিই “client-এর দিকে কিছু ভুল” বোঝায়, আর পার্থক্য লুকিয়ে থাকে একটি শর্তে। HTTP-র অর্থ এখন একটি দলিলে গোছানো: RFC 9110 (HTTP Semantics, জুন ২০২২)। সেখানে প্রতিটি code একটি নির্দিষ্ট প্রশ্নের উত্তর।

400 মানে অনুরোধটি পড়াই যায়নি, যেমন ভাঙা JSON. 422 মানে পড়া গেছে, কিন্তু ভেতরের মান নিয়ম ভাঙে, যেমন দাম শূন্য। 422 এসেছিল WebDAV-এর RFC 4918 (২০০৭) থেকে; RFC 9110 একে সাধারণ HTTP-র অংশ করে, নাম দেয় “Unprocessable Content”. Zod বা Pydantic-এর যাচাই ব্যর্থ হলে তাই প্রায়ই 422 আসে (পর্ব ৩৩, ৬৯)।

401 মানে পরিচয় পাওয়া যায়নি বা অবৈধ; নামটি “Unauthorized” হলেও অর্থে এটি authentication-এর ব্যর্থতা। 403 মানে পরিচয় আছে, কিন্তু অনুমতি নেই। আর RFC 9110 নিজেই বলে, যে server নিষিদ্ধ জিনিসের অস্তিত্ব লুকাতে চায়, সে 403-র বদলে 404 দিতে পারে। এজন্য অন্যের order-এর প্রশ্নে “অস্তিত্ব গোপন” শর্তটি থাকলে উত্তর 404 (পর্ব ৪৮)।

Error-এর body-ও একটি মান মেনে চলতে পারে: RFC 9457 (২০২৩) problem details, যা আগের RFC 7807 (২০১৬)-এর জায়গা নিয়েছে। এতে type, title, status, detail থাকে, আর client একই ছাঁচে সব ভুল পড়তে পারে।

পরীক্ষায় কৌশল একটিই: প্রশ্নের ঘটনাটিকে এক বাক্যে বলুন: “পড়া গেল না”, “কে জানি না”, “জানি, কিন্তু অনুমতি নেই”, “নিয়ম ভাঙল”, “এখনকার অবস্থার সাথে সংঘাত”। বাক্যটি ঠিক হলে code নিজেই বেরিয়ে আসে। 502 আর 504-এও একই কৌশল: পেছনের server খারাপ উত্তর দিল, না সময়মতো দিলই না।

মূল উপলব্ধি: Code মুখস্থ নয়; আগে ব্যর্থতার নাম দিন (পর্ব ২, ৩৩, ৪৮)।

প্র ০৩Version-নির্ভর প্রশ্নের প্রস্তুতি কীভাবে নেবেন, যখন টুল প্রতি বছর বদলায়?

ফুল-স্ট্যাকের টুল দ্রুত বদলায়, আর পরিবর্তনগুলো প্রায়ই ঠিক সেই জায়গায়, যেখানে MCQ বানানো সহজ। Next.js-এর App Router স্থির হয় 13.4-এ (২০২৩), Next.js 15 (অক্টোবর ২০২৪)-এ params Promise হয়, আর এই কোর্সের Next.js 16-এ middleware.ts-এর নাম proxy.ts, আর cache স্পষ্টভাবে "use cache" দিয়ে চালু করতে হয়। React 19 স্থির হয় ডিসেম্বর ২০২৪-এ, এবং form action, useActionState-এর মতো API আনে।

Backend আর test-এর টুলেও একই ছবি। এই কোর্সের run-এ Prisma 7-এ database URL schema ফাইল থেকে config ফাইলে সরেছে, আর client চলে driver adapter দিয়ে। Vitest 5-এ clearMocks ডিফল্টে চালু, তাই আগের test-এর ডাকের হিসাব পরের test-এ থাকে না। MSW 3-এ পুরোনো option নাম onUnhandledRequest নীরবে উপেক্ষিত হয়, আর অচেনা request আসল network-এ চলে যায়, যা test-কে সবুজ রেখেও ভুল প্রমাণ করে।

প্রস্তুতির তিনটি অভ্যাস কাজে লাগে। প্রথম, প্রতিটি version-নির্ভর তথ্যের পাশে version লিখে রাখুন: “Next.js 16: proxy.ts”. দ্বিতীয়, “কেন বদলাল” জানুন, তাহলে নতুন version-এও যুক্তি খাটবে; যেমন cache স্পষ্ট করা হয়েছে, কারণ নিজে থেকে cache হওয়া ডেটা অনেককে চমকে দিত। তৃতীয়, নিজের release notes আর migration guide পড়ার অভ্যাস করুন; পরীক্ষার বাইরেও এটিই আসল কাজ।

প্রশ্নে version না থাকলে এমন উত্তর বাছুন যা version-এর বাইরে সত্য: অনুমতি server-এ, secret client-এ নয়, যাচাই দুই দিকে। আর কোনো অপশন শুধু পুরোনো টিউটোরিয়ালে সত্য মনে হলে, সেটিই সম্ভবত distractor.

মূল উপলব্ধি: Version-নির্ভর তথ্য version সহ মনে রাখুন; নীতিগুলো version ছাড়াই (পর্ব ৩৯, ৫১, ৫৩, ৫৭, ৭৩, ৭৭)।

প্র ০৪React-এর “আউটপুট বলুন” প্রশ্নগুলো এত বিভ্রান্ত করে কেন?

কারণ React-এর কোড সাধারণ JavaScript-এর মতো দেখায়, কিন্তু চলে অন্য নিয়মে। Hook আসে React 16.8 (ফেব্রুয়ারি ২০১৯)-এ, আর তার মূল ধারণা হলো: প্রতিটি render একটি ছবি, যার নিজের props আর state থাকে। Event handler-এর ভেতরে n সেই ছবির মান, পরের render-এর নয়।

তাই setN(n + 1) তিনবার লিখলে তিনটিই একই n দেখে, ফল +১. setN(x => x + 1) তিনবার দিলে React প্রতিটি updater আগের ফলের ওপর চালায়, ফল +৩. React 18 (২০২২) থেকে automatic batching-এ timeout বা promise-এর ভেতরের setter-ও একসাথে জমে একটি render দেয়। এই দুই নিয়ম জানলে state-এর অনেক প্রশ্ন সোজা হয়ে যায় (পর্ব ১০)।

দ্বিতীয় বড় ফাঁদ StrictMode. Development-এ React component আর effect একবার বাড়তি চালায়, যাতে cleanup না থাকা ধরা পড়ে। তাই dev-এ log দুবার দেখা মানেই bug নয়, আর production build-এ এই বাড়তি চক্র থাকে না। প্রশ্নে “dev” না “production” লেখা আছে, আগে সেটি দেখুন (পর্ব ৭, ১৩)।

তৃতীয় ফাঁদ key আর reconciliation. দুটি গাছের সাধারণ তুলনা O(n³), তাই React দুটি অনুমান করে O(n)-এ কাজ সারে: আলাদা type মানে আলাদা গাছ, আর key বলে কোন সন্তান কোনটি। Index-কে key দিলে সারি সরলেও key সরে না, তাই input-এর state ভুল সারিতে থেকে যায় (পর্ব ১১, ১৫)।

খাতায় একটি ছোট টেবিল আঁকুন: render নম্বর, state, কী log হলো। মাথায় হিসাব রাখলে ভুল হয় ঠিক এই সারিগুলোতেই।

মূল উপলব্ধি: প্রতিটি render একটি snapshot; dev আর production আলাদা; key পরিচয় দেয়।

প্র ০৫N+1, pagination, cache আর latency-র numerical দ্রুত করার কোনো সাধারণ উপায় আছে?

আছে: আগে গণনার একক ঠিক করুন, তারপর গুনুন। ফুল-স্ট্যাকের numerical-এ আসল কঠিন অংশ গণিত নয়, কী গুনছি তা বোঝা: query, সারি, অনুরোধ, না মিলিসেকেন্ড।

N+1: একটি তালিকা আনতে ১টি query, তারপর প্রতিটি সারির জন্য ১টি করে, মোট ১ + N. ২০টি পণ্যে ২১টি query, আর প্রতিটির দেরি ৫ ms ধরলে শুধু database-এ ১০৫ ms. Include বা DataLoader দিলে সাধারণত ২টি query. প্রশ্নে nested সম্পর্ক থাকলে প্রতিটি স্তরের জন্য আলাদা গুনুন (পর্ব ৩৬, ৪২)।

Offset pagination: PostgreSQL-কে OFFSET-এর সারিগুলো পড়ে ফেলে দিতে হয়, তাই page ৫,০০০-এ ২০টি দেখাতে প্রায় ১,০০,০০০ সারি ছুঁতে হয়। Cursor বা keyset-এ index থেকে সরাসরি পরের ২০টি, তাই খরচ প্রায় স্থির (পর্ব ৩৪)।

Cache: গড় সময় = hit rate × hit-এর সময় + miss rate × miss-এর সময়। Hit rate ৯৫% আর সময় ১ ms ও ৪০ ms হলে গড় ০.৯৫ + ২ = ২.৯৫ ms. Hit rate বাড়ানোর চেয়ে miss-এর খরচ কমানোও সমান কাজের হতে পারে (পর্ব ৪৪)।

Little's law: John Little ১৯৬১ সালে প্রমাণ করেন, স্থির অবস্থায় গড়ে চলমান কাজ L = আগমনের হার λ × গড় সময় W. সেকেন্ডে ২০০ অনুরোধ আর ৫০ ms মানে গড়ে ১০টি অনুরোধ একসাথে চলে। W-কে সেকেন্ডে লিখতে ভুলবেন না (পর্ব ২৪)।

শেষে মাত্রা আন্দাজ করুন: উত্তরটি বাস্তব মনে হচ্ছে কি? ২১টি query-তে ১০ সেকেন্ড, বা cache-এ গড় miss-এর চেয়েও বেশি সময় হলে কোথাও একক ভুল।

মূল উপলব্ধি: কী গুনছেন বলুন, একক লিখুন, তারপর গুণ করুন।

শেষ ধাপ — ক্রম সাজান আর স্কোর দেখুন

উপরের সব MCQ শেষ করলে নিচে আপনার মোট স্কোর দেখাবে।

ক্রমএকটি ফুল-স্ট্যাক project-এর CI pipeline-এর ছয় ধাপ। আগে থেকে পরে সাজান (▲▼ চেপে সরান)

  1. npm ci: lockfile ধরে dependency বসানো
  2. Lint: কোডের ধরন আর চেনা ভুল
  3. Type check: TypeScript-এর যাচাই
  4. Unit ও component test
  5. Build: production bundle বানানো
  6. E2E test: browser-এ পুরো পথ

শব্দকোষ

লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন, অর্থ দেখাবে। এই পর্বের সব শব্দ এখানে একসাথে:

মনে রাখুন

  1. বাদ দিয়ে উত্তর: আগে পরিস্থিতির নাম দিন, তারপর প্রতিটি অপশনের পেছনের ভুল ধারণা খুঁজুন।
  2. Status code একটি প্রশ্নের উত্তর: পড়া গেল? কে? অনুমতি? নিয়ম? সংঘাত? শর্ত বললে 403-র বদলে 404.
  3. Snapshot, StrictMode আর key: একই render-এ state স্থির; dev-এর দ্বিগুণ চলা production-এ নেই; key পরিচয় দেয়।
  4. Version সহ মনে রাখুন: Next.js 16-এ proxy.ts আর স্পষ্ট cache, Prisma 7-এ config ফাইল, Vitest 5-এ clearMocks, MSW 3-এ onUnhandledFrame.
  5. আসল নিয়ম server-এ: যাচাই, অনুমতি আর secret কখনো শুধু browser-এর ভরসায় নয়।

পরের পর্বে: MCQ চেনায় কোনটি সঠিক; লিখিত পরীক্ষা আর ভাইভা চায় কেন সঠিক। পর্ব ৯১-এ React, API, database আর deployment-এর লিখিত ও মৌখিক প্রশ্ন।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

এই পর্বটি শেয়ার করুন:
এই পর্বে ভুল পেয়েছেন? জানান