Showing posts with label interview. Show all posts
Showing posts with label interview. Show all posts

Friday, April 22, 2016

Programming Interview Tanvir Hasan Anick

ইন্টারভিউ সিরিজের আগের লিখাগুলা এই লিঙ্কে পাওয়া যাবে ।

প্রশ্ন ঃ 
প্রোগ্রামিং কন্টেস্ট এর ব্যাপারে প্রথম কিভাবে জানছিলা মনে আছে ? উত্তরঃ হুম। ভার্সিটিতে ভর্তি হবার আগে হালকা প্রোগ্রামিং শিখে ছিলাম। আমি একটু দেরিতে ভর্তি হবার কারণে আমার অন্যান্য ফ্রেন্ডরা একটু এগিয়ে ছিল। ওইসময় সাস্টের এক ফ্রেন্ড ইভান, (স্কুল ফ্রেন্ড মূলত) ওর কাছ থেকে প্রথম "uva peter smoke" প্রবলেমটার লিঙ্ক পাই।
সেইদিন থেকেই মূলত প্রোগ্রামিং কন্টেস্ট নাম এ কিছু একটা আছে। এই জিনিসটা জানা হয়েছিল।  প্রশ্নঃ প্রথম অনসাইট কনটেস্ট কথা মনে আছে ? 
উত্তরঃ হ্যাঁ ২০১২ সালে। আমার প্রথম অনসাইট ছিল ICPC-2012। ড্যাফোডিল ইউনির্ভাসিটিতে। কোনকিছুই তেমন করি নাই, শুধু এদিক ওদিক তাকিয়ে ছিলাম আর একটা চাইনিজ টিমের সল্ভ করার আনন্দ দেখেছি। প্রশ্নঃ কি টাইপের প্রবলেম সল্ভ করতে বেশি ভাল লাগে ? উত্তরঃ নাম্বার থিউরি আর ডিপি। প্রশ্নঃ কোন প্রবলেম সল্ভ এর সময় "Thinking Process" কি থাকে প্রবলেম পড়ার পর ? উত্তরঃ প্রবলেম পড়ার পরেই প্রথমে আগে ছোট ছোট কেস খাতায় লিখে একটা বেসিক আইডিয়া দাঁড় করানোর চেষ্টা করি। যদি দেখি যে ঠিকঠাক আছে তখন কোড করা শুরু করি। আর যেসব প্রবলেম মনে হয় প্যার্টান আছে, সেইগুলার জন্য আগেই একটা ব্রুটফোর্স কোড লিখে র্স্কিনে কিছু কেস রান করিয়ে খাতা কলম নিয়ে বসি প্যার্টান বের করার চেষ্টায়। প্রশ্নঃ UAP এর এসিএম ট্রনিং কিভাবে হয় ? উত্তরঃ Uap সাম্প্রতি সময়ে কন্টেস্ট এর রেজাল্ট ভাল করার জন্য অনেক আগ্রহী। সেইজন্য বর্তমানে সিনিয়র ও জুনিয়র দুই লেভেলের জন্য আলাদা আলাদা ট্রেইনার নিয়োগ দেয়া হয়েছে। সিনিয়রদের এখন শিপলু স্যার আর জুনিয়রদের সুপ্ত ভাই ট্রেইনিং করাচ্ছে। আর যেহেতু ভার্সিটি এখন পার্মানেন্ট ক্যাম্পাসে আছে, তাই সুযোগ সুবিধা আগে থেকেও এখন অনেক বেশি। প্রশ্নঃ আইওআই যারা না করে ভার্সিটি থেকে কনটেস্ট করে তারা দেখা যায় আইওআই যারা করেছেন তাদের থেকে পিছাইয়া থাকে , অনেক সময়ই পিছাইয়াই থাকে । যারা ভার্সিটি তে মাত্র কনটেস্ট নিয়ে জানল তাদের কি করা উচিত এই দুরুত্ব কমানোর জন্য ? উত্তরঃ যারা ioi করে তাদের জন্য অনেক স্পেশাল ট্রেইনিং হয় যার ফলে তারা স্বাভাবিকভাবে ভার্সিটিতে কন্টেস্ট করে তাদের থেকে অনেক এগিয়ে থাকে। সেই হিসেবে দেখা যায় ভার্সিটির সেই স্টুডেন্টকে তাদের লেভেল এ আসতে আসতে অনেক সময় লেগে যায়। সেই সময়ে হয়ত তাদের ভার্সিটি লাইফও শেষ হয়ে যায়। যেমনঃ আমি tongue emoticon:p আর আমি প্রাইভেট ভার্সিটিতে পড়তে গিয়ে একটা জিনিস দেখেছি, বেশিরভাগ স্টুডেন্ট ভর্তি হয় এখানে একটা হতাশা নিয়ে। তাদের সব-সময় এমন একটা মেন্টালিটি সেট করা থাকে যে আমি পাবলিক ভাল কোথায়ও চান্স পাই নাই তাই আমাকে নিয়ে এইসব কন্টেস্ট টাইপ জিনিস কোনদিন হবে না। তাই যারা ভার্সিটি ভর্তি হয়ে কন্টেস্ট সম্মন্ধে জানল বা কন্টেস্ট করার আগ্রহ আছে, তাদের প্রথমেই সকল হতাশা ঝেড়ে ফেলা উচিত। আর এমন একটা মনোভাব থাকা উচিত আমি পারবই। আর নিয়মিত প্র্যাকটিস। যেটা একটা ফরজ জিনিস কন্টেস্ট এর জন্য। তবে আমার ভার্সিটির অভিজ্ঞতা বলে নতুন যারাই আসে ভার্সিটির প্রথম সেমিস্টারে তারা কিভাবে কিভাবে যেন html css দিয়ে সাইট ডেভেলাপ করা যায় আর তা দিয়ে টাকা আর্জন করা যায় এমন একটা ধারনা পায়। আর পথে হাঁটতে গিয়ে বেশির ভাগ স্টুডেন্ট না শিখে প্রোগ্রামিং না হয় ভাল ডেভেলপার। প্রশ্নঃ tanvir002700.wordpress.com শুরু করার কথা কিভাবে ভাবলা , বাংলায় ব্লগ প্রোগ্রামিং নিয়ে খুব একটা নেই এখন যারা কনটেস্ট করে তাদের ব্লগিং কিভাবে তাদের হ্যাল্প করতে পারে , নতুন যারা ব্লগ লিখছে তাদের জন্য কোন সাজেশন ? উত্তর : tanvir002700.wordpress.com এইটা প্রথমে তেমন মহৎ চিন্তা নিয়ে শুরু করি নাই। প্রথম যখন python শেখা শুরু করি, দেখলাম যে আমরা কন্টেস্ট এ যেসব algorithm ব্যবহার করি সেইগুলা পাইথনে তেমন নেই, বা সহজে পাওয়া যায়। তারপর আমি কিছু algorithm পাইথনে লিখে ফেসবুকে একটা পোষ্ট আঁকারে দেই। ফেসবুক পোস্টে কোড দেয়া অনেক ঝামেলা। তারপর তখন মনে হল ব্লগে লিখি এইগুলা পরে আমি ভুলে গেলে নিজেও দেখতে পারব। তারপর ব্লগ খুলি। তারপর যখন শিপলু স্যারের কাছ থেকে suffix array শিখলাম তখন চিন্তা করলাম এই জিনিসত বাংলায় কোথায়ও ভাল রিসোর্স পাই নাই। এইটা সবার সাথে শেয়ার করি, নিজেও ভুলে গেলে আবার এইখান থেকে দেখে নেয়া যাবে আর অন্যরাও একটু হেল্প পাবে। এইভাবেই ব্লগ লেখা শুরু। যারা নতুন নতুন ব্লগ লেখছ, তাদের জন্য একটা উপদেশ প্রথম প্রথম হয়ত অনেকের কাছ থেকে অনেক কথা শুনবা। অনেকে হয়ত বলবে ফেমাস হওয়ার জন্য করছ। (আমি যে প্রবলেম ফেস করেছিলাম আরকি ) এইসব কান না দিয়ে নিজের মত করে লিখে যাও, কেউ কমেন্টে কোন সাজেশন দিয়ে সেইগুলা গ্রহণ করে লেখা উন্নত কর। জ্ঞান সবার মাঝে ছড়িয়ে দেয়ায় ক্ষতির কিছু নেই। প্রশ্নঃ Quora , Codefight এইসবগুলাতেও তুমি অনেক একটিভ । বাংলাদেশ এর এখনও এইসব সাইট এতটা জনপ্রিয়তা পায় নাই , এইগুলো তোমাকে কোন হ্যাল্প করতেছে ? উত্তরঃ Quora নিয়ে তেমন বিশেষ কিছু বলার নেই। খুব সম্প্রতি Quora তে একটিভ আমি। বাসায় বেকার বসে আছিতো, তাই অলস সময় একটু ইফেকটিভ কিছু করে কাটানোর একটা ছোট চেষ্টা মাত্র।
tongue emoticon আর Codefight, হ্যাঁ এই জিনিসটা আমার কোডের ডিবাগিং এবিলিটি অনেক বাড়িয়ে দিয়েছে। তবে মাঝে দিয়ে এই জিনিসের চরম নেশায় পড়ে গিয়েছিলাম। কোডফাইটের কয়েন দিয়ে টি-শার্ট কেনা যায় সেই টি-শার্টের লোভে সারাদিন ফাইট দিতাম। tongue emoticon তবে Codefight অনেক ভাল একটা জিনিস, যারা সারাদিন ক্ল্যাশ অফ ক্ল্যানে এটাক দাও তারা কিছুদিন Codefight এ ফাইট দিয়ে দেখতে পার, কোডিং ভাল লাগলে এই জিনিসের নেশায় পরে যাবা। আর এই জিনিস রিটার্নে তোমাকে ডিবাগিং এর কিছু এবিলিটি দিবে যেটা হয়ত অন্য গেম দেয় না। সব মিলিয়ে আমার কাছে খুবই ভাল একটা সাইট। প্রশ্নঃ অনেকেই ভার্সিটি লাইফে প্রোগ্রামিং কনটেস্ট এর চেয়ে freelancing এ জোর দেয় অনেক , এইটা আমি খারাপ বলছি না , এতে অনেক টাকাও পাওয়া যায় কিন্ত্ শিখার টাইমটা অনেক নস্ট হয় , এই ব্যাপারে তুমি কি বলবা ? উত্তরঃ freelancing!!! এই ব্যাপারে আমার মতামত খুবই নেগিটিভ। আমার ভার্সিটে দেখা অভিজ্ঞতা যদি বলি, বেশিরভাগ স্টুডেন্ট প্রথমেই সিএসইতে ভর্তি হয়ে যে জিনিসটা যানে সেইটা হল freelancing নামে একটা জিনিস আছে যেটা দিয়ে অর্থ উপার্জন করা যায়। সেই জিনিসের সুবাধে বেশিরভাগ স্টুডেন্ট ভার্সিটির প্রথম সেমিস্টার থেকেই হালকা html css শিখে টাকা কামায়ের ধান্দায় পরে যায়। এইভাবে করে দেখা যায় সে প্রোগ্রামিং এর বেসিক জিনিস ও এ্যালগরিদম ডাটাস্ট্রাকচার এইগুলা কিছুই শেখে না। সুতরাং আমার তবে freelancing করতে হলে ভার্সিটির প্রথম ৩ বছর নয়। ভার্সিটির প্রথম ৩ বছর শুধু cse রিলেটেড জিনিস পত্র শেখায় সময় দেয়া উচিত। প্রশ্নঃ প্রোগ্রামিং কনটেস্ট এ ইন্সপারেশন এর কেউ আছে , কাউকে ফলো করতে ? উত্তরঃ প্রোগ্রামিং কন্টেস্ট এর ইন্সপারেশন হল শিপলু স্যার। আমার ৪ বছরের পুরাটা সময় ধরতে গেলে স্যারের হাত ধরে চলতে শেখা। প্রোগ্রামিং কন্টেস্ট এর বেশিরভাগ জিনিস শিখেছি স্যারের কাছ থেকে। আর সবসময় স্যারকে ফলো করার চেষ্টা করতাম। স্যারের একটা জিনিস ভাল লাগে সেইটা হল কত স্টুপিডের মত কত উল্টাপাল্টা কাজ করেছি, কোনদিন বকা দেয় নাই:P :P প্রশ্নঃ নতুন যারা কনটেস্ট শুরু করতেছে তাদের কোন সাজেশন ? কিভাবে ভাল করবে ? উত্তরঃ যারা নতুন কন্টেস্ট করতেছে, তাদের জন্য সাজেশন হল লেগে থাক। প্র্যাকটিস বন্ধ করিও না, সফলতা আসবেই। প্রশ্নঃ অনেক সময় দেখা যায় কয়েকদিন কারো কনটেস্ট ভাল না হইলে অনেক এ হতাশ হয়ে কনটেস্ট ছেড়ে দেয় বা অন্যভাবেও বলা হয় সব কনটেস্টেন এর লাইফে হতাশার একটা পিরিয়ড থাকে , এই সময় কিভাবে নিজেকে মোটিভেট করা উচিত ? উত্তরঃ কন্টেস্ট ভাল না হওয়া/ আমি যেটাকে বাঁশ বলি tongue emoticon tongue emoticon:P সেইটা কি জিনিস আমার cf আইডি দেখলে বুঝা যায়। তারপর এত এত বাঁশ খাওয়ার পরেও কন্টেস্ট করা বন্ধ করি নাই। হতাশ হওয়া যাবে না। হতাশ হলে উল্টো বিপদ। হতাশ হলে পার্ফমেন্স দিন দিন আরও খারাপ হতে থাকে। যদি কোন কন্টেস্ট খারাপ হয় সেইটায় কি ভুল করেছ, বা যেগুলা সল্ভ হয় নাই সেইগুলা সল্ভ করার চেষ্টা কর। শিপলু স্যার সব সময় একটা কথা বলতেন আমি যখন cf শুরু করি, র‍্যাঙ্ক লিস্ট দেখ না, কন্টেস্ট শেষে তোমার লেভেলের যেসব প্রবলেম ছিল সেইগুলা সল্ভ করতে পেরেছ কিনা সেইটা দেখ। আর আমার মতে একটা অনেক গুলা অনলাইন কন্টেস্ট খারাপ হওয়া মানে, অফলাইন প্র্যাকটিসের অভাব। সুতরাং হতাশ হয়ে কন্টেস্ট অফ করে দিয়ে সেলেন্ডার করার চেয়ে, ভুল খুঁজে বের করে কাম ব্যাক করাই বুদ্ধিমানের কাজ। প্রশ্নঃ প্রোগ্রামিং বাদে কোন হবি ? ফ্রি টাইমে কি কর ? উত্তরঃ প্রোগ্রামিং বাদে আর যদি শখের কিছু থেকে থাকে সেইটা হল সাইক্লিং করা :P tongue emotico আর অবসর সময় দেখা যায় কখনও কোন ব্লগ/বই পড়ি অথবা টিভি সিরিজ দেখি।

