চাকরির প্রস্তুতিঅপটিমাইজেশন
অপটিমাইজেশন ও কমপ্লেক্সিটি ইন্টারভিউ প্রশ্ন

টাইম ও স্পেস কমপ্লেক্সিটি, বিগ ও নোটেশন, ক্যাশিং, মেমরি লিক ও প্যারালাল প্রসেসিং।
কোড চলছে — এটুকুতে সিনিয়র পদের বোর্ড খুশি হয় না। তারা জানতে চায় কত দ্রুত চলে আর কত মেমরি নেয়।
এই আলোচনার সাধারণ ভাষা হলো বিগ ও নোটেশন। এটি না জানলে বাকি উত্তরগুলোও দুর্বল শোনাবে, তাই শুরুটা এখান থেকেই করুন।
প্রশ্নগুলো
অপটিমাইজেশন কি এবং কেন গুরুত্বপূর্ণ?
উত্তরে যা রাখবেনঅপটিমাইজেশন হল প্রোগ্রামের কার্যকারিতা, গতি এবং দক্ষতা বৃদ্ধি করা। এটি গুরুত্বপূর্ণ কারণ এটি রিসোর্স ব্যবহার কমায় এবং সিস্টেমের পারফরম্যান্স উন্নত করে।
টাইম কমপ্লেক্সিটি এবং স্পেস কমপ্লেক্সিটি কি?
উত্তরে যা রাখবেনটাইম কমপ্লেক্সিটি হল একটি অ্যালগরিদম কত দ্রুত রান করে তার পরিমাপ, এবং স্পেস কমপ্লেক্সিটি হল অ্যালগরিদমটি কত পরিমাণ মেমোরি ব্যবহার করে তার পরিমাপ।
বিগ ও নোটেশন কি এবং এটি কেন ব্যবহৃত হয়?
উত্তরে যা রাখবেনবিগ ও নোটেশন হল একটি উপায় যা দ্বারা অ্যালগরিদমের টাইম এবং স্পেস কমপ্লেক্সিটি প্রকাশ করা হয়। এটি অ্যালগরিদমের কার্যকারিতা তুলনা করার জন্য ব্যবহৃত হয়।
কিভাবে একটি অ্যালগরিদমের টাইম কমপ্লেক্সিটি বিশ্লেষণ করবেন?
উত্তরে যা রাখবেনএকটি অ্যালগরিদমের প্রতিটি ধাপের টাইম কমপ্লেক্সিটি হিসাব করে এবং তা যোগ করে মোট টাইম কমপ্লেক্সিটি নির্ধারণ করা হয়।
একটি প্রোগ্রামের অপটিমাইজেশন কিভাবে করবেন?
উত্তরে যা রাখবেনপ্রোগ্রামের অপটিমাইজেশন করতে টাইম এবং স্পেস কমপ্লেক্সিটি বিশ্লেষণ করা, অপটিমাইজড ডাটা স্ট্রাকচার এবং অ্যালগরিদম ব্যবহার করা, লুপ আনরোলিং, এবং মেমোরি ব্যবহারের উন্নতি করা যায়।
মেমোরি লিক কি এবং এটি কিভাবে প্রতিরোধ করা যায়?
উত্তরে যা রাখবেনমেমোরি লিক হল প্রোগ্রামের ব্যবহৃত মেমোরি সঠিকভাবে মুক্ত না হওয়া। এটি প্রতিরোধ করতে ম্যানুয়াল মেমোরি ম্যানেজমেন্ট বা গার্বেজ কালেকশন ব্যবহার করা হয়।
ডাইনামিক প্রোগ্রামিং কি এবং কিভাবে এটি অপটিমাইজেশনে সহায়ক?
উত্তরে যা রাখবেনডাইনামিক প্রোগ্রামিং একটি পদ্ধতি যা সমাধানের উপ-সমস্যাগুলিকে পুনরায় ব্যবহারের মাধ্যমে সমস্যা সমাধান করে। এটি অপটিমাইজেশনে সহায়ক কারণ এটি পুনরাবৃত্তির মাধ্যমে সমাধানের সময় কমায়।
ক্যাশিং এবং মেমোইজেশন কি এবং কিভাবে কাজ করে?
উত্তরে যা রাখবেনক্যাশিং এবং মেমোইজেশন হল এমন প্রক্রিয়া যেখানে পূর্বে গণনা করা ফলাফলগুলি সংরক্ষণ করা হয় যাতে ভবিষ্যতে একই গণনা পুনরায় করতে না হয়।
প্যারালাল প্রসেসিং কি এবং কিভাবে এটি প্রোগ্রামের পারফরম্যান্স বাড়ায়?
উত্তরে যা রাখবেনপ্যারালাল প্রসেসিং হল প্রোগ্রামের বিভিন্ন অংশকে একসাথে একাধিক প্রসেসরের সাহায্যে রান করানো। এটি প্রোগ্রামের পারফরম্যান্স বাড়ায় কারণ এটি কাজের সময় কমায়।
একটি নির্দিষ্ট সমস্যা সমাধানের জন্য কোন অ্যালগরিদমটি নির্বাচন করবেন এবং কেন?
উত্তরে যা রাখবেনএই প্রশ্নের উত্তর প্রার্থীর অভিজ্ঞতা এবং সমস্যার প্রকৃতির উপর নির্ভর করে। তবে, অ্যালগরিদমের কার্যকারিতা, টাইম এবং স্পেস কমপ্লেক্সিটি এবং অপ্টিমাইজেশনের সুবিধাগুলি উল্লেখ করা উচিত।
কোড অপটিমাইজেশনের জন্য কোন টুল বা টেকনিক ব্যবহার করেন?
উত্তরে যা রাখবেননাম বলার আগে পদ্ধতিটা বলুন: আগে মাপি, তারপর বদলাই। মাপার টুল — পাইথনে cProfile, জাভায় JProfiler বা VisualVM, সি++ এ gprof, perf বা valgrind, ওয়েবে ব্রাউজারের DevTools ও Lighthouse, আর ডেটাবেসে EXPLAIN। টেকনিক — ভালো ডেটা স্ট্রাকচার বেছে নেওয়া, ক্যাশিং ও মেমোইজেশন, ডেটাবেসে ইনডেক্স, অপ্রয়োজনীয় লুপ ও কোয়েরি সরানো (বিশেষ করে N+1 সমস্যা), এবং যেখানে সম্ভব কাজ পিছিয়ে দেওয়া বা একসাথে করা।
এই রাউন্ডের জন্য পরামর্শ
- কমপ্লেক্সিটি বলার সময় বেস্ট, ওয়ার্স্ট আর অ্যাভারেজ কেস আলাদা করে বলুন।
- অপটিমাইজেশনের প্রশ্নে সবসময় বলুন: আগে মাপি, তারপর বদলাই। অনুমান করে অপটিমাইজ করা ভুল পদ্ধতি।