গুগল এর সফটওয়্যার ইঞ্জিনিয়ার হতে গেলে যে প্রশ্ন গুলো করে থাকে ইন্টার্ভিউতে সেগুলোর সিলেবাসটা দিয়ে দিলাম। যেন সবাই আগে থেকেই ধারণা পায়, সেই সাথে এখন থেকেই প্রস্তুতি নিতে পারে। আসলে গুগল থেকে শুরু করে সব বড় বড় কোম্পানি গুলোই টিম-ওয়ার্ক ভাবে কাজ করে। তাই গুগল বা এই লেভেল এর কোম্পানি গুলোর ক্ষেত্রে প্লাটফরম ভিত্তিক আলাদা আলাদা ভাবে ইন্টার্ভিউ হয়। তার মানে যে সফটওয়্যার ইঞ্জিনিয়ার হওয়ার জন্য এরা যে সব প্রশ্ন গুলো করে থাকবে কিংবা ইন্টার্ভিউ এর যে রুলস গুলা ফলো করে থাকবে তা অন্যান্য প্লাটফরম এর জন্য করবে না। আমি চেষ্টা করবো সফটওয়্যার ইঞ্জিনিয়ার ছারাও বাদ বাকি প্লাটফরম গুলোর ইন্টার্ভিউ রুলস সেই সাথে মেথডগুলোও আপনাদের সাথে শেয়ার করার। আজকে শুধুমাত্র সফটওয়্যার ইঞ্জিনিয়ার হওয়ার ক্ষেত্রে যে যে টপিকস থেকে এরা সাধারণত প্রশ্ন করে থাকে এই ব্যাপারে সামান্য কিছু আলোচনা করবো, সামনের পোস্ট গুলাতে আরও বিস্তারিত ভাবে তুলে ধরার চেষ্টা করবো ইনশা-আল্লাহ।
The syllabus for the interviews is very clear and simple:
1) Dynamic Programming
2) Super recursion (permutation, combination,...2^n, m^n, n!...etc. type of program. (NP hard, NP programs)
3) Probability related programs
4) Graphs: BFS/DFS are usually enough
5) All basic data structures from Arrays/Lists to circular queues, BSTs, Hash tables, B-Trees, and Red-Black trees, and all basic algorithms like sorting, binary search, median,...
6) Problem solving ability at a level similar to TopCoder Division 1, 250 points. If you can consistently solve these, then you are almost sure to get in with 2-weeks brush up.
7) Review all old interview questions in Glassdoor to get a feel. If you can solve 95% of them at home (including coding them up quickly and testing them out in a debugger + editor setup), you are in good shape.

9) Very good to have for design interview: distributed systems knowledge and practical experience.
10) Good understanding of basic discrete math, computer architecture, basic math.
11) Coursera courses and assignments give a lot of what you need to know.
12) Note that all the above except the first 2 are useful in "real life" programming too!
Interview 1:
Graph related question and super recursion
Interview 2:
Design discussion involving a distributed system with writes/reads going on at different sites in parallel.
Interview 3:
Array and Tree related questions
Interview 4:
Designing a simple class to do something. Not hard, but not easy either. You need to know basic data structures very well to consider different designs and trade-offs.
Interview 5:
Dynamic programming,
Computer architecture and low level perf. enhancement question which requires knowledge of Trees, binary search, etc.
Conclusion: "It's not the best who win the race; it's the best prepared who win it."
Comments
Post a Comment