Thursday, April 7, 2016

Programming Interview with A Asif Khan Chowdhury

ইন্টারভিউ সিরিজের আগের লিখাগুলা এই লিঙ্কে পাওয়া যাবে । প্রোগ্রামিং কন্টেস্ট এর ব্যাপারে প্রথম কিভাবে জানছিলা মনে আছে ?
প্রোগ্রামিং কনটেস্টের ব্যাপারে শুনছি প্রথম রুয়েটে এসেই। কিন্তু প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে প্রবলেম সলভিং করার ব্যাপারটা জানছিলাম HSC এর প্রথম বর্ষেই। আমার একটা ফ্রেন্ড শুভর মাধ্যমে। সেই প্রথম আমাকে কম্পিউটার সায়েন্সের মজাটা বুঝিয়েছিলো। তার সাথে থেকেই বিভিন্ন ছোটখাটো প্রবলেম সলভ করছিলাম, যদিও তখন competitive programming এর বিশাল জগৎ সম্পর্কে কিছুই জানতাম না। DOS স্ক্রীনে C দিয়ে “Hello World” লিখেই বুঝতে পারছিলাম যে এটা নিয়েই পড়াশুনা করতে চাই।


প্রথম অনসাইট কনটেস্ট কথা মনে আছে ?
আসলে জীবনের প্রথম কনটেস্টই ছিলো ICPC. তখন রুয়েট থেকে আসার মত টীম ছিলো না খুব বেশি। তাই সুযোগ পেয়ে গেছিলাম। ওই সময় কনটেস্ট PC^2 এ হতো। মজার বিষয় হলো আমরা আগে কখনও PC^2 দেখিও না। অনেক সময় গেছিলো PC^2 এ সাবমিট কিভাবে করে সেটা বুঝতে। :D


