Sunday, April 17, 2022

Interview experience with Zalando

Zalando ইন্টারভিউ প্রসেস শুরু হয় রিক্রুটারের Linkedin এ নক মাধ্যমে। বলা হয় Python backend position এ একটা opening আছে আমি ইন্টারেস্টেড কিনা। আমিও হ্যাঁ বলে দিলাম। 😀

প্রথম ধাপ শুরু হল Coding test দিয়ে। রিক্রুটার codility টেস্টের লিঙ্ক পাঠালো। দুইদিন পর টেস্ট দিতে বসলাম। কিন্তু টেস্ট দিতে গিয়েই বিপত্তি, প্রথমে প্রাকটিস লিঙ্কে ক্লিক করে ৫ মিনিট একটা প্রাকটিস কোড সাবমিট দিতেই মেইন টেস্ট সাবমিট হয়ে গেল। স্কোর দেখালো শূন্য। Codility এর বাগ ছিল মনে হয়। তারপর রিক্রুটারকে পুরা কাহিনী ডিটেইলসে লিখে মেইল করলাম। Auto reply আসলো রিক্রুটার ছুটিতে। তারপর ১ সাপ্তাহ পর রিপ্লাই দিল সে ইঞ্জিনিয়ারিং ম্যানেজারকে জানিয়েছে। আমার সাবমিশন review করে জানাবে। তারপর ১ দিন পর আবার নতুন টেস্ট লিঙ্ক দিল। তারপর আবার ২ দিন পর টেস্ট দিতে বসলাম। এবং রিক্রুটার বলেই দিয়েছিল এইটা যেহেতু স্পেশাল কেস তাই আমি কোন টেস্টের রেজাল্ট সাথে সাথে দেখতে পারব না। মেন্যুয়ালি টেস্ট করবে আমার কোড। যাই হোক টেস্ট দিলাম, ২০ মিনিটেই ৩ টা প্রবলেম সল্ভ করে সাবমিট দিয়ে দিলাম। আমার জন্য প্রবলেম গুলা Easy piece of cake ছিল।

Saturday, January 15, 2022

Interview experience with HeyJobs

HeyJobs এ ইন্টারভিউ প্রসেস শুরু এই মেইল দিয়ে

Hi Tanvir,

thanks a lot for your application and interest in working at HeyJobs.

We like your profile a lot which is why we want to set up a first call with you. When is usually a good time (Berlin time/CEST) for you next week?

Looking forward to hearing back from you.

Thursday, January 13, 2022

Interview experience with Seerene

ইন্টারভিউ প্রসেস শুরু Linkedin এ এপ্লাই করার পরে, HR এর মেইলের মাধ্যমে। প্রথম মেইলে জিজ্ঞাস করল আমার ফ্রি সময় কখন, সেইভাবে কোডিং টেস্ট এ্যারেঞ্জ করবে। তারপর ফ্রি টাইম সিডিওল দেয়ার পরে হ্যাকারর‍্যাঙ্কে কোডিং টেস্ট এর লিঙ্ক দিল।

কোডিং টেস্টে ৩ টা প্রবলেম ছিল Adhoc, greedy, string রিলেটেড প্রবলেম এর। আর MCQ ছিল ১০ টা পাইথন রিলেটেড। কোডিং টেস্ট এর স্কোর ১০০% ছিল। পজিশন python এ ছিল, তাই প্রবলেম গুলা python এই সল্ভ করেছি।

তারপর কোডিং টেস্ট এর স্কোর দেখে সেকেন্ড ইন্টারভিউ সেট করল Engineering manager ও একজন Senior software engineer এর সাথে।

Friday, December 24, 2021

Timeline of 2020 - 2021 & Preparation


তখন আমি Codemarshal এ, আমাদের হোম অফিস শুরু হয়েছে মার্চ ২০২০ থেকেই। প্রথম দিকে কাজের প্রেশার থাকলেও তারপর কাজ একদমেই কমে গেল। হাতে প্রচুর সময়।

