**সাধারণ সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্নগুলো অনুশীলন করুন** এবং **নমুনা সমাধানের** সাথে নিজের সমাধান **তুলনা** করুন: আলোচনা করুন, কোড করুন এবং ডায়াগ্রাম ব্যবহার করতে শিখুন
আপনি কি [**কোডিং ইন্টারভিয়ের**](https://github.com/donnemartin/interactive-coding-challenges) জন্য রিসোর্স খুঁজছেন?
<palign="center">
<imgsrc="http://i.imgur.com/b4YtAEN.png">
<br/>
</p>
আপনি [**ইন্টারেক্টিভ কোডিং চ্যালেঞ্জ**](https://github.com/donnemartin/interactive-coding-challenges) নামের অণু-প্রোজেক্টটি দেখতে পারেন, যাতে আরও Anki ডেক রয়েছে।
> আপনার ইন্টারভিউয়ের সময়রেখার উপর ভিত্তি করে নিমোক্ত বিষয়গুলো সুপারিশ করা হল
![Imgur](http://i.imgur.com/OfVllex.png)
**Q: ইন্টার্ভিউয়ের জন্য আমার কি েখানের সবকিছু জানা লাগবে ?**
**A: না, আপনার ইন্টার্ভিউয়ের প্রস্তুতির জন্য এখানের সবকিছু জানা লাগবে না।**.
আপনাকে ইন্টেরভিউতে কি ধরণের প্রশ্ন জিজ্ঞেস করবে তা কিছু বিষয়গুলোর উপর নির্ভর করছে যেমনঃ
* আপনার কতদিনের অভিজ্ঞতা রয়েছে
* আপনার টেকনিক্যাল ব্যাকগ্রাউন্ড কি
* আপনি কোন পদের জন্য ইন্টারভিউ দিচ্ছেন
* আপনি কোন কোম্পানিতে ইন্টারভিয় দিচ্ছেন
* ভাগ্য
অনেক অভিজ্ঞতাসম্পন্ন প্রার্থীরা সাধারণত সিস্টেম ডিজাইন নিয়ে অনেক কিছু জানে বলে ধারণা করা হয়। আর্কিটেক্ট অথবা টিম লিডরাও ব্যক্তি কন্ট্রিবিউটর থেকে বেশি জানে বলে ধারণা করা হয়। প্রধান টেক কোম্পানিগুলোতে সাধারণত এক বা ততোধিক ডিজাইন ইন্টারভিউ রাউন্ড থাকে।
বিশদভাবে শুরু করুন এবং কয়েকটি বিষয়ে গভীর যান। এটা বিভিন্ন প্রধান সিস্টেম ডিজাইন বিষয় সম্পর্কে জানতে একটু সাহায্য করে। আপনার সময়রেখা, অভিজ্ঞতা, কোন অবস্থানের জন্য আপনি ইন্টার্ভিউ দিচ্ছেন এবং আপনি কোন সংস্থাগুলির সাথে ইন্টার্ভিউ দিচ্ছেন তার উপর ভিত্তি করে নিচের নির্দেশিকা সামঞ্জস্য করুন।
* **সংক্ষিপ্ত সময়রেখা** - আপনার লক্ষ্য হবে সিস্টেম ডিজাইন বিষয়ে **প্রশস্ত** ধারণা নেওয়া। **কিছু** ইন্টার্ভিউয়ের প্রশ্ন সমাধান করে প্রস্তুতি নিন।
* **মাঝারি সময়রেখা** - আপনার লক্ষ্য হবে সিস্টেম ডিজাইন বিষয়ে **প্রশস্ত** এবং **কিছু গভীর** ধারণা নেওয়া।**অনেক** ইন্টার্ভিউয়ের প্রশ্ন সমাধান করে প্রস্তুতি নিন।
* **দীর্ঘ সময়রেখা** - আপনার লক্ষ্য হবে সিস্টেম ডিজাইন বিষয়ে **প্রশস্ত** এবং **অনেক গভীর** ধারণা নেওয়া। **প্রায় সব** ইন্টার্ভিউয়ের প্রশ্ন সমাধান করে প্রস্তুতি নিন।
| [অবজেক্ট ওরিয়েন্টেড ডিজাইন ইন্টারভিউ প্রশ্ন, সমাধানসহ](#object-oriented-design-interview-questions-with-solutions) নিয়ে কাজ করুন | কিছু | অনেক | প্রায় সব |
| পর্যালোচনা করুন [আরও সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্ন](#additional-system-design-interview-questions) | কিছু | অনেক | প্রায় সব |
> কিভাবে একটি সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্নের উত্তর দিবেন।
সিস্টেম ডিজাইন ইন্টারভিউ একটি **খোলামেলা কথোপকথন**। আপনার থেকে এটার নেতৃত্ব আশা করা হবে।
আপনি আলোচনা গাইড করার জন্য নিম্নলিখিত ধাপগুলি ব্যবহার করতে পারেন। এই প্রক্রিয়া দৃঢ় করতে সাহায্য করার জন্য, আপনি [সিস্টেম ডিজাইন ইন্টারভিউ প্রশ্ন, সমাধানসহ](#system-design-interview-questions-with-solutions) সেকশনটি নিমোক্ত ধাপগুলো অনুসরণ করে কাজ করতে পারেন।
### ধাপ ১ঃ ব্যবহার ক্ষেত্রের রূপরেখা, সীমাবদ্ধতা, এবং অনুমান
প্রয়োজনীয় তথ্য সংগ্রহ করুন এবং সমস্যাটিকে একটি ক্ষেত্রের মধ্যে আনুন। ব্যবহার ক্ষেত্রে এবং সীমাবদ্ধতা ব্যাখ্যা করতে প্রশ্ন জিজ্ঞাসা করুন. অনুমান নিয়ে আলোচনা করুন।
* কে এটি ব্যবহার করতে যাচ্ছে?
* তারা কিভাবে এটি ব্যবহার করতে যাচ্ছেন?
* এর কতজন ব্যবহারকারী আছে?
* সিস্টেমটি কি করে?
* সিস্টেমের ইনপুট এবং আউটপুট কি কি?
* আমরা কি পরিমাণ ডাটা পরিচালনা করব বলে আশা করি?
* আমরা প্রতি সেকেন্ডে কত পরিমাণ রিকোয়েস্ট আশা করি?
* রিড টু রাইট এর প্রত্যাশিত অনুপাত কত?
### ধাপ ২ঃ একটি হাই লেভেল ডিজাইন তৈরি
সমস্ত গুরুত্বপূর্ণ উপাদান নিয়ে একটি হাই লেভেল ডিজাইনের রূপরেখা তৈরি করুন।
* প্রধান উপাদানসমুহ এবং তাদের মাঝে সংযোগ স্থাপন করে একটি খসড়া চিত্র আঁকুন।
* আপনার ধারণনার ন্যায্যতা প্রমাণ করুন।
### ধাপ ৩ঃ কোর উপাদান ডিজাইন
প্রতিটি কোর উপাদানের বিস্তারিত জানার জন্য গভীরে চলে যান। উদাহরণস্বরূপ, যদি আপনাকে বলা হয় [একটি ইউআরএল শর্টনিং সেবা ডিজাইন করুন](solutions/system_design/pastebin/README.md), তবে নিমোক্ত বিষয়গুলো আলোচনা করুনঃ
* সম্পূর্ণ ইউআরএল এর হ্যাশ তৈরি এবং সংরক্ষণ
* [এমডি৫](solutions/system_design/pastebin/README.md) এবং [বেস৬২](solutions/system_design/pastebin/README.md)
* হ্যাশ কলিশন্স
* এসকিউএল বা নোএসকিউএল
* ডাটাবেজ স্কিমা
* একটি হ্যাশেড ইউআরএল থেকে সম্পূর্ণ ইউআরএল অনুবাদ
* ডাটাবেজ সন্ধান
* এপিআই এবং অবজেক্ট ওরিয়েন্টেড ডিজাইন
### ধাপ ৪ঃ ডিজাইন স্কেল
যেসব সীমাবদ্ধতা বিঘ্ন ঘটাতে পারে তাদের সনাক্ত এবং সম্বোধন করুন। উদাহরণস্বরূপ, আপনার স্কেলবিলিটি সমস্যা মোকাবেলার জন্য কি নিম্নলিখিত বিষয়গুলো প্রয়োজন?
* লোড ব্যালেন্সার
* অনুভূমিক স্কেলিং
* কেশিং
* ডাটাবেজ শারডিং
সম্ভাব্য সমাধান এবং ভালোমন্দ দিক নিয়ে আলোচনা করুন। সবকিছুর ভাল-মন্দ দিক আছে। [স্কেলেবল সিস্টেম ডিজাইনের প্রিন্সিপাল](#index-of-system-design-topics) মেনে সীমাবদ্ধতাগুলো সম্বোধন করুন।
### ব্যাক-অফ-দ্যা-এনভেলপ গণনা
আপনি কিছু অনুমান খসড়া করতে বলা হতে পারে। নিমোক্ত রিসোর্সগুলোর জন্য [পরিশিষ্ট](#appendix) উল্লেখ করা হলঃ