প্রোগ্রামিং কনটেস্ট এ কোন মজার কোন স্মৃতি আছে যেইটা মনে করলে এখনো হাঁসি পায় ?
মজার একটা স্মৃতি ছিলো ICPC-2013 তে। ঢাবির শাফায়েত ভাইয়াদের টীম কনটেস্ট শেষ হওয়ার এক ঘন্টা আগে ৬ প্রবলেম সলভ করে সবার আগে ছিলো। ভাইয়া আমাদের সামনেই বসেছিলেন, আমি উনাকে উঠে দাড়িয়ে তখনই কংগ্রাচুলেট করা শুরু করছিলাম। ভাইয়া রীতিমত লজ্জায় পড়ে গেছিলেন এটা দেখে। কনটেস্ট শেষ হওয়ার পর দেখি ভাইয়াদের টীম আর একটা সলভ করতে পারে নাই, SUST_Attoprottoyee ৭ টা প্রবলেম সলভ করে চ্যাম্পিওন হয়েছিলো। কনটেস্ট শেষে শাফায়েত ভাই আমার দিকে একটা দৃষ্টি নিয়ে তাকিয়েছিলো সেটা দেখে খুব লজ্জায় পড়ছিলাম। তারপর ভাইয়ার সাথে লজ্জায় আর কখনও কথা বলতে পারি না। কথাগুলো মনে পড়লে এখনও খুব মজা (এবং লজ্জাও) পাই।

কি টাইপের প্রবলেম সল্ভ করতে বেশি  ভাল লাগে ?
DP এবং algorithmic প্রবলেম সলভ করতে খুব বেশি ভালো লাগে। তবে যেকোন টপিকেই নতুন কিছু শিখে ম্যারাথন দিয়ে প্রবলেম সলভ করতে পছন্দ করি।

কোন প্রবলেম সল্ভ এর সময় "Thinking Process" কি থাকে প্রবলেম পড়ার পর ?
শাহরিয়ার মঞ্জুর ভাইয়ের কাছ থেকে প্রবলেম সলভ করার একটা পদ্ধতি শিখছিলাম, LDC (Learn, Divide, Convert). Basically এই পদ্ধতির প্রথম ধাপে প্রবলেমটা ভাল ভাবে শেখা, testcases নিয়ে নড়াচড়া করে দেখা হয় কিভাবে সলুশন আসতেছে। দ্বিতীয় ধাপে প্রবলেমটাকে ছোট ছোট sub-problem এ ভাগ করা হয়। কোন একটা sub-problem যদি মনে হয় সলভ করার আইডিয়া নাই তাইলে প্রবলেম skip করা। তৃতীয় ধাপে আছে convert, এটার মানে হলো sub-problem গুলো known বিভিন্ন প্রবলেমের সাথে মিল রেখে step-by-step সলভ করার চেষ্টা করা।


কোন প্রবলেম Accepted না হলে কি কি ব্যাপার দেখেন ?    
কয়েকটা কাজ করে দেখি যেমন, প্রথমে type check করি, overflow হয় কিনা দেখি, constrains গুলো ভাল ভাবে চেক করি। যদি তাতেও কাজ না হয় তখন প্রবলেমটাতে খুটিনাটি বিষয়গুলো ঘেটে দেখি। তারপর brute force কোড করি তারপর random case এর জন্য brute force আর আমার সুলশনের সাথে মিলিয়ে পার্থক্যগুলো দেখি।

