Practice Problems
বিগিনার থেকে interview — লেভেল ভিত্তিক practice problem সেট, কমেন্ট-সহ সমাধান বাংলায়।
শেখা শেষে চর্চা। এই set-গুলো স্তরে স্তরে — নিজে করে দেখুন, তারপর সমাধান মিলিয়ে নিন। প্রতিটি সমস্যা একাধিক কৌশল শেখায়।
Level 1 — Beginner
মৌলিক বিভাগ: variable, condition, loop, function।
১. জোড়-বিজোড়
function isEven(n) {
return n % 2 === 0;
}
console.log(isEven(4)); // true
console.log(isEven(7)); // false২. ১ থেকে ১০০ পর্যন্ত যোগফল
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum); // 5050৩. বড় সংখ্যা
function max2(a, b) {
return a > b ? a : b;
}
console.log(max2(3, 9)); // 9৪. শব্দ উল্টানো
function reverse(str) {
return str.split("").reverse().join("");
}
console.log(reverse("code")); // edocLevel 2 — Intermediate
array, string ও object-এ মাঝামাঝি সমস্যা।
৫. prime সংখ্যা
function isPrime(n) {
if (n < 2) return false;
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
}
console.log(isPrime(17)); // true৬. Set ছাড়া unique array
function unique(arr) {
const seen = new Set();
return arr.filter((x) => {
if (seen.has(x)) return false;
seen.add(x);
return true;
});
}
console.log(unique([1, 2, 2, 3, 1])); // [1, 2, 3]৭. frequency count
function freq(str) {
const map = {};
for (const ch of str) {
map[ch] = (map[ch] || 0) + 1;
}
return map;
}
console.log(freq("banana")); // { b: 1, a: 3, n: 2 }৮. array-তে find max/min
function minMax(arr) {
return {
min: Math.min(...arr),
max: Math.max(...arr),
};
}
console.log(minMax([3, 1, 9, 2])); // { min: 1, max: 9 }Level 3 — Object/Function
reference, this, closure-এর চর্চা।
৯. deep clone (simple)
function clone(obj) {
return JSON.parse(JSON.stringify(obj));
}
const a = { x: 1, y: { z: 2 } };
const b = clone(a);
b.y.z = 99;
console.log(a.y.z); // 2 — আলাদা১০. counter (closure)
function counter() {
let n = 0;
return () => ++n;
}
const c = counter();
console.log(c()); // 1
console.log(c()); // 2১১. myBind
function myBind(fn, ctx, ...args) {
return (...rest) => fn.apply(ctx, [...args, ...rest]);
}
const intro = (city) => this.name + " " + city;
const bound = myBind(intro, { name: "রহিম" }, "ঢাকা");
console.log(bound()); // রহিম ঢাকাLevel 4 — Async/DOM
async flow ও DOM-চর্চা।
১২. debounce
function debounce(fn, ms) {
let t;
return (...args) => {
clearTimeout(t);
t = setTimeout(() => fn(...args), ms);
};
}১৩. DOM: list-তে click-এর সংখ্যা
let clicks = 0;
const btn = document.querySelector("button");
const out = document.querySelector("#out");
btn.addEventListener("click", () => {
clicks++;
out.textContent = clicks;
});১৪. async ভুল-ধরা
async function safeGet(url) {
try {
const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return await res.json();
} catch (err) {
return { error: err.message };
}
}Level 5 — Interview চ্যালেঞ্জ
বড় pattern - সমস্যা।
১৫. flatten array
function flatten(arr) {
return arr.flat(Infinity);
}
console.log(flatten([1, [2, [3, [4]]]])); // [1, 2, 3, 4]
// নিজে লিখুন (recursion):
function flatten2(arr) {
return arr.reduce(
(acc, item) =>
acc.concat(Array.isArray(item) ? flatten2(item) : item),
[],
);
}১৬. palindrome
function isPalindrome(s) {
const clean = s.toLowerCase().replace(/[^a-z0-9]/g, "");
return clean === clean.split("").reverse().join("") ? true : false;
}
console.log(isPalindrome("A man, a plan, a canal")); // false
console.log(isPalindrome("noon")); // true১৭. fizzbuzz
for (let i = 1; i <= 15; i++) {
let out = "";
if (i % 3 === 0) out += "Fizz";
if (i % 5 === 0) out += "Buzz";
console.log(out || i);
}| সেট | টপিক |
|---|---|
| Level 1 | basics, loop, string |
| Level 2 | array/object, prime, unique |
| Level 3 | closure, this, clone |
| Level 4 | async, DOM, debounce |
| Level 5 | recursion, interview classic |
প্রথমে ১০ মিনিট নিজে চিন্তা করুন — solutions-এ চলে গেলে fast cheatable হয় না। ভুল করলেও তা শেখা।
LeetCode-এর Easy, CodeWars kata-গুলো — বাংলা চর্চার পর English problem-এ যাওয়া ভালো ধাপ।
প্রতিদিন ২টি সমস্যা, কোড নিজে লিখুন, কনসোলে চালান, ভুল বোঝার চেষ্টা করুন — এক সপ্তাহেই সুস্পষ্ট উন্নতি।