একদিন আমার এক্স কলিগ মাসুম বলল চলেন ভাই হ্যাকাথন করি, ভাল প্রাইজ মানি আছে। আমিও চিন্তা করলাম করায় যায়। তারপর আমি, মাসুম ও শাকিল ভাই মিলে টিম করলাম। এবং আমরা Redis ‘Beyond Cache’ Hackathon এ জয়েন করলাম। আমরা পুরা ৪ সাপ্তাহের একটা কাজের টার্গেট করে কাজ শুরু করে দিলাম।

এর মধ্যে এপ্রিলে মাসে Amazon Canada এর hiring manager Linkedin এ নক দিল। ইন্টারভিউ দিলাম এবং ৩ নাম্বার ইন্টারভিউতে রিজেক্ট খেয়ে গেলাম। তখনও আমি সিওর ছিলাম না, আমি দেশর বাইরে জবের জন্য ট্রাই করব, তাই কোন রকম প্রিপারেশন ছাড়া ইন্টারভিউ দেয়া। মূলত তখন থেকে আমার দেশের বাইরে জবের প্রসেস শুরু।

Friday, April 15, 2016

C++ STL & Tricks-1

C++ এ কিছু build in লাইব্রেরী আছে, যাদেরকে বলা হয় standard template library. এইসব STL ব্যবহার করে অনেক প্রবলেম অনেক সহজে করে ফেলা যায়। যেমন কোন প্রবলেমে যদি stack,queue এইগুলা ব্যবহার করা লাগে, এইগুলার জন্য নতুন করে কোড লেখার প্রয়োজন পরে না। stack,queue stl ব্যবহার করেই প্রবলেম সল্ভ করা যায়।

vector:

ভেক্টর নরমাল এ্যারের মতই। এর সুবিধা হল যখন ইচ্ছে সাইজ পরিবর্তন করা যায়।

vector declare:

vector ব্যবহার করার জন্য header file vector include করতে হবে।
vector < type > Name;

Thursday, April 14, 2016

TopCoder offline practice.

অনেকেই প্রথমে topcoder এ অফলাইনে প্র্যাকটিস করতে গিয়ে যে সমস্যার মুখোমুখি হয় তাহল, “কোডত সাবমিট দিলাম, এখন verdict দেখব কিভাবে!!!“। তাই নতুনদের বুঝার সুবিধার্তেই এই ২ মিনিট ৪৮ সেকেন্ড এর ভিডিও।

Friday, February 5, 2016

Code Book

Programming contest লাইফে এখন পর্যন্ত যত Data structure এবং Algorithm শিখেছি তার সকল কালেকশন এই PDF এ পাওয়া যাবে।

 
RN0BKHy.jpg

 

                   ~ Happy coding ~

Wednesday, September 23, 2015

Queue

Queue data structure দুইটি বেসিক property মেনে কাজ করে।

  • যদি list এ কোন element add হয় তাহলে তা last এর দিক দিয়ে এ্যাড হবে।
  • যদি list থেকে কোন element বের করতে হয়, তাহলে তা সামনে থেকে বের হবে।

জিনিসটা অনেকটা বাসে উঠার জন্য যাত্রীদের লাইনের মত চিন্তা করা যেতে পারে। নতুন কেউ আসলে লাইনের পিছনে দাঁড়াবে এবং যে সামনে আছে সে সবার আগে বাসে উঠবে।

Monday, September 21, 2015

Stack

Stack হল এমন একটি ডাটাস্ট্রাকচার যা, দুইটি নীতি মেনে চলে।

  • Stack এ কোন element insert হলে শেষে দিয়ে insert হবে।
  • কোন element ফেলে/বের করে দিতে হলে last থেকে বের করে দিতে হবে। এই জন্য এইটাকে বলা হয় LIFO. Last in First Out. যে সবার শেষে insert হবে, সে সবার আগে বের হবে।

Stack এর স্ট্রাকচার নিচের ফিগারগুলা দেখে সহজে বুঝা যায়,

Stack

Stack

Capture

Friday, September 18, 2015

Linked list