অনেক সময় দেখা যায় কয়েকদিন কারো কনটেস্ট ভাল না হইলে অনেক এ হতাশ হয়ে কনটেস্ট ছেড়ে দেয় বা অন্যভাবেও বলা হয় সব কনটেস্টেন এর লাইফে হতাশার একটা পিরিয়ড থাকে , এই সময় কিভাবে নিজেকে মোটিভেট করা উচিত ?
আমার পরিচিত এমন কোন প্রবলেম সলভার দেখি নাই যারা প্রবলেম সলভিং করতে গিয়ে মাঝপথে হতাশ হয় নাই। Competitive programming এবং হতাশা হাতে হাত রেখে চলে। এই সময় যারা ছেড়ে দিয়েছে তাদের অনেকের সাথে কথা বলে দেখেছি, সবারই একটাই মন্তব্য থাকে তারা এটা ছেড়ে দিয়ে ভুল কাজ করেছে, এই ব্যাপারটা মাথায় রাখলে মনে হয় মোটিভেটেড থাকা যাবে। আবার যারা ফলাফলের আশায় প্রবলেম সলভিং করে তারা আরও বেশি হতাশ হয়। প্রবলেম সলভিং ক্রিকেট-ফুটবল-টেবিল টেনিস ইত্যাদি খেলার মত করেই দেখা উচিৎ। তুমি মজা পাও বলে প্রবলেম সলভিং করো, রেজাল্টের আশায় না। :)
আইওআই যারা না করে ভার্সিটি থেকে কনটেস্ট করে তারা দেখা যায় আইওআই যারা করেছেন তাদের থেকে পিছাইয়া থাকে , অনেক সময়ই পিছাইয়াই থাকে । যারা ভার্সিটি তে মাত্র কনটেস্ট নিয়ে জানল তাদের কি করা উচিত এই দুরুত্ব কমানোর জন্য ?
এটা ঠিক যে তারা পিছিয়ে থাকে। তবে এই পিছিয়ে থাকাটা রিকভার যায় না এটা ভাবাটা ভুল হবে, শুধু dedication টা বেশি থাকতে হবে অন্যদের চেয়ে। বাংলাদেশের competitive programming এ যত কিংবদন্তি আছে তাদের সিংহভাগই তো IOI করেন নাই।

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

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



প্রোগ্রামিং কনটেস্ট এ ইন্সপারেশন এর কেউ আছে , কাউকে ফলো করতে ?
আমি মোটামুটি সবাইকেই, যারা প্রবলেম সলভ করতে পছন্দ করেন তাদেরকে, ইন্সপারেশন হিসেবে দেখি। তবে তালিকায় প্রথমে যারা আছেন তারা হলেন শান্ত ভাইয়া, শাহরিয়ার মঞ্জুর ভাইয়া, রুয়েটের সামাদ ভাইয়া (তাকে ছাড়া হয়তো আমরা কেও competitive programming জড়িত হইতেই পারতাম না), মইনুল শাওন, সাকিব, মারুফ, ধনঞ্জয়, শাকিল ( :) ), শাফায়েত ভাইয়া, জুবায়ের ভাইয়া, নাফিস এবং আরও অনেককেই।


নতুন যারা কনটেস্ট শুরু করতেছে তাদের কোন সাজেশন ? কিভাবে ভাল করবে ?
আসলে কনটেস্টে ভাল করার কোন শর্টকাট কেও দেখাতে মনে হয় পারবে না। প্রচুর প্রবলেম সলভ করতে হবে ভাল করতে হলে। অনেক টেকনিক আর অ্যালগরিদম শিখতে হবে। আর অবশ্যই যেটা মাথায় রাখতে হবে প্রবলেম সলভাররা অন্যদেরকে সাহায্য করতে সব সময় প্রস্তুত থাকে। একা একা কোন জিনিস শিখতে অনেক সময় লাগতে পারে, সেখানে যারা আরও বেশি এক্সপেরিয়েন্সড তাদের কাছ থেকে শিখে নিলে সময়টা অনেক কম লাগবে। এমনকি প্রবলেম সলভারদের জীবনে করা ভুলগুলো শুনলেও অনেক কিছু শিখতে পারবে, অনেক ভুল আগে থেকেই শুধরে নিতে পারবে। সুতরাং সব সময় শেখার জন্য open mind রাখা উচিৎ।
রুয়েট এর কনটেস্ট কালচার তৈরির জন্য অনেক কষ্ট করছ এবং করে যাচ্ছ। আগামী ২/৩ বছর পর রুয়েটকে কোথায় দেখতে চাও ?
রুয়েট থেকে অনেক কিছু পেয়েছি, শিখতে পারছি। স্বপ্ন ছিল একদিনের যেদিন দেখবো আমারই ছোট ভাইগুলো WF করতেছে। এই স্বপ্নের জন্য যতটুকু করতে পেরেছি ততটুকু করেছি। তবে আরও অনেক কিছু করার ইচ্ছা ছিলো যেগুলো করে যেতে পারি নাই।
রুয়েটের জুনিয়ররা এখন অনেক আগ্রহী কনটেস্ট করতে। এত বিশাল সংখ্যক কনটেস্টেন্ট রুয়েট কখনও দেখে নাই এর আগে। তাদের পরিশ্রম দেখে অনেক ভালই লাগে। ইনশা’আল্লাহ সামনে ১-২ বছরের মধ্যে অনেক ভাল একটা পজিশনে দেখতে পারবো রুয়েটকে। :)

প্রোগ্রামিং বাদে কোন হবি ? ফ্রি টাইমে কি করেন ? 
আমি প্রচুর মুভি আর টিভি সিরিজ দেখি ফাকা সময়ে। ইদানিং youtube এ মুভি ট্রেইলারস, টেক, সায়েন্স videos ইত্যাদি দেখে ফাকা সময় কাটাচ্ছি। :P




Thursday, March 31, 2016

Programming Interview with Ahmad Faiyaz

ইন্টারভিউ সিরিজের আগের লিখাগুলা এই লিঙ্কে পাওয়া যাবে ।

প্রশ্ন ঃ ভাইয়া প্রোগ্রামিং কনটেস্ট এর ব্যাপারে প্রথম কিভাবে জানছিলেন মনে আছে ?

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

প্রশ্নঃ প্রথম অনসাইট এর কথা মনে আছে ?

উত্তরঃ হাঁ , অবশ্যই । প্রথম কনটেস্ট ছিল সাস্ট সিএসই ফিস্টা - ২০১১ , এনএসইউ থেকে ৫টা টিম গেছিল । আমার টিমের নাম ছিল , NSU strikers. আমাদের কনটেস্ট ভাল হয় নাই , একটা মিলাইছিলাম মনে হয় । তবে এক্সপেরিয়ান্স অসাধারণ ছিল , ৫ ঘণ্টা ক্যামনে গেছিল মনে নাই ।

প্রশ্ন ঃ ভাইয়া ভার্সিটির সেকেন্ড ইয়ারে এসে কনটেস্ট এর ব্যাপারে জানা কি আপনার মনে হয় আপনি অনেক দেরি করে ফেলছিলেন ? সচরাচর আইওআই যারা করে থাকে তাদের সাথে সব সময় একটা দূরত্ব থেকে যায় ?

উত্তর ঃ  হাঁ হাঁ , I regret . ঐসময় আমি রিজুল ( DU ) এবং BUET এর সাকিবকে চিনতাম । তাদের দুইজনই Uva তে ব্যাপক সল্ভ করে ফেলছিল আর আমি মাত্র 3N + 1 সাবমিট করছি । যদিও সাকিব IOI গেছিলাম , তখন ব্যাপারটা জানতাম না আর রিজুল অনেক সল্ভ করে ফেলছিল Uva তে । ওদের হারানো জন্য অনেক সল্ভ করা লাগত তাই Uva বেশি সল্ভ করি নাই :p তারপর লাকি ভাবে লাইট ওজি এসে গেল , এইখানে সল্ভ স্টার্ট করে দিলাম । অনেক ইন্টারেস্ট ছিল এই ব্যাপারে তাই গ্যাপ আছে এইটা নিয়ে চিন্তা করতাম না । জাস্ট সল্ভ করে গেছি ।

