কীভাবে রক করবেন কোডিং ইন্টারভিউ

ধরেন আপনি একজন ব্ল্যাক ব্যাল্ট কোডার। সেক্ষেত্রে আপনি ঠিক যতই এক্সপার্ট হন না কেন ইন্টারভিউ প্রসেস এর সময় কোডিং এ মিসটেক হওয়াটা অস্বাভাবিক কিছু নয়। 

তাই কোডার হিসেবে আপনি যদি নিজের ড্রিম জব এচিভ করার পাশাপাশি ইন্টারভিউ রক করার প্ল্যান করছেন তাদের জন্য এই আর্টিকেলটি বেশ হেল্পফুল।

আপনি যে লেভেলের লাইফে ফার্স্ট কোডিং ইন্টারভিউটি দিবেন সেক্ষেত্রে শুরুতে ভালো এক্সপেরিয়েন্স না হওয়াটা স্বাভাবিক। তাই হতাশ হওয়ার কিছু নেই। ইন্টারভিউ হচ্ছে এমন একটি স্কিল যা আপনি স্টাডি, প্রিপারেশন ও প্র্যাকটিসের মাধ্যমে বেটার আউটপুট দিতে হেল্প করবে।

আপনি যদি রিসেন্টলি কোডিং জব সার্চ করেন তাহলে আপনি ধরে নিন, আপনি নিজেই আপনাকে কোডিং ইন্টারভিউ স্কিল ডেভেলপ করার জন্য একটি জার্নি শুরু করে দিয়েছেন।

তাই ফ্রন্ট এন্ড ইঞ্জিনিয়ার হিসেবে প্রুভ করতে চাইলে এসব নিয়ে ভাবা শুরু করে দিন। ফ্রন্ট এন্ড হল একটি বিশেষ ডোমেইন যেখানে ইঞ্জিনিয়ারদের ব্রাউজার কম্প্যাটিবিলিটি, ডকুমেন্ট অবজেক্ট মডেল, Javascript পারফর্মেন্স, CSS লেআউট ইত্যাদির সাথে রিলেভেন্ট অনেক টপিক জানতে হয়। 

আনফর্চুনেটলি, রুলসগুলো কোম্পানি দ্বারা সেট করা হয়, ক্যান্ডিডেট দ্বারা নয়। অ্যালগরিদম, ডিজাইন প্যাটার্ন, ডেটা স্ট্রাকচারের মতো কম্পিউটার সাইন্সের আইডিয়াগুলোর উপর হাই এম্ফাসিস দেওয়া হয় যা একজন ভালো সফটওয়্যার ইঞ্জিনিয়ারের কোর কম্পিটেন্সিতে থাকা উচিত।  তাই আপনি যদি জবটি চান, আপনাকে এন্ড মাস্টারদের দ্বারা নির্ধারিত নিয়ম অনুসারে খেলতে হবে সেক্ষেত্রে আপনার কোডিং ইন্টারভিউ স্কিল ডেভেলপ করুন!

কোডিং ইন্টারভিউর ব্রেকডাউন এবং কিভাবে আপনি প্রিপারেশন নিবেন?

কোডিং ইন্টারভিউ প্রিপারেশন এর ক্ষেত্রে যে বিষয়গুলোতে ফোকাস দেওয়া উচিত তা হল-

প্রতিটি অ্যালগরিদম টপিকের জন্য হেল্পফুল টিপস এন্ড হিন্টস, মূল আইডিয়াগুলো (arrays, trees, dynamic programming, etc) রিভিউ করতে এবং সেই বিষয়গুলোতে ডেভেলপ করার জন্য রিকমেন্ডেড LeetCode প্র্যাকটিস কুয়েরি।

অন্য কিছুর আগে, আপনাকে আপনার অ্যালগরিদমিক কোডিং ইন্টারভিউয়ের জন্য একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ সিলেক্ট করতে হবে।

