Amazon ও Google এ চাকরির সুযোগ পাওয়ার প্রস্তুতি পর্ব
ভূমিকাঃ
প্রথমেই আমার লেখায় বাংলা-ইংরেজী ভয়াবহ সংমিশ্রনের জন্য দুঃখিত। আমার ইচ্ছা ছিল পুরোটা বাংলায় লিখব, কিন্তু লিখতে গিয়ে মনে হয়েছে কিছু শব্দ ইংরেজিতে রাখাই ভাল।
এই লেখার উদ্দেশ্য পুরো প্রস্তুতি সব কিছু এক সাথে রাখা, কারন আমি যখন প্রস্তুতি নেয়া শুরু করি তখন বিভিন্ন জায়গা থেকে তথ্য নিতে হয়েছে, তখন মনে হয়েছে যদি সব এক সাথে থাকত।
আমি অন্য যাদের লেখা পড়েছি সবার নিজস্ব ধরন ছিল প্রস্তুতির। যেমন একজন লিখছে যেহেতু ইন্টারভিউ একটানা ৩/৪ ঘণ্টা হয়, তাই প্রস্তুতি সময় একটানা পড়তে, কিন্তু আমি ২০/৩০ মিনিট পড়েই ছোট বিরতি নিতাম। আর একটা লেখায় পড়েছিলাম, LeetCode এ ৭০ টা ভালো প্রবলেম সমাধান করে যদি কেউ ভালো ইন্টারভিউর প্রস্তুতি নিতে না পারে, তাহলে ৭০০ টা সমাধান করেও ভালো ইন্টারভিউ দিতে পারবে না। কিন্তু আমার কাছে মনে হয়েছে যেহেতু আমি অনেক দিন Competitive Programming করি নাই, তাই আমি ৭০ টা করে পারব না, কিন্তু ৭০০ টা করলে অভিজ্ঞতার জন্য By Instinct অনেক কিছু মাথায় আসবে।তবে এমন না যে আমার ধরনটাই সবার জন্য প্রযোজ্য হবে, শুধুমাত্র একটা ধারণা দেয়ার জন্যই লিখা।
আমার প্রস্তুতি সময় ছিল ৬ মাস। আমার মোটামুটি বেসিক সব Data Structure and Algorithm নিয়ে ধারণা থাকায় কোন বই না পরে সরাসরি Leetcode এ অনুশীলন করা শুরু করি। কারো যদি Data Structure and Algorithm এ কোন দুর্বলতা থাকে তাহলে আগে ঐগুলো ভালো ভাবে বই বা অন্য রিসোর্স থেকে পড়ে বুঝতে হবে।
নিচের অংশ পড়ার আগে [https://www.youtube.com/channel/UC4xKdmAXFh4ACyhpiQ_3qBw] এ গিয়ে একটা ঢুঁ মেরে আসার অনুরোধ থাকল। বিশেষ করে নিচের লিঙ্কগুলো।
How to learn to code (quickly and easily!) [https://www.youtube.com/watch?v=R2pIutTspQA] Why I left my job at Google (as a software engineer) [https://www.youtube.com/watch?v=EcojyBV4QJ4] my wife left me. ("How success destroyed us") [https://www.youtube.com/watch?v=fssFXlNk6vw]
প্রথমে ইন্টারভিউর সব ধাপ সম্পর্কে বলি।
ইন্টারভিউর ধাপঃ
Resume:
ভালো Resume তৈরী করা চাকরি খোঁজার প্রথম কাজ। এখন Resume কয় পাতা হবে, আমার Recommendation থাকবে ১ পাতা। আমি প্রথমে ২ পাতার Resume তৈরী করেছিলাম, পরে ১ পাতায় নিয়ে আসি। Google, Amazon এ এই ১ পাতার Resume দিয়েই ইন্টারভিউ কল পেয়েছি। আমি এই সাইট থেকে https://app.zety.com/user/cv template ব্যবহার করেছি। Resume তে বিভিন্ন Programming Skills রেটিং আকারে না দিয়ে Expert, Familiar, Advanced এইভাবে দিলে ভালো। No Typo, No Buzz Word। Resume তে বিভিন্ন প্রজেক্ট এর সাথে GitHub লিংকও দেয়া উচিত। বিশেষত যদি, Mid-Range Software Company তে চাকরির জন্য আবেদন করা হয়। Resume তে ছবি, জন্ম তারিখ, রেফারেন্স অবশ্যই দেয়া যাবে না। Recruiter রা সাধারনত গড়ে ৬ সেকেন্ড সময় নিয়ে Resume দেখেন https://medium.com/.../writing-a-killer-software..., কাজেই এই ৬ সেকেন্ডে যাতে নিজের সম্পর্কে আগ্রহী করে তোলা যায়, এটা মাথায় রেখে Resume তৈরি করতে হবে।
ইন্টারভিউ কলঃ
দ্বিতীয় কাজ হচ্ছে ইন্টারভিউর কল আসার ব্যবস্থা করা। এক্ষেত্রে LinkedIn এ সরাসরি চাকরিতে ইন্টারভিউর জন্য আবেদন করা যায়। LinkedIn এ Premium Account ও একটা ভালো উপায়, বিভিন্ন কোম্পানির Hiring Manager / Recruiter কে সরাসরি মেসেজ [InMail] দেয়া যায়। সবচেয়ে ভালো উপায় হল referral ব্যবহার করা। কোন কোম্পানিতে কাজ করে এমন কাউকে দিয়ে চাকরির জন্য আবেদন করানো। Referral এর জন্য খুব ভালো ভাবে পরিচিত লাগবে, এইটা দরকারী না, Undergrad/Grad School এ পরিচিত বা সিনিয়র/জুনিয়র কিছু একটা হলেই হবে। আমি LinkedIn এ খুঁজে খুঁজে Stony Brook University বা Bangladesh বা SUST এর কেউ হলে LinkedIn এ মেসেজ দিতাম। অনেকেই হয়ত ব্যস্ততার কারণে উত্তর নাও দিতে পারে, অথবা Referral এর সুযোগ নাও থাকতে পারে, এটাও মাথায় রাখতে হবে।
ইন্টারভিউ Recruiter:
প্রথমে সাধারণত Recruiter রা ফোন দেয়। ওরা মুলত বর্তমান পড়ালেখা বা চাকরির অবস্থা, কোন বিষয়ে কাজ করতে আগ্রহী, কবে ইন্টারভিউ দিতে পারবে এই সব কথা বলে। এখানে Recruiter রাই ইন্টারভিউ থেকে শুরু করে Job Offer, Salary Negotiation সব কিছু করে থাকে। ইন্টারভিউ কবে দিব, ফলাফল কি, Onsite ইন্টারভিউ হলে আসা-যাওয়া, থাকা-খাওয়া মোটামুটি সবই Recruiter রাই ব্যবস্থা করে দেয়। ইন্টারভিউতে প্রশ্ন কেমন হতে পারে, কি কি বিষয়ে পড়তে হবে, গুরুতপূর্ন অনেক Resource ও দিয়ে থাকে। কোন বিষয়ে প্রশ্ন থাকলে Recruiter কে বলে জেনে নেয়া ভালো। যেমন আমাকে একটা ইন্টারভিউতে প্রথমে Machine Learning Engineer পোস্টের জন্য Recruiter আবেদন করতে বলেছিল, কিন্তু আমি কথা বলে পরিবর্তন করে Software Engineer পোস্টের জন্য ব্যবস্থা করতে বলি।
Online Round:
অনেক কোম্পানি প্রথমে Online Round নেয়। এইটা Recruiter মেইলে লিংক দিয়ে ৭/১০ দিন সময়ের ভিতরে করতে বলে। সাধারণত ১/২ ঘন্টা সময়ে ২/৫ টা প্রবলেম সমাধান করতে হয়। অনেক সময় সাথে কিছু MCQ প্রশ্নও থাকে।
Phone Screen:
সাধারণত ২/৩ টা Phone Screen ইন্টারভিউ হয়। Phone Screen ইন্টারভিউতে Google doc বা https://codeshare.io/ তে Code করতে হয়। Interviewer Skype, Hangout বা Phone এ কথা বলে। প্রথমে প্রবলেম কিভাবে সমাধান করব, উদাহরণ দিয়ে বুঝাতে হয়, Time and Space Complexity নিয়ে আলোচনা করতে হয়, যদি Interviewer সবুজ সংকেত দেয়, তবেই Code লেখা শুরু করা উচিত। Phone screen ৪৫ মিনিট থেকে ১ ঘন্টা হয়। প্রথম ৫-১০ মিনিট নিজের সম্পর্কে বলতে হয়, Interviewer ও নিজের কথা বলে। এর পরে ৩০-৪৫ মিনিট ২ টা প্রবলেম সমাধান করতে হয়। কখনও দুইটা ভিন্ন প্রবলেম থাকে, কখনও প্রথম প্রবলেমের Time and Space Complexity Optimize করতে হয়।
Onsite:
আগের ধাপ Successfully শেষ হলে Onsite এ ইন্টারভিউ। Onsite এ ৪/৫ রাউন্ড থাকে। প্রত্যেকটা ৪৫ মিনিট থেকে ১ ঘন্টা, কোন Break ছাড়া, তবে Lunch Break থাকতে পারে। Onsite ইন্টারভিউগুলোতে Phone Screen এর মত প্রশ্ন থাকে। তবে Code করতে হয় Whiteboard এ। যদিও ইদানীং Google এ Chromebook দেওয়া হয়। আমার কাছে Whiteboard ই ভালো, নিজের চিন্তা ভাল ভাবে ব্যাখ্যা করে যায়, Code এ যদি কোন পরিবর্তন থাকে, তাহলে সহজে করা যায়। এই মোটামুটি ইন্টারভিউ প্রক্রিয়া।
প্রশ্নের ধরনঃ
Phone Screen ও Onsite ইন্টারভিউগুলোতে তিন ধরনের প্রশ্ন থাকে, ক) Data Structure and Algorithm, খ) System Design আর গ) Behavioral।
ক) Data Structure and Algorithm:
ইন্টারভিউর জন্য সবচেয়ে গুরুত্বপূর্ণ হল Data Structure and Algorithm। Phone Screen এবং Onsite এ সিনিয়র পজিশন না হলে ১টা System Design আর বাকি সব Data Structure and Algorithm। ইন্টারভিউতে খুব ছোট প্রশ্ন থাকে, এবং সাধারণত Code ১০/১৫ লাইন হয়, (এটা অবশ্য Python এর জন্যও হতে পারে)। Code করার সময় অবশ্যই Executable হতে হবে। NO PSCUDOCODE। একটা উদাহরণ প্রশ্নঃ 1 থেকে n সংখ্যক পজিটিভ সংখ্যা থেকে n-1 সংখ্যক sorted সংখ্যা আছে, এর মধ্যে সবচেয়ে ছোট যেই পজিটিভ সংখ্যা এই লিস্টে নাই, সেটা বের করতে হবে। Input: [1, 2 ,3 4, 6], Output: 5। একটা উপায় হল, 1 থেকে চেক করা, কোন সংখ্যা নাই, Time Complexity O(n^2). আবার Sum of N integer এর সুত্র দিয়েও করা যায়, Time Complexity O(n). কিন্তু Optimal Time Complexity O(log n), Binary Search করা। এখন প্রথমেই Binary Search এর কথা না বলে, অন্য উপায় বলে, পরে Binary Search বলা ভালো। এখন যদি Binary Search এর আইডিয়া না আসে? খুবই স্বাভাবিক, ইন্টারভিউর সময় মাথা ঠিক রাখা খুবই কঠিন। সেক্ষেত্রে Interviewer হয়ত Hints দিবে, যেমন বলতে পারে, Data Sorted অবস্থায় আছে, sorted থাকলে কি করা যায়? Interviewer এর hints ধরতে পারাও Credit। এমন না যে Hints নেয়া মানে RED FLAG. তবে hints ধরতে না পারলে RED FLAG। Code অবশ্যই Interviewer "Yes" বলার পরে লিখা শুরু করতে হবে। আগে High Level ধারনা দিতে হবে, কিভাবে প্রবলেমটি সমাধান করব। অনেক প্রশ্ন করতে হবে প্রথমে Interviewer কে। যেমন, Interviewer প্রথমে শুধু n সংখ্যক সংখ্যা দিয়ে আগের প্রবলেম বলা শুরু করতে পারে। কি ধরনের সংখ্যা, Duplicate number, sorted number, empty list এইগুলা প্রশ্ন করে Clear করতে হবে। প্রশ্ন না করাও RED FLAG। Code করতে হবে Production Ready, মানে যত ছোট ভাগে Function দিয়ে করা যায়, Code Reusable, Modular হওয়া উচিৎ। এত কিছু ইন্টারভিউর সময় কি মাথায় থাকে? বেশী বেশী ইন্টারভিউ প্র্যাকটিস করা লাগবে, https://www.pramp.com/dashboard#/, সাইটে দিতে হবে, পরিচিত যারা ইন্ডাস্ট্রিতে কাজ করেন, তাদের কাছে দিতে হবে।
খ) System Design:
এই বিষয়ে আমার কোন Prior Knowledge ছিলনা। ইন্টারভিউর প্রস্তুতি থেকেই শেখা। System Design এ Interviewer খুবই Vague কোন Large Scale System Design প্রশ্ন করে। Interviewer পালটা প্রশ্ন করে requirements clear করতে হয়। যেমনঃ প্রশ্ন করতে পারে WhatsApp এর মত messenger ডিজাইন করতে। এখন প্রশ্ন করে নিশ্চিত হওয়া লাগবে কি কি থাকবে ডিজাইনে। এমন না যে হুবহু WhatsApp এর মত, কিছু assumption থাকবে, যেগুলো Interviewer কে বলে clear করতে হবে। যেমন, প্রথমে শুধু টেক্সট মেসেজ ডিজাইন দিয়ে শুরু করা যেতে পারে। পরে ছবি ও ভিডিও যুক্ত করা হবে। গ্রুপ মেসেজ আপাতত বাদ। ধরে নিলাম, WhatsApp মোট ৫০০ মিলিয়ন user, Daily Active User ১০০ মিলিয়ন, সবাই রোজ ৫০ টা মেসেজ দেয়, একটা মেসেজ এ ১০০ টা অক্ষর থাকে। এখন হিসাব করতে হবে, এই ডাটা ৫/১০ বছরের জন্য কত Storage লাগবে, Bandwidth আর Message Traffic কত হবে। পরে, এই মেসেজ কি ধরনের NoSQL ডাটাবেজে রাখতে হবে, Hadoop, Casandra, MongoDB, etc pros and cons বলতে হবে। Data Sharding কিভাবে হবে, Caching কিভাবে হবে, Load Balancer কোথায় কোথায় লাগবে, Fault Tolerant কিভাবে নিশ্চিত করা যায়, এগুলো আলোচনা করতে হবে।
গ) Behavioral বা Cultural Fit:
শুধু Coding Skill থাকলেই হবে না, প্রার্থীর Cultural Fit কি না Amazon এ এটা খুবই গুরুত্বপূর্ণ। Amazon এর Leadership Principle বলে ১৪ টা Principal আছে। ওদের উদ্দেশ্য হচ্ছে যে সব প্রার্থীর Behavioral প্রশ্নের উত্তরে এইসব Leadership Principle এর ব্যবহার আছে কি না দেখা। তাই Behavioral এর উত্তরে আগে থেকে এইসব Leadership Principle দেখে উত্তরে এইগুলা যুক্ত করে উত্তর দিতে হবে। Google এও একটা Round ছিল Googlyness and Leadership।
Onsite আর Phone Screen ইন্টারভিউর শেষে Interviewer কেও প্রশ্ন করার সুযোগ থাকে এবং অবশ্যই Interviewer কে প্রশ্ন করতে হবে। যেমন কিছু কমন প্রশ্ন হতে পারে, Interviewer কি ধরনের কাজ করে, আমি জয়েন করলে কি কাজ করতে হতে পারে, প্রতিদিনের রুটিন কাজ কি কি করতে হয় বা Interviewer এর পরিচিতি জানার সময় কিছু Improvised প্রশ্ন করা যেতে পারে।
©

Comments

Popular posts from this blog