প্রশ্নঃ লাইট ওজির শুরুর দিকে যখন ফোরাম অনেক এক্টিভ ছিল আপনি অনেক টেস্ট কেইজ দিতেন ? এবং আপনি ব্লগ ও লিখতেন যাতে অন্যদের সুবিধা হয় । আমি অনেক উপকৃত হইছিলাম যখন আমি লাইট ওজি সল্ভ করতাম । অনেকে এইসব আগ্রহী হয় না , ব্লগ লিখা বা ফোরামে পোস্ট । এই ব্যাপারগুলা ভাইয়া কিভাবে দেখেন ?ভার্সিটিতে এসে শুরু করে ?

উত্তরঃ টেস্ট কেইজ করা অনেক মজার ব্যাপার আর মানুষ এর কোড থেকে নতুন অনেক কিছু শিখা যায় , কি ভুল করতেছে ধরতে পারলে নেক্সড টাইম আমি হয়তো এই ভুল করব না । অনেক কর্নার কেইজ চিন্তা করা যায় । আর ব্লগ লিখা হচ্ছে নিজের জন্য । যখন তুমি কাউকে কিছু বুঝাইতে যাবা  you need to know that topic very well , আমি একটা ব্লগ লিখছিলাম বাই কানেক্টেড কম্পোনেন্ট নিয়ে , লিখতে গিয়ে আরো ভালমত বুঝছি জিনিসটা । মানুষ question করবে তুমি নতুন আরো কিছু জানবা এইসব থেকে , আমি হয়তো আগে ভাবি নাই । অনেক এ ব্লগ এ কোড দিয়ে দেয় । আমি এইটা discourage করব । এতে অনেক এ ব্লগ না বুঝে কোড কপি পেস্ট করে ।

প্রশ্ন ঃ কি টাইপের প্রবলেম সল্ভ করতে ভাইয়া বেশী ভাল লাগে ?

উত্তর ঃ Data Structure, String, Graph ( BCC, SCC )।

প্রশ্ন: ভাইয়া   কোন প্রবলেম সল্ভ এর সময় "Thinking Process" কি থাকে প্রবলেম ?

উত্তর ঃ ক্যাটেগরিতে ফালানোর ট্রাই করি কি টাইপের প্রবলেম । এরপর দেখি এইরকম কিছু আগে করছি কিনা । CF এ দেখছি অনেক এই বলছে ম্যাক্সিমাম প্রবলেম অন্য কোন প্রবলেম এর ভ্যারিয়েশন । যদিও তাও না বের করতে পারি তাহলে প্রবলেমটা আরো সিমপ্লিফাই করতে পারি কিনা তা দেখি , ছোট ছোট টাস্ক এ ভাগ করে তারপর এইগুলাকে দিয়ে কিভাবে সল্যুশন করা যায় - যা আসলে শিখছিলাম ফাহিম ভাইয়ার ( Iqram Mahmud - Smilitude ) কাছ থেকে ।

প্রশ্নঃ কোন প্রবলেম Accepted না হলে কি কি ব্যাপার দেখেন ?
উত্তরঃ ঐ যে কর্নার কেইজ গুলা চিন্তা করি , অনেক রকম ভ্যালু নেই দেখি কি হবার কথা কি হচ্ছে। মাঝে মধ্যে সময় থাকলে brute force করি । দেখি কেন ভুল হচ্ছে । যদিও তাও ভুল না পাই , এল্গো রিভাইস দেই । ইমপ্লিমেন্টেশন চেক করি । ও হাঁ অবশ্যই প্রবলেম আবার পড়ি ।

প্রশ্ন ঃ অনেক সময় দেখা যায় কয়েকদিন কারো কনটেস্ট ভাল না হইলে অনেক এ হতাশ হয়ে কনটেস্ট ছেড়ে দেয় বা অন্যভাবেও বলা হয় সব কনটেস্টেন এর লাইফে হতাশার একটা পিরিয়ড থাকে , এই সময় কিভাবে নিজেকে মোটিভেট করা উচিত ?

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

প্রশ্ন ঃ প্রোগ্রামিং কনটেস্ট এ ইন্সপারেশন এর কেউ আছে , কাউকে ফলো  করতেন ?

উত্তর ঃ হা .. Iqram Mahmud (Fahim ভাই), Mahmud Ridwan ভাই ।

প্রশ্নঃ প্রোগ্রামিং কনটেস্ট এ কোন মজার কোন স্মৃতি আছে যেইটা মনে করলে এখনো হাঁসি পায় ?

উত্তরঃ হাঁ , এইটা ডেফোডিল এর কনটেস্ট ২০১১ এ ছিল । আমরা দুইটা করছিলাম বা একটা প্রবলেম আর মিলাইতে পারতেছিলাম না । আমাদের বাম পাশে ছিল DU এর জুবায়ের ভাইদের টিম । উনারা বলতে ছিল যে একটা প্রবলেম কিভাবে মিলাইছে । আমি পাশে ছিলাম , হাল্কা শুনছি সিমুলেশন করে দেখলেই হয় । তখন মাথায় ঢুকছে সিমুলেশন করে কিভাবে হবে , পরে কনটেস্ট শেষ এর ৫মিনিট আগে এসি :p এইজন্যই আমি আমার টিমমেটদের সবসময় বলি আস্তে ডিসকাস করতে ।

প্রশ্ন ঃ এই বছর ওয়াল্ড ফাইনালের জন্য আপনাদের টিম এর প্রিপারেশন ক্যামন ?

উত্তর ঃ এই তো চলতেছে , ওয়াল্ড ফাইনাল এর সেটগুলা practice করা হইছে । নতুন অনেককিছু শিখতেছি , জানতেছি । hopefully world final ভাল হবে ।

 প্রশ্ন ঃ যদিও এখনও অনেক টাইম বাকি আছে , যারা এই বছর রিজিওনাল করবে সেই টিমগুলার জন্য ভাইয়া কোন সাজেশন ?

উত্তর ঃ আমি কি বলব । সাজেশন এর কিছু নাই । just don't lose the hope . solvable problem solve করাই আসল ।

প্রশ্ন: নতুন যারা কনটেস্ট শুরু করতেছে তাদের কোন সাজেশন ? কিভাবে ভাল করবে ?

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

প্রশ্ন ঃ প্রোগ্রামিং বাদে কোন হবি ? ফ্রি টাইমে কি করেন ?

উত্তরঃ software development, graphics design, photography.. আর ফ্রি টাইমে মুভি দেখি , সিরিয়াল দেখি , আড্ডা মারি , গেইম খেলি , টিউটোরিয়াল পড়ি ।

Thursday, March 17, 2016

Coding Interview question - 1


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


