- অ্যাডটেক ক্ষেত্রের টেকনিক্যাল ইন্টারভিউতে ইন্টারমিডিয়েট SQL, Pandas সহ Python এবং বিশ্লেষণাত্মক দক্ষতার উপর গুরুত্ব দেওয়া হয়।
- SQL এবং pandas-এ এগুলোর সমতুল্য ফাংশন, উভয় ক্ষেত্রেই JOIN, GROUP BY, সাবকোয়েরি এবং উইন্ডো ফাংশন আয়ত্ত করা অপরিহার্য।
- অ্যাকুরেসি, এফ১, বা আরওসি-এইউসি-এর মতো মডেল মূল্যায়ন মেট্রিকগুলো বোঝা অ্যাডভান্সড অ্যানালিটিক্স-এর ভূমিকায় বাড়তি সুবিধা যোগ করে।
- কার্যকরী প্রস্তুতির মধ্যে রয়েছে তত্ত্ব, প্রচুর ব্যবহারিক অনুশীলন এবং যুক্তিগুলো উচ্চস্বরে ব্যাখ্যা করতে শেখা।
আপনি যদি অ্যাডটেক , ডিজিটাল অ্যানালিটিক্স বা ডেটা অ্যানালাইসিস ক্ষেত্রে ইন্টারভিউয়ের জন্য প্রস্তুতি নেন , তাহলে আজ হোক বা কাল হোক আপনাকে সেই ভয়ংকর টেকনিক্যাল পরীক্ষার মুখোমুখি হতেই হবে। এখানেই কোম্পানিগুলো যাচাই করে দেখে যে, আপনার সিভিতে যা যা উল্লেখ করেছেন, সেগুলোতে আপনি সত্যিই পারদর্শী কি না: ডেটা বের করার জন্য SQL, তা প্রসেস ও বিশ্লেষণ করার জন্য Python, এবং সমস্ত টেবিল ও স্ক্রিপ্টের মধ্যে হারিয়ে না যাওয়ার জন্য কিছুটা বিশ্লেষণাত্মক চিন্তাভাবনার দক্ষতা।
সুখবরটি হলো, টেকনিক্যাল ইন্টারভিউ কোনো জাদু নয়: এগুলো সাধারণত SQL, Python, এবং মডেল ইভ্যালুয়েশনের মতো একই বিষয়গুলোকে কেন্দ্র করে হয়ে থাকে । আপনি যদি মৌলিক বিষয়গুলো ভালোভাবে বোঝেন, বাস্তব জীবনের অনুশীলন করেন এবং নিজের যুক্তির ব্যাখ্যা দিতে শেখেন, তাহলে আপনি অন্য প্রার্থীদের চেয়ে অনেকটাই এগিয়ে থাকবেন।
টেকনিক্যাল ইন্টারভিউ কেন ভীতিজনক (এবং কীভাবে এর চাপ কমানো যায়)
অ্যাডটেক ক্ষেত্রে ডেটা অ্যানালিস্ট বা প্রোডাক্ট পদের জন্য টেকনিক্যাল ইন্টারভিউতে সাধারণত ধারণামূলক প্রশ্নের সাথে সরাসরি ও হাতে-কলমে অনুশীলন করানো হয় । আপনাকে হয়তো একটি SQL ক্লজের কার্যকারিতা ব্যাখ্যা করতে অথবা প্রোগ্রাম্যাটিক অ্যাডভার্টাইজিং ক্যাম্পেইনের ডেটা-সম্পর্কিত কোনো বিজনেস কেস সমাধান করতে বলা হতে পারে।
সাধারণত তিনটি ক্ষেত্রে আপনার মূল্যায়ন করা হবে: মধ্যম-স্তরের SQL (JOIN, GROUP BY, সাবকোয়েরি, উইন্ডো ফাংশন), ডেটা-ভিত্তিক পাইথন (পান্ডাস, ক্লিনিং, অ্যাগ্রিগেশন, মার্জ), এবং ফলাফল ব্যাখ্যা করার ও প্রাপ্ত তথ্য জানানোর ক্ষমতা । তারা কোনো সিনিয়র ডেটা সায়েন্টিস্ট খুঁজছেন না, বরং এমন একজনকে খুঁজছেন যিনি শক্তিশালী ও নির্ভরযোগ্য উপায়ে ডেটা নিয়ে কাজ করতে পারেন।
অনেক প্রার্থী যে সাধারণ ভুলটি করে থাকেন তা হলো, তাঁরা সিনট্যাক্স মুখস্থ করার উপর মনোযোগ দেন এবং হ্যাকারর্যাঙ্ক, স্ট্রাটাস্ক্র্যাচ-এর মতো প্ল্যাটফর্মে বা কোম্পানিগুলোর নিজস্ব অভ্যন্তরীণ পরীক্ষায় পাওয়া যায় এমন সম্পূর্ণ অনুশীলনীগুলো করতে ভুলে যান । আপনার লক্ষ্য হওয়া উচিত, সাক্ষাৎকারে আসার আগেই একই ধরনের কয়েক ডজন কোয়েরি এবং স্ক্রিপ্ট সমাধান করে আসা।
অ্যাডটেক এবং ডেটা অ্যানালিস্ট ইন্টারভিউতে সাধারণত SQL লেভেলের প্রয়োজন হয়।
অ্যাডটেক বা ডিজিটাল মার্কেটিং পরিবেশে অ্যানালিস্ট পদের জন্য, কোম্পানিগুলো আপনার কাছে ক্লাসিক রিলেশনাল SQL- এ পারদর্শিতা আশা করে , যার মধ্যে রয়েছে একাধিক টেবিল থেকে ডেটা এক্সট্র্যাক্ট করা, একত্রিত করা, গ্রুপ করা, ফিল্টার করা এবং দরকারি মেট্রিক্স তৈরি করা। তাদের ডেটাবেস অ্যাডমিনিস্ট্রেশন দক্ষতার প্রয়োজন হবে না, তবে আপনাকে মাঝারি ধরনের জটিল কোয়েরি ব্যবহারে স্বচ্ছন্দ হতে হবে।
সাধারণত, এই পরীক্ষায় এমন সব কোয়েরি অন্তর্ভুক্ত থাকে যেগুলিতে INNER JOIN ও LEFT JOIN-এর সমন্বয় থাকে; যেমন WHERE ক্লজসহ ফিল্টার, GROUP BY-সহ অ্যাগ্রিগেশন এবং HAVING ক্লজ ব্যবহার করে অ্যাগ্রিগেটের উপর কিছু শর্ত আরোপ করা। এরপর, আরেকটু উন্নত স্তরে, র্যাঙ্কিং, ক্রমপুঞ্জীভূত মোট যোগফল এবং সারি তুলনা করার জন্য সাবকোয়েরি ও উইন্ডো ফাংশনের ব্যবহার খুবই সাধারণ ।
অ্যাডটেক ক্ষেত্রে, আপনাকে সম্ভবত এই ধরনের ব্যবসায়িক প্রশ্নের উত্তর দিতে হবে, যেমন: “কোন ক্যাম্পেইনগুলোর CTR তাদের ইন্ডাস্ট্রির গড়ের চেয়ে ভালো?” অথবা “কোন পাবলিশাররা গত মাসের তুলনায় ইম্প্রেশন হারাচ্ছে?” এই প্রশ্নগুলো দক্ষতার সাথে সমাধান করার জন্য সাধারণত কোরিলেটেড সাবকোয়েরি এবং উইন্ডো ফাংশন সম্পর্কে প্রাথমিক ধারণা থাকা প্রয়োজন ।
SQL-এর সাধারণ কিছু প্রশ্ন যা সচরাচর আসে (এবং সেগুলোর উত্তর কীভাবে দেবেন)
ডেটা-ভিত্তিক প্রায় প্রতিটি টেকনিক্যাল ইন্টারভিউতে কিছু বেসিক SQL থিওরির প্রশ্ন থাকে । তারা আপনাকে ফাঁদে ফেলার চেষ্টা করে না, বরং আপনার একটি মজবুত ভিত্তি আছে কিনা তা নিশ্চিত করতে চায়।
সবচেয়ে বেশি জিজ্ঞাসিত প্রশ্নগুলোর মধ্যে একটি হলো WHERE এবং HAVING-এর মধ্যে পার্থক্য । এটি ব্যাখ্যা করার সবচেয়ে সহজ উপায় হলো, WHERE গ্রুপ করার আগে স্বতন্ত্র সারিগুলোকে ফিল্টার করে , অন্যদিকে HAVING ইতোমধ্যে একত্রিত হওয়া গ্রুপগুলোকে ফিল্টার করে । আপনি এটাও উল্লেখ করতে পারেন যে, অ্যাগ্রিগেশন ফাংশন (COUNT, SUM, AVG, ইত্যাদি) সম্পর্কিত শর্তগুলো HAVING-এ রাখা উচিত, WHERE-এ নয়।
আরেকটি প্রচলিত প্রশ্ন হলো, কী কী ধরনের JOIN আছে এবং কখন কোনটি ব্যবহার করতে হয়: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, এবং কিছু ক্ষেত্রে CROSS JOIN বা self-join। ডেটা বিশ্লেষণে, LEFT JOIN ব্যাপকভাবে ব্যবহৃত হয় যখন আপনি সম্পূর্ণ প্রাইমারি ডেটাসেটটি (যেমন, সমস্ত ব্যবহারকারী) ধরে রাখতে চান, এমনকি যদি সেকেন্ডারি টেবিলে (যেমন, কেনাকাটা) এর সাথে সম্পর্কিত কোনো রেকর্ড না-ও থাকে।
মৌলিক SQL কোয়েরি এবং তাদের লজিকের উদাহরণ
‘ন্যূনতম যুক্তিসঙ্গত’ স্তর সম্পর্কে ধারণা দিতে গেলে বলতে হয়, আপনার স্মৃতি থেকে কোয়েরি লেখার সক্ষমতা থাকা উচিত, যেমন নির্দিষ্ট কলাম নির্বাচন করা, সারি ফিল্টার করা এবং ফলাফল সাজানো । একেবারে প্রাথমিক স্তরে, সাধারণ প্রশ্নগুলোর মধ্যে থাকে: একটি টেবিল থেকে সমস্ত কলাম কীভাবে বের করতে হয়, শুধুমাত্র কিছু কলাম কীভাবে নির্বাচন করতে হয়, অথবা AS ব্যবহার করে কীভাবে পাঠযোগ্য অ্যালিয়াস প্রয়োগ করতে হয়।
AND, OR, এবং NOT-এর সমন্বয়ে একাধিক শর্তসহ WHERE ক্লজ , কিংবা সংখ্যাসূচক মান ও তারিখ উভয়ের জন্য তুলনা অপারেটর (<, <=, >, >=, =) কীভাবে ব্যবহার করতে হয়, সে সম্পর্কেও প্রায়শই প্রশ্ন করা হয় । অনেক কোম্পানি NULL ফিল্টারের উপর জোর দেয় , যেখানে শুধু সমান চিহ্ন ব্যবহার করাই যথেষ্ট নয়; আপনাকে IS NULL বা IS NOT NULL ব্যবহার করতে হবে।
আরেকটি প্রচলিত পদ্ধতি হলো LIKE এবং ওয়াইল্ডকার্ড % ও _ ব্যবহার করে প্যাটার্নের মাধ্যমে টেক্সট-ভিত্তিক ফিল্টারিং । উদাহরণস্বরূপ, আপনি এমন ক্যাম্পেইন খুঁজে বের করতে পারেন যাদের নামে একটি নির্দিষ্ট শব্দ রয়েছে, অথবা এমন ব্যবহারকারী খুঁজে পেতে পারেন যাদের ইমেল অ্যাড্রেস একটি নির্দিষ্ট ডোমেইনে শেষ হয়। এটা ব্যাখ্যা করা গুরুত্বপূর্ণ যে, LIKE '%text%' স্ট্রিংটির যেকোনো স্থানে প্যাটার্নটি অনুসন্ধান করে।
অবশেষে, এই প্রাথমিক অংশে সাধারণত UPDATE ব্যবহার করে কীভাবে রেকর্ড আপডেট করতে হয় এবং WHERE ব্যবহার করে কোন সারিগুলো পরিবর্তন করা হবে তা ফিল্টার করতে হয়, সেইসাথে সুস্পষ্ট শর্ত ব্যবহার করে DELETE FROM দিয়ে কীভাবে সারি মুছে ফেলতে হয় , তা আলোচনা করা হয়। ভুলবশত টেবিলের অর্ধেক মুছে ফেলা এড়াতে একটি নির্দিষ্ট WHERE ক্লজ ব্যবহারের গুরুত্বের ওপর সর্বদা জোর দেওয়া অত্যন্ত জরুরি।
মধ্যবর্তী কোয়েরি: GROUP BY, HAVING, সাবকোয়েরি এবং UNION
জুনিয়র লেভেল পেরিয়ে গেলেই, প্রায় প্রতিটি কোম্পানিই GROUP BY, অ্যাগ্রিগেট ফাংশন এবং HAVING-এর সাথে অ্যাগ্রিগেটের উপর ফিল্টার ব্যবহারের দক্ষতাকে গুরুত্ব দিতে শুরু করে । ক্যাম্পেইন, অডিয়েন্স এবং ক্রিয়েটিভের পারফরম্যান্স রিপোর্ট তৈরি করতে আপনাকে প্রতিদিন এটিই ব্যবহার করতে হবে।
এটি এভাবে কাজ করে: GROUP BY এক বা একাধিক কলাম অনুসারে সারিগুলোকে দলবদ্ধ করে, এবং আপনি এই গ্রুপগুলোর উপর SUM, COUNT, AVG, MIN, ও MAX প্রয়োগ করে বিভিন্ন মেট্রিক গণনা করতে পারেন। এরপরে আসে HAVING, যা শুধুমাত্র সেই গ্রুপগুলোকে রাখে যেগুলো কোনো একটি শর্ত পূরণ করে, যেমন—যেসব গ্রাহকের বিক্রয় একটি নির্দিষ্ট সীমার উপরে।
আরেকটি পুনরাবৃত্ত বিষয় হলো সাবকোয়েরি : অর্থাৎ একটি কোয়েরির ভেতরে আরেকটি কোয়েরি। এগুলো প্রায়শই পূর্ববর্তী ধাপে গণনা করা মান দ্বারা ফিল্টার করতে ব্যবহৃত হয়, যেমন—বিশ্বব্যাপী গড়ের চেয়ে বেশি বিক্রয়কারী গ্রাহকদের অথবা ৯০তম পার্সেন্টাইলের উপরে ইম্প্রেশন থাকা ক্যাম্পেইনগুলোকে নির্বাচন করা।
আপনাকে প্রায়শই UNION এবং UNION ALL-এর মধ্যে পার্থক্য সম্পর্কেও জিজ্ঞাসা করা হয় । UNION একই স্কিমার দুটি ফলাফল সেটকে একত্রিত করে এবং ডুপ্লিকেটগুলো সরিয়ে দেয়; UNION ALL-ও একই কাজ করে কিন্তু সমস্ত সারি রেখে দেয়, এমনকি যদি সেগুলি পুনরাবৃত্তও হয়। ডেটা বিশ্লেষণে, পারফরম্যান্সের কারণে এবং সমস্ত মূল রেকর্ড সংরক্ষণ করার জন্য আপনি প্রায়শই UNION ALL পছন্দ করবেন।
উইন্ডো ফাংশন: SQL-এর পরবর্তী ধাপ
একটি নির্দিষ্ট স্তরে টেকনিক্যাল টেস্টিং-এর ক্ষেত্রে উইন্ডো ফাংশনগুলো একটি স্ট্যান্ডার্ডে পরিণত হয়েছে, বিশেষ করে অ্যাডটেক-সম্পর্কিত কাজগুলোর জন্য, যেখানে সময়ের সাথে সাথে ট্রেন্ড, ক্যাম্পেইন র্যাঙ্কিং বা মোট বিনিয়োগের পরিমাণ বিশ্লেষণ করার প্রয়োজন হয়।
মূল ধারণাটি হলো, একটি উইন্ডো ফাংশন বর্তমান সারির সাথে সম্পর্কিত একাধিক সারির উপর একটি মান গণনা করে , কিন্তু GROUP BY-এর মতো ফলাফলকে সংকুচিত করে না। অন্য কথায়, আপনি প্রতিটি স্বতন্ত্র সারি দেখতে পান, কিন্তু তার সাথে ডেটার একটি 'উইন্ডো'-র উপর গণনা করা একটি সমষ্টিগত মানও দেখতে পান।
সাধারণ সিনট্যাক্সটি হলো ফাংশনটি (SUM, AVG, RANK, ইত্যাদি) ব্যবহার করা, এরপর OVER ব্যবহার করা এবং OVER-এর মধ্যে পার্টিশন (PARTITION BY) ও অর্ডার (ORDER BY) নির্ধারণ করা। উদাহরণস্বরূপ, সেলসপার্সন অনুযায়ী সেলস র্যাঙ্কিং অথবা প্রতিদিনের মোট ইম্প্রেশনের সংখ্যা গণনা করা।
আপনি যদি দক্ষতা প্রদর্শন করতে চান, তাহলে আপনার RANK, DENSE_RANK, ROW_NUMBER, LAG, এবং LEAD-এর মতো ফাংশনগুলোর সাথে পরিচিত হওয়া উচিত । পারফরম্যান্সের ভিত্তিতে ক্যাম্পেইনগুলোকে র্যাঙ্ক করতে, প্রতিটি সময়কালকে পূর্ববর্তীটির সাথে তুলনা করতে, অথবা মূল মেট্রিকগুলোতে বছর-ভিত্তিক পরিবর্তন শনাক্ত করতে এগুলো খুবই কার্যকর।
CTE, ক্রমবর্ধমান মোট এবং চলমান গড়
আধুনিক চাকরির ইন্টারভিউতে আপনার SQL কোডের পঠনযোগ্যতাকে অত্যন্ত গুরুত্ব দেওয়া হয়। একারণেই আপনাকে প্রায়শই কমন টেবিল এক্সপ্রেশন (CTE) সম্পর্কে জিজ্ঞাসা করা হবে । CTE হলো মূলত এক ধরনের নামযুক্ত অস্থায়ী টেবিল, যা WITH ক্লজ দিয়ে সংজ্ঞায়িত করা হয় এবং এটি শুধুমাত্র কোয়েরি নির্বাহের সময় বিদ্যমান থাকে।
জটিল কোয়েরিগুলোকে যৌক্তিক ব্লকে বিভক্ত করতে এবং অন্তর্বর্তী ফলাফলগুলো পুনরায় ব্যবহার করতে CTE ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি প্রথমে একটি CTE-তে প্রতিটি ক্যাম্পেইনের জন্য দৈনিক মেট্রিক গণনা করেন এবং তারপরে মূল কোয়েরিতে সেই ফলাফলের উপর অতিরিক্ত অ্যাগ্রিগেশন বা ফিল্টারিং করেন।
আরেকটি খুব সাধারণ কাজ হলো উইন্ডো ফাংশন হিসেবে SUM ব্যবহার করে চলমান মোট হিসাব করা । অ্যাডটেক পরিবেশে, সময়ের সাথে সাথে একটি ক্যাম্পেইনের পারফরম্যান্স কেমন তা দেখার জন্য মোট ইম্প্রেশন, ক্লিক বা খরচের হিসাব জানতে চাওয়াটা স্বাভাবিক।
এর সাথে সম্পর্কিত হলো মুভিং অ্যাভারেজ , যেখানে একটি স্থানান্তরিত রো ফ্রেমের (যেমন, পূর্ববর্তী দুটি তারিখ এবং বর্তমান তারিখ) উপর একটি উইন্ডো ফাংশন হিসেবে AVG প্রয়োগ করা হয়। দৈনিক শীর্ষবিন্দুর উপর খুব বেশি নির্ভর না করে টাইম সিরিজকে মসৃণ করতে এবং প্রবণতা শনাক্ত করার এটি একটি সহজ উপায়।
ডেটা অ্যানালিস্টের জন্য সাধারণত পাইথন দক্ষতার প্রয়োজন হয়।
বেশিরভাগ ডেটা অ্যানালিস্টের পদে (অ্যাডটেক সহ), কোম্পানিগুলো আপনার কাছ থেকে মেশিন লার্নিং গুরু হওয়ার আশা করে না, কিন্তু তারা আশা করে যে পাইথন ও প্যান্ডাস (pandas) ব্যবহারে আপনার বাস্তব দক্ষতা থাকবে । সাধারণত, আপনাকে ডেটাসেট লোড করতে, সেগুলো পরিষ্করণ করতে, রূপান্তর করতে এবং সাধারণ মেট্রিক বা ভিজ্যুয়ালাইজেশন তৈরি করতে বলা হবে।
পাইথন টেস্ট সাধারণত CSV ফাইল থেকে ডেটা পড়া , নাল ভ্যালু ও কলামের ধরন পরীক্ষা করা, সারি ফিল্টার করা, নতুন কলাম তৈরি করা, groupby ব্যবহার করে অ্যাগ্রিগেশন এবং ডেটাফ্রেমের মধ্যে জয়েন করার মতো অপারেশনগুলোর উপর আলোকপাত করে। অনেক ক্ষেত্রে, এর ভাষা প্রায় SQL অংশের মতোই হয়, কিন্তু তা প্যান্ডাস ফরম্যাটে লেখা হয়।
অ্যানালিস্ট টেস্টে একেবারে গোড়া থেকে জটিল মডেল তৈরি করতে বলাটা সচরাচর ঘটে না, যদিও একটি বেসিক মডেলকে ট্রেন করার জন্য স্কিকিট-লার্ন (scikit-learn)-এর সাথে সংযোগ স্থাপনের আপনার দক্ষতা এবং সর্বোপরি, এর পারফরম্যান্স পরিমাপের মৌলিক মেট্রিকগুলো সম্পর্কে আপনার জ্ঞানকে তারা মূল্যায়ন করতে পারে।
পান্ডাসের মৌলিক অপারেশনগুলো যা আপনার আয়ত্ত করা উচিত
যেকোনো পাইথন ডেটা অনুশীলন সফলভাবে সম্পন্ন করতে হলে, আপনাকে ডেটাফ্রেমের মৌলিক কার্যক্রমে পারদর্শী হতে হবে। প্রথম ধাপটি হলো সাধারণত `read_csv` ব্যবহার করে একটি ফাইল লোড করা এবং `head()`, `info()`, বা `describe()`-এর মতো মেথডগুলোর সাহায্যে এর গঠন অন্বেষণ করা।
নাল ভ্যালুগুলো পরিষ্কার করার অংশটিও সাধারণত দেখা যায়: যেমন, isnull().sum() ব্যবহার করে প্রতি কলামে কতগুলো নাল আছে তা গণনা করা, dropna() দিয়ে পুরো সারি বা কলাম মুছে ফেলার সিদ্ধান্ত নেওয়া, অথবা fillna() দিয়ে অনুপস্থিত ভ্যালুগুলো পূরণ করা, উদাহরণস্বরূপ কলামের গড় বা মধ্যক ব্যবহার করে।
ফিল্টারের ক্ষেত্রে, আপনাকে সংখ্যাসূচক বা শ্রেণিবদ্ধ কলামের উপর শর্ত তৈরি করতে বলা হবে; যেমন একটি নির্দিষ্ট পরিমাণের উপরের বিক্রয় নির্বাচন করা, অথবা & এবং | ব্যবহার করে একাধিক শর্ত পূরণকারী সারি নির্বাচন করা। মূল বিষয় হলো, কোনো দ্বিধা ছাড়াই df লিখতে জানা।
pandas-এ `groupby`- এর ব্যাখ্যা প্রায় সবসময়ই অন্তর্ভুক্ত থাকে, কারণ এটি SQL-এর `GROUP BY`-এর সরাসরি সমতুল্য। আপনি এক বা একাধিক কলাম অনুযায়ী গ্রুপ করেন এবং তারপর `sum`, `mean`, `count` ইত্যাদির মতো অ্যাগ্রিগেশন প্রয়োগ করেন। `groupby('column').agg()` সিনট্যাক্সটি অপরিহার্য।
ডেটাফ্রেমগুলির মধ্যে যোগদান এবং একত্রীকরণ
SQL-এ যেমন JOIN-এ দক্ষতা অর্জন করা অপরিহার্য, তেমনি pandas-এ pd.merge-এ দক্ষতা অর্জন করা বাধ্যতামূলক । কোম্পানিগুলো দেখতে চাইবে যে আপনি একই কী (key) আছে এমন ডেটাসেট জয়েন করতে জানেন কি না; যেমন, ব্যবহারকারীদের একটি টেবিলের সাথে ইভেন্ট বা কেনাকাটার অন্য একটি টেবিল।
`merge` ফাংশনটি যুক্ত করার জন্য দুটি ডেটাফ্রেম, কী কলাম (on), এবং জয়েন টাইপ (how) গ্রহণ করে, যা SQL-এর মতোই 'left', 'right', 'inner' বা 'outer' হতে পারে। ডেটা বিশ্লেষণে, মূল ডেটাসেটটি অক্ষুণ্ণ রেখে সেকেন্ডারি টেবিল থেকে অ্যাট্রিবিউট বা মেট্রিক যোগ করার জন্য প্রধানত লেফট জয়েন ব্যবহার করা হয়।
সাক্ষাৎকারে, উভয় দিকে ডুপ্লিকেট কী থাকলে কী হয় অথবা প্যারামিটার সাফিক্সের সাথে কলাম নামের দ্বন্দ্ব কীভাবে সামাল দিতে হয়, এই ধরনের বিশদ বিবরণ উল্লেখ করা ভালো। এটি উচ্চতর পরিপক্কতার পরিচয় দেয়।
পাইথনের সাধারণ, আরও তাত্ত্বিক প্রশ্ন
পান্ডাস ছাড়াও, অনেক ইন্টারভিউতে পাইথন ভাষা সম্পর্কে আপনার ধারণা যাচাই করার জন্য কিছু সাধারণ প্রশ্ন থাকে । এগুলো সাধারণত ফিচার, মেমরি, ডেটা টাইপ বা সিনট্যাক্সের ছোট ছোট অংশ নিয়ে করা সংক্ষিপ্ত প্রশ্ন হয়ে থাকে।
যে বিষয়গুলো বারবার উঠে আসে তার মধ্যে রয়েছে পাইথনে স্বয়ংক্রিয় মেমরি ম্যানেজমেন্ট , যা একটি প্রাইভেট হিপের উপর ভিত্তি করে কাজ করে যেখানে ব্যবহারকারী সরাসরি প্রবেশ করতে পারে না এবং একটি গার্বেজ কালেক্টর, যা এমন অবজেক্টগুলোকে মুক্ত করার জন্য দায়ী যাদের আর কোনো রেফারেন্স নেই।
প্রায়শই পাইথন ও জাভার মধ্যে তুলনা করতে বলা হয় ; এর উদ্দেশ্য কোনো একটিকে বিজয়ী ঘোষণা করা নয়, বরং আপনি যে এদের মধ্যকার পার্থক্যগুলো বোঝেন, তা দেখানো। পাইথন অধিক ডাইনামিক এবং এর সিনট্যাক্স আরও সংক্ষিপ্ত, যা প্রোটোটাইপিং ও ডেটা সায়েন্সের জন্য আদর্শ। অন্যদিকে, জাভা সাধারণত কর্পোরেট এবং হাই-পারফরম্যান্স ইকোসিস্টেমগুলোতে আধিপত্য বিস্তার করে।
অন্যান্য সাধারণ প্রশ্নগুলো ল্যাম্বডা এক্সপ্রেশন (সাধারণ অপারেশনের জন্য অ্যানোনিমাস ফাংশন), অবজেক্টকে বাইটে সিরিয়ালাইজ ও পুনরুদ্ধার করার জন্য পিকলিং/আনপিকলিং প্রক্রিয়া, অথবা লিস্ট ও টাপলের মধ্যে পার্থক্যকে কেন্দ্র করে হয়ে থাকে, যেখানে লিস্ট পরিবর্তনযোগ্য এবং স্কয়ার ব্র্যাকেট দিয়ে সংজ্ঞায়িত হয়, আর টাপল অপরিবর্তনযোগ্য এবং প্যারেন্থেসিস দিয়ে সংজ্ঞায়িত হয়।
ইন্টারভিউতে পাইথনের আরও কিছু গুরুত্বপূর্ণ ধারণা
পাইথনে কীভাবে কোনো অবজেক্ট ডিলিট বা কপি করতে হয়, এই প্রশ্নটি প্রায়শই করা হয়ে থাকে । সাধারণত, এটা ব্যাখ্যা করাই যথেষ্ট যে, কোনো রেফারেন্স মুছে ফেলার জন্য `del` স্টেটমেন্ট ব্যবহার করা যায় এবং শ্যালো কপি `copy.copy()` দিয়ে করা হয়, যেখানে ডিপ কপির জন্য `copy.deepcopy()` প্রয়োজন হয়।
আরেকটি ধারণা যা দেখা যেতে পারে, বিশেষ করে ব্যাকএন্ড প্রোফাইলগুলিতে, তা হলো তথাকথিত ডগপাইল এফেক্ট , যা এমন একটি পরিস্থিতিকে বর্ণনা করে যেখানে অনেক ব্যবহারকারী বা প্রসেস একই সময়ে কোনো একটি রিসোর্সকে (উদাহরণস্বরূপ, একটি ওয়েবসাইট বা ক্যাশে) আক্রমণ করে সিস্টেমটিকে পরিপূর্ণ করে তোলে।
ইকোসিস্টেমের সাথে সম্পর্কিত, পাইথনের সাথে কোন কোন ডাটাবেস ব্যবহার করা যায়, সে বিষয়েও আপনি প্রশ্নের সম্মুখীন হতে পারেন । সবচেয়ে বিচক্ষণ পন্থা হলো MySQL, PostgreSQL, SQLite, MongoDB, এবং Oracle-এর মতো কিছু জনপ্রিয় ডাটাবেসের নাম উল্লেখ করা এবং এটিও মনে রাখা যে, পাইথন সাধারণত বিভিন্ন ধরনের রিলেশনাল এবং NoSQL ডাটাবেস ইঞ্জিনের সাথে ভালোভাবে সমন্বিত হয়।
অবশেষে, প্রায়শই সহজ প্রশ্ন উঠে আসে, যেমন 'sorted on items' ব্যবহার করে কীভাবে একটি ডিকশনারি সাজানো যায় , নেমস্পেস কী এবং এটি কীসের জন্য ব্যবহৃত হয় (বিভিন্ন স্কোপের অবজেক্টের সাথে নাম যুক্ত করার জন্য), অথবা 'subprocess' মডিউলের 'run()' বা 'Popen()'-এর মতো ফাংশন ব্যবহার করে কীভাবে একটি সাবপ্রসেস চালু করা যায়।
পাইথনে মডেল মূল্যায়নের মেট্রিকস: ন্যূনতম যা আপনার জানা উচিত
যদিও অনেক অ্যানালিস্ট পদে ডিপ লার্নিং আর্কিটেকচার ডিজাইন করার প্রয়োজন হয় না, ক্লাসিফিকেশন মডেল মূল্যায়নের জন্য মৌলিক মেট্রিকগুলোর সাথে পরিচিত থাকাটা সাধারণ একটি বিষয় , বিশেষ করে যদি ভূমিকাটি অ্যাডটেক ক্ষেত্রে ডেটা প্রোডাক্ট, ক্যাম্পেইন অ্যাট্রিবিউশন বা ফ্রড ডিটেকশনের সাথে জড়িত থাকে।
এর সূচনা বিন্দু হলো কনফিউশন ম্যাট্রিক্স , যা একটি বাইনারি বা মাল্টিক্লাস ক্লাসিফায়ারের সাফল্য ও ব্যর্থতার সারসংক্ষেপ তুলে ধরে। বাইনারি ক্ষেত্রে, এটিকে ট্রু পজিটিভ (TP), ট্রু নেগেটিভ (TN), ফলস পজিটিভ (FP) এবং ফলস নেগেটিভ (FN)-এ বিভক্ত করা হয়। এই চারটি বিভাগ সম্পর্কে পুঙ্খানুপুঙ্খ ধারণা থাকা অত্যন্ত গুরুত্বপূর্ণ।
ম্যাট্রিক্স থেকে অ্যাকুরেসি ( accuracy) , প্রিসিশন (precision) (যা মোট সঠিক ভবিষ্যদ্বাণীর শতাংশ পরিমাপ করে); প্রিসিশন (precision ) (সঠিক ভবিষ্যদ্বাণী / ধনাত্মক ভবিষ্যদ্বাণী); এবং রিকল (recall) বা সেনসিটিভিটি (sensitivity ) (সঠিক ভবিষ্যদ্বাণী / প্রকৃত ধনাত্মক ভবিষ্যদ্বাণী)-এর মতো মেট্রিকগুলো বের করা হয়। এই শেষ দুটি বিশেষভাবে গুরুত্বপূর্ণ যখন ক্লাসগুলো ভারসাম্যহীন থাকে।
F1 স্কোর হারমোনিক মিন ব্যবহার করে অ্যাকুরেসি এবং রিকলকে একত্রিত করে, এবং এদের যেকোনো একটির জন্য বিশেষভাবে কম স্কোরকে দণ্ড দেয়। এটি এমন সব ক্ষেত্রে একটি সাধারণ মেট্রিক যেখানে ফলস পজিটিভ এবং ফলস নেগেটিভ উভয়ই ব্যয়বহুল, যেমন জালিয়াতি শনাক্তকরণ, লিড স্কোরিং বা রোগ শনাক্তকরণ।
অন্যান্য উন্নত মেট্রিক: ROC-AUC, লগলস, জ্যাকার্ড, এবং আরও অনেক কিছু।
যেসব পদে ডেটা সায়েন্স বা মার্কেটিং অ্যানালিটিক্সের ওপর বেশি জোর দেওয়া হয়, সেসব ক্ষেত্রে কোম্পানিগুলো দেখে যে আপনি ROC-AUC-এর মতো আরও উন্নত মেট্রিক্সে দক্ষতা অর্জন করেছেন কিনা , যা ROC কার্ভের নিচের ক্ষেত্রফল পরিমাপ করে এবং একটি মডেলের বিভিন্ন ক্লাস আলাদা করার ক্ষমতাকে প্রতিফলিত করে।
ROC কার্ভটি বিভিন্ন ডিসিশন থ্রেশহোল্ডের জন্য ট্রু পজিটিভ রেট (রিকল) এবং ফলস পজিটিভ রেট (১ – স্পেসিফিসিটি)-এর মধ্যকার সম্পর্ককে উপস্থাপন করে। একটি র্যান্ডম মডেল একটি ডায়াগোনাল লাইনের উপর অবস্থান করবে, যেখানে একটি ভালো মডেল উপরের বাম কোণার কাছাকাছি থাকবে। কার্ভের নিচের ক্ষেত্রফল যত বড় হবে, পার্থক্য নির্ণয়ের ক্ষমতাও তত ভালো হবে।
আরেকটি প্রচলিত মেট্রিক হলো লগ লস (logloss) , যা পূর্বাভাসিত সম্ভাবনার গুণমান মূল্যায়ন করে এবং অতিরিক্ত আত্মবিশ্বাস ও ত্রুটির জন্য কঠোরভাবে দণ্ড দেয়। একটি নিখুঁত মডেলের লগ লস ০ হবে এবং সাধারণত, লগ লস যত কম হয়, মডেলটি তত ভালো।
তারা আপনাকে জ্যাকার্ড ইনডেক্স সম্পর্কেও জিজ্ঞাসা করতে পারে , যা দুটি সেটের মধ্যেকার সাদৃশ্যকে তাদের ছেদনের আকারকে তাদের সংযোগের আকার দিয়ে ভাগ করে পরিমাপ করে। এটি অন্যান্য বিষয়ের পাশাপাশি ক্লাসিফায়ার, সেগমেন্টেশন এবং সুপারিশ সিস্টেম মূল্যায়ন করতে ব্যবহৃত হয়।
কিছু ক্ষেত্রে গেইন ও লিফট চার্টের কথা উল্লেখ করা হয় , যা দেখায় যে জনসংখ্যার একটি অংশ (যেমন, আপনার মডেল দ্বারা রেট করা শীর্ষ ২০% ব্যবহারকারী) ব্যবহার করে আপনি আপনার টার্গেটের কত শতাংশকে অর্জন করতে পারছেন। কাকে প্রথমে টার্গেট করতে হবে, তা নির্ধারণ করার জন্য মার্কেটিং-এ এটি ব্যাপকভাবে ব্যবহৃত হয়।
কোলমোগোরভ-স্মিরনভ, গিনি সহগ এবং গভীর মূল্যায়ন
যদি কোম্পানিটি স্কোরিং বা ঝুঁকি মডেলের উপর ব্যাপকভাবে মনোনিবেশ করে, তাহলে কোলমোগোরভ-স্মিরনভ (কেএস) পরিসংখ্যানের মতো মেট্রিকগুলো দেখা যেতে পারে , যা ধনাত্মক এবং ঋণাত্মক স্কোরের বিন্যাসগুলোর মধ্যে পৃথকীকরণের মাত্রা পরিমাপ করে।
১০০-এর কাছাকাছি একটি KS মান (শতাংশ হিসাবে) নির্দেশ করে যে মডেলটি দুটি জনগোষ্ঠীকে প্রায় নিখুঁতভাবে পৃথক করে; ০-এর কাছাকাছি একটি মান বোঝায় যে মডেলটি দৈবচয়নের চেয়ে ভালো পার্থক্য করতে পারে না। বাস্তবে, বাস্তব-জগতের মডেলগুলো মধ্যবর্তী মানের মধ্যে থাকে এবং সেরাটি নির্বাচন করার জন্য সেগুলোকে একে অপরের সাথে তুলনা করা হয়।
গিনি সহগ হলো আরেকটি মেট্রিক যা ROC-AUC থেকে Gini = 2 × AUC – 1 সূত্র ব্যবহার করে নির্ণয় করা হয়। ক্রেডিট এবং বীমা ক্ষেত্রে এটি অত্যন্ত জনপ্রিয় এবং এটিকে বৈষম্যের একটি পরিমাপক হিসেবেও ব্যাখ্যা করা হয়: গিনি সহগ যত বেশি হবে, মডেলটির উচ্চতর স্কোরে ট্রু পজিটিভ কেন্দ্রীভূত করার ক্ষমতাও তত বেশি হবে।
আরও উন্নত স্তরের ইন্টারভিউতে, আপনাকে জিজ্ঞাসা করা হতে পারে যে কীভাবে এই মেট্রিকগুলি (যেমন, confusion_matrix, accuracy_score, roc_auc_score, f1_score…) পাইথনে scikit-learn ব্যবহার করে প্রয়োগ করা হয় এবং সমস্যার প্রকৃতি ও ক্লাস ইমব্যালেন্সের উপর নির্ভর করে কখন আপনি কোনটি ব্যবহার করবেন সে সম্পর্কে মন্তব্য করতে বলা হতে পারে।
টেকনিক্যাল ইন্টারভিউয়ের সময় আপনার উত্তরগুলো কীভাবে সাজাবেন
আপনার লেখা কোডের বাইরেও, সাক্ষাৎকার গ্রহণকারীরা আপনার চিন্তাভাবনা এবং আপনি কীভাবে নিজের কথা ব্যাখ্যা করেন , সেদিকে গভীর মনোযোগ দেন । একটি অগোছালো উত্তর আপনাকে আপনার প্রকৃত যোগ্যতার চেয়েও অনভিজ্ঞ হিসেবে উপস্থাপন করতে পারে, এমনকি যদি আপনি সঠিক সমাধানটি জানেনও।
প্রযুক্তিগত প্রশ্নের উত্তর দেওয়ার একটি অত্যন্ত কার্যকর পদ্ধতি হলো নিম্নরূপ: প্রথমে, ধারণাটি এক বাক্যে ব্যাখ্যা করুন , তারপর একটি বাস্তব উদাহরণ দিন (আদর্শগতভাবে যা আপনার নিজের কোনো প্রকল্পের সাথে সম্পর্কিত), এবং প্রাসঙ্গিক হলে, বিকল্প বা সূক্ষ্ম পার্থক্যগুলো উল্লেখ করুন । এটি SQL, Python, বা মডেল মেট্রিক্সের ক্ষেত্রেও সমানভাবে কার্যকর।
উদাহরণস্বরূপ, যদি আপনাকে জিজ্ঞাসা করা হয় যে CTE কী কাজে লাগে, আপনি বলতে পারেন যে এটি একটি নামযুক্ত অস্থায়ী সাবকোয়েরি যা জটিল কোয়েরিগুলোর পাঠযোগ্যতা উন্নত করে; এর সাথে যোগ করতে পারেন যে, যখন একটি অন্তর্বর্তী ফলাফল একাধিকবার পুনঃব্যবহার করার প্রয়োজন হয়, তখন এটি ব্যবহার করা হয়; এবং উল্লেখ করতে পারেন যে, কিছু ক্ষেত্রে এটিকে নেস্টেড সাবকোয়েরি দ্বারা প্রতিস্থাপন করা যেতে পারে, যদিও তা ততটা স্পষ্ট নয়।
উচ্চস্বরে চিন্তা করাও খুব গুরুত্বপূর্ণ । যদি কোথাও আটকে যান, চুপ থাকবেন না: আপনি কী করার চেষ্টা করছেন, আপনার কাছে কোন তথ্য নেই, কী কী অনুমান করছেন—তা মুখে বলুন। এটি সাক্ষাৎকার গ্রহণকারীকে আপনার চিন্তার প্রক্রিয়া বুঝতে সাহায্য করে এবং কখনও কখনও এমন সূত্র বা স্পষ্টীকরণও দেয় যা আপনাকে সামনে এগিয়ে যেতে সহজ করে তোলে।
টেকনিক্যাল ডেটা ইন্টারভিউতে সবচেয়ে সাধারণ ভুলগুলো
অনেক প্রার্থী পর্যাপ্ত SQL বা Python দক্ষতার অভাবে বাদ পড়েন না, বরং দুর্বল প্রস্তুতি এবং যোগাযোগের ত্রুটির সম্মিলিত কারণে বাদ পড়েন । এই সাধারণ ভুলগুলো এড়ানোর জন্য সে সম্পর্কে পুরোপুরি সচেতন থাকা অত্যন্ত জরুরি।
প্রথমটি হলো না বুঝে মুখস্থ করা । RANK বা ল্যাম্বডা ফাংশনের সিনট্যাক্স জানা খুব একটা কাজের নয়, যদি আপনি ব্যাখ্যা করতে না পারেন যে কোন ক্ষেত্রে আপনি সেই টুলগুলো ব্যবহার করবেন বা কেন সেগুলো অন্যান্য বিকল্পের চেয়ে বেশি পছন্দনীয়।
আরেকটি খুব সাধারণ ভুল হলো অনুশীলনীতে ডেটার গুণমান যাচাই করতে ব্যর্থ হওয়া । যদি আপনাকে কোনো ডেটাসেট দেওয়া হয়, তবে ডেটা একত্রিত করা শুরু করার আগে, এমন কোনো নাল, ডুপ্লিকেট বা আউটলায়ার আছে কিনা তা পরীক্ষা করে নেওয়া বাঞ্ছনীয় যা বিশ্লেষণকে প্রভাবিত করতে পারে। এটি বিচক্ষণতা এবং বাস্তব অভিজ্ঞতার পরিচয় দেয়।
স্পষ্টীকরণমূলক প্রশ্ন করা এড়িয়ে চলাও অত্যন্ত ক্ষতিকর । উদাহরণস্বরূপ, বিজ্ঞাপন প্রচারণার বিষয়ে একটি ব্যবসায়িক আলোচনায়, এর মৌসুমী প্রভাব, লক্ষ্যমাত্রার সময়সীমা, ব্যবহারকারী-ভিত্তিক নাকি ইম্প্রেশন-ভিত্তিক মেট্রিকস চাওয়া হচ্ছে, ইত্যাদি বিষয়ে প্রশ্ন করা সম্পূর্ণ যৌক্তিক। চুপ থাকা এবং অনুমাননির্ভর সমাধান প্রায়শই এমন পরিণতির দিকে নিয়ে যায় যা সাক্ষাৎকার গ্রহণকারীর মূল ভাবনার সাথে একেবারেই মেলে না।
সবশেষে, "ওভারকোডিং" পদ্ধতি পরিহার করুন: অর্থাৎ, যেখানে কোয়েরি বা স্ক্রিপ্ট আরও সহজ হতে পারত, সেখানে অপ্রয়োজনীয়ভাবে জটিল সমাধান তৈরি করা। বাস্তব কর্ম পরিবেশে, ধাঁধার মতো সমাধান নয়, বরং স্বচ্ছতা, রক্ষণাবেক্ষণযোগ্যতা এবং কার্যকারিতাকেই বেশি গুরুত্ব দেওয়া হয়।
দুই সপ্তাহে নিবিড় প্রস্তুতি পরিকল্পনা
সাক্ষাৎকারের আগে আপনার হাতে সময় কম থাকলে, আপনি একটি সংক্ষিপ্ত পরিকল্পনা অনুসরণ করতে পারেন যা তিনটি মূল ক্ষেত্রকে অন্তর্ভুক্ত করে: SQL, pandas সহ Python, এবং এর ব্যবহারিক প্রয়োগ। আপনি ১৪ দিনে কোনো অলৌকিক কাজ করতে পারবেন না, কিন্তু একটি দৃঢ় দক্ষতা এবং যুক্তিসঙ্গত আত্মবিশ্বাস নিয়ে উপস্থিত হতে পারবেন ।
প্রথম কয়েকদিন বিগিনার থেকে ইন্টারমিডিয়েট SQL-এর উপর মনোযোগ দেওয়া ভালো : বেসিক সিনট্যাক্স, JOIN, GROUP BY, সাবকোয়েরি এবং সবচেয়ে প্রচলিত উইন্ডো ফাংশনগুলো পর্যালোচনা করুন। উদাহরণ পড়া এবং নিজের কোয়েরি লেখা, উভয় ক্ষেত্রেই সময় দিন।
দ্বিতীয় পর্যায়ে, পান্ডাস (pandas) -এর উপর মনোযোগ দিন : ডেটা লোডিং, ক্লিনিং, ফিল্টারিং, গ্রুপবাই, মার্জ এবং ম্যাটপ্লটলিব (matplotlib) বা সিবর্ন (seaborn) ব্যবহার করে কিছু দ্রুত ভিজ্যুয়ালাইজেশন। আপনাকে জটিল ড্যাশবোর্ড তৈরি করতে হবে না, তবে এসকিউএল (SQL)-এ আপনি যে রূপান্তরগুলো করতেন, সেগুলো পাইথনেও (Python) করতে সক্ষম হতে হবে।
এরপর হ্যাকারর্যাঙ্ক বা টেকনিক্যাল ইন্টারভিউ রিপোজিটরির মতো প্ল্যাটফর্মে ব্যবহারিক অনুশীলন করার জন্য কয়েকটা দিন আলাদা করে রাখুন । এর উদ্দেশ্য হলো ফরম্যাট, সময়ের সীমাবদ্ধতা এবং একটি নিয়ন্ত্রিত পরিবেশে কোড লেখার চাপের সাথে অভ্যস্ত হওয়া।
সবশেষে, এক বা দুটি সম্পূর্ণ ইন্টারভিউ সিমুলেশন চেষ্টা করে দেখুন : একটি পাবলিক ডেটাসেট নিন, যুক্তিসঙ্গত ব্যবসায়িক প্রশ্ন জিজ্ঞাসা করুন, SQL বা Python ব্যবহার করে সেগুলোর সমাধান করুন এবং প্রাথমিক অনুসন্ধান থেকে শুরু করে চূড়ান্ত সিদ্ধান্ত পর্যন্ত আপনার সম্পূর্ণ যুক্তি উচ্চস্বরে ব্যাখ্যা করুন।
তাত্ত্বিক পর্যালোচনা, নির্দেশিত অনুশীলন এবং বাস্তবসম্মত অনুশীলনের একটি ভালো সমন্বয়ের মাধ্যমে, আপনি ইন্টারভিউয়ের দিনে ইন্টারমিডিয়েট SQL, ডেটা বিশ্লেষণের জন্য Python এবং মডেল মেট্রিক্সে একটি মজবুত ভিত্তি নিয়ে উপস্থিত হবেন — যা অ্যাডটেক এবং ডেটা অ্যানালিটিক্সের বেশিরভাগ কোম্পানিই দেখতে প্রত্যাশা করে।