বেশিরভাগ কোম্পানি আপনাকে আপনার পছন্দের ল্যাঙ্গুয়েজে কোড করার পারমিশন দিলেও এক্ষেত্রে ব্যতিক্রম হল গুগল।  তারা তাদের ক্যান্ডিডেডদের শুধুমাত্র Java, C++, Python, Go বা JavaScript থেকে সিলেক্ট করার অপশন দেয়।  

তাই বেশিরভাগ পার্টের জন্য, এমন একটি ল্যাঙ্গুয়েজ ইউজ করার সাজেশন দিবো যেটির সাথে আপনি অত্যন্ত পরিচিত, এক্ষেত্রে আপনার কাছে নতুন কিন্তু কোম্পানিটি ব্যাপকভাবে ইউজ  করে এমন কোন ল্যাঙ্গুয়েজ না ব্যবহার করাই ভাল। 

এক্ষেত্রে পাইথন আপনার ইন্টারভিউতে কোডিং অ্যালগরিদমগুলোর জন্য বেস্ট চয়েজ হতে পারে। কেননা এটি কনসাইজ করা, ফাংশন এবং ডেটা স্ট্রাকচারের একটি বিশাল লাইব্রেরিও রয়েছে।

আপনি যদি কিছু সময়ের জন্য পড়াশোনার বাইরে থাকেন, তাহলে CS এর বেসিক বিষয়গুলো পর্যালোচনা করা অত্যন্ত আপনার জন্য খুবই দরকারি। বিশেষ করে প্র্যাকটিসের সময় এটি রিভিউ করা জরুরি।  

এরপরে, আপনার সিলেক্ট করা প্রোগ্রামিং ল্যাঙ্গুয়েজে অ্যালগরিদম এবং ডেটা স্ট্রাকচারের পরিচিতি এবং স্কিল অর্জন করুন।

আপনার সিলেক্টেড ল্যাঙ্গুয়েজে অ্যালগরিদম কোশ্চেনগুলো প্র্যাকটিস করুন এবং সলভ করুন। কোডিং ইন্টারভিউ ক্র্যাক করা একটি ভাল রিসোর্স হলেও, আপনি কোড টাইপ করে, এটি রানের পারমিশন দিয়ে এবং ইন্সট্যান্ট ফিডব্যাকের মাধ্যমে প্রবলেম সলভ করুন।  

এছাড়া আপনার জন্য অনলাইনে কোশ্চেনগুলো প্র্যাকটিস করতে এবং ল্যাঙ্গুয়েজের সাথে অভ্যস্ত হওয়ার জন্য বিভিন্ন অনলাইন জাজ রয়েছে, যেমন LeetCode, HackerRank এবং CodeForces। এক্ষেত্রে LeetCode প্রশ্নগুলোর সাথে ইন্টারভিউতে জিজ্ঞেস করা প্রশ্নের সবচেয়ে বেশি মিল পাওয়া যায়। HackerRank এবং CodeForces প্রশ্নগুলো কম্পিটিশনাল প্রোগ্রামিং-এর প্রশ্নের মতোই অনেকটা।

আপনি যদি যথেষ্ট LeetCode কোশ্চেন সলভ করেন, তাহলে আপনার প্রকৃত ইন্টারভিউ কোশ্চেনগুলো কমপ্লিট করতে পারার একটি ভাল সুযোগ রয়েছে। 

আপনার সিলেক্টেড ল্যাঙ্গুয়েজে কমন অপারেশন্সগুলোর সাথে টাইম এবং স্পেস কম্প্লেক্সিটিগুলো শিখুন এবং বুঝুন।  পাইথনের জন্য, এই পেইজটি কাজে আসবে।  এছাড়াও, ল্যাঙ্গুয়েজের sort() ফাংশনে ব্যবহৃত আন্ডারলাইয়িং সর্টিং অ্যালগরিদম এবং এর টাইম এবং স্পেস কম্প্লেক্সিটির সম্পর্কে জানুন (পাইথনে এটি টিমসর্ট, যা একটি হাইব্রিড)।