প্রথমে শিরোনাম কোডিং ইন্টারভিউ কেন দিলাম বলি । সফটওয়্যার ইঞ্জিনিয়ার ইন্টাভিউ  এর জন্য প্রায় সবখানেই একাধিক ইন্টাভিউ প্রসেস দিয়ে যেতে হয় । যেখানে নরমাল কোন বোর্ড এর সামনে প্রশ্ন-উত্তর বাদেও একটা ইন্টাভিউ সেকশন থাকে যেখানে আপনাকে একটা ল্যাপটপ/পিসি দিবে । ৩০মিনিট/১ ঘণ্টার মধ্যে ১/২টা প্রবলেম সল্ভ এর কোড করতে বলবে । এইগুলার জন্য ল্যাঙ্গুয়েজ আপনার পচ্ছন্দের বা উনারা স্পেসেফিক করে দিতে পারে । আমার ব্লগ পোস্টটা আসলে সেই একটা ইন্টারভিউ সেকশনকে নিয়ে ।

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

সব কোম্পানিতেই কি জবের জন্য কোডিং ইন্টাভিউ দিয়ে যেতে হয় ? এইটা ঠিকঠাক উত্তর দেবার মত আমার এখনও এক্সপেরিয়ান্স কিছুই হয় নাই । তবে বাংলাদেশ এর যেসব কোম্পানি প্রপার ইন্টাভিউ প্রসেস ফলো করে employee hire করে তারা নেন । বাহিরে আমার দেখা ইন্ডিয়াতে অনেক কোম্পানি এর হায়ারিং প্রসেস এর প্রথমেই একটা কোডিং টেস্ট থাকে । যেইটা হ্যাকারর‍্যাঙ্ক বা হ্যাকারআর্থ সাইট এর বিভিন্ন ইন্টাভিউ কনটেস্ট এ অংশগ্রহণ করলেই দেখা যায় । গুগোল এর একটা ইন্টাভিউ দেওয়া হয়েছিল আমার সেখানে দেখছি পুরা প্রসেসটাই আসলে কোডিং ইন্টাভিউ এর উপর । আপনাকে প্রবলেম দিবে যা সল্যুশন আপনাকে কোড এর মাধ্যমে দেখাতে হবে । অনলাইনে স্কাইপি বা গুগোল হ্যাংআউট এর মাধ্যমে যাদের ইন্টাভিউ হয় সবারই কোডিং ইন্টাভিউ প্রসেস দিয়ে যেতে হয় ।  

আমার কাছে মনে হয় স্টাটিক প্রশ্ন-উত্তর থেকে কোডিং ইন্টাভিউ অনেক সহজ একটা ব্যাপার । নরমাল প্রশ্ন-উত্তর পর্বে কোন প্রশ্নের জন্য হয়তো ৩০সেকেন্ড থেকে ১ মিনিট সময় থাকে এইখানে অনেক সময় থাকে চিন্তা করার । তবে প্রথম জবের জন্য অনেক এর মধ্যে ভয় কাজ করে । অনেক সময় জানা জিনিস তো বলা সম্ভব হয় না । এইদিকে কোড করে কিছু করতে বলা অনেক সেফ সাইট সবার জন্য । যেখানে সবকিছু ঠিক না হইলেও একজন এর কোড দেখে বুঝা সম্ভব তার চিন্তার প্রসেসটা কি ছিল  । তবে এর জন্য আগে থেকে কিছু মক ইন্টাভিউ করে নেওয়া এবং অনলাইন থেকে ইন্টাভিউ এর প্রিপারেশন নেওয়া ভাল । যারা ইন্টাভিউ নিবেন তারাও এইসব জিনিস অনেক আগে করে এসেছেন এবং স্বাভাবিক ভাবেও নেট থেকে প্রশ্ন ক্যালেক্ট করতে পারেন তারা। হয়তো সবাই না কিন্ত অনেকেই করবেন । এই পোস্ট আর বড় করতেছি না । সামনের সিরিজের লিখা গুলাতে বিভিন্ন সাইট এ দেখা কিছু ইন্টারিস্টিং প্রবলেম এর সল্যুশন নিয়ে লিখব ।

Thursday, March 10, 2016

Programming Interview - Rajon Bardhan


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

প্রশ্ন ঃ কমন প্রশ্ন ফাস্টে কিভাবে জানছিলা প্রোগ্রামিং কনটেস্ট এর ব্যাপারে ?
উত্তর ঃ প্রথম জানি যখন ফাস্ট সেমিস্টার ছিল তখন । ভার্সিটিতে বড় ভাইরা একটা কনটেস্ট দেন । এইটা করতে হবে । তখন আমি আমার দুই ফ্রেন্ড প্রেমা আর মাইসার সাথে টিম দেই । কিন্তু কনটেস্ট এর দিন ওরা আর আসে না পরে বড় ভাইয়ারা ১/২  এর দুইজন বড় ভাই  এর সাথে টিম করে দেন । তখন তো কিছু করতাম না , কিছু সল্ভ করতে পারি নাই ওইদিন । এমনে পরে আর করা হয় নাই কনটেস্ট । ২/২ এ এসে রিমি আমাকে বলে Uva সল্ভ করতে বলে প্রতিদিন । রিমি , হিমেল অনেক উৎসাহ দিত তখন শুরু করে দেই , প্রথম সল্ভ করছিলাম পারমুটেশন  এর একটা প্রবলেম । অনেক ভাল লাগছিল এসি হবার পর । তারপর আমি করতেই থাকি । তুমি প্রোগ্রামিং গ্রুপ এ একটা পোস্ট দিছিলা শাফায়াত এর ব্লগ নিয়ে কিভাবে কি করতে হবে জুনিওরদের জন্য। ঐটা পড়া শুরু করি । যখনই টাইম পাইতাম প্রবলেম সল্ভ করতাম , আমার মনে আছে আমি ২/২ এর পিএল এ ১৫০/২০০ টা Uva সল্ভ করি ।  পরীক্ষার আগে ২-৩ দিন এর গ্যাপ পাইতাম , আমি দেখা যাইত ১দিন খালি পড়তাম আর বাকি দিন প্রবলেম সল্ভ করতাম ।

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

উত্তর ঃ কনটেস্ট শুরু করার আগে আমার ২/১ পর্যন্ত গ্রেড ছিল ৩.৬২ কিন্তু পরে ২/২ থেকে যখন কনটেস্ট শুরু করি বা প্রবলেম সল্ভ করি তখন কিন্তু প্রায় ৩.৯০ এর মত পাইতাম প্রতি সেমিস্টারে । আসলে এইটা পুরাই ভুল ধারনা । কনটেস্ট শুরু করার আগে আমি অনেক কিছুতে অনেক স্লো ছিলাম , আমার অনেক কিছু বুঝতে , পড়তে অনেক টাইম লাগত । কনটেস্ট শুরু করার পর আমার ব্রেন অনেক ফাস্ট চিন্তা করা শুরু করে , আগে যে জিনিস আমি সারাদিন লাগায়ে  হয়তো পড়তাম এইটা আমার ১ ঘণ্টার মত লাগত । আগে অনেক কিছু আমি হয়তো মুখুস্ত করতাম , আমি কনটেস্ট শুরু করার পর সব কিছু বুঝার ট্রাই করতাম , আমার ১/২ এ জাভাতে কিন্ত্ এ প্লাস ও আসে নাই কারন একটাই আমি বুঝতাম না খুব একটা । পরে ২/২ এর এলগরিদম , ডিএলডি সবকিছুতে এ প্লাস পাইতাম । নরমাল স্টুডেন্ট থেকে যারা কনটেস্ট করে তারা অনেক দ্রুত চিন্তা করতে পারে , অনেক কম সময় এ চিন্তা করতে পারে বা কোন কিছু বুঝতে পারে এইটা আমি নিজেকে দেখে বুঝছি ।


প্রশ্ন ঃ প্রথম কনটেস্ট কবে করছিলা মনে আছে ?

উত্তর ঃ ১/১ এর কনটেস্টটা বাদে প্রথম করি মারুফ ভাইদের টাইমে । ভাইরা যখন ৪/১ এ কনটেস্ট করল । আমি , রিমি আর হিমেল টিম দেই নাম ছিল প্রভাতরবি ।

-- তোমার ব্লগের নামে

হুম ।  ঐটা ভাল হইছি ৩টা সল্ভ করে ৪র্থ হই আমরা । পরে অনসাইট করি ২০১৩ এ আইইউটিতে আমি , মাহির আর অর্ণব । ঐখানে ২টা সল্ভ করছিলাম ।

প্রশ্নঃ তুমি অনেক কমটাইমে অনেক সল্ভ করছিলা বা অনেক কম সময়ে অনেক ইম্প্রুভমেন্ট করছ এইটা কিভাবে করলা ?

উত্তর ঃ  কই কি করলাম ।

-- মানে অনেক সল্ভ তো করছিলা , আমি দুইবছর আগে Uva শুরু করে যা সল্ভ করি নাই , তুমি একবছরের মধ্যে আমারে ক্রস করে গেছিলা ।

আমি খালি অফলাইন সল্ভ করতে চাইতাম , এমনে টার্গেট নিতাম ৬মাসে ৫০০ সল্ভ করতে হবে । টার্গেট ধরে সল্ভ করতে চাইতাম । যদিও অনেক ক্ষেত্রেই হয় নাই কিন্তু চেস্টাটা সব সময় ছিল । যখন কোন প্রবলেম এ আটকাইতাম নেট এ দেখতাম , যদি বুঝতাম এইটা এমন কিছু দিয়ে সল্ভ করতে হবে যেইটা আমি জানি না এইটা দেখে , শিখে আবার সল্ভ করতে চাইতাম ।

প্রশ্ন ঃ কি টাইপের প্রবলেম সল্ভ করতে বেশি ভাল লাগত ?

উত্তরঃ আমার ডাটা স্ট্রাকচার প্রবলেম গুলা , সেগমেন্ট ট্রি , বাইনারি ট্রি , বিআইটি এর প্রবলেম গুলা ভাল লাগত । সাফিক্স এরে এর প্রবলেম ও ভাল লাগত । তবে আমি জিওমেট্রি , ডিপি এর প্রবলেম অনেক পরে শুরু করি , এইটা একটা ভুল ছিল । ঐগুলা একদমই ভাল করতে পারি নাই ।

প্রশ্নঃ ক্যামনে ডাটা স্ট্রাকচার প্রবলেম এ  এত বস হইলা , কিভাবে ভাল হওয়া যায় ডাটা স্ট্রাকচার প্রবলেমগুলাতে ?

উত্তর ঃ কিসের বস ,

--- মজা নেও । সাব এর কনটেস্ট এ বাংলাদেশ এর মধ্যে ফাস্ট MO সল্ভ করে দিছিলা

ঝড়ে বক ভাই একদিনই মরে ভাই ( হাঁ হাঁ ) । এমনে বিভিন্ন ব্লগ পড়ছি । প্রবলেম সল্ভ করতাম আমি অনেক । এইভাবেই তো ।


প্রশ্ন ঃ কোন প্রবলেম সল্ভ এর জন্য তোমার Thinking Process ক্যামন থাকে ?

উত্তরঃ আমি ফাস্ট এ দেখি Brute process এ করা যাবে কিনা । যদি দেখি করা যাবে না তাইলে দেখি অন্য কোন  এল্গো এর মাধ্যমে করা যাবে কিনা । এমনে খুব একটা কিছু পারি ও না যা পারি তার মধ্যে দেখি করতে পারব কিনা।

প্রশ্ন ঃ কোন প্রবলেম এ WA পাইলে কিভাবে ঠিক কর , কি কি জিনিস দেখ ?

উত্তরঃ আমি অনেক টেস্ট কেইস তৈরি করি , বাউন্ডারি কেইজ গুলা দেখি ভুল হচ্ছে কিনা । প্রবলেমটা আমি আবার পড়ি কোন কিছু মিস করলাম কিনা । এইটাও দেখি প্রবলেমটা ভুল বুঝছি কিনা , টাইম লিমিট গুলা দেখি । আমি brute force সল্ভ করে টেস্ট কেইস করে চেক করি পরে ।



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

উত্তর ঃ আমার মতে যার যেই জিনিসটা ভাল লাগে সেইটা করা উচিত । অবশ্যই ভাল খারাপ ব্যাপার তো দেখেই । কোনটা ভাল কোনটা খারাপ এইটা  ভার্সিটিতে কেউ উঠলে অবশ্যই বুঝা উচিত । কনটেস্ট এর ব্যাপারে হইল যদি কনটেস্ট ভাল লাগে তাইলেই করা উচিত । জোর করে কনটেস্ট করা যাবে না । জোর করে কিছু করলে তাতে ভাল রেজাল্ট ও আসবে না । মন থেকে কিছু করা হইলে অবশ্যই অবশ্যই তুমি একদিন না একদিন সেরা হইবাই । কনটেস্ট এর ব্যাপার হইলে টার্গেট নিয়ে চেস্টা করে যাওয়া উচিত । প্রতি ৬মাসে কোডফরসেস এ আমার রেটিং +২০০/৩০০ বাড়বে , ১ বছর এ আমি Uva ৫০০ নতুন প্রবলেম সল্ভ করব , লাইট ওজিতে ৩০০+ করব এমন ।

প্রশ্নঃ প্রোগ্রামিং কনটেস্ট এর ব্যাপারে কাউকে ফলো কর বা ইন্সপাইরেশন এর কেউ আছে ?

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

প্রশ্ন ঃ জুনিওর যারা কনটেস্ট স্টার্ট করতেছে তাদের ব্যাপারে কোন সাজেশন ? আহসানউল্লাহ এর যারা শুরু করতেছে তাদের ব্যাপারে বলার কিছু আছে ?

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

প্রশ্ন ঃ এমনে প্রোগ্রামিং বাদে কোন হবি ?

উত্তর ঃ আমি খেলা দেখি অনেক । বন্ধুদের সাথে আড্ডা দেই ।


Saturday, March 5, 2016

Programming Interview - Sheikh Moinul Hasan


এইটা প্রোগ্রামিং ইন্টাভিউ সিরিজের দ্বিতীয় লিখা , আজকের অতিথি বুয়েটের পরিচিত মুখ মইনুল । যারা নতুন নতুন প্রোগ্রামিং স্টার্ট করতেছে , কনটেস্ট এ আগ্রহী হচ্ছে তাদের অনেক উপকারে আসবে আশা রাখি :)
প্রশ্নঃ 
 প্রোগ্রামিং প্রোগ্রামিং কনটেস্ট এর ব্যাপারে কিভাবে জানছ প্রথমে ?