Data structure এর একদম বেসিক একটা জিনিস হল Linked list.
Linked list এবং Array প্রায় একই রকম কাজ করে। তবে তাদের operation, memory এর উপর ভিত্তি করে কিছু সুবিধা অসুবিধা আছে।

  • Array ব্যবহার এর শুরুতে কতগুলো ব্লক নিয়ে কাজ করব তা ডিক্লেয়ার করে দিতে হয়। এবং পুরো প্রোগ্রাম জুড়ে সেই সাইজ একই থাকে, পরিবর্তন করা যায় না। Linked list এ যখন প্রয়োজন শুধু তখনেই ব্লক এ্যাড করা হয়, তাতে মেমরি অপচয় হয় না।
  • Array তে যেখানে index access করা যায়, Linked list এ তা করা যায় না।
  • Array তে যেকোন পজিশনে এলিমেন্ট insert/delete করা অনেক কষ্টসাধ্য ও complexity বেশি, কিন্তু Linked list দিয়ে তা সহজে করে ফেলা যায়।

Basic Structure:

Linked list এ প্রতিটা ব্লক দুইটি অংশে বিভক্ত। এক অংশে থাকে ডাটা, আরেক অংশে থাকে পরর্বতী ব্লকের address. এইভাবে ব্লক পরর্বতী ব্লকের address সেভ রেখে একটি list এর মত কাঠামো গঠন করে। একটি Linked list দেখতে নিচের fig এর মত হবে।

Wednesday, May 27, 2015

Sparse Table

Sparse Table RMQ (range minimum/maximum query) টাইপ প্রবলেম সল্ভ করতে কাজে লাগে। একটি Array ‘A’ তে কিছু নাম্বার দেয়া আছে। এখন বলা হল কুয়েরি i to j রেঞ্জ দেয়া হবে, বলতে হবে এই রেঞ্জে এর মধ্যে মিনিমাম নাম্বার কত। এখন Brute force way তে করলে worst case complexity যাবে O(Q*N)। কিন্তু Sparse Table দিয়ে O(N log N) এ pre calculation করে O(1) এ প্রতি কুয়েরির answer দেয়া যায়।

Sparse Table:

Sparse Table এ Array প্রতিপজিশন থেকে তার 2 এর power এর length পর্যন্ত result সেভ করে রাখা হয়।এর ফলে, “যেকোন নাম্বারকে 2 এর power এর যোগফল হিসেবে লিখা যায়।” এই property use করে sparse table থেকে সহজে result calculation করা যায়।

Array A[]={10, 1, 3, 20, 25, -5, 6, -10, 11, 8} এর minimum range query জন্য sparse table ST হবে এমন,Capture

Sunday, April 19, 2015

Graphics.h configure In code::blocks

Code::Blocks এ C প্রোগ্রামে graphics.h include করে কাজ করার জন্য প্রথমে কিছু জিনিস configure করে নিতে হয়।

Steps:

  1. Download. এখান থেকে WinBGIm_GCC47 download করতে হবে।
  2. Download করার পর zip folder unzip করলে, graphics.h, winbgim.h, libbgi.a  এই ৩ টি ফাইল পাওয়া যাবে।
  3. তারপর graphics.h, winbgim.h ফাইল দুইটি কপি করে pc তে যেখানে mingw setup করা আছে তার include folder এ paste করতে হবে। (MinGW\include)
    আমার pc তে path হলঃ C:\Program Files (x86)\CodeBlocks\MinGW\include
  4. এখন  libbgi.a ফাইল কপি করে mingw folder এর lib folder এ paste করতে হবে।(MinGW\lib)
    আমার pc তে path হলঃ C:\Program Files (x86)\CodeBlocks\MinGW\lib
  5. Code::Blocks open করে Settings -> Compiler settings -> linker settings এ যেতে হবে।
  6. বামপাশে Link libraries এ Add এ click করে libbgi.a ফাইল সিলেক্ট করে দিতে হবে। অথবা libbgi.a ফাইল যেখানে paste করা হয়েছিল ওই path copy করে দিলেই হবে।
    যেমনঃ "C:\Program Files (x86)\CodeBlocks\MinGW\lib\libbgi.a"
  7. ডানপাশে Other linker options এ "-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32" copy paste করতে হবে।
  8. Now hit Ok. :P

