Top 50 Python Interview Questions & Answers
যেকোনো সফটওয়্যার ইঞ্জিনিয়ার বা ব্যাকএন্ড ডেভেলপার ইন্টারভিউতে পাইথন থেকে কিছু নির্দিষ্ট প্রশ্ন করা হয়। নিচে সবচেয়ে বেশি আসা কিছু গুরুত্বপূর্ণ প্রশ্ন এবং তাদের সহজ উত্তর দেওয়া হলো।
🟢 বেসিক পাইথন (Core Concepts)
১. List এবং Tuple এর মধ্যে পার্থক্য কী?
- List: মিউটেবল (Mutable), অর্থাৎ লিস্ট তৈরির পর এর ভেতরের ডেটা পরিবর্তন (Add, Remove) করা যায়। এটি থার্ড ব্র্যাকেট
[]দিয়ে লেখা হয়। এটি তুলনামূলক স্লো। - Tuple: ইমিউটেবল (Immutable), অর্থাৎ একবার তৈরি করলে এর ভেতরের ডেটা আর পরিবর্তন করা যায় না। এটি ফার্স্ট ব্র্যাকেট
()দিয়ে লেখা হয়। লিস্টের চেয়ে এটি মেমোরি সাশ্রয়ী এবং ফাস্ট।
২. == এবং is অপারেটরের মধ্যে পার্থক্য কী?
==চেক করে দুটি ভ্যারিয়েবলের ভ্যালু (Value) সমান কি না।isচেক করে দুটি ভ্যারিয়েবল মেমোরিতে একই অবজেক্ট (Memory Location/ID) পয়েন্ট করে আছে কি না।
৩. Python এ Decorator কী?
ডেকোরেটর হলো এমন একটি ফাংশন, যা অন্য একটি ফাংশনকে ইনপুট হিসেবে নেয় এবং মূল ফাংশনের কোড পরিবর্তন না করেই তার আগে বা পরে নতুন কোনো ফিচার (যেমন: টাইমার বা লগিং) যুক্ত করে দেয়। একে @decorator_name দিয়ে লেখা হয়।
৪. Lambda Function কী?
ল্যাম্বডা হলো এক লাইনের নামহীন (Anonymous) ফাংশন। ছোট কোনো লজিক (যেমন map বা filter এর ভেতরে) রান করার জন্য def দিয়ে বড় ফাংশন না বানিয়ে lambda x: x + 10 ব্যবহার করা হয়।
৫. Generator এবং Iterator এর পার্থক্য কী?
জেনারেটর হলো বিশেষ এক ধরনের ইটারেটর যা return এর বদলে yield কি-ওয়ার্ড ব্যবহার করে। এটি বিশাল ডেটাসেটকে একসাথে র্যামে লোড না করে, যখন যতটুকু দরকার ঠিক ততটুকু ডেটা এক এক করে তৈরি করে (Lazy Loading)। এতে প্রচুর মেমোরি সেভ হয়।
🟡 অ্যাডভান্সড পাইথন (Advanced Concepts)
৬. GIL (Global Interpreter Lock) কী?
এটি পাইথনের সবচেয়ে বিখ্যাত ইন্টারভিউ প্রশ্ন!
GIL হলো পাইথনের CPython ইন্টারপ্রেটারের একটি লক মেকানিজম, যা নিশ্চিত করে যে পাইথন একসাথে (একই সময়ে) কেবল একটিমাত্র থ্রেড (Thread) রান করবে। এর কারণেই পাইথনে মাল্টি-থ্রেডিং (Multi-threading) ব্যবহার করলেও একাধিক CPU কোর একসাথে কাজ করতে পারে না। এটি বাইপাস করার জন্য multiprocessing ব্যবহার করতে হয়।
৭. *args এবং **kwargs কী?
*args(Non-keyword arguments): ফাংশনে যত খুশি ততগুলো সাধারণ ডেটা পাস করার জন্য ব্যবহৃত হয়। এগুলো ফাংশনের ভেতরে একটি Tuple হিসেবে ঢোকে।**kwargs(Keyword arguments): ফাংশনে যত খুশি ততগুলো Named Data (যেমন: name="Ali", age=25) পাস করার জন্য ব্যবহৃত হয়। এগুলো ফাংশনের ভেতরে Dictionary হিসেবে ঢোকে।
৮. Shallow Copy এবং Deep Copy এর পার্থক্য কী?
- Shallow Copy (
copy.copy()): এটি শুধু মূল অবজেক্টের একটি নতুন কপি বানায়, কিন্তু অবজেক্টের ভেতরে যদি কোনো নেস্টেড অবজেক্ট (যেমন লিস্টের ভেতর লিস্ট) থাকে, তবে সেগুলোর মেমোরি রেফারেন্স আগেরটাই থেকে যায়। - Deep Copy (
copy.deepcopy()): এটি মূল অবজেক্ট এবং তার ভেতরের সমস্ত নেস্টেড অবজেক্টেরও সম্পূর্ণ স্বাধীন নতুন কপি তৈরি করে। ফলে একটি পরিবর্তন করলে অন্যটিতে কোনো প্রভাব পড়ে না।
৯. __init__ এবং __new__ মেথডের মধ্যে পার্থক্য কী?
__new__একটি অবজেক্ট মেমোরিতে তৈরি (Create) করে। এটি প্রথম রান হয়।__init__সেই তৈরি হওয়া অবজেক্টের প্রাথমিক ডেটাগুলো সেট (Initialize) করে। এটি দ্বিতীয় রান হয়।
১০. Python এর Garbage Collection কীভাবে কাজ করে? পাইথন মেমোরি ম্যানেজ করার জন্য Reference Counting ব্যবহার করে। কোনো ভ্যারিয়েবল বা অবজেক্টকে যখন আর কোডের কোথাও ব্যবহার করা হয় না (অর্থাৎ তার রেফারেন্স কাউন্ট 0 হয়ে যায়), তখন গারবেজ কালেক্টর অটোমেটিকভাবে সেই অবজেক্টটিকে মেমোরি থেকে মুছে ফেলে র্যাম (RAM) খালি করে দেয়।
🔴 ফ্রেমওয়ার্ক এবং অন্যান্য (Django / APIs)
১১. REST API কী? REST (Representational State Transfer) হলো ক্লায়েন্ট (যেমন মোবাইল অ্যাপ) এবং সার্ভারের (যেমন পাইথন ব্যাকএন্ড) মধ্যে JSON বা XML ফরমেটে ডেটা আদান-প্রদান করার একটি স্ট্যান্ডার্ড আর্কিটেকচার। এর প্রধান মেথডগুলো হলো GET (রিড), POST (ক্রিয়েট), PUT/PATCH (আপডেট), এবং DELETE।
১২. Django তে ORM কী?
ORM (Object-Relational Mapping) হলো এমন একটি সিস্টেম যার ফলে ডেভেলপারকে কাঁচা SQL কোড (যেমন SELECT * FROM users) লিখতে হয় না। ডেভেলপার শুধু পাইথনের অবজেক্ট বা ক্লাস হিসেবে কোড লেখে (যেমন User.objects.all()), আর ORM নিজে থেকে সেটিকে SQL এ কনভার্ট করে ডেটাবেস থেকে ডেটা এনে দেয়।
(ইন্টারভিউতে এর বাইরেও আপনার করা প্রোজেক্টগুলো নিয়ে প্রচুর প্রশ্ন করা হবে। তাই নিজের প্রোজেক্টের কোড নিজে লিখুন এবং কোডের প্রতিটি লাইনের কাজ বুঝে রাখুন!)