-- প্রথম প্রোগ্রামিং কনটেস্ট এর ব্যাপারে জানসি, বুয়েট ভর্তি হবার পর. অনেক বন্ধুরাই আগে থেকেই কন্টেস্ট এর বাপারে জানত. ওদের মাধ্যমেই জানতে পারি. আমারও কৌতূহল জাগল. এছাড়াও সিনিওর অনেক ভাই দের সাথেও কথা হয় ব্যাপারে. এভাবেই আস্তে আস্তে কন্টেস্ট এর জগতে এসে যাই.
প্রশ্নঃ  লাইফের প্রথম কনটেস্ট কবে করছিলা মনে আছে ? কোথায় করছ ?
-- প্রথম কন্টেস্ট করসিলাম বুয়েট এর একটা প্রাকটিস কন্টেস্ট . শান্ত ভাই অ্যারেঞ্জ করসিলেন কন্টেস্ট টা. আর ন্যাশনাল লেভেল এর প্রথম কন্টেস্ট করসিলাম হল ঢাকা রেজিওনাল ২০১২, ড্যাফোডিল ইউনিভার্সিটি এর আন্ডার , অ্যাট রেডিসন.
প্রশ্নঃ  কি টাইপের প্রবলেম সল্ভ করতে বেশি ভাল লাগে ?
-- নতুন কিছু, সেটা যতই সিম্পল হোক না কেন. কিন্তু ক্যাটাগরি যদি বলতে হয় তাহলে তো ডিপি কেই ফেবারেট বলতে হয়. কারন এই ক্যাটাগরিতেই সবচেয়ে ভ্যারিড প্রবলেম থাকে.
প্রশ্নঃ  সবার একটা সাধারন প্রশ্ন থাকে কিভাবে ডিপি প্রবলেম ভাল সল্ভ করা যায় , তুমি ডিপি অনেক ভাল সল্ভ কর এইটা কিভাবে এর ইম্প্রুভ করলা ?
-- ডিপি তে ভাল করার ওয়ে হোলও বেশি ডিপি প্রবলেম সল্ভ করা এবং রিকারেন্স রিলেশান বুঝা. বেশির ভাগ সময় ডিপি এর প্রবলেম ইউনিক থাকে. তোমাকে ওটাকেই চিন্তা করে রিকারেন্স রিলেশান বের করতে হবে. প্রাকটিস এর জন্য আমি বরাবর সাজেস্ট করি LOJ এর ডিপি প্রবলেম সল্ভ করতে.
প্রশ্নঃ  কোন প্রবলেম সল্ভ এর সময় "Thinking Process" কি থাকে প্রবলেম পড়ার পর ? কিভাবে প্রবেলম সল্ভ কর ?
-- প্রবলেম পরার সময় mindset ওপেন থাকা উচিত. আগে থেকেই ডিসাইড করা উচিত না এটা কোন ক্যাটাগরির অথবা এটা segment tree এর প্রবলেম, হয়ত এটা আরও সহজে করা যাবে. প্রবলেম পড়ার পর প্রথম চিন্তা থাকে আমি এই রকম প্রবলেম আগে করসি নাকি. আর বড় কোড করার আগে অবশ্যই খেয়াল করে নেয়া উচিত যে এটা আরও সহজে হয় কিনা এই প্রবলেম লিমিট . প্রব্লেম অ্যাপ্রচ করার সময় অবশ্যই লিমিট এর দিকে খেয়াল রাখা উচিত. অনেক সময় লিমিট এর উপর বেইস করেই বুঝা যায় কোন ক্যাটাগরি.
প্রশ্নঃ  WA হইলে কোন প্রবলেম কিভাবে attempt নেও ? 
-- WA হলে প্রথম কাজ হল কোড recheck করা, overflow, case printing, type casting, faulty or implicit double comparison, logical etc. কোড ভুল না হলে, চেক করতে হবে corner case and special case. তারপর কিছু নিজের নরমাল case সিমুলেট করে দেখতে হবে ঠিক রেসাল্ট আশে নাকি. কিছুই না হলে Idea  ঠিক আসে নাকি আবার দেখতে হবে. 
প্রশ্নঃ   প্রোগ্রামিং কনটেস্ট কাউকে ফলো কর বা ইন্সপারেশন এর কেউ আছে ?
-- ফলো তো অনেকেই করি, শান্ত ভাই, রিয়াদ ভাই, জেহাদ ভাই, লিন্কিন ভাই, সাকিব ভাই, সাদিয়া আপু, কায়সার ভাই, কিন্তু শেষ পর্যন্ত আসলে নিজেকেই decide করতে হয় যে কার কোনটা ফলো করব.
প্রশ্নঃ  অনেক সময় দেখা যায় কয়েকদিন কারো কনটেস্ট ভাল না হইলে অনেক হতাশ হয়ে কনটেস্ট ছেড়ে দেয় বা অন্যভাবেও বলা হয় সব কনটেস্টেন এর লাইফে হতাশার একটা পিরিয়ড থাকে , এই সময় কিভাবে নিজেকে মোটিভেট করা উচিত ?
-- কনটেস্ট জগতে টিকে থাকতে হলে সবাইকেই এই হতাশার পিরিয়ড দিয়ে  যেতে হয়. এই সময় push through করা উচিত, বেশি চিন্তা না করে, just দিন রাত practice করা উচিত. সবাই এই পিরিয়ড দিয়ে গেসে, যারা push through করতে পারসে তারাই ভাল করতে পারসে success এর দিকে না তাকিয়ে নিজের improvement করার জন্য practice করে জেতে হবে.  
প্রশ্নঃ জুনিওরদের জন্য কোন সাজেশন , কিভাবে ভাল হওয়া যাবে ?
-- প্রোগ্রামিং কনটেস্ট ভাল করার কোনও shortcut নাই। practice ছাড়া কিছুই হবে না. প্রাকটিস চালায়ে যাও, দেখবা তুমিও এই রকম সাজেশান দিতেসো একদিন :p.
প্রশ্নঃ   প্রোগ্রামিং বাদে কোন হবি আছে ?
-- আমি প্রচুর পিসি গেমস খেলি mostly role playing games. এছারাও আনিমে দেখি, টিভি সিরিজ দেখি অ্যান্ড মুভি দেখি. অনেকের প্রশ্ন থাকতে পারে প্রোগ্রামিং কনটেস্ট এর টাইম পাই কাম্নে তাইলে. আমার মনে হয়, কোনও কিসুতে নেশা না হইলে তেমন কোনও প্রবলেম হয় না.
বিদ্রঃ মইনুল আমার ব্যাচম্যাট । অনেক প্রবলেম ও সবসময়ই ওর কাছ থেকে অনেক কিছু শিখার সুযোগ হইছিল আমার । নিজের টাইম নস্ট করে প্রশ্নগুলার উত্তর দেওয়ার জন্য অনেক ধন্যবাদ :)