Monday, March 23, 2015

Square Root Decomposition

problem: একটি N size এর Array তে কিছু নাম্বার দেয়া হল। এখন প্রতিবার x থেকে y রেঞ্জ এর মধ্যে কুয়েরি করে বের করতে হবে minimum নাম্বার কত।
এখন একদম brute force উপায়ে যদি বের করি তাহলে complexity হবে প্রতি query তে x to y iterate করতে হবে. Array size যদি N হয় এবং query যদি N টা হয়। তাহলে worst case complexity হচ্ছে O(N²)। যা খুবই costly.

Square root decomposition:

এখন total Array কে square root size block এ ভাগ করতে হবে।
Array size যদি N হয় তাহলে পুরো Array কে √N size block এ ভাগ করে নিব। এবং প্রতি Block এ √N টা element এর result থাকবে। square root যদি perfect না হয়, তাহলে একদম শেষ Block এ square root থেকে কম element এর রেজাল্ট থাকবে।

s

এখন যদি 100 size এর একটা Array কে square root decompose করা হয় তাহলে, total block size হবে √100=10 এবং প্রতি Block এ থাকবে 10 টা element এর result.

Tuesday, March 17, 2015

Top Coder Arena Setup

TC Contest:

টপকোডারে কন্টেস্ট সিস্টেম অন্যান্য online judge গুলা থেকে একটু ভিন্ন। এখানে কন্টেস্ট করতে হয় Top Coder Arena তে। Solution Code এ কোন Input/Output দিতে হয় না। Top Coder Arena problem এর একটা class generate করে দেয়। তাতে একটা method থাকে, তারমধ্যে solution code লিখতে হয়। method এর parameter, return type কি হবে তা problem description এ দেয়া থাকে।
তাই  Top Coder Arena setup দেয়ার পর কিছু configuration করে নিতে হয়।

Method এর parameter, return type বিভিন্ন রকমের STL হয়ে থাকে। তাই Top Coder এ কন্টেস্ট করার আগে একটু STL ও C++ ধারনা নিয়ে শুরু করা ভাল।

TC Arena Setup:

Top Coder Arena জন্য প্রথম ৩ টি জিনিস লাগবে।

  1. JRE
  2. Top Coder Arena
  3.  KawigiEdit-pfa-2.4.0

প্রথমে JRE Download করে নরমাল software এর মত next, next দিয়ে install করে নিতে হবে।
তারপর pc তে একটা new folder open করতে হবে Topcoder নামে। (অন্য নাম দিলেও সমস্যা নাই)। New folder এ Top Coder Arena, Kawigiedit download করে রাখতে হবে।

Monday, March 2, 2015

KMP (Knuth-Morris-Pratt algorithm)

KMP কি?

kmp স্ট্রিং ম্যাচিং এ্যালগরিদম। Kmp লিনিয়ার টাইমে একটা স্ট্রিং T তে একটা প্যাটার্ন স্ট্রিং P কতবার আছে এবং কোন কোন পজিশনে আছে তা বের করে।

KMP কিভাবে কাজ করে?

Kmp কিভাবে কাজ করে তা বুঝার আগে একটা স্ট্রিং T থেকে প্যাটার্ন স্ট্রিং P কতবার ও কোথায় আছে তার naive solution টা দেখে নেয়া জরুরী।

Naive solution:

উপরে solution এ T এর প্রতি পজিশন থেকে P স্ট্রিং ম্যাচ করে দেখা হচ্ছে এবং কোথাও ম্যাচ না পেলে আবার P স্ট্রং এর প্রথম পজিশনে গিয়ে ম্যাচ করে দেখা হচ্ছে।
Kmp এ্যালগরিদম ম্যাচ না পেলে P স্ট্রিং এর বার বার প্রথম পজিশন এ গিয়ে ম্যাচ করানোর জিনিস টা স্কিপ করে।
Kmp এ্যালগরিদমে একটা ফাংশন থাকে যাকে prefix/π/failure ফাংশন বলা হয়ে থাকে।
এই ফাংশন একটা π এ্যারে তৈরী করে দেয়, যাতে প্যাটার্ন স্ট্রিং P এর সব পজিশনে কতটুক প্রিফিক্স ম্যাচ করে তা থাকে।

