লার্নিং হাব
সহজে শেখার শর্টকাট ওফ্ল্যাশ কার্ড।
বিসিএস, ব্যাংক আইটি (SO-IT/AP) ও সরকারি প্রকৌশল নিয়োগ পরীক্ষার জন্য দ্রুত হিসাবের শর্টকাট সূত্র, পরীক্ষার সাধারণ ফাঁদ এবং অ্যাক্টিভ রিভিশন ফ্ল্যাশ কার্ড।
C বনাম C++ এ ক্যারেক্টার কনস্ট্যান্টের সাইজ ট্র্যাপ
Character Literal Size Trap: sizeof(char) vs sizeof('a') in C vs C++
In C: sizeof('a') == sizeof(int) (usually 4 bytes). In C++: sizeof('a') == sizeof(char) == 1 byte. Always: sizeof(char) == 1.C ভাষায় ক্যারেক্টার লিটারাল বা কনস্ট্যান্ট যেমন 'a' এর টাইপ মূলত int (ইন্টিজার প্রমোশন নীতি), তাই sizeof('a') দিলে ইন্টিজারের সাইজ (সাধারণত ৩২-বিট আর্কিটেকচারে ৪ বাইট) রিটার্ন করে। পক্ষান্তরে C++ এ 'a' এর টাইপ সরাসরি char, তাই sizeof('a') হবে ১ বাইট। তবে উভয় ভাষাতেই char ভেরিয়েবলের সাইজ char c = 'a'; sizeof(c) সর্বদা ১ বাইট।
অ্যারে সাবস্ক্রিপ্ট সমতা কৌশল: a[i] ও i[a] এর বিনিময়যোগ্যতা
Array Subscript Equivalence: a[i] == *(a + i) == i[a]
a[i] == *(a + i) == *(i + a) == i[a]
C/C++ এ অ্যারের সাবস্ক্রিপ্ট ব্র্যাকেট [] মূলত পয়েন্টার অ্যারিথমেটিকের সিনট্যাকটিক সুগার। কম্পাইলার a[i] কে অভ্যন্তরীণভাবে *(a + i) তে রূপান্তর করে। যোগের বিনিময় নিয়ম (Commutative Law) অনুযায়ী *(a + i) এবং *(i + a) হুবহু একই মেমরি নির্দেশ করে। ফলে C কোডে i[a] লেখা সম্পূর্ণ বৈধ এবং তা a[i] এর মান প্রদান করে।
প্রি-ইনক্রিমেন্ট (++a) বনাম পোস্ট-ইনক্রিমেন্ট (a++) শর্টকাট
Pre-increment (++a) vs Post-increment (a++) in Expressions
++a: Increment value first, then use in expression. a++: Use current value in expression first, then increment.
প্রি-ইনক্রিমেন্ট (++a): ভেরিয়েবলের মান তৎক্ষণাৎ ১ বৃদ্ধি পায় এবং এক্সপ্রেশনে বর্ধিত নতুন মানটি কার্যকর হয়। পোস্ট-ইনক্রিমেন্ট (a++): এক্সপ্রেশনে আগে ভেরিয়েবলের বর্তমান মান ব্যবহৃত হয়, এরপর স্টেটমেন্ট অতিক্রম করার সময় মান ১ বৃদ্ধি পায়। ("Pre = আগে বাড়াও, Post = পরে বাড়াও")
স্ট্রিং লিটারাল সাইজ ট্র্যাপ: sizeof("CSE") বনাম strlen("CSE")
String Literal Size: sizeof("CSE") vs strlen("CSE")
sizeof("CSE") == strlen("CSE") + 1 == 3 + 1 == 4 bytes (includes '\0'). strlen() counts visible characters only.ডাবল কোটেশনে থাকা স্ট্রিং লিটারালের শেষে কম্পাইলার স্বয়ংক্রিয়ভাবে একটি নাল ক্যারেক্টার '\0' যুক্ত করে। sizeof("text") কম্পাইল-টাইম অপারেটর যা মেমরিতে দখলকৃত মোট বাইট (নাল টার্মিনেটরসহ) গণনা করে। অন্যদিকে strlen("text") রান-টাইম লাইব্রেরি ফাংশন যা প্রথম '\0' পাওয়ার পূর্ব পর্যন্ত কেবলমাত্র দৃশ্যমান ক্যারেক্টারের সংখ্যা গুনে দেয়।
ডাবল পয়েন্টার (**ptr) ডিরিফারেন্সিং শর্টকাট নিয়ম
Double Pointer (**ptr) Dereferencing Shortcut
ptr = &var (address of var); *ptr = var (value of var). ptr2 = &ptr; *ptr2 = ptr (&var); **ptr2 = var (value of var).
পয়েন্টার চেইনে প্রতিটি * (অ্যাস্টেরিস্ক) ডিরিফারেন্স অপারেশনে মেমরির একটি করে স্তর ভেদ করে মূল ভ্যালুর দিকে অগ্রসর হয়: ptr2 নিজে ধারণ করে পয়েন্টারের মেমরি অ্যাড্রেস, *ptr2 প্রকাশ করে মূল ভেরিয়েবলের অ্যাড্রেস, এবং **ptr2 সরাসরি মূল ভেরিয়েবলের মূল ভ্যালুকে প্রকাশ করে। কোনো ফাংশনে পয়েন্টারের মেমরি রেফারেন্স বদলাতে (যেমন dynamic memory allocation) ডাবল পয়েন্টার পাস করতে হয়।
বিটওয়াইজ শিফট: দ্রুত গুণন ও ভাগের শর্টকাট
Bitwise Shifts: Fast Multiplication and Division Rules
x << k == x * (2^k) and x >> k == floor(x / (2^k))
ধনাত্মক পূর্ণসংখ্যার ক্ষেত্রে বামে k বিট শিফট (x << k) করা মানে সংখ্যাটিকে 2^k দ্বারা গুণ করা। ডানে k বিট শিফট (x >> k) করা মানে সংখ্যাটিকে 2^k দ্বারা পূর্ণসংখ্যায় ভাগ (Integer / Floor Division) করা। প্রসেসরের ALU-তে সাধারণ গুণ বা ভাগের চেয়ে বিটওয়াইজ শিফট অনেক দ্রুত কার্যকর হয়।
বিটওয়াইজ টু-এর পাওয়ার চেক: n & (n - 1) == 0 কৌশল
Bitwise Power of 2 Check: (n > 0) && ((n & (n - 1)) == 0)
isPowerOfTwo(n) = (n > 0) && ((n & (n - 1)) == 0)
যেকোনো 2^k সংখ্যার বাইনারি উপস্থাপনায় ঠিক একটিমাত্র ১-বিট থাকে (যেমন 8 = 1000₂)। তার ঠিক পূর্ববর্তী সংখ্যা n - 1 এ ওই বিটটি ০ হয়ে তার ডানের সকল বিট ১ হয়ে যায় (যেমন 7 = 0111₂)। এদের মধ্যে বিটওয়াইজ AND করলে ফলাফল শূন্য (0) হয়। যদি (n & (n - 1)) == 0 হয় এবং n > 0 হয়, তবে সংখ্যাটি নিশ্চিতভাবে ২-এর ঘাত (Power of 2)।
বাইনারি ট্রি: লিফ নোড ও ডিগ্রি-২ নোডের সম্পর্ক (n0 = n2 + 1)
Binary Tree: Leaf Nodes vs Degree-2 Nodes (n0 = n2 + 1)
n0 = n2 + 1 (For ANY non-empty binary tree: Leaves = Nodes with 2 children + 1)
যেকোনো নন-এম্পটি বাইনারি ট্রিতে (ট্রিটি ফুল, কমপ্লিট, স্ট্রিক্ট হোক বা সাধারণ যেকোনো বাইনারি ট্রি হোক) লিফ নোডের সংখ্যা (n₀) সর্বদা দুটি সন্তানযুক্ত ডিগ্রি-২ নোডের সংখ্যার (n₂) চেয়ে ঠিক ১ বেশি হবে: n₀ = n₂ + 1। ডিগ্রি-১ যুক্ত নোডের সংখ্যা যাই হোক না কেন, এই সম্পর্ক সর্বদা ধ্রুব থাকে।
h উচ্চতার বাইনারি ট্রিতে সর্বোচ্চ নোড সংখ্যা: 2^(h+1) - 1
Maximum Nodes in a Binary Tree of Height h: 2^(h+1) - 1
Max Nodes N = 2^(h+1) - 1 (Root at height 0) or 2^h - 1 (If root is at level 1)
যদি রুট নোডের উচ্চতা বা লেভেল ০ ধরা হয়, তবে h উচ্চতার বাইনারি ট্রিতে সর্বোচ্চ নোড সংখ্যা N_max = 2^(h+1) - 1 (এটি একটি নিখুঁত ফুল বাইনারি ট্রি যেখানে প্রতিটি লেভেল i-তে 2^i টি নোড থাকে, সমষ্টি ∑ 2^i = 2^(h+1) - 1)। বিপরীতভাবে, N নোড বিশিষ্ট বাইনারি ট্রির সর্বনিম্ন উচ্চতা h_min = ⌈log₂(N + 1)⌉ - 1।
বাইনারি সার্চ ট্রির ইন-অর্ডার ট্রাভার্সাল সর্বদা সর্টেড থাকে
BST Inorder Traversal is Always Strictly Ascending (Sorted)
Inorder(BST) = Left -> Root -> Right ==> Strictly Ascending (Sorted) Order
বাইনারি সার্চ ট্রিতে (BST) সংজ্ঞামতেই রুটের বাম সাবট্রির সকল উপাদান রুট থেকে ছোট (Left < Root) এবং ডান সাবট্রির সকল উপাদান রুট থেকে বড় (Root < Right)। ইন-অর্ডার ট্রাভার্সালের নিয়ম হলো Left -> Root -> Right। ফলে যেকোনো বৈধ BST-এর ইন-অর্ডার ট্রাভার্সাল করলে উপাদানগুলো সর্বদা ছোট থেকে বড় (Ascending Order) ক্রমে পাওয়া যায়।
n নোডের ট্রিতে এজের সংখ্যা সর্বদা n - 1 টি
Number of Edges in a Tree: Always n - 1
For any connected tree with n vertices: |E| = n - 1 (or |E| = V - 1)
যেকোনো সাধারণ ট্রি, বাইনারি ট্রি বা গ্রাফের স্প্যানিং ট্রির ক্ষেত্রে যদি মোট ভার্টেক্স বা নোড সংখ্যা n হয়, তবে এজের সংখ্যা সর্বদা ঠিক n - 1 টি হবে। কারণ রুট ব্যতীত প্রতিটি নোডের ঠিক একটি প্যারেন্ট ইন-কামিং এজ থাকে। যদি ট্রিতে n - 1 এর চেয়ে ১টি এজও বেশি থাকে তবে সাইকেল সৃষ্টি হবে, আর কম থাকলে ট্রি ডিসকানেক্টেড হয়ে যাবে।
সার্কুলার কিউ পূর্ণ (Full) হওয়ার শর্ত: (rear + 1) % N == front
Circular Queue Full Condition: (rear + 1) % N == front
Full: (rear + 1) % N == front. Empty: front == rear (or front == -1). Usable capacity = N - 1.
অ্যারে ভিত্তিক সার্কুলার কিউতে সাইজ N হলে ফুল (Full) এবং ফাঁকা (Empty) অবস্থার মধ্যে পার্থক্য করতে ১টি স্লট ইচ্ছাকৃতভাবে ফাঁকা রাখা হয়। ফলে সর্বোচ্চ N - 1 টি উপাদান রাখা যায়। নতুন উপাদান ইনসার্ট করতে rear = (rear + 1) % N হয়। তাই পরবর্তী অবস্থানটি যদি front-এর সমান হয়, অর্থাৎ (rear + 1) % N == front, তবে সার্কুলার কিউটি পূর্ণ।
ইনফিক্স থেকে পোস্টফিক্স রূপান্তরে স্ট্যাক ও প্রেসিডেন্সের শর্টকাট নিয়ম
Infix to Postfix Operator Stack Priority Rules
Incoming operator precedence <= Top of stack precedence ==> POP top of stack to output until strictly greater or stack empty, then PUSH incoming.
ইনফিক্স থেকে পোস্টফিক্স রূপান্তরে অপারেন্ড সরাসরি আউটপুটে চলে যায়। অপারেটরের মূল নিয়ম: "স্ট্যাকের টপে কখনো আগত অপারেটরের সমান বা উচ্চ ক্ষমতার অপারেটর থাকতে পারবে না"। যদি নতুন অপারেটরের ক্ষমতা স্ট্যাকের টপের সমান বা কম হয়, তবে স্ট্যাকের টপ পপ (Pop) হয়ে আউটপুটে যাবে। কেবল নতুন অপারেটরের ক্ষমতা টপের চেয়ে বেশি হলেই স্ট্যাকে পুশ (Push) হবে। (পাওয়ার ^ অপারেটর ডান থেকে বামে অ্যাসোসিয়েটিভ হওয়ায় সমান পাওয়ারে পুশ হয়)।
বাইনারি হিপ অ্যারে ইনডেক্সিং ফর্মুলা (প্যারেন্ট ও চিলড্রেন)
Binary Heap Array Representation Index Formulas
0-indexed: Parent = floor((i - 1)/2), Left = 2i + 1, Right = 2i + 2. (1-indexed: Parent = floor(i/2), Left = 2i, Right = 2i + 1)
০-ভিত্তিক ইনডেক্সিং (0-indexed array) এ যেকোনো নোড i-এর জন্য: ১. বাম চাইল্ড (Left Child) = 2i + 1 ২. ডান চাইল্ড (Right Child) = 2i + 2 ৩. প্যারেন্ট নোড (Parent) = ⌊(i - 1) / 2⌋। যদি অ্যারেটি ১-ভিত্তিক ইনডেক্সিং (1-indexed array) হয়, তবে সম্পর্কটি আরো সরল: Left = 2i, Right = 2i + 1, Parent = ⌊i / 2⌋।
মাস্টার থিওরেমের ৩টি কেস মনে রাখার শর্টকাট চিটশিট
Master Theorem for Recurrences: 3-Case Decision Cheat Sheet
T(n) = a*T(n/b) + Θ(n^k): Compare log_b(a) with k. 1) log_b(a) > k => Θ(n^(log_b a)) 2) log_b(a) == k => Θ(n^k * log n) 3) log_b(a) < k => Θ(n^k)
T(n) = a T(n/b) + Θ(n^k) সমীকরণে শুধু c = log_b(a) এবং k এর তুলনা করুন: ১. log_b(a) > k হলে: নিচের লিফ লেভেলের কাজ বেশি ⟹ T(n) = Θ(n^(log_b a)) ২. log_b(a) == k হলে: সব লেভেলে সমান কাজ হয় ⟹ T(n) = Θ(n^k log n) ৩. log_b(a) < k হলে: রুটের কাজ বেশি ⟹ T(n) = Θ(n^k) (যদি regularity কন্ডিশন মানে)।
সর্টিং অ্যালগরিদমের স্ট্যাবিলিটি শর্টকাট মনে রাখার টেকনিক
Sorting Stability Mnemonic: Stable vs Unstable Sorts
Unstable: Quick, Selection, Heap (Mnemonic: "Q-S-H" / "Quick Selection in Heap is Unstable"). Stable: Merge, Insertion, Bubble, Radix, Counting.
পরীক্ষায় কোনটি স্টেবল আর কোনটি আনস্টেবল তা মনে রাখার মোক্ষম নেমোনিক: "Quick Selection in Heap is Unstable" (বা Q-S-H)। অর্থাৎ Quick Sort, Selection Sort, এবং Heap Sort হলো সহজাতভাবে আনস্টেবল (Unstable)। বাকি বহুল ব্যবহৃত সর্টিং—Merge Sort, Insertion Sort, Bubble Sort, Radix Sort এবং Counting Sort হলো স্টেবল (Stable)।
বাইনারি সার্চে সর্বোচ্চ তুলনা সংখ্যা: floor(log2 n) + 1
Binary Search: Maximum Comparisons in Worst Case
Max Comparisons (Worst Case) = floor(log2 n) + 1 = ceil(log2(n + 1))
n উপাদানের একটি সর্টেড অ্যারেতে বাইনারি সার্চ করতে ওর্স্ট কেসে (উপাদান না থাকলে বা একদম শেষে থাকলে) সর্বোচ্চ কতবার তুলনা করতে হবে তা বের করার সূত্র হলো ⌊log₂ n⌋ + 1। দ্রুত হিসাবের শর্টকাট: n সংখ্যাটি ২-এর কোন দুই ঘাতের মাঝে পড়ে তা দেখুন; যদি 2^(k-1) <= n < 2^k হয়, তবে সর্বোচ্চ তুলনা লাগবে ঠিক k বার।
শর্টেস্ট পাথ: ডিকস্ট্রা বনাম বেলম্যান-ফোর্ড নেগেটিভ এজ ফাঁদ
Shortest Path: Dijkstra vs Bellman-Ford on Negative Weights
Dijkstra: Non-negative edge weights ONLY (Greedy fails on negative edges). Bellman-Ford: Handles negative weights and detects negative cycles (O(V*E)).
ডিকস্ট্রা অ্যালগরিদম একটি গ্রিডি (Greedy) পদ্ধতি যা একবার কোনো নোড ভিজিট করে শর্টেস্ট ডিসট্যান্স চূড়ান্ত করে ফেললে তা আর পুনর্বিবেচনা করে না। তাই গ্রাফে কোনো ঋণাত্মক ওজনের এজ (Negative Edge Weight) থাকলে ডিকস্ট্রা ভুল উত্তর দিতে পারে। নেগেটিভ ওজনের এজ থাকলে সিঙ্গেল-সোর্স শর্টেস্ট পাথ বের করতে এবং নেগেটিভ সাইকেল শনাক্ত করতে সর্বদা Bellman-Ford অ্যালগরিদম ব্যবহার করতে হয়।
গ্রাফ ট্রাভার্সাল: BFS (কিউ / লেভেল) বনাম DFS (স্ট্যাক / রিকার্শন)
Graph Traversal: BFS (Queue / Layer) vs DFS (Stack / Deep)
BFS -> Queue (FIFO) -> Level-by-level / Shortest path in unweighted graph. DFS -> Stack / Recursion (LIFO) -> Deep backtracking / Topological sort / Cycle detection.
মনে রাখার সহজ শর্টকাট: B-Q, D-S (Broad Queue, Deep Stack)। ১. BFS (Breadth-First Search): কিউ (Queue - FIFO) ব্যবহার করে স্তরভিত্তিক (Level-by-level) বিস্তৃত হয়। আনওয়েটেড গ্রাফে সবচেয়ে কম এজের শর্টেস্ট পাথ বের করার সেরা উপায় BFS। ২. DFS (Depth-First Search): স্ট্যাক (Stack - LIFO) বা ফাংশন রিকার্শন ব্যবহার করে যতদূর সম্ভব গভীরে প্রবেশ করে ব্যাকট্র্যাক করে। টপোলজিক্যাল সর্ট, বাইকানেক্টিভিটি ও সাইকেল ডিটেকশনে DFS ব্যবহৃত হয়।
ন্যাপস্যাক সমস্যা: ০/১ ন্যাপস্যাক (DP) বনাম ফ্র্যাকশনাল ন্যাপস্যাক (Greedy)
Knapsack Problem: 0/1 Knapsack (DP) vs Fractional Knapsack (Greedy)
Fractional Knapsack -> Greedy strategy (value/weight ratio) in O(n log n). 0/1 Knapsack -> Dynamic Programming in O(n * W) pseudo-polynomial time (NP-Complete).
পণ্য ভেঙে ভগ্নাংশ আকারে ব্যাগে নেওয়া সম্ভব হলে তাকে বলে Fractional Knapsack, যা সবচেয়ে বেশি লাভ-ওজন অনুপাত (vᵢ / wᵢ) ধরে গ্রিডি (Greedy) পদ্ধতিতে O(n log n) সময়ে সমাধান করা যায়। কিন্তু পণ্যটি পুরোপুরি নিতে হবে অথবা একদম নেওয়া যাবে না এমন হলে তাকে বলে 0/1 Knapsack, যেখানে গ্রিডি পদ্ধতি সম্পূর্ণ ব্যর্থ হয়; এটি ডাইনামিক প্রোগ্রামিং (DP) দ্বারা O(n * W) সময়ে সমাধান করতে হয় (যা একটি NP-Complete সমস্যা)।
মিনিমাম স্প্যানিং ট্রি (MST) বৈশিষ্ট্য: সর্বদা V - 1 এজ ও সাইকেলহীনতা
Minimum Spanning Tree (MST): Always V - 1 Edges and No Cycles
For connected graph G=(V, E): MST has exactly |V| - 1 edges, NO cycles, minimum total weight. If all edge weights are distinct, MST is UNIQUE.
যেকোনো কানেক্টেড আনডিরেক্টেড গ্রাফে V সংখ্যক ভার্টেক্স থাকলে তার স্প্যানিং ট্রিতে সর্বদা ঠিক V - 1 টি এজ থাকবে এবং কোনো সাইকেল থাকবে না। যদি গ্রাফের প্রতিটি এজের ওজন স্বতন্ত্র (Distinct Edge Weights) হয়, তবে গ্রাফটির একটি এবং কেবলমাত্র একটি ইউনিক (Unique) MST থাকবে। ক্রুসকল অ্যালগরিদম ডিসজয়েন্ট সেট (Union-Find) দিয়ে এজ সর্ট করে, আর প্রিমস অ্যালগরিদম নোডভিত্তিক গ্রিডি গ্রো করে।
মেথড ওভারলোডিং: কম্পাইল-টাইম বা স্ট্যাটিক পলিমরফিজম
Method Overloading: Compile-Time / Static Polymorphism
Overloading = Same method name + Different parameters (count/type) + Within SAME class. Resolved at COMPILE-TIME (Early / Static Binding). Return type ALONE cannot differentiate.
একই ক্লাসের ভেতরে একই নামের একাধিক মেথড যদি ভিন্ন প্যারামিটার তালিকা (প্যারামিটারের সংখ্যা বা টাইপ ভিন্ন) নিয়ে গঠিত হয়, তাকে মেথড ওভারলোডিং বলে। কম্পাইলার কোড কম্পাইল করার সময়ই প্যারামিটারের সংখ্যা ও টাইপ দেখে সুনির্দিষ্ট মেথডটি নির্বাচন করে দেয়, তাই একে Compile-Time Polymorphism বা Static / Early Binding বলা হয়।
মেথড ওভাররাইডিং: রানটাইম বা ডাইনামিক মেথড ডিসপ্যাচ
Method Overriding: Runtime / Dynamic Dispatch
Overriding = Same method name + EXACT SAME signature + In SUBCLASS (Inheritance). Resolved at RUNTIME based on actual object type (Late / Dynamic Binding).
যখন চাইল্ড ক্লাসে প্যারেন্ট ক্লাসের কোনো মেথডকে হুবহু একই নাম, একই রিটার্ন টাইপ ও একই প্যারামিটার দিয়ে নতুন লজিকে পুনরায় সংজ্ঞায়িত করা হয়, তাকে মেথড ওভাররাইডিং বলে। প্যারেন্ট রেফারেন্স ভেরিয়েবলে চাইল্ড অবজেক্ট অ্যাসাইন করা থাকলে রানটাইমে অবজেক্টের প্রকৃত মেমরি রূপ দেখে মেথড কার্যকর হয়, তাই একে Runtime Polymorphism বা Dynamic Method Dispatch বলা হয়।
ডায়মন্ড প্রবলেম: জাভায় একাধিক ইনহেরিটেন্স নিষিদ্ধকরণ ও ইন্টারফেস সমাধান
Diamond Problem: Why Multiple Class Inheritance is Banned and How Interfaces Solve It
Diamond Problem: Class D extends B, C which both extend A. Ambiguity: Which method does D inherit? Java solution: Disallow multiple class inheritance (extends), allow multiple interface implementation (implements).
যখন দুটি সাবক্লাস B এবং C একই প্যারেন্ট ক্লাস A-কে ইনহেরিট করে এবং একটি চাইল্ড ক্লাস D একসাথে B ও C উভয়কে ইনহেরিট করতে যায় (D -> B, C -> A), তখন মেথড ডুপ্লিকেশন ও দ্ব্যর্থতা (Ambiguity) তৈরি হয়, যাকে ডায়মন্ড প্রবলেম (Diamond Problem) বলে। C++ এটি virtual base class দিয়ে সমাধান করে। তবে জাভা ডিজাইন লেভেলেই ক্লাসের ক্ষেত্রে একাধিক ইনহেরিটেন্স নিষিদ্ধ করেছে এবং ইন্টারফেস (Interface) ব্যবহারের মাধ্যমে একাধিক চুক্তি বাস্তবায়নের নিরাপদ সুযোগ দিয়েছে।
অ্যাবস্ট্রাক্ট ক্লাস বনাম ইন্টারফেসের মূল পার্থক্যের শর্টকাট
Abstract Class vs Interface: Core Design Distinctions
Abstract Class: "is-a" relation, state/fields, constructors, protected/private members, single inheritance. Interface: "can-do" contract, multiple implementation, public static final constants only (historically stateless).
দ্রুত মনে রাখার উপায়: ১. Abstract Class ("is-a" সম্পর্ক): যখন ক্লাসগুলোর মধ্যে দৃঢ় আত্মীয়তা থাকে এবং সাধারণ স্টেট (ইনস্ট্যান্স ভেরিয়েবল) ও কনস্ট্রাক্টর শেয়ার করতে হয়। একটি ক্লাস কেবল একটি মাত্র ক্লাসকে extends করতে পারে। ২. Interface ("can-do" আচরণগত চুক্তি): যখন সম্পূর্ণ ভিন্ন ভিন্ন গোত্রের ক্লাসের মাঝে একই ধরনের আচরণ (যেমন Comparable, Serializable, Runnable) নির্ধারণ করতে হয়। একটি ক্লাস একসাথে বহু ইন্টারফেস implements করতে পারে।
৫ সেকেন্ডে সাবনেটিং শর্টকাট: ম্যাজিক নম্বর ও ব্লক সাইজ টেকনিক
5-Second Subnetting Shortcut: The "Magic Number" Block Size Method
Magic Number (Block Size) = 256 - Interesting Octet Mask. Usable Hosts = 2^(Host Bits) - 2. Subnet boundaries always increment by multiples of Block Size (0, B, 2B, 3B...).
বাইনারিতে কনভার্ট না করে ইন্টারেস্টিং অকটেটের মাস্কের মান ২৫৬ থেকে বিয়োগ করলেই ব্লক সাইজ (ম্যাজিক নম্বর) পাওয়া যায়। সাবনেটগুলো ০ থেকে শুরু হয়ে এই ব্লক সাইজ করে লাফিয়ে বাড়ে। - /25 -> মাস্ক 128, ব্লক সাইজ 128, ব্যবহারযোগ্য হোস্ট 126 - /26 -> মাস্ক 192, ব্লক সাইজ 64, ব্যবহারযোগ্য হোস্ট 62 - /27 -> মাস্ক 224, ব্লক সাইজ 32, ব্যবহারযোগ্য হোস্ট 30 - /28 -> মাস্ক 240, ব্লক সাইজ 16, ব্যবহারযোগ্য হোস্ট 14 - /29 -> মাস্ক 248, ব্লক সাইজ 8, ব্যবহারযোগ্য হোস্ট 6 - /30 -> মাস্ক 252, ব্লক সাইজ 4, ব্যবহারযোগ্য হোস্ট 2 (পয়েন্ট-টু-পয়েন্ট রাউটার লিংক) যেকোনো আইপির সাবনেট বের করতে আইপির সংখ্যাটিকে ব্লক সাইজের নিকটবর্তী ছোট গুণিতকে নামিয়ে দিন।
OSI মডেলের ৭টি স্তরের ক্রম মনে রাখার ম্যাজিক নেমোনিক
OSI 7 Layers Order: Bottom-to-Top and Top-to-Bottom Mnemonics
Bottom-to-Top (Layer 1 to 7): "Please Do Not Touch Steve's Pet Alligator" -> Physical, Data Link, Network, Transport, Session, Presentation, Application. Top-to-Bottom (Layer 7 to 1): "All People Seem To Need Data Processing".
OSI মডেলের ৭টি লেয়ারের নম্বর সর্বদা নিচ (Physical = Layer 1) থেকে উপরে (Application = Layer 7) গোনা হয়। ১. Physical (তার, বিট, হাব) ২. Data Link (MAC, ফ্রেম, সুইচ) ৩. Network (IP, প্যাকেট, রাউটার) ৪. Transport (TCP/UDP, সেগমেন্ট, পোর্ট) ৫. Session (সেশন স্থাপন, সিনক্রোনাইজেশন) ৬. Presentation (এনক্রিপশন, কম্প্রেশন, ASCII/JPEG) ৭. Application (HTTP, SMTP, DNS)। নিচ থেকে উপরে মনে রাখুন: "Please Do Not Touch Steve's Pet Alligator"।
OSI স্তরের PDU মনে রাখার শর্টকাট: BFPSD ফর্মুলা
Protocol Data Units (PDU) Across Layers: BFPSD Mnemonic
Layer 1: Bits (Physical) -> Layer 2: Frames (Data Link) -> Layer 3: Packets (Network) -> Layer 4: Segments / Datagrams (Transport) -> Layer 5-7: Data (Session, Presentation, Application). Mnemonic: "BFPSD".
ডেটা এনক্যাপসুলেশন প্রক্রিয়ায় প্রতিটি স্তরে ডেটা এককের নাম (PDU) পরিবর্তিত হয়। নিচ থেকে উপরে নেমোনিক হলো "BFPSD": - B: Bits (Physical Layer) - F: Frames (Data Link Layer - হেডার হিসেবে Source ও Destination MAC যুক্ত হয়) - P: Packets (Network Layer - হেডার হিসেবে Source ও Destination IP যুক্ত হয়) - S: Segments (Transport Layer - TCP হলে Segment, UDP হলে Datagram, সাথে Port যুক্ত হয়) - D: Data (Application, Presentation, Session Layer)।
বিসিএস ও ব্যাংক আইটিতে বহুল জিজ্ঞাসিত পোর্ট নম্বর ও নেমোনিক
High-Yield Well-Known Ports Cheat Sheet & Exam Mnemonics
FTP Data: 20, FTP Control: 21 | SSH: 22 | Telnet: 23 | SMTP: 25 | DNS: 53 | DHCP Server: 67, Client: 68 | HTTP: 80 | POP3: 110 | NTP: 123 | IMAP: 143 | SNMP: 161 | HTTPS: 443 | MySQL: 3306.
সরকারি নিয়োগ পরীক্ষায় নিয়মিত আসা প্রধান পোর্টগুলো মনে রাখার চাবিকাঠি: - FTP: ২১-এ কমান্ড পাঠায়, ২০-এ ফাইল ট্রান্সফার করে। - SSH vs Telnet: ২২ নিরাপদ (SSH), ২৩ অনিরাপদ প্লেইনটেক্সট (Telnet)। - ইমেইল ত্রয়ী: পাঠাতে SMTP (২৫), গ্রহণ করতে POP3 (১১০) অথবা IMAP (১৪৩)। - ওয়েব ব্রাউজিং: HTTP ৮০ (অনিরাপদ), HTTPS ৪৪৩ (SSL/TLS সিকিউর)। - DNS: ৫৩ (স্বাভাবিক কুয়েরিতে UDP 53, জোন ট্রান্সফারে TCP 53)। - DHCP: সার্ভার শোনে ৬৭ পোর্টে, ক্লায়েন্ট শোনে ৬৮ পোর্টে।
প্রাইভেট আইপি অ্যাড্রেস রেঞ্জ ও পরীক্ষার ফাঁদ
RFC 1918 Private IPv4 Address Ranges & Exam Traps
Class A: 10.0.0.0/8 (10.0.0.0 - 10.255.255.255, 1 network, 16.7M hosts) | Class B: 172.16.0.0/12 (172.16.0.0 - 172.31.255.255, 16 blocks) | Class C: 192.168.0.0/16 (192.168.0.0 - 192.168.255.255, 256 blocks).
ইন্টারনেটে রাউটেবল নয় এমন লোকাল প্রাইভেট আইপির ৩টি সুনির্দিষ্ট রেঞ্জ মুখস্থ রাখুন: - ক্লাস A: 10.0.0.0 থেকে 10.255.255.255 (/8 প্রিফিক্স, মোট 2^24 হোস্ট) - ক্লাস B: 172.16.0.0 থেকে 172.31.255.255 (/12 প্রিফিক্স, ১৬টি /16 ব্লক) - ক্লাস C: 192.168.0.0 থেকে 192.168.255.255 (/16 প্রিফিক্স, ২৫৬টি /24 ব্লক) এছাড়াও লুপব্যাক হলো 127.0.0.1 (127.0.0.0/8) এবং APIPA/লিংক-লোকাল হলো 169.254.0.0/16।
কলিশন ডোমেন বনাম ব্রডকাস্ট ডোমেন নির্ণয়ের টেবিল
Collision Domain vs Broadcast Domain Device Matrix
Hub/Repeater: 1 Collision Domain, 1 Broadcast Domain. Switch/Bridge: N Collision Domains (1 per port), 1 Broadcast Domain (single VLAN). Router: N Collision Domains (1 per port), N Broadcast Domains (1 per port).
ডিভাইস অনুযায়ী ডোমেন গণনার শর্টকাট সূত্র: ১. Hub / Repeater (Layer 1): যত পোর্টই থাকুক, সম্পূর্ণ হাব মিলে ১টি মাত্র Collision Domain এবং ১টি মাত্র Broadcast Domain। ২. Switch / Bridge (Layer 2): প্রতিটি পোর্টে আলাদা Collision Domain (N-port সুইচ = N Collision Domains), কিন্তু ডিফল্টভাবে সব পোর্ট মিলে ১টি মাত্র Broadcast Domain (VLAN না থাকলে)। ৩. Router (Layer 3): প্রতিটি পোর্টে আলাদা Collision Domain এবং প্রতিটি পোর্টে আলাদা Broadcast Domain (অর্থাৎ রাউটার ব্রডকাস্ট ডোমেনকে দ্বিখণ্ডিত বা ফিল্টার করে)।
TCP ৩-ওয়ে হ্যান্ডশেক এবং সিকোয়েন্স/অ্যাকনলেজমেন্ট গণনার নিয়ম
TCP 3-Way Handshake & Sequence/Acknowledgment Math
Handshake: SYN (seq=x) -> SYN+ACK (seq=y, ack=x+1) -> ACK (seq=x+1, ack=y+1). Data phase: ack = seq + bytes_received. SYN & FIN consume 1 sequence number each; standalone ACK consumes 0.
TCP সংযোগ স্থাপনের ধাপসমূহ: ১. Client পাঠায়: [SYN], seq = x ২. Server প্রত্যুত্তর দেয়: [SYN, ACK], seq = y, ack = x + 1 (ক্লায়েন্টের সিন গ্রহণ ও নিজের সিকোয়েন্স নির্ধারণ) ৩. Client নিশ্চিত করে: [ACK], seq = x + 1, ack = y + 1। মনে রাখুন: SYN এবং FIN ফ্ল্যাগ কোনো পে-লোড ডেটা বহন না করলেও সিকোয়েন্স স্পেসে ঠিক ১ বাইট স্থান দখল করে। তাই তাদের বিপরীতে ack মান ১ বৃদ্ধি পায়।
কফম্যানের ডেডলক ৪টি শর্ত মনে রাখার "M-H-N-C" নেমোনিক
Deadlock 4 Necessary Conditions: The "M-H-N-C" Mnemonic
Deadlock Occurs <=> (Mutual Exclusion) AND (Hold and Wait) AND (No Preemption) AND (Circular Wait). To Prevent Deadlock: Invalidate at least ONE of these 4 conditions.
অপারেটিং সিস্টেমে ডেডলক ঘটার জন্য এডওয়ার্ড কফম্যানের ৪টি শর্ত একযোগে পূরণ হতে হয়। শর্টকাট নেমোনিক "M-H-N-C": - M: Mutual Exclusion (রিসোর্সটি নন-শেয়ারেবল, একবারে একজনই ব্যবহার করবে) - H: Hold and Wait (একটি রিসোর্স ধরে রেখে অন্য রিসোর্সের জন্য অপেক্ষা করা) - N: No Preemption (রিসোর্স জোর করে ছিনিয়ে নেওয়া যাবে না, প্রসেস স্বেচ্ছায় ছাড়বে) - C: Circular Wait (P0 অপেক্ষা করে P1-এর রিসোর্সের জন্য, P1 অপেক্ষা করে P2-এর জন্য... এবং Pn অপেক্ষা করে P0-এর জন্য)। ডেডলক প্রিভেনশন (Deadlock Prevention) নিশ্চিত করতে এই ৪টির যেকোনো একটি শর্তকে বাস্তবায়ন স্তরে অসম্ভব করে দিতে হয়। যেমন: সকল রিসোর্সে ক্রমিক নম্বর বরাদ্দ দিলে Circular Wait কখনো তৈরি হতে পারে না।
ব্যাংকার্স অ্যালগরিদমের সেফ স্টেট টেস্ট ও Need ম্যাট্রিক্স সূত্র
Banker's Algorithm Safe State Condition: Need <= Work
Need[i][j] = Max[i][j] - Allocation[i][j]. Feasibility Test: If Need_i <= Available (Work), Process P_i can finish. New Work = Work + Allocation_i. If all processes complete -> Safe State.
ব্যাংকার্স অ্যালগরিদমে সেফ সিকোয়েন্স বের করার ৩ ধাপের শর্টকাট: ১. Need Matrix বের করুন: Need = Max - Allocation। ২. বর্তমান Available রিসোর্সের সাথে তুলনা করুন: এমন একটি প্রসেস খুঁজুন যার Need <= Available। ৩. ওই প্রসেসটি সমাপ্ত হলে তার দখলকৃত সব Allocation রিসোর্স Available-এর সাথে ফেরত যোগ হবে: নতুন Available = পুরাতন Available + Allocation_i। এইভাবে সব প্রসেস সমাপ্ত করা সম্ভব হলে সিস্টেমটি "Safe State"-এ আছে এবং ডেডলক হবে না।
বেলাডির অ্যানোমালি: কেন কেবল FIFO-তে ফ্রেম বাড়ালে পেজ ফল্ট বাড়ে
Belady's Anomaly: Why FIFO Suffers and Stack Algorithms Do Not
Belady's Anomaly: Increasing the number of physical page frames results in an INCREASE (not decrease) in page faults. Occurs in FIFO. NEVER occurs in Stack Algorithms (LRU, Optimal/MIN).
সাধারণত পেজ ফ্রেম সংখ্যা বাড়ালে পেজ ফল্ট কমে যাওয়ার কথা। কিন্তু FIFO (First-In, First-Out) এবং এর সমগোত্রীয় অ্যালগরিদমে নির্দিষ্ট রেফারেন্স স্ট্রিং-এ ফ্রেম ৩ থেকে ৪ করলে পেজ ফল্ট বেড়ে যেতে পারে—এটিই বেলাডির অ্যানোমালি। - বেলাডির অ্যানোমালি ঘটে: FIFO, Second Chance, Random Replacement-এ। - কখনো ঘটে না (Stack Algorithms): LRU (Least Recently Used), Optimal (Belady's Min), LFU-তে। কারণ স্ট্যাক অ্যালগরিদমে m ফ্রেমের সেট সর্বদা m+1 ফ্রেমের সাবসেট থাকে।
লিনাক্স ফাইল পারমিশনের অক্টাল শর্টকাট: ৪-২-১ নিয়ম
Linux Octal Permissions Shortcut: The 4-2-1 Mental Math Rule
Read (r) = 4, Write (w) = 2, Execute (x) = 1. Three octal digits represent: [Owner/User] [Group] [Others]. chmod XYZ = (r_u+w_u+x_u, r_g+w_g+x_g, r_o+w_o+x_o).
লিনাক্সে ফাইল পারমিশনের ৩টি শ্রেণি থাকে: Owner, Group, Others। প্রতিটি শ্রেণির জন্য ৩টি বিট: Read (৪), Write (২), Execute (১)। - 7 = 4 + 2 + 1 = rwx (সব অধিকার) - 6 = 4 + 2 + 0 = rw- (পড়া ও লেখা) - 5 = 4 + 0 + 1 = r-x (পড়া ও রান করা) - 4 = 4 + 0 + 0 = r-- (কেবল পড়া) - 0 = --- (কোনো অধিকার নেই) উদাহরণ: - chmod 755 -> rwxr-xr-x (মালিক সব পারবে, গ্রুপ ও অন্যরা শুধু পড়তে ও চালাতে পারবে) - chmod 644 -> rw-r--r-- (মালিক পড়তে ও লিখতে পারবে, বাকিরা শুধু পড়তে পারবে)।
CPU শিডিউলিং সময় গণনার দ্রুত সূত্র: TAT, WT ও RT
CPU Scheduling Time Formulas: Completion, Turnaround & Waiting Time
Turnaround Time (TAT) = Completion Time (CT) - Arrival Time (AT). Waiting Time (WT) = Turnaround Time (TAT) - Burst Time (BT). Response Time (RT) = First CPU Allocation Time - Arrival Time (AT).
শিডিউলিং অংক দ্রুত নির্ভুল করার সিকোয়েন্স: ১. প্রথমে Gantt Chart আঁকুন এবং প্রতিটি প্রসেসের সমাপ্তি সময় (CT) লিখুন। ২. TAT বের করুন: TAT = CT - AT (প্রসেসটি সিস্টেমে মোট কতক্ষণ কাটাল)। ৩. WT বের করুন: WT = TAT - BT (মোট সময়ের মধ্যে সে কতক্ষণ শুধুই বসে বসে অপেক্ষা করল)। ৪. নন-প্রিম্পটিভ (Non-preemptive) শিডিউলিংয়ে প্রসেস সিপিইউ পাওয়া মাত্রই নির্বাহ শেষ করে, তাই নন-প্রিম্পটিভে Response Time সর্বদা Waiting Time-এর সমান হয় (RT == WT)।
ভার্চুয়াল অ্যাড্রেস থেকে ফিজিক্যাল অ্যাড্রেস রূপান্তর: অফসেট অপরিবর্তিত রাখার নিয়ম
Paging Address Translation Shortcut: Preserving the Offset
Given Page Size = 2^k bytes: Page Offset = k bits (Identical in both Virtual and Physical address). Virtual Address = (Page Number, Offset). Physical Address = (Frame Number * Page Size) + Offset.
পেজিং সিস্টেমে লজিক্যাল (ভার্চুয়াল) অ্যাড্রেস থেকে ফিজিক্যাল অ্যাড্রেসে রূপান্তরের সময় অফসেট (Offset) কখনো পরিবর্তিত হয় না! - যদি পেজ সাইজ 4 KB (2^12 bytes) হয়, তবে অফসেট হবে ১২ বিট। - ভার্চুয়াল অ্যাড্রেসের উপরের বিটগুলো হলো Page Number (p) এবং নিচের ১২ বিট হলো Offset (d)। - Page Table-এ p-তম এন্ট্রিতে গিয়ে Frame Number (f) খুঁজে নিন। - ফিজিক্যাল অ্যাড্রেস = ফ্রেম নম্বরটিকে সামনে বসিয়ে পেছনে ঠিক আগের অফসেটটি (d) অবিকল যুক্ত করে দিন: Physical Address = (f, d)।
থ্র্যাশিং শনাক্তকরণ ও ওয়ার্কিং সেট মডেল সূত্র
Thrashing Indicator & Working Set Principle
Thrashing occurs when: Sum of all processes' Working Set Sizes (Sum WSS_i) > Total Physical Frames (D). Symptoms: Page fault rate sky-rockets, CPU utilization drops near zero, OS thrashes pages to/from swap disk.
থ্র্যাশিং হলো এমন একটি বিশৃঙ্খল অবস্থা যখন অপারেটিং সিস্টেম প্রসেসের নির্দেশাবলী এক্সিকিউট করার চেয়ে পেজ সোয়াপিং (Disk I/O) করতেই বেশি ব্যস্ত থাকে। - মূল লক্ষণ: উচ্চ পেজ ফল্ট রেট এবং নাটকীয়ভাবে কমে যাওয়া CPU ইউটিলাইজেশন। - পিটার ডেনিংয়ের Working Set Model: প্রতিটি প্রসেসের সাম্প্রতিক সময়ের রেফারেন্স করা পেজের সংখ্যা হলো তার Working Set Size (WSS)। যদি সব প্রসেসের WSS-এর যোগফল উপলব্ধ ফিজিক্যাল মেমোরি ফ্রেমের চেয়ে বেশি হয়, তবেই থ্র্যাশিং ঘটে। - সমাধান: Degree of Multiprogramming সাময়িকভাবে কমানো (কিছু প্রসেস সাসপেন্ড করা) অথবা ফিজিক্যাল র্যাম বাড়ানো।
নরমালাইজেশনের ধারাবাহিক ধাপ ও মূল শর্তসমূহ (1NF থেকে BCNF)
Database Normalization Flow: 1NF -> 2NF -> 3NF -> BCNF Hierarchy
1NF: Atomic attributes (no repeating groups). 2NF: 1NF + No Partial Dependency. 3NF: 2NF + No Transitive Dependency (For X -> Y, X is SuperKey OR Y is Prime). BCNF: For EVERY X -> Y, X MUST be a SuperKey.
নরমালাইজেশন ধাপ মনে রাখার ফিল্টার ফর্মুলা: - 1NF: টেবিলে কোনো মাল্টি-ভ্যালুড বা কম্পোজিট অ্যাট্রিবিউট থাকতে পারবে না (প্রতিটি সেলে একটাই অ্যাটমিক মান)। - 2NF: 1NF হতে হবে + কোনো আংশিক নির্ভরতা (Partial Dependency) থাকা চলবে না। অর্থাৎ নন-প্রাইম অ্যাট্রিবিউট প্রাইমারি কি-এর কোনো অংশের ওপর নির্ভর করতে পারবে না। (শর্টকাট: প্রাইমারি কি সিঙ্গেল অ্যাট্রিবিউট হলে টেবিলটি 1NF হলে স্বয়ংক্রিয়ভাবে 2NF-এ থাকে!)। - 3NF: 2NF হতে হবে + ট্রানজিটিভ নির্ভরতা থাকা যাবে না। নিয়ম: X -> Y এর ক্ষেত্রে হয় X-কে Super Key হতে হবে, অথবা Y-কে Prime Attribute (ক্যান্ডিডেট কি-এর অংশ) হতে হবে। - BCNF: বয়সি-কড নরমাল ফর্ম (3NF-এর চেয়ে কঠোর)। যেকোনো নির্ভরতা X -> Y-এর জন্য X-কে নিশ্চিতভাবে Super Key হতেই হবে (ডানপাশে প্রাইম অ্যাট্রিবিউটের কোনো ছাড় নেই)।
DELETE বনাম TRUNCATE বনাম DROP: পার্থক্য ও ট্র্যাপ ম্যাট্রিক্স
DELETE vs TRUNCATE vs DROP: Classification, Logging & Rollback Matrix
DELETE: DML command, row-by-row, WHERE clause allowed, fires triggers, can be Rolled Back. TRUNCATE: DDL command, deallocates data pages, resets identity counter, no triggers, faster, can rollback in transaction block. DROP: DDL command, deletes entire table structure, constraints and data completely.
SQL ডেটা অপসারণের ত্রয়ী পার্থক্য টেবিল: ১. DELETE: - কমান্ডের ধরন: DML - শর্ত: WHERE ক্লজ দিয়ে নির্দিষ্ট সারি ডিলিট করা যায়। - লগিং: প্রতিটি সারির জন্য আলাদা লগ রাখে, তাই তুলনামূলক ধীরগতির। - ট্রিগার: DELETE ট্রিগার ফায়ার করে। - রোলব্যাক: ট্রানজ্যাকশনে ROLLBACK করা যায়। ২. TRUNCATE: - কমান্ডের ধরন: DDL - শর্ত: WHERE ক্লজ ব্যবহার করা যায় না (সম্পূর্ণ টেবিল একবারে ফাঁকা হয়)। - মেমোরি: ডেটা পেজগুলো সরাসরি deallocate করে, তাই অতি দ্রুতগতির। - অটো-ইনক্রিমেন্ট: IDENTITY / AUTO_INCREMENT কাউন্টারকে ১-এ রিসেট করে। - ট্রিগার: কোনো ট্রিগার ফায়ার করে না। টেবিল স্ট্রাকচার অবিকল থাকে। ৩. DROP: - কমান্ডের ধরন: DDL - কাজ: টেবিলের স্ট্রাকচার, ইনডেক্স, পারমিশন ও ডেটা সবকিছু ডাটাবেস থেকে চিরতরে মুছে ফেলে।
SQL কোয়েরি এক্সিকিউশন অর্ডার এবং WHERE বনাম HAVING ফিল্টারিং পার্থক্য
SQL Execution Pipeline & WHERE vs HAVING Distinction
SQL Logical Execution Order: FROM -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT. WHERE filters rows BEFORE aggregation; HAVING filters groups AFTER aggregation.
SQL স্টেটমেন্ট লেখার ক্রম আর ডাটাবেস ইঞ্জিনের এক্সিকিউট করার ক্রম এক নয়! - এক্সিকিউশন ক্রম: ১. FROM & JOIN -> ২. WHERE -> ৩. GROUP BY -> ৪. HAVING -> ৫. SELECT -> ৬. DISTINCT -> ৭. ORDER BY -> ৮. LIMIT। - WHERE vs HAVING: * WHERE: গ্রুপ তৈরির পূর্বে একক সারিগুলো ফিল্টার করে। এতে এগ্রিগেট ফাংশন (যেমন SUM, COUNT, AVG) ব্যবহার করা যায় না। * HAVING: GROUP BY দ্বারা গ্রুপ তৈরির পর সেই গ্রুপগুলোর ওপর ফিল্টার প্রয়োগ করে। এতে এগ্রিগেট ফাংশন ব্যবহার করা যায়।
ACID বৈশিষ্ট্যের ৪টি মূল নীতি এবং বাস্তবায়নকারী টেকনিক
ACID Properties Triad: Transaction Guarantees & Implementation Mechanisms
A (Atomicity): All-or-nothing (Undo Log / Rollback). C (Consistency): Preserves database invariants (Integrity constraints). I (Isolation): Intermediate states hidden from concurrent transactions (2PL / Locking / MVCC). D (Durability): Committed updates persist across crashes (Redo Log / WAL).
ডাটাবেস ট্রানজ্যাকশনের নির্ভরযোগ্যতার ৪ স্তম্ভ (ACID): - Atomicity (পরমাণুতা): ট্রানজ্যাকশনের সব অপারেশন সফল হবে অথবা কোনোটিই হবে না। ব্যাঙ্ক ট্রানজ্যাকশনে টাকা কেটে গেলে প্রাপকের একাউন্টে জমা হতেই হবে, ব্যর্থ হলে সম্পূর্ণ টাকা ফেরত আসবে। (বাস্তবায়ন: Undo Log)। - Consistency (সঙ্গতি): ট্রানজ্যাকশন শেষে ডাটাবেসের মোট ব্যালেন্স ও ইন্টিগ্রিটি কনস্ট্রেইন্ট অপরিবর্তিত থাকবে। - Isolation (বিচ্ছিন্নতা): একই সাথে একাধিক ট্রানজ্যাকশন চললেও তারা একে অপরের অসম্পূর্ণ তথ্য দেখতে পাবে না। (বাস্তবায়ন: Two-Phase Locking - 2PL, MVCC)। - Durability (স্থায়িত্ব): একবার COMMIT হয়ে গেলে বিদ্যুৎ চলে গেলেও বা সিস্টেম ক্র্যাশ করলেও ডেটা হারাবে না। (বাস্তবায়ন: Write-Ahead Logging - WAL, Redo Log)।
অ্যাট্রিবিউট ক্লোজার ও ক্যান্ডিডেট কি বের করার দ্রুত শর্টকাট কৌশল
Candidate Key Finding Shortcut via Right-Hand Side (RHS) Exclusion
Candidate Key Shortcut: Attributes that NEVER appear on the Right-Hand Side (RHS) of any Functional Dependency MUST be part of EVERY candidate key! Attributes on RHS only can NEVER be part of minimal key.
ক্যান্ডিডেট কি বের করার বিদ্যুৎগতির শর্টকাট: ১. প্রদত্ত সব Functional Dependency (FD)-এর ডানপাশ (RHS) লক্ষ্য করুন। ২. যে অ্যাট্রিবিউটগুলো কখনোই কোনো FD-এর ডানপাশে আসেনি, তারা নিশ্চিতভাবে প্রতিটি ক্যান্ডিডেট কি-এর আবশ্যিক সদস্য হবে (কারণ অন্য কেউ তাদের নির্ধারণ করতে পারে না)। ৩. এই অপরিহার্য অ্যাট্রিবিউটগুলোর ক্লোজার (X)+ বের করুন। যদি ক্লোজারে রিলেশনের সব অ্যাট্রিবিউট চলে আসে, তবে সেটিই একমাত্র ক্যান্ডিডেট কি! ৪. যদি সব না আসে, তবে অন্য অ্যাট্রিবিউটগুলোর সাথে কম্বিনেশন তৈরি করে ক্লোজার পরীক্ষা করুন। বি.দ্র.: যে অ্যাট্রিবিউটগুলো শুধু ডানপাশে আছে কিন্তু কখনো বামপাশে আসেনি, তারা কখনো কোনো মিনিমাল ক্যান্ডিডেট কি-এর অংশ হতে পারে না।
রিলেশনাল ডিভিশন অপারেটর: "প্রত্যেক / সবগুলো" কোয়েরি সমাধান কৌশল
Relational Division Operator (R ÷ S): The "Universal / FOR ALL" Query Solver
Relational Division: R(A, B) ÷ S(B) yields tuples in A that are associated with EVERY tuple in S. Algebraic Definition: R ÷ S = π_A(R) - π_A((π_A(R) × S) - R).
রিলেশনাল অ্যালজেবরায় যখনই কোনো প্রশ্নে "সবগুলো" বা "প্রত্যেকটি" (FOR ALL / EVERY) সংক্রান্ত শর্ত থাকে, তখনই Division (÷) অপারেটর ব্যবহৃত হয়। - উদাহরণ: "সেই সব শিক্ষার্থীদের রোল বের করো যারা CSE ডিপার্টমেন্টের সকল কোর্স (ALL courses) সম্পন্ন করেছে।" - যদি R(Student, Course) হয় এবং S(Course) হয় CSE-এর সব কোর্স, তবে কাঙ্ক্ষিত উত্তর হবে R ÷ S। - সহজ কথায়: R-এর এমন Student যাদের Course লিস্টের মধ্যে S-এর সব উপাদান বিদ্যমান।
২-এর পরিপূরক নির্ণয়ের বিদ্যুৎগতির শর্টকাট: ডান থেকে বামের কৌশল
2's Complement Mental Math Shortcut: Right-to-Left Copy and Flip
Mental Rule: Starting from LSB (rightmost bit), copy all bits unchanged UP TO AND INCLUDING the first '1'. Then, invert (flip 0 <-> 1) every remaining bit to the left of that first '1'.
ঐতিহ্যবাহী ১-এর পরিপূরক করে সাথে ১ যোগ করার পদ্ধতি পরীক্ষায় সময় নষ্ট করে। ১ সেকেন্ডের শর্টকাট: ১. বাইনারি সংখ্যাটির সবচেয়ে ডানদিক (LSB) থেকে বামদিকে দেখতে থাকুন। ২. প্রথম '1' পাওয়া পর্যন্ত যা আছে (সব শূন্য এবং ওই প্রথম ১) অবিকল লিখে রাখুন। ৩. প্রথম '1'-এর বামে অবস্থিত বাকি সব বিটগুলোকে উল্টে দিন (০ থাকলে ১, ১ থাকলে ০)। উদাহরণ: 10110100 এর ২-এর পরিপূরক: - ডানদিক থেকে "100" পর্যন্ত অবিকল থাকবে -> 100 - এর বামপাশের "10110" উল্টে হবে "01001" - মোট উত্তর: 01001100। অতি দ্রুত ও শতভাগ নির্ভুল!
ন্যূনতম কতটি NAND বা NOR গেট দিয়ে অন্যান্য গেট তৈরি করা যায়
Minimum NAND and NOR Gates Required to Implement Basic Logic Gates
Using NAND gates: NOT=1, AND=2, OR=3, NOR=4, XOR=4, XNOR=5. Using NOR gates: NOT=1, OR=2, AND=3, NAND=4, XNOR=4, XOR=5. Mnemonic: XOR needs 4 NANDs (or 5 NORs); XNOR needs 5 NANDs (or 4 NORs). Notice symmetric dual inversion!
ইউনিভার্সাল গেট দিয়ে যেকোনো লজিক গেট বাস্তবায়নের ন্যূনতম সংখ্যা মুখস্থের চার্ট: - NOT গেট: ১টি NAND বা ১টি NOR। - AND গেট: ২টি NAND, কিন্তু ৩টি NOR। - OR গেট: ৩টি NAND, কিন্তু ২টি NOR। - NOR গেট: ৪টি NAND। - NAND গেট: ৪টি NOR। - XOR গেট: ৪টি NAND, কিন্তু ৫টি NOR। - XNOR গেট: ৫টি NAND, কিন্তু ৪টি NOR। মনে রাখার ট্রিক: সমজাতীয় গেট তৈরিতে কম লাগে (AND তৈরিতে NAND ২টি, OR তৈরিতে NOR ২টি)। বিপরীত গেট তৈরিতে ৩টি লাগে। XOR-এ NAND ৪টি, XNOR-এ NOR ৪টি।
ডি মরগানের সূত্র ও ডুয়ালিটি প্রিন্সিপাল: "Break the Bar, Change the Sign"
De Morgan's Laws & Duals: Break the Bar, Change the Sign
De Morgan's Laws: (A + B)' = A' · B' and (A · B)' = A' + B'. Duality Principle: Change AND (·) to OR (+) and vice-versa, change 0 to 1 and vice-versa (Keep variables unchanged).
ডি মরগানের সূত্র প্রয়োগের গোল্ডেন রুল হলো "Break the line, change the sign": ১. পুরো রাশির ওপরের নট বার (Overline) ভেঙে দিন। ২. মধ্যবর্তী চিহ্ন পরিবর্তন করুন (+ থাকলে · হবে, · থাকলে + হবে)। ৩. বুলিয়ান সমীকরণের ডুয়াল (Dual) বের করতে শুধু অপারেটর বদলান (+ <-> ·) এবং কনস্ট্যান্ট বদলান (0 <-> 1), ভেরিয়েবল কমপ্লিমেন্ট করবেন না। বাস্তব সার্কিট সমতা: - NOR Gate = Bubbled AND Gate (ইনপুটে বাবল দেওয়া AND) - NAND Gate = Bubbled OR Gate (ইনপুটে বাবল দেওয়া OR)।
ক্যাশ মেমোরির গড় অ্যাক্সেস টাইম (EMAT) নির্ণয়ের সূত্র
Cache Memory Effective Memory Access Time (EMAT) Formulas
Hierarchical: EMAT = h · Tc + (1 - h) · (Tc + Tm) = Tc + (1 - h) · Tm. Simultaneous Access: EMAT = h · Tc + (1 - h) · Tm. Two-Level Cache: EMAT = T_L1 + (1 - h1) · [T_L2 + (1 - h2) · Tm].
ক্যাশ মেমোরির অংক সমাধানে হিট রেশিও (h) এবং মিস পেনাল্টি চিহ্নিত করুন: - হিট হলে সময় লাগে শুধুই ক্যাশ অ্যাক্সেস টাইম Tc। - মিস হলে ক্যাশে খোঁজার পর মেইন মেমোরি Tm-এ যেতে হয়, তাই সময় লাগে (Tc + Tm)। - সূত্র সংক্ষেপণ: EMAT = Tc + (1 - h) · Tm (যেখানে 1 - h হলো Miss Ratio এবং Tm হলো Miss Penalty)। - টু-লেভেল ক্যাশ (L1, L2): EMAT = T_L1 + (1 - h1) · (T_L2 + (1 - h2) · Tm)। মনে রাখুন: হিট রেশিও সর্বদা ০ থেকে ১-এর মধ্যে একটি ভগ্নাংশ বা পার্সেন্টেজ।
8086 মাইক্রোপ্রসেসরের ২০-বিট ফিজিক্যাল অ্যাড্রেস নির্ণয়ের হেক্সাডেসিমেল শর্টকাট
8086 Microprocessor 20-bit Physical Address Mental Calculation
Physical Address = (Segment Register * 16_10) + Offset = (Segment Register << 4 bits) + Offset. Hexadecimal Shortcut: Append a '0' to the Segment Register hex value, then add the Offset hex value.
8086 মাইক্রোপ্রসেসরে ১৬-বিট রেজিস্টার দিয়ে ২০-বিট ফিজিক্যাল মেমোরি অ্যাড্রেস (১ মেগাবাইট) তৈরি করার ৩ সেকেন্ডের হেক্সাডেসিমেল ট্রিক: ১. সেগমেন্ট রেজিস্টারের ৪ ডিজিটের হেক্স মানের ডানে একটি '0' যুক্ত করে তাকে ৫ ডিজিটের বানান (যা মূলত ১৬ গুণ বা ৪ বিট লেফট শিফট করার সমান)। ২. এবার এর সাথে ৪ ডিজিটের অফসেটের মানটি সাধারণ হেক্সাডেসিমেল যোগ করে দিন। উদাহরণ: যদি CS = 1234H এবং IP = 0100H হয়: - CS-এর ডানে 0 বসিয়ে বানাই: 12340H - এর সাথে IP যোগ করি: 12340H + 0100H = 12440H - ফিজিক্যাল অ্যাড্রেস = 12440H।
ইনস্ট্রাকশন পাইপলাইনিং স্পিডআপ সূত্র ও হ্যাজার্ডের শ্রেণিবিভাগ
Instruction Pipelining Speedup, Efficiency & Hazards Classification
Pipelining Speedup S_k = (n · k · τ) / ((k + n - 1) · τ) = (n · k) / (k + n - 1). As n -> infinity, Maximum Ideal Speedup S = k (number of pipeline stages). Ideal CPI = 1. Pipeline Hazards: Structural (Hardware conflict), Data (RAW, WAR, WAW), Control (Branches).
ইনস্ট্রাকশন পাইপলাইনিংয়ের মূল গণিত: - k-স্টেজ পাইপলাইনে n-টি ইনস্ট্রাকশন নির্বাহ করতে ক্লক সাইকেল লাগে = k + n - 1। - পাইপলাইনিং ছাড়া সময় লাগত = n × k সাইকেল। - স্পিডআপ (Speedup) = (n × k) / (k + n - 1)। ইনস্ট্রাকশন সংখ্যা n খুব বড় হলে স্পিডআপ প্রায় স্টেজ সংখ্যা k-এর সমান হয় (S ≈ k)। - পাইপলাইনের ৩টি প্রধান হ্যাজার্ড (বিঘ্ন): ১. Structural Hazard: একই ক্লকে একাধিক ইনস্ট্রাকশন একই হার্ডওয়্যার রিসোর্স (যেমন মেমোরি পোর্ট) দাবি করলে। ২. Data Hazard: পূর্ববর্তী ইনস্ট্রাকশনের ফলাফলের ওপর পরবর্তী ইনস্ট্রাকশন নির্ভরশীল হলে (RAW - Read After Write সবচেয়ে কমন; সমাধান: Data Forwarding)। ৩. Control / Branch Hazard: জাম্প বা ব্রাঞ্চ নির্দেশনার কারণে ভুল ইনস্ট্রাকশন ফেচ হলে (সমাধান: Branch Prediction)।
হ্যামিং কোড প্যারিটি বিট গণনার সূত্র ও বিট পজিশনিং নিয়ম
Hamming Code Error Detection: Parity Bits Condition (2^p >= m + p + 1)
Parity Condition Formula: 2^p >= m + p + 1 (where m = data bits, p = parity/redundant bits). Parity Bit Positions: Always powers of 2 (Bit 1, 2, 4, 8, 16...). Total Codeword Length = m + p.
হ্যামিং কোডে কতটি প্যারিটি বিট লাগবে তা বের করার সূত্র: 2^p >= m + p + 1। - ৪-বিট ডেটার জন্য (m = 4): p = 3 বসালে 2^3 (8) >= 4 + 3 + 1 (8), শর্ত পূরণ করে। তাই কোড সাইজ হবে 4 + 3 = 7 বিট (Hamming 7, 4 কোড)। - ৮-বিট ডেটার জন্য (m = 8): p = 4 বসালে 2^4 (16) >= 8 + 4 + 1 (13)। তাই প্যারিটি লাগবে ৪টি। পজিশনিং নিয়ম: - প্যারিটি বিটগুলো বসবে সর্বদা ২-এর ঘাতের অবস্থানে: 1, 2, 4, 8, 16... - বাকি অবস্থানগুলোতে (3, 5, 6, 7, 9...) ডেটা বিটগুলো বসবে। হ্যামিং কোড সিঙ্গেল বিট এরর শনাক্ত (Detect) ও স্বয়ংক্রিয়ভাবে সংশোধন (Correct) করতে পারে।
শুদ্ধ বানান টেকনিক: মুমূর্ষু (হ্রস্ব-দীর্ঘ-হ্রস্ব নিয়ম)
Spelling Mnemonics: মুমূর্ষু (ু - ূ - ু Rule)
ম + ু (হ্রস্ব-উ) -> ম + ূ + র্ষ (দীর্ঘ-ঊ + রেফ) -> ষ + ু (হ্রস্ব-উ)। ছন্দ: 'মাঝে শুধু দীর্ঘ-ঊ, দুই পাশে হ্রস্ব-উ' (ু - ূ - ু)।
'মুমূর্ষু' বানানে তিনটি 'উ' কার রয়েছে। মনে রাখার ম্যাজিক রুল: মাঝে কেবল দীর্ঘ-ঊ (ূ) এবং দুই পাশে হ্রস্ব-উ (ু)। অর্থাৎ: ু - ূ - ু। একইভাবে 'মুহূর্ত' বানানে প্রথমটি হ্রস্ব এবং দ্বিতীয়টি দীর্ঘ (ম + ু + হ + ূ + র্ত)।
শুদ্ধ বানান টেকনিক: পিপীলিকা (হ্রস্ব-ই, দীর্ঘ-ঈ, হ্রস্ব-ই)
Spelling Mnemonics: পিপীলিকা (ি - ী - ি Rule)
প + ি (হ্রস্ব-ই) -> প + ী (দীর্ঘ-ঈ) -> ল + ি (হ্রস্ব-ই) -> ক + আ। ছন্দ: 'মাঝে দীর্ঘ-ঈ, দুই পাশে হ্রস্ব-ই' (ি - ী - ি)।
'পিপীলিকা' শব্দে তিনটি ই-কার রয়েছে। মনে রাখার শর্টকাট সূত্র: হ্রস্ব-ই + দীর্ঘ-ঈ + হ্রস্ব-ই (ি - ী - ি)। ঠিক যেমন মুমূর্ষু-তে (ু - ূ - ু), পিপীলিকা-তেও মাঝেরটিতে দীর্ঘ-কার এবং দুই পাশে হ্রস্ব-কার।
শুদ্ধ বানান টেকনিক: মুহুর্মুহু (সবগুলো হ্রস্ব-উ ু)
Spelling Mnemonics: মুহুর্মুহু (All ু Rule)
ম + ু -> হ + ু + র্ -> ম + ু -> হ + ু। সূত্র: 'মুহুর্মুহু শব্দে কোনো দীর্ঘ-ঊ নেই, সবগুলোই হ্রস্ব-উ (ু)'।
'মুহুর্মুহু' শব্দের অর্থ বারবার বা ক্ষণে ক্ষণে। এই শব্দটির চারটি স্বরচিহ্নই হ্রস্ব-উ (ু)। কোনো দীর্ঘ-ঊ কার নেই। দ্বিতীয় 'হ'-এর মাথায় রেফ বসবে: মু + হুর্ + মু + হু।
সন্ধি নির্ণয়ের ম্যাজিক রুল: চ্ছ থাকলে 'ছ', অনুস্বার (ং) থাকলে 'ম্'
Sandhi Recognition Shortcuts: চ্ছ, ং (অনুস্বার), ও ব-ফলা Rules
১. শব্দের মাঝে 'চ্ছ' থাকলে সন্ধিবিচ্ছেদে 'ছ' হয় (পরিচ্ছদ = পরি + ছদ, অনুচ্ছেদ = অনু + ছেদ)। ২. শব্দের মাঝে 'ং' (অনুস্বার) থাকলে সন্ধিবিচ্ছেদে 'ম্' হয় (সংবাদ = সম্ + বাদ, সঞ্চয় = সম্ + চয়, অহংকার = অহম্ + কার)। ৩. শব্দের মাঝে 'ব-ফলা' থাকলে তা 'উ/ঊ' কারে রূপ নেয় (স্বাগত = সু + আগত)।
বিসিএস ও সরকারি পরীক্ষায় সন্ধি বিচ্ছেদ করার ৩টি তাৎক্ষণিক শর্টকাট: ১. 'চ্ছ' থাকলে প্রথম অংশের পর কেবল 'ছ' দিয়ে বাকিটা লিখবেন: পরিচ্ছদ = পরি + ছদ; বিচ্ছিন্ন = বি + ছিন্ন; কথাচ্ছলে = কথা + ছলে। ২. 'ং' (অনুস্বার) থাকলে তা ভেঙে 'ম্' বা 'সম্' হয়ে যায়: সংসার = সম্ + সার; সংবিধান = সম্ + বিধান; সংগীত = সম্ + গীত। ৩. 'ব-ফলা' থাকলে তা 'উ/ঊ' কারে রূপ নেয়: স্বাগত = সু + আগত; অন্বেষণ = অনু + এষণ।
সমাস চেনার সহজ টেকনিক: দ্বন্দ্ব, দ্বিগু, বহুব্রীহি ও কর্মধারয় নির্ণয়
Samas Identification 6-Pillar Shortcut
১. উভয় পদ প্রধান -> দ্বন্দ্ব (মা-বাবা) ২. সংখ্যা + সমাহার -> দ্বিগু (ত্রিকাল, চৌরাস্তা) ৩. পূর্ব/পরপদ না বুঝিয়ে অন্য ব্যক্তি/বস্তু -> বহুব্রীহি (পীতাম্বর, দশানন) ৪. পূর্বপদের বিভক্তি লোপ -> তৎপুরুষ (রাজপুত্র, বিলাতফেরত) ৫. বিশেষণ + বিশেষ্য / তুলনা -> কর্মধারয় (নীলপদ্ম, কাজলকালো) ৬. পূর্বপদ অব্যয় -> অব্যয়ীভাব (উপকূল, যথারীতি)
পদ প্রাধান্য দিয়ে সমাস চিনুন: - দ্বন্দ্ব: দুই পদই সমান গুরুত্বপূর্ণ (হাত ও পা = হাত-পা)। - বহুব্রীহি: কোনো পদই বোঝাবে না, তৃতীয় কিছু বোঝাবে (বীণাপাণি = বীণা পাণিতে যার = দেবী সরস্বতী; দশানন = রাবণ)। - দ্বিগু: শুরুতে সংখ্যা থাকবে এবং পরপদে সমাহার বোঝাবে (তেমাথা = তিন মাথার সমাহার)। কিন্তু সংখ্যাবাচক বহুব্রীহিতে সমাহার বোঝায় না, তৃতীয় ব্যক্তি/বস্তু বোঝায় (যেমন: দশানন, সেতার)। - কর্মধারয়: পরপদ প্রধান এবং তুলনা বা 'যে/সে' থাকে (মহান যে নবী = মহানবী)।
Subject-Verb Agreement: As well as, Along with থাকলে ১ম Subject অনুযায়ী Verb
Subject-Verb Agreement: As well as, Along with, Together with Rule
Subject 1 + (as well as / along with / together with / with / accompanied by / in addition to) + Subject 2 -> Verb agrees with Subject 1.
যখন দুটি Subject-এর মাঝে as well as, along with, together with, with, accompanied by, in addition to, including ইত্যাদি কানেক্টর থাকে, তখন Verb সর্বদা প্রথম Subject (Subject 1) অনুসারে নির্ধারিত হবে। দ্বিতীয় Subject সিঙ্গুলার না প্লুরাল তা বিবেচ্য নয়।
Neither...Nor ও Either...Or এর নৈকট্য নিয়ম (Proximity Rule)
Subject-Verb Agreement: Either/Or & Neither/Nor Proximity Rule
Either...or / Neither...nor / Not only...but also -> Verb agrees with the CLOSER / NEAREST Subject (Subject 2).
Either...or, Neither...nor, Not only...but also এবং শুধু Or/Nor দিয়ে যুক্ত থাকলে Verb সর্বদা তার সবচেয়ে কাছের (Nearest/Closer) Subject অনুসারে বসে। অর্থাৎ Verb-এর ঠিক আগে যে Subject থাকবে, তার সিঙ্গুলার বা প্লুরাল রূপ অনুযায়ী Verb নির্ধারিত হবে।
ল্যাটিন তুলনামূলক Adjective: Senior/Junior এর পর সর্বদা 'to' বসে (than নয়)
Latin Comparative Adjectives: Senior/Junior take 'To', NOT 'Than'
Senior / Junior / Superior / Inferior / Prior / Anterior / Posterior / Preferable + TO (NEVER 'than').
ল্যাটিন ভাষার তুলনামূলক বিশেষণে '-or' দিয়ে শেষ হওয়া শব্দগুলোর (Senior, Junior, Superior, Inferior, Prior, Anterior, Posterior) এবং 'Preferable' এর পরে তুলনার ক্ষেত্রে 'than' বসে না, সর্বদা Preposition 'to' বসে। যেমন: He is senior to me (NOT senior than me)।
Each, Every, Either, One of এর পর Noun প্লুরাল হলেও Verb সর্বদা Singular
Distributive Pronouns: Each, Every, Either, Neither take Singular Verbs
Each of / One of / Neither of / Either of + Plural Noun + SINGULAR VERB.
Each, Every, Either, Neither, One of এর পরে Noun বা Pronoun টি Plural হলেও সামগ্রিকভাবে প্রত্যেককে পৃথকভাবে (Individually) নির্দেশ করায় Verb সর্বদা Singular হবে। - One of my friends IS a doctor (NOT are). - Each of the boys HAS a pen (NOT have)।
'One of the...' এর পর Relative Pronoun (Who/Which) থাকলে Verb হবে Plural
The Relative Pronoun Trap: 'One of the... who + Plural Verb'
Ordinary: 'One of + Plural Noun + Singular Verb' With Relative Pronoun: 'One of + Plural Noun + who/which/that + PLURAL VERB' With ONLY: 'The only one of + Plural Noun + who + SINGULAR VERB'
বিসিএস ও ব্যাংক নিয়োগের সবচেয়ে সূক্ষ্ম ব্যাকরণ ট্র্যাপ! ১. সাধারণ ক্ষেত্রে: He is one of the players who PLAY well. এখানে who-এর Antecedent হলো players (Plural), তাই Verb হবে 'play' (Plural)! ২. কিন্তু শুরুতে 'The only one' থাকলে: He is the ONLY one of the players who PLAYS well. তখন শুধুমাত্র সেই একজনকেই বোঝায়, তাই Verb হয় 'plays' (Singular)।
শতকরা দ্রুত হিসাব টেকনিক: x% of y = y% of x এবং ১০%/১% স্প্লিট পদ্ধতি
Mental Math: Percentage Reversibility (x% of y = y% of x) & 10%/1% Split
x% of y = y% of x = (x * y) / 100. Split Method: N = (10% * a) + (1% * b). যেমন: 10% মানে ডানদিক থেকে এক ঘর দশমিক, 1% মানে দুই ঘর দশমিক।
কাগজ-কলম ছাড়া ৫ সেকেন্ডে শতকরা হিসাব করার ২টি জাদু কৌশল: ১. উল্টে নেওয়া: ৪% of ৭৫ বের করা কঠিন, কিন্তু ৭৫% of ৪ বের করা কত সহজ! ৭৫% মানে ৩/৪, আর ৪ এর ৩/৪ হলো ৩! ২. স্প্লিট মেথড: যেমন ৪৮০ এর ১৫% কত? ১০% = ৪৮, ৫% = ২৪। তাহলে ১৫% = ৪৮ + ২৪ = ৭২! ৩. ১৬% of ২৫ = ২৫% of ১৬ = ১৬ এর ১/৪ = ৪।
কাজ ও সময়ের শর্টকাট সূত্র: দুইজন একত্রে কাজটি করবে T = (xy) / (x + y) দিনে
Work & Time Master Formula: Combined Work T = (x * y) / (x + y)
Combined Time T = (x * y) / (x + y) days. For 3 persons: T = (x * y * z) / (xy + yz + zx) or LCM (ল.সা.গু.) Efficiency method.
ক একটি কাজ x দিনে এবং খ একই কাজ y দিনে করতে পারলে, তারা একত্রে কাজটি শেষ করবে: T = (x * y) / (x + y) দিনে। বিকল্প (ল.সা.গু. পদ্ধতি): মোট কাজ = x ও y এর ল.সা.গু.। দৈনিক ক্ষমতা বের করে যোগ করে ভাগ দিন।
নল ও চৌবাচ্চা শর্টকাট সূত্র: একটি পূর্ণ ও একটি খালি করলে T = (xy) / (y - x)
Pipes & Cisterns Shortcut: Fill & Drain T = (x * y) / (y - x)
If pipe A fills in x hours and pipe B empties in y hours (where y > x), time to fill = (x * y) / (y - x) hours.
একটি নল দিয়ে চৌবাচ্চা x ঘণ্টায় পূর্ণ হয় এবং অপর নল দিয়ে y ঘণ্টায় খালি হয় (y > x)। দুটি নল একসাথে খুলে দিলে চৌবাচ্চা পূর্ণ হতে সময় লাগবে: T = (x * y) / (y - x) ঘণ্টা। যদি উভয় নলই পূর্ণকারী হয়, তবে কাজ ও সময়ের মতো: T = (x * y) / (x + y)।
সমান্তর ধারার পদসংখ্যা ও সমষ্টি নির্ণয়ের শর্টকাট সূত্র
Arithmetic Series Sum & Term Count Shortcut Formulas
পদসংখ্যা n = [(শেষ পদ - প্রথম পদ) / সাধারণ অন্তর] + ১ সমষ্টি S_n = [পদসংখ্যা * (প্রথম পদ + শেষ পদ)] / ২ = (n / 2) * (a + l) ১ থেকে n পর্যন্ত স্বাভাবিক সংখ্যার সমষ্টি = [n(n + 1)] / 2
সমান্তর ধারায় পদসংখ্যা বের করতে: n = [(শেষ পদ - ১ম পদ) / অন্তর] + ১। এরপর সমষ্টি = পদসংখ্যা * (১ম পদ + শেষ পদ) / ২। যেমন: ১ + ২ + ৩ + ... + ১০০ এর সমষ্টি = (১০০ * ১০১) / ২ = ৫০৫০।
মুদ্রা ও ছক্কা নিক্ষেপের সম্ভাব্যতা শর্টকাট: নমুনা বিন্দু ২^n ও ৬^n সূত্র
Probability Shortcut: Coins, Dice and Sample Space Formula 2^n & 6^n
Total Sample Space: For n coins = 2^n; For n dice = 6^n. Probability P(E) = n(E) / n(S) = (অনুকূল ফলাফল) / (মোট ফলাফল)। At least 1 Head in n coins = 1 - (1 / 2^n).
১. n টি মুদ্রা নিক্ষেপ করলে মোট সম্ভাব্য ফলাফল = ২^n (যেমন ৩টি মুদ্রায় ২^৩ = ৮)। ২. 'কমপক্ষে একটি হেড' পাওয়ার শর্টকাট: ১ - (কোনো হেড না আসার সম্ভাবনা) = ১ - (১ / ২^n)। ৩টি মুদ্রায়: ১ - ১/৮ = ৭/৮! ৩. দুটি ছক্কা নিক্ষেপ করলে মোট ফলাফল = ৬^২ = ৩৬। যোগফল ৭ আসার সম্ভাবনা সবচেয়ে বেশি (৬/৩৬ = ১/৬)।
সংবিধানের গুরুত্বপূর্ণ মৌলিক অধিকার অনুচ্ছেদ মনে রাখার টেকনিক (২৭, ২৮, ২৯, ৩৬, ৩৯)
Bangladesh Constitution: Fundamental Rights Golden Articles (27, 28, 29, 36, 39)
অনুচ্ছেদ ২৭: আইনের দৃষ্টিতে সমতা অনুচ্ছেদ ২৮: ধর্ম প্রভৃতি কারণে বৈষম্য বিলোপ অনুচ্ছেদ ২৯: সরকারি নিয়োগে সুযোগের সমতা অনুচ্ছেদ ৩৬: চলাফেরার স্বাধীনতা অনুচ্ছেদ ৩৯: চিন্তা, বিবেক ও বাক-স্বাধীনতা ছন্দ: '২৭-এ সমতা, ২৮-এ নেই বৈষম্য, ২৯-এ সরকারি চাকরি, ৩৬-এ চলি, ৩৯-এ বলি'।
বিসিএস ও সরকারি চাকরির সবচেয়ে বেশি আসা ৫টি অনুচ্ছেদ মনে রাখার টেকনিক: - ২৭: আইনের দৃষ্টিতে সবাই সমান (Equality before law)। - ২৮: কোনো নাগরিকের প্রতি ধর্ম, বর্ণ, লিঙ্গভেদে বৈষম্য করা যাবে না। - ২৯: সরকারি চাকুরিতে নিয়োগ লাভে সবার সমান সুযোগ। - ৩৬: দেশের সর্বত্র অবাধ চলাফেরার স্বাধীনতা। - ৩৯: চিন্তা ও বিবেকের স্বাধীনতা এবং বাক ও ভাব প্রকাশের স্বাধীনতা।
সংবিধানের ৭টি তফসিল মনে রাখার সহজ টেকনিক
Bangladesh Constitution: 7 Schedules Mnemonic
তফসিল ১: অন্যান্য বিধান সত্ত্বেও কার্যকর আইন তফসিল ২: রাষ্ট্রপতি নির্বাচন (বর্তমানে বিলুপ্ত) তফসিল ৩: শপথ ও ঘোষণা তফসিল ৪: ক্রান্তিকালীন ও অস্থায়ী বিধান তফসিল ৫: ৭ই মার্চের ঐতিহাসিক ভাষণ তফসিল ৬: ২৬শে মার্চ বঙ্গবন্ধুর স্বাধীনতার ঘোষণা তফসিল ৭: ১০ই এপ্রিল মুজিবনগর সরকারের স্বাধীনতার ঘোষণাপত্র
সংবিধানে বর্তমানে ৭টি তফসিল রয়েছে। ৫, ৬ ও ৭ তফসিল পঞ্চদশ সংশোধনীর (২০১১) মাধ্যমে যুক্ত হয়: - তফসিল ৫ = বঙ্গবন্ধুর ৭ই মার্চের ভাষণ (রেসকোর্স ময়দান) - তফসিল ৬ = ২৬শে মার্চের স্বাধীনতার ঘোষণা (ইংরেজিতে বঙ্গবন্ধুর তারবার্তা) - তফসিল ৭ = ১০ই এপ্রিলের মুজিবনগর সরকারের স্বাধীনতার ঘোষণাপত্র।
১৯৭১ সালের মুক্তিযুদ্ধ: ১১টি সেক্টর ও বিশেষ সেক্টর ১০ শর্টকাট
Liberation War 1971: 11 Sectors & Sector 10 Naval Sector Shortcut
মোট সেক্টর: ১১টি। সর্বাধিনায়ক: জেনারেল এম এ জি ওসমানী। উপ-প্রধান: এ কে খন্দকার। সেক্টর ১০: একমাত্র ব্যতিক্রম—নৌ সেক্টর। এর কোনো স্থায়ী বা নিয়মিত কমান্ডার ছিল না (কমান্ডো অপারেশনের সময় অধিনায়ক নিযুক্ত হতো)। হেডকোয়ার্টার পলাশ ও পদ্মা যুদ্ধজাহাজ।
বিসিএস প্রিলিমিনারির হট প্রশ্ন: ১. কোন সেক্টরে নিয়মিত কোনো সেক্টর কমান্ডার ছিলেন না? -> সেক্টর ১০ (নৌ সেক্টর)। ২. ঢাকা কোন সেক্টরের অধীনে ছিল? -> সেক্টর ২ (মেজর খালেদ মোশাররফ / মেজর এ টি এম হায়দার)। ৩. চট্টগ্রাম কোন সেক্টরে ছিল? -> সেক্টর ১ (মেজর জিয়াউর রহমান, পরবর্তীতে মেজর রফিকুল ইসলাম)।