ساختار داده و مبانی الگوریتم – نمادهای بزرگ (O).

Summarize this content to 400 words in Persian Lang
افشا: این پست شامل پیوندهای وابسته است. در صورت خرید محصولات یا خدمات از پیوندهای مختلف ارائه شده در این مقاله، ممکن است غرامت دریافت کنم.
image_credit – DesignGuru.io
سلام دوستان اگر در حال آماده شدن هستید کدگذاری مصاحبه ها سپس به غیر از طراحی سیستم، شما همچنین باید ساختارها و الگوریتم های داده را آماده کنید و چیزی که باید یاد بگیرید این است که نماد بزرگ (O)..
در علم کامپیوتر و دنیای توسعه نرم افزار، کارایی کلیدی است.
چه در حال بهینه سازی کد، طراحی الگوریتم ها یا معماری سیستم ها باشید، درک ویژگی های عملکرد الگوریتم ها و راه حل های خود بسیار مهم است.
اینجاست که نماد Big O وارد عمل می شود.
نماد O بزرگ یک نشان می دهد روشی استاندارد برای توصیف پیچیدگی زمانی و مکانی الگوریتم ها، توسعه دهندگان را قادر می سازد تا رویکردهای مختلف را به صورت کمی تحلیل و مقایسه کنند.
تقریباً در تمام مصاحبههای کدنویسی وقتی راهحل خود را ارائه میکنید، مصاحبهگر از شما در مورد پیچیدگی زمانی و مکانی الگوریتم شما سؤال میکند.
آنها همچنین می پرسند که چگونه می توانید زمان و مکان را بهبود بخشید و اینجاست که مبادله زمان و فضا نمایان می شود.
در گذشته، من چندین سوال مصاحبه طراحی سیستم مانند نحوه طراحی WhatsApp یا Facebook Messenger یا سوالات مفهومی طراحی سیستم را به اشتراک گذاشتم که تفاوت بین API Gateway در مقابل Load Balancer و Horizontal vs Vertical Scaling، Forward Proxy در مقابل Reverse Proxy.
و، در این مقاله، هشت نماد Big O ضروری را که هر توسعهدهندهای برای نوشتن کد کارآمد و مقیاسپذیر باید بداند، بررسی میکنیم.
به هر حال، اگر برای مصاحبههای کدنویسی آماده میشوید و میخواهید ساختارهای داده و الگوریتمها و طراحی سیستم را به طور عمیق یاد بگیرید، میتوانید سایتهایی مانند را نیز بررسی کنید. استاد طراحی، توان، آموزشی، و Udemy که دارای دوره های مصاحبه کدنویسی عالی هستند
و اگر عجله دارید، در اینجا یک راهنمای سریع ضروری است Big(O) برگه تقلب نمادها برای کدنویسی مصاحبه ها از DesignGuru.io و برای اندازه گیری عملکرد الگوریتم های شما، از بهتر به بدتر:
PS تا آخر به خواندن ادامه دهید. من یک جایزه رایگان برای شما دارم.
8 نماد اصلی (O) که هر توسعهدهندهای باید یاد بگیرد
بدون هیچ مقدمه ای، اجازه دهید به راهنمای نمادگذاری Big(O) ضروری برای توسعه دهندگان نرم افزار بپردازیم.
این برای برنامه نویسی روزانه شما و همچنین برای انجام خوب مصاحبه های کدنویسی مفید است.
1. O(1) — پیچیدگی زمان ثابت
الگوریتم هایی با پیچیدگی زمانی O(1) دارای زمان اجرا ثابت هستند، به این معنی که زمان اجرای آنها به اندازه ورودی بستگی ندارد.
این مطلوب ترین عملکرد برای هر الگوریتمی است.
به عنوان مثال، دسترسی به یک عنصر در یک آرایه توسط شاخص، انجام عملیات حسابی پایه، یا دسترسی به ویژگی یک شی، همگی زمان ثابتی هستند. O(1) عمل.
فرقی نمی کند که آرایه شما 1 عنصر داشته باشد یا 1 میلیارد عنصر، می توانید همزمان با فهرست به آنها دسترسی داشته باشید.
در اینجا چگونه در نمودار به نظر می رسد:
2. O(log n) — پیچیدگی زمانی لگاریتمی
الگوریتم های با O(log n) پیچیدگی زمانی دارای زمان اجرا است که با افزایش اندازه ورودی، لگاریتمی رشد می کند.
این دومین عملکرد مطلوب پس از O(1) است و اگر نمی توانید برای O(1) بهینه سازی کنید، باید سعی کنید حداقل آن را بدست آورید. O(logN) عملکرد برای الگوریتم های شما
به عنوان مثال، الگوریتم جستجوی باینری نمونه خوبی از الگوریتم هایی با پیچیدگی زمانی لگاریتمی است. در این حالت فضای ورودی بارها و بارها به نصف تقسیم می شود.
در اینجا پیچیدگی لگاریتمی چگونه به نظر می رسد
3. O(n) — پیچیدگی زمانی خطی
الگوریتم ها با O(n) پیچیدگی زمانی یک زمان اجرا دارد که به صورت خطی با اندازه ورودی رشد می کند. به این معنی که با افزایش داده های شما، عملکرد الگوریتم های شما به همان نسبت کاهش می یابد.
بیشتر الگوریتمها در این دسته قرار میگیرند، مانند الگوریتمهای جستجوی خطی و عملیاتهای مختلف لیست پیوندی مانند پیمایش یک لیست پیوندی یا یافتن طول لیست پیوندی.
به عنوان مثال، تکرار از طریق یک آرایه یا لیست برای انجام یک عملیات خاص بر روی هر عنصر، نمونه ای از پیچیدگی زمان خط است. با افزایش تعداد عناصر، زمان تکرار نیز به همان نسبت افزایش می یابد.
اینجاست چگونه نمودار پیچیدگی زمان لاینر شبیه:
4. O(n log n) — پیچیدگی زمانی خطی
الگوریتم ها با O(n log n) پیچیدگی زمانی دارای زمان اجرا است که به نسبت n برابر لگاریتم n رشد می کند.
این بدتر از الگوریتمهای زمان خطی به دلیل ضریب ثبت اضافی است.
برای مثال، الگوریتمهای مرتبسازی کارآمد مانند ادغام مرتبسازی، مرتبسازی سریع و دستهبندی پیچیدگی زمانی O(nlogn) دارند.
در اینجا چگونه در نمودار به نظر می رسد:
5. O(n²) — پیچیدگی زمانی درجه دوم
الگوریتم های با O(n²) پیچیدگی زمانی دارای زمان اجرا است که با اندازه ورودی به طور درجه دوم افزایش می یابد.
اینها الگوریتم های کندی هستند و اگر راه حلی ارائه دهید که دارای پیچیدگی زمانی درجه دوم باشد، به احتمال زیاد مصاحبه کننده از شما می خواهد که آن را بهبود ببخشید و آن را به سطح O(n) یا O(logN) قابل قبول پایین بیاورید.
به عنوان مثال، حلقه های تو در تو که در آن هر تکرار یک عملیات خطی را انجام می دهد، مانند مرتب سازی حباب یا مرتب سازی انتخاب.
در اینجا چگونه به نظر می رسد در نمودار:
6. O(2^n) — پیچیدگی زمانی نمایی
اینها دوباره کندترین الگوریتم ها هستند و تقریباً همیشه نامطلوب هستند. الگوریتم هایی با پیچیدگی زمانی O(2^n) دارای زمان اجرا هستند که با هر عنصر ورودی اضافی دو برابر می شود.
برای جلوگیری از محاسبه مجدد همان داده ها، می توانید عملکرد چنین الگوریتم هایی را با استفاده از حافظه پنهان و به خاطر سپردن بهبود بخشید.
به عنوان مثال، الگوریتم های بازگشتی با ضریب انشعاب 2، مانند راه حل بازگشتی ساده برای دنباله فیبوناچی.
در اینجا چگونه به نظر می رسد در نمودار:
7. O(n!) — پیچیدگی زمانی فاکتوریل
الگوریتم های علوم کامپیوتر با O(n!) پیچیدگی زمانی یک زمان اجرا دارد که به صورت فاکتوریال با اندازه ورودی رشد می کند. اینها نیز در دسته الگوریتم های کند و نامطلوب قرار می گیرند.
اگر راه حل شما دارای پیچیدگی زمانی فاکتوریل است، آماده باشید تا آن را بهبود ببخشید زیرا مصاحبه کننده در بیشتر موارد آن را نمی پذیرد، مگر اینکه مشکل بسیار پیچیده آن باشد و این تنها راه حل ممکن باشد.
الگوریتم های Brute Force که همه را تولید می کند جایگشت یا ترکیبی از یک مجموعه نمونه ای از الگوریتم های پیچیدگی زمانی فاکتوریل است.
در اینجا چگونه در نمودار به نظر می رسد:
8. O(n^c) — پیچیدگی زمانی چند جمله ای
الگوریتمهای با پیچیدگی زمانی O(n^c) دارای یک زمان اجرا هستند که به صورت چندجملهای با اندازه ورودی رشد میکند، جایی که c یک ثابت است.
این کندترین الگوریتم و همچنین آخرین نماد Big(O) ضروری است که یک توسعه دهنده باید بداند.
به عنوان مثال، الگوریتم های ضرب ماتریسی مانند الگوریتم Strassen دارای پیچیدگی زمانی چند جمله ای هستند.
در اینجا یک نمودار با تمام نمادهای Big(O) با توجه به زمان وجود دارد، می توانید ببینید که چگونه اوضاع از O(1) به O(2^n) بدتر می شود.
بهترین منابع مصاحبه کدنویسی
و، در اینجا لیستی از بهترین کتاب های مصاحبه کدنویسی، دوره های آنلاین و وب سایت های تمرین وجود دارد که می توانید برای آماده شدن بهتر برای مصاحبه های کدنویسی و موضوعاتی مانند DSA، طراحی سطح بالا، طراحی سطح پایین و غیره بررسی کنید.
DSA
اگر زنگ زده هستید، با سوالات اصلی مصاحبه شروع کنید:
Educative-99 – https://buff.ly/3LFG4zL (در هر دو پایتون و جاوا موجود است) 26 الگوی مصاحبه کدنویسی کلیدی را به شما آموزش می دهد.
Algomonster – http://shrsl.com/483tp (الگوهای کدنویسی + سوالات)
کور 75: lnkd.in/g5wx7QSq
آسیاب 75: lnkd.in/gvZ7_pnp
C++ STL یا مجموعههای جاوا یا کتابخانههای ساختار داده را به زبان انتخابی خود تمرین کنید – برای کدنویسی سریع ضروری است.
طراحی سطح پایین (LLD)
1. اصول طراحی: «الگوهای طراحی اول سر» (نسخه دوم را بخوانید)
مفاهیم OOP باید مانند Virtual Methods در C++ و کلاس Abstract در مقابل رابط، overload در مقابل overriding، مخفی کردن متد و غیره شفاف باشند.
3. سؤالات: طراحی سطح پایین عالی – https://github.com/ashishps1/طراحی-میزان-پایین-آشیش پراتاپ سینگاز خبرنامه AlgoMaster، من آن را به شدت به برنامه نویسان توصیه می کنم.
4. سوال را با تایمر 45 دقیقه ای تمرین کنید
5. راه حل: لیست پخش طراحی سطح پایین – lnkd.in/gkVZgK4b (اعتبار به Soumyajit Bhattacharyay)
طراحی سطح بالا (HLD)
1. کتاب ها: با جلدهای 1 و 2 الکس خو یا اشتراک آموزشی شروع کنید amazon.com/System-Design-Interview-insi…
2. ویدیوها: کانال خوب برای مفاهیم اولیه مصاحبه طراحی سیستم – lnkd.in/gfEJppS3
4. مصاحبه های ساختگی در Pramp، **tyrExponent (bit.ly/3cNF0vw **و سایر پلتفرم ها – medium.com/javarevisited/3-best-mock-in…
5. مشکلات طراحی سیستم را به سبک Leetcode در Codemia تمرین کنید – https://bit.ly/46AyaRJ
اصول CS
از ویدیوهای GateSmashers یاد گرفتیم – lnkd.in/gs6m5RQb
رفتاری
1. استفاده کنید روش STAR (موقعیت، وظیفه، اقدام، نتیجه)
2. هر بخش را مختصر نگه دارید: 4-5 جمله در هر بخش به طوری که بتوان در زمان معین در طول مصاحبه پوشش داد.
3. هم نسخه مفصل و هم یک نسخه کوتاه از پاسخ های خود را آماده کنید
نتیجه
این همه در این لیست است 8 نماد ضروری Big(O) که هر توسعه دهنده باید یاد بگیرد. درک نماد Big O به توسعه دهندگان اجازه می دهد تا کارایی و مقیاس پذیری الگوریتم های خود را به طور عینی تجزیه و تحلیل کنند.
با درک و به خاطر سپردن این نمادهای ضروری Big O، می توانید هنگام انتخاب یا طراحی الگوریتم ها، بهینه سازی عملکرد و بهبود مقیاس پذیری راه حل های نرم افزاری خود، تصمیمات آگاهانه بگیرید.
تقویت مداوم مهارت های خود در تحلیل الگوریتم و نظریه پیچیدگی بدون شک توانایی شما را برای نوشتن کد کارآمد و قوی در حوزه های مختلف توسعه نرم افزار افزایش می دهد.
جایزه
همانطور که قول داده بودید، در اینجا جایزه برای شما، یک کتاب رایگان است. من به تازگی یک کتاب رایگان جدید برای یادگیری طراحی سیستم توزیع شده پیدا کردم، همچنین می توانید آن را در اینجا در مایکروسافت بخوانید — https://info.microsoft.com/rs/157-GQE-382/images/EN-CNTNT-eBook- DesigningDistributedSystems.pdf
متشکرم
افشا: این پست شامل پیوندهای وابسته است. در صورت خرید محصولات یا خدمات از پیوندهای مختلف ارائه شده در این مقاله، ممکن است غرامت دریافت کنم.
image_credit – DesignGuru.io
سلام دوستان اگر در حال آماده شدن هستید کدگذاری مصاحبه ها سپس به غیر از طراحی سیستم، شما همچنین باید ساختارها و الگوریتم های داده را آماده کنید و چیزی که باید یاد بگیرید این است که نماد بزرگ (O)..
در علم کامپیوتر و دنیای توسعه نرم افزار، کارایی کلیدی است.
چه در حال بهینه سازی کد، طراحی الگوریتم ها یا معماری سیستم ها باشید، درک ویژگی های عملکرد الگوریتم ها و راه حل های خود بسیار مهم است.
اینجاست که نماد Big O وارد عمل می شود.
نماد O بزرگ یک نشان می دهد روشی استاندارد برای توصیف پیچیدگی زمانی و مکانی الگوریتم ها، توسعه دهندگان را قادر می سازد تا رویکردهای مختلف را به صورت کمی تحلیل و مقایسه کنند.
تقریباً در تمام مصاحبههای کدنویسی وقتی راهحل خود را ارائه میکنید، مصاحبهگر از شما در مورد پیچیدگی زمانی و مکانی الگوریتم شما سؤال میکند.
آنها همچنین می پرسند که چگونه می توانید زمان و مکان را بهبود بخشید و اینجاست که مبادله زمان و فضا نمایان می شود.
در گذشته، من چندین سوال مصاحبه طراحی سیستم مانند نحوه طراحی WhatsApp یا Facebook Messenger یا سوالات مفهومی طراحی سیستم را به اشتراک گذاشتم که تفاوت بین API Gateway در مقابل Load Balancer و Horizontal vs Vertical Scaling، Forward Proxy در مقابل Reverse Proxy.
و، در این مقاله، هشت نماد Big O ضروری را که هر توسعهدهندهای برای نوشتن کد کارآمد و مقیاسپذیر باید بداند، بررسی میکنیم.
به هر حال، اگر برای مصاحبههای کدنویسی آماده میشوید و میخواهید ساختارهای داده و الگوریتمها و طراحی سیستم را به طور عمیق یاد بگیرید، میتوانید سایتهایی مانند را نیز بررسی کنید. استاد طراحی، توان، آموزشی، و Udemy که دارای دوره های مصاحبه کدنویسی عالی هستند
و اگر عجله دارید، در اینجا یک راهنمای سریع ضروری است Big(O)
برگه تقلب نمادها برای کدنویسی مصاحبه ها از DesignGuru.io و برای اندازه گیری عملکرد الگوریتم های شما، از بهتر به بدتر:
PS تا آخر به خواندن ادامه دهید. من یک جایزه رایگان برای شما دارم.
8 نماد اصلی (O) که هر توسعهدهندهای باید یاد بگیرد
بدون هیچ مقدمه ای، اجازه دهید به راهنمای نمادگذاری Big(O) ضروری برای توسعه دهندگان نرم افزار بپردازیم.
این برای برنامه نویسی روزانه شما و همچنین برای انجام خوب مصاحبه های کدنویسی مفید است.
1. O(1) — پیچیدگی زمان ثابت
الگوریتم هایی با پیچیدگی زمانی O(1) دارای زمان اجرا ثابت هستند، به این معنی که زمان اجرای آنها به اندازه ورودی بستگی ندارد.
این مطلوب ترین عملکرد برای هر الگوریتمی است.
به عنوان مثال، دسترسی به یک عنصر در یک آرایه توسط شاخص، انجام عملیات حسابی پایه، یا دسترسی به ویژگی یک شی، همگی زمان ثابتی هستند. O(1)
عمل.
فرقی نمی کند که آرایه شما 1 عنصر داشته باشد یا 1 میلیارد عنصر، می توانید همزمان با فهرست به آنها دسترسی داشته باشید.
در اینجا چگونه در نمودار به نظر می رسد:
2. O(log n) — پیچیدگی زمانی لگاریتمی
الگوریتم های با O(log n)
پیچیدگی زمانی دارای زمان اجرا است که با افزایش اندازه ورودی، لگاریتمی رشد می کند.
این دومین عملکرد مطلوب پس از O(1) است و اگر نمی توانید برای O(1) بهینه سازی کنید، باید سعی کنید حداقل آن را بدست آورید. O(logN)
عملکرد برای الگوریتم های شما
به عنوان مثال، الگوریتم جستجوی باینری نمونه خوبی از الگوریتم هایی با پیچیدگی زمانی لگاریتمی است. در این حالت فضای ورودی بارها و بارها به نصف تقسیم می شود.
در اینجا پیچیدگی لگاریتمی چگونه به نظر می رسد
3. O(n) — پیچیدگی زمانی خطی
الگوریتم ها با O(n)
پیچیدگی زمانی یک زمان اجرا دارد که به صورت خطی با اندازه ورودی رشد می کند. به این معنی که با افزایش داده های شما، عملکرد الگوریتم های شما به همان نسبت کاهش می یابد.
بیشتر الگوریتمها در این دسته قرار میگیرند، مانند الگوریتمهای جستجوی خطی و عملیاتهای مختلف لیست پیوندی مانند پیمایش یک لیست پیوندی یا یافتن طول لیست پیوندی.
به عنوان مثال، تکرار از طریق یک آرایه یا لیست برای انجام یک عملیات خاص بر روی هر عنصر، نمونه ای از پیچیدگی زمان خط است. با افزایش تعداد عناصر، زمان تکرار نیز به همان نسبت افزایش می یابد.
اینجاست چگونه نمودار پیچیدگی زمان لاینر شبیه:
4. O(n log n) — پیچیدگی زمانی خطی
الگوریتم ها با O(n log n)
پیچیدگی زمانی دارای زمان اجرا است که به نسبت n برابر لگاریتم n رشد می کند.
این بدتر از الگوریتمهای زمان خطی به دلیل ضریب ثبت اضافی است.
برای مثال، الگوریتمهای مرتبسازی کارآمد مانند ادغام مرتبسازی، مرتبسازی سریع و دستهبندی پیچیدگی زمانی O(nlogn) دارند.
در اینجا چگونه در نمودار به نظر می رسد:
5. O(n²) — پیچیدگی زمانی درجه دوم
الگوریتم های با O(n²)
پیچیدگی زمانی دارای زمان اجرا است که با اندازه ورودی به طور درجه دوم افزایش می یابد.
اینها الگوریتم های کندی هستند و اگر راه حلی ارائه دهید که دارای پیچیدگی زمانی درجه دوم باشد، به احتمال زیاد مصاحبه کننده از شما می خواهد که آن را بهبود ببخشید و آن را به سطح O(n) یا O(logN) قابل قبول پایین بیاورید.
به عنوان مثال، حلقه های تو در تو که در آن هر تکرار یک عملیات خطی را انجام می دهد، مانند مرتب سازی حباب یا مرتب سازی انتخاب.
در اینجا چگونه به نظر می رسد در نمودار:
6. O(2^n) — پیچیدگی زمانی نمایی
اینها دوباره کندترین الگوریتم ها هستند و تقریباً همیشه نامطلوب هستند. الگوریتم هایی با پیچیدگی زمانی O(2^n) دارای زمان اجرا هستند که با هر عنصر ورودی اضافی دو برابر می شود.
برای جلوگیری از محاسبه مجدد همان داده ها، می توانید عملکرد چنین الگوریتم هایی را با استفاده از حافظه پنهان و به خاطر سپردن بهبود بخشید.
به عنوان مثال، الگوریتم های بازگشتی با ضریب انشعاب 2، مانند راه حل بازگشتی ساده برای دنباله فیبوناچی.
در اینجا چگونه به نظر می رسد در نمودار:
7. O(n!) — پیچیدگی زمانی فاکتوریل
الگوریتم های علوم کامپیوتر با O(n!)
پیچیدگی زمانی یک زمان اجرا دارد که به صورت فاکتوریال با اندازه ورودی رشد می کند. اینها نیز در دسته الگوریتم های کند و نامطلوب قرار می گیرند.
اگر راه حل شما دارای پیچیدگی زمانی فاکتوریل است، آماده باشید تا آن را بهبود ببخشید زیرا مصاحبه کننده در بیشتر موارد آن را نمی پذیرد، مگر اینکه مشکل بسیار پیچیده آن باشد و این تنها راه حل ممکن باشد.
الگوریتم های Brute Force که همه را تولید می کند جایگشت یا ترکیبی از یک مجموعه نمونه ای از الگوریتم های پیچیدگی زمانی فاکتوریل است.
در اینجا چگونه در نمودار به نظر می رسد:
8. O(n^c) — پیچیدگی زمانی چند جمله ای
الگوریتمهای با پیچیدگی زمانی O(n^c) دارای یک زمان اجرا هستند که به صورت چندجملهای با اندازه ورودی رشد میکند، جایی که c یک ثابت است.
این کندترین الگوریتم و همچنین آخرین نماد Big(O) ضروری است که یک توسعه دهنده باید بداند.
به عنوان مثال، الگوریتم های ضرب ماتریسی مانند الگوریتم Strassen دارای پیچیدگی زمانی چند جمله ای هستند.
در اینجا یک نمودار با تمام نمادهای Big(O) با توجه به زمان وجود دارد، می توانید ببینید که چگونه اوضاع از O(1) به O(2^n) بدتر می شود.
بهترین منابع مصاحبه کدنویسی
و، در اینجا لیستی از بهترین کتاب های مصاحبه کدنویسی، دوره های آنلاین و وب سایت های تمرین وجود دارد که می توانید برای آماده شدن بهتر برای مصاحبه های کدنویسی و موضوعاتی مانند DSA، طراحی سطح بالا، طراحی سطح پایین و غیره بررسی کنید.
DSA
اگر زنگ زده هستید، با سوالات اصلی مصاحبه شروع کنید:
-
Educative-99 – https://buff.ly/3LFG4zL (در هر دو پایتون و جاوا موجود است) 26 الگوی مصاحبه کدنویسی کلیدی را به شما آموزش می دهد.
-
Algomonster – http://shrsl.com/483tp (الگوهای کدنویسی + سوالات)
-
کور 75: lnkd.in/g5wx7QSq
-
آسیاب 75: lnkd.in/gvZ7_pnp
-
C++ STL یا مجموعههای جاوا یا کتابخانههای ساختار داده را به زبان انتخابی خود تمرین کنید – برای کدنویسی سریع ضروری است.
طراحی سطح پایین (LLD)
1. اصول طراحی: «الگوهای طراحی اول سر» (نسخه دوم را بخوانید)
- مفاهیم OOP باید مانند Virtual Methods در C++ و کلاس Abstract در مقابل رابط، overload در مقابل overriding، مخفی کردن متد و غیره شفاف باشند.
3. سؤالات: طراحی سطح پایین عالی – https://github.com/ashishps1/طراحی-میزان-پایین-آشیش پراتاپ سینگ
از خبرنامه AlgoMaster، من آن را به شدت به برنامه نویسان توصیه می کنم.
4. سوال را با تایمر 45 دقیقه ای تمرین کنید
5. راه حل: لیست پخش طراحی سطح پایین – lnkd.in/gkVZgK4b (اعتبار به Soumyajit Bhattacharyay)
طراحی سطح بالا (HLD)
1. کتاب ها: با جلدهای 1 و 2 الکس خو یا اشتراک آموزشی شروع کنید amazon.com/System-Design-Interview-insi…
2. ویدیوها: کانال خوب برای مفاهیم اولیه مصاحبه طراحی سیستم – lnkd.in/gfEJppS3
4. مصاحبه های ساختگی در Pramp، **tyrExponent (bit.ly/3cNF0vw **و سایر پلتفرم ها – medium.com/javarevisited/3-best-mock-in…
5. مشکلات طراحی سیستم را به سبک Leetcode در Codemia تمرین کنید – https://bit.ly/46AyaRJ
اصول CS
از ویدیوهای GateSmashers یاد گرفتیم – lnkd.in/gs6m5RQb
رفتاری
1. استفاده کنید روش STAR (موقعیت، وظیفه، اقدام، نتیجه)
2. هر بخش را مختصر نگه دارید: 4-5 جمله در هر بخش به طوری که بتوان در زمان معین در طول مصاحبه پوشش داد.
3. هم نسخه مفصل و هم یک نسخه کوتاه از پاسخ های خود را آماده کنید
نتیجه
این همه در این لیست است 8 نماد ضروری Big(O) که هر توسعه دهنده باید یاد بگیرد. درک نماد Big O به توسعه دهندگان اجازه می دهد تا کارایی و مقیاس پذیری الگوریتم های خود را به طور عینی تجزیه و تحلیل کنند.
با درک و به خاطر سپردن این نمادهای ضروری Big O، می توانید هنگام انتخاب یا طراحی الگوریتم ها، بهینه سازی عملکرد و بهبود مقیاس پذیری راه حل های نرم افزاری خود، تصمیمات آگاهانه بگیرید.
تقویت مداوم مهارت های خود در تحلیل الگوریتم و نظریه پیچیدگی بدون شک توانایی شما را برای نوشتن کد کارآمد و قوی در حوزه های مختلف توسعه نرم افزار افزایش می دهد.
جایزه
همانطور که قول داده بودید، در اینجا جایزه برای شما، یک کتاب رایگان است. من به تازگی یک کتاب رایگان جدید برای یادگیری طراحی سیستم توزیع شده پیدا کردم، همچنین می توانید آن را در اینجا در مایکروسافت بخوانید — https://info.microsoft.com/rs/157-GQE-382/images/EN-CNTNT-eBook- DesigningDistributedSystems.pdf
متشکرم