Tuesday, January 13, 2015

Suffix Array

Suffix Array কি? 

suffix array হল এমন একটা array যেখানে কোন স্ট্রিং এর সবগুলা suffix string এর index Sorted আকারে থাকবে। আরও সোজা করে বললে, একটা স্ট্রিং এর সাইজ যদি N হয় তাহলে তার N টা suffix string পসিবল। এখন suffix string গুলাকে যদি lexicographical ভাবে সর্ট করি তাহলে suffix starting এর যে index গুলা array আকারে পাব তাকেই suffix array বলা হচ্ছে। যেমন একটাস্ট্রিংঃ mississippi এর সবগুলা suffix string হলঃ

suffix  

Monday, December 22, 2014

Python: ইন্সটলেশন

Python setup:

যারা Linux অথবা Mac ব্যবহার করেন, তাদের নতুন করে পাইথন ইন্সটল করার প্রয়োজন নেই। কারনে এই দুইটা অপারেটিং সিস্টেমে built-in পাইথন সেটআপ করা থাকে।
Windows এর জন্য পাইথন ডাউনলোড করা যাবে এইখান থেকে।
পাইথন ডাউনলোড করার পর, সাধারন software এর মত ডাবল ক্লিক করে, next next দিয়ে ইন্সটল করে নিতে হবে।

Sunday, December 14, 2014

Python: শুরুর আগের কিছু কথা।

Python কি ??

Python বর্তমানে বহুল ব্যবহৃত একটি High level পোগ্রামিং ল্যাংগুয়েজ. Python মূলত একটি Interpreted প্রোগ্রামিং ল্যাংগুয়েজ। C/C++, Java সাথে Python এর মূল পার্থক হল এখানেই। C/C++, Java হল Compiled ল্যাংগুয়েজ, Python হল Interpreted ল্যাংগুয়েজ. Compiled ল্যাংগুয়েজ গুলো পুরো প্রোগ্রামকে একবারে machine code এ compile করে executable file এ সেভ করে। কিন্তু Interpreted প্রোগ্রামিং ল্যাংগুয়েজ গুলো রান টাইমে লাইন বাই লাইন machine code এ কনর্ভাট করে প্রোগ্রাম রান করে। তাই python অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজের তুলনায় একটু ধীরগতির। তবে চিন্তার কোন কারন নাই, বর্তমানে আমাদের কম্পিউটার গুলো অনেক গতিসম্পন্ন। তাই Python এর এই ধীরগতি আমলে না নিলেও চলবে। :P :P

Saturday, November 29, 2014

Python: Build .py file to .exe

নরমালি যেসব পিসিতে পাইথন সেট-আপ করা আছে, সেখানে সরাসরি .py ফাইল রান করানো যায়। কিন্তু যেসব পিসিতে পাইথন সেট-আপ করা নাই সেখানে .py ফাইলকে নরমাল টেক্স ফাইলের মত করে দেখায়।
এখন কোন প্রোগ্রামার পাইথনে একটা প্রোগ্রাম লিখে  সবাইকে দেয়ার সময় এইটা বলবেনা যে এই আমার .py ফাইল এইবার এইটা রান করার জন্য আপনার পিসিতে পাইথন সেট-আপ দিয়ে নেন। :P :P
তাহলে এইটার সহজ সমাধান হল প্রোগ্রামকে কম্পাইল করে এমন একটা ফাইল সিস্টেমে নেয়া যেটা পাইথন না থাকলেও চলবে। সেই রকম একটা সিস্টেম হল .exe ফাইল। মানে executable ফাইল বানানো।

Wednesday, November 26, 2014

Python: Graph Theory Algorithm

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

Popular posts