LeetCode-এ একটি কোশ্চেন শেষ করার পরে, আপনি ফাংশন বডির উপরে কমেন্ট হিসেবে Written কোডের টাইম এবং স্পেস কমপ্লেক্সিটি এড করতে পারেন।এটি ইমপ্লিমেন্ট করার পরে অ্যালগরিদমের এ্যানালিসিসের সাথে কমিউনিকেট করতে নিজেকে মনে করিয়ে দেওয়ার জন্য কমেন্টগুলো ইউজ করতে পারেন।

আপনার ল্যাঙ্গুয়েজের জন্য রিকমেন্ড করা কোডিং স্টাইল পড়ুন এবং এটিতে লেগে থাকুন। আপনি যদি পাইথন বেছে নেন, তাহলে PEP 8 স্টাইল গাইড দেখুন।  আপনি যদি জাভা বেছে নেন, তাহলে Google-এর জাভা স্টাইল গাইড দেখুন।

ল্যাঙ্গুয়েজের কমন প্রবলেম ও সতর্কতা সম্পর্কে জানুন এবং পরিচিত হন।  আপনি যদি ইন্টারভিউ-র সময় এগুলো উল্লেখ করেন তাহলে আপনি বোনাস পয়েন্ট পেতে পারেন এবং ইন্টারভিউয়ার ল্যাঙ্গুয়েজটির সাথে পরিচিত হোক বা না হোক, ইন্টারভিউয়ারকে আপনি ইনফ্লুয়েন্স করতে পারেন।

একটি কোডিং ইন্টারভিউতে, আপনাকে ইন্টারভিউয়ার একটি টেকনলোজি রিলেটেড প্রশ্ন দিবে। আপনি একটি রিয়েল-টাইম, কোলাবোরেটিভ এডিটর (ফোন স্ক্রীন) বা একটি হোয়াইটবোর্ডে (অন-সাইটে) কোডটি লিখবেন এবং প্রবলেম সলভিংয়ের জন্য 30 থেকে 45 মিনিট সময় পাবেন৷ এখানেই আসল মজা শুরু হয়!

আপনার ইন্টারভিউয়ার দেখবেন যে, আপনি রিকোয়ারমেন্ট ফিলাপ করছেন কিনা। এ বিষয়ে আপনার এক্সপার্রটাইজ আছে কিনা!

ফোনের স্ক্রীন এবং রিমোট ইন্টারভিউ এর জন্য, কোনও নোট বা ডায়াগ্রাম লেখার জন্য একটি কাগজ এবং কলম বা পেন্সিল সাথে রাখুন।  যদি আপনাকে ট্রি এবং গ্রাফ সম্পর্কে একটি প্রশ্ন দেওয়া হয়, আপনি যদি ডেটা স্ট্রাকচার উদাহরণগুলো আঁকেন তবে এটি আপনাকে হেল্প করবে।

অবশ্যই ইয়ারফোন ইউজ করুন।   আপনি একহাতে ফোন ধরে অন্য হাতে টাইপ করতে পারবেন না।  তাই স্পিকার অ্যাভয়েড করার চেষ্টা করুন।  ফিডব্যাক নেগেটিভ হলে, কমিউনিকেশন কঠিন করা হয়। আবার বার বার রিপিট করতে হলে সময়ও নষ্ট হবে। তাই রিমোট ইন্টারভিউতে এ বিষয়গুলো আগেই ঠিক করে নিন।

অনেক ইন্টারভিউয়ার প্রশ্ন শোনার সাথে সাথে কোডিং শুরু করে।  এটি সাধারণত একটি বড় ভুল।  প্রথমে, কিছুক্ষণ সময় নিন এবং আপনি প্রশ্নটি বুঝতে পেরেছেন তা নিশ্চিত করতে ইন্টারভিউয়ারের কাছে প্রশ্নটি রিপিট করুন।  আপনি যদি প্রশ্নটি ভুল বুঝে থাকেন, তাহলে ইন্টারভিউয়ার সেটি ক্লিয়ার করতে পারেন।

 প্রশ্নটি শোনার পরে সর্বদা তার সম্পর্কে ক্লিয়ারিফিকেশন সার্চ করুন, এমনকি যদি আপনি মনে করেন এটি সহজ তবুও এই কাজটি করুন।  ফলে দেখা যাবে, আপনি বুঝতে পারবেন যে আপনি কিছু মিস করেছেন কিনা।  এটি ইন্টারভিউয়ারকেও জানান দেয় যে, আপনি ডিটেইলড ডেসক্রিপশনে মনোযোগী। এটি একটি পজিটিভ  ইনসাইট ক্রিয়েট করবে।

আপনার কোড লিখতে একটি ভালো স্টাইল ইউজ করুন। অন্যদের দ্বারা লেখা কোড পড়া সাধারণত একটি উপভোগ্য কাজ নয়। এক্ষেত্রে  আপনার লক্ষ্য হল আপনার ইন্টারভিউয়ারকে আপনার কোড বোঝানো যাতে তারা দ্রুত আইডেন্টিফাই করতে পারে যে আপনার কোডটি তাদের দেয়া প্রবলেম সলভ করতে পারে কিনা।

আপনি কোডিং শেষ করার পরে, ইন্টারভিউয়ারকে জানাবেন যে আপনি কমপ্লিট করেছেন।  বেশিরভাগ ক্ষেত্রে, এরকম টেস্টে  কোড সাধারণত একদম নিখুঁত হয় না।  এতে বাগ বা সিনট্যাক্স ত্রুটি থাকতে পারে।  আপনাকে যা করতে হবে তা হল আপনার কোড রিভিশন।

উপরে উল্লিখিত স্টেপগুলো বারবার রিহার্সাল করা যেতে পারে যতক্ষণ না আপনি সেগুলোকে সম্পূর্ণরূপে আয়ত্ত না করেন। প্র্যাকটিস করার একটি ভাল উপায় হল কোন একজন বন্ধুর সাথে কোলাবোরেশন করা এবং একে অপরের সাথে ইন্টারভিউ নেওয়া।

কোডিং ইন্টারভিউয়ের জন্য প্রিপারেশনের জন্য একটি বড় রিসোর্স হল interviewing.io।  এই প্ল্যাটফর্মটি Google এবং Facebook ইনঞ্জিনিয়ারদের সাথে ফ্রিতে এবং এনোনিমাসলি প্র্যাকটিস ইন্টারভিউ প্রোভাইড করে, যা রিয়েল জব  এবং ইন্টার্নশিপের মতোই ইন্টারভিউ।

আরেকটি প্ল্যাটফর্ম যা আপনাকে কোডিং ইন্টারভিউ প্র্যাকটিস করতে হেল্প করবে তা হল Pramp।  যেখানে interviewing.io পটেনশিয়াল কোডিং ইন্টারভিউয়ারদের সাথে সম্ভাব্য চাকরিপ্রার্থীদের ম্যাচ করিয়ে দেয়, সেখানে Pramp একটি ভিন্ন পন্থা নেয়।  Pramp আপনাকে অন্য একজন সহকর্মীর সাথে এড করবে যিনি একজন চাকরিপ্রার্থীও।  আপনারা দুজনে পালাক্রমে ইন্টারভিউয়ার এবং ইন্টারভিউই-এর ভূমিকা গ্রহণ করতে পারবেন।  Pramp এছাড়াও কোশ্চেন ক্রিয়েট করতে ও সলভ প্রোভাইট করে এবং ইন্টারভিউয়ারকে গাইড করার জন্য প্রম্পট দেয়।

এরপর আপনার প্রিয় কোম্পানিগুলোতে অ্যাপ্লাই করুন বা, আরও ভাল যেগুলো আছে, সেই কোম্পানিগুলোর জন্য কাজ করে এমন আপনার বন্ধুদের কাছ থেকে রেফারেল নিন। তবে সুযোগ না থাকলেও নো টেনশন! লক্ষ্য করা যায়, রেফারেল ছাড়া অ্যাপ্লাই করলেও রেসপন্স পাওয়া যায়।তাই আপনার কোডিং ইন্টারভিউ জার্নির জন্য রইল শুভকামনা!