طراحی سیستم سطح پایین [با رویکرد مصاحبه]
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- آماده شدن برای مصاحبههای طراحی سیستم [طراحی سطح پایین]
- یادگیری رویکردهای مختلف برای حل یک مسئله و مشخص کردن نکات کلیدی
- بحث در مورد بدهبستانها با مصاحبهکننده و استفاده از نقاط قوت خود
- بهینهسازی کد با استفاده از ساختمان دادههای بهتر، متناسب با سناریو
- کسب بینش در مورد توسعهپذیری مسئله و شروع کدنویسی با این هدف نهایی
- یادگیری حذف اطلاعات غیرضروری از تعریف مسئله، شناسایی بخشهای اصلی و ایجاد دیاگرام کلاس با آن
- یادگیری نوشتن تست کیس برای مسئله در صورت نیاز
- آشنایی با تغییرات و نیازمندیهای API برای پایداری کد
- استفاده از مواقع لزوم و ایجاد accessors and mutators مورد نظر
- یادگیری تکمیل کد در زمان مصاحبه و کسب بینش در مورد برنامههای جایگزین در شرایط اضطراری
پیشنیازهای دوره
- تسلط نسبی به یک زبان برنامهنویسی
- آشنایی با اصول برنامهنویسی شیءگرا
توضیحات دوره
مصاحبههای مهندسی نرمافزار بر مهارتهای کدنویسی و طراحی نرمافزار تمرکز دارند. این مراحل به ترتیب به عنوان مراحل «الگوریتم» و «طراحی» شناخته میشوند. مرحله الگوریتم، مهارتهای خام کدنویسی داوطلب را از طریق کاربرد ساختمان دادهها و الگوریتمهایی که عمدتاً در دوران تحصیل تمرین شدهاند، ارزیابی میکند، در حالی که مرحله طراحی، مهارتهای طراحی سیستم را میسنجد که میتواند طراحی سطح بالا ( HLD) یا طراحی سطح پایین (LLD) باشد.
طراحی سطح پایین با نامهای طراحی شیءگرا (OOD) یا تحلیل و طراحی شیءگرا (OOAD) نیز شناخته میشود. شرکتهای برتر، از کارآموزان گرفته تا مهندسان نرمافزار ارشد، حداقل یک مرحله از کل فرآیند مصاحبه را به طراحی سیستم اختصاص میدهند. برای داوطلبانی که کمتر از 3 سال تجربه دارند، طراحی سطح پایین (LLD) حیاتیترین نقش را ایفا میکند، زیرا این داوطلبان کمتجربهتر هستند و انتظار نمیرود دانش طراحی سطح بالا (HLD) داشته باشند. داوطلبانی با بیش از 3 سال تجربه معمولاً با ترکیبی از HLD و LLD در مصاحبههای طراحی سیستم روبرو میشوند.
این دوره بر جنبههای سطح پایین طراحی تمرکز دارد. تنها راه برای بهتر شدن در مصاحبهها، تمرین تعداد زیادی از مسائل مشابه است. در این دوره، بر اساس تحقیقات مدرس، لیستی از پرتکرارترین سوالات پرسیده شده در مصاحبهها گردآوری شده است. این دوره نه تنها برای مصاحبهها، بلکه برای حل مسائل عمومی و طراحی اپلیکیشن نیز مفید است.
هر مسئله به صورت جامع شکسته و مورد بحث قرار میگیرد:
- شفافسازی صورت مسئله: ابهامات برطرف شده، اصطلاحات مرتبط با مسئله توضیح داده شده و انتظارات به خوبی مشخص میشوند.
- ساخت دیاگرام کلاس: به عنوان یک نقشه راه برای کدنویسی مسئله عمل میکند.
- کدنویسی: به بهترین شکل ممکن انجام میشود تا کاربران یاد بگیرند که با رویکرد بالا به پایین به مسئله نزدیک شوند. این امر مهم است زیرا حتی با وجود دیاگرام کلاس، دانستن ترتیب ساخت کلاسها در برنامه برای یک تجربه روان ضروری است.
- بهینهسازی: در هر جا که ممکن باشد، کد بیشتر بهینهسازی میشود. بدهبستانهای مرتبط با بهینهسازی نیز مورد بحث قرار میگیرند.
- تست کیسها: در نهایت، ساخت تست کیسها نشان داده میشود تا داوطلب نسبت به نوشتن تست کیسهای خوب و تأثیر آنها بر اپلیکیشن آگاه شود.
تمام این موارد با رعایت بهترین شیوههای صنعتی انجام میشود. در مورد استفاده بهینه از زمان در طول مصاحبه نیز به طور متناوب صحبت شده و راههایی برای مقابله با شرایطی که داوطلب برای مدت طولانی در یک مسئله گیر کرده، ارائه میشود. کدنویسی به زبان C++ انجام شده اما کد تا حد زیادی مستقل از زبان است.
این دوره همچنین دارای زیرنویس انگلیسی برای تمام ویدئوها است. این زیرنویسها به صورت دستی ساخته شدهاند و خودکار نیستند. این ویژگی زمانی مفید است که دانشجو با لهجه مشکل دارد، نویز پسزمینه زیاد است، یا زمانی که میخواهید از توضیحات یادداشتهای دقیقی بردارید.
پس از گذراندن این دوره، شما:
- در جایگاه بهتری برای مواجهه با مصاحبههای LLD خواهید بود.
- میتوانید در بحثهای طراحی مربوط به چنین مسائلی شرکت کنید.
- کدهای بهتری نسبت به قبل بنویسید.
- یک چارچوب مناسب برای شکستن مسئله به قطعات کوچکتر و حل مستقل آنها خواهید داشت.
دستاورد تضمینی:
اگر تمام مسائل ارائه شده در این دوره را درک کنید، دیگر ترسی از حل سوالات LLD نخواهید داشت. سوالات درستی در مورد مسئله خواهید پرسید و برای حل هر نوع مسئله طراحی، اعتماد به نفس خواهید داشت.
این دوره برای چه کسانی مناسب است؟
- مهندسان نرمافزار
- علاقهمندان به مهندسی نرمافزار
طراحی سیستم سطح پایین [با رویکرد مصاحبه]
-
مقدمه 13:43
-
تعریف مسئله 09:12
-
بهترین پارادایم برنامهنویسی None
-
طراحی کلاس برای رزرو سفر 05:58
-
طراحی کلاس Rider که نماینده کاربر است 06:10
-
تست کد برای برآورده کردن نیازمندیها 02:55
-
#فرضیه 1: رزرو چندین سفر به طور همزمان توسط یک کاربر 04:40
-
تمرین: طراحی یک رابط برای تعامل کاربر 01:30
-
راهحل: طراحی یک رابط برای تعامل کاربر 06:56
-
تعریف مسئله 02:03
-
طراحی کلاس Room که میزبان جلسه است 05:49
-
طراحی کلاس Meeting که شامل جزئیات جلسه است 01:52
-
طراحی کلاس Scheduler 01:59
-
منطق اصلی برای زمانبندی یک جلسه 02:42
-
تست کد برای نیازمندیهای داده شده 04:10
-
تمرین: توسعه اپلیکیشن برای رزرو جلسات در روزهای مختلف 00:53
-
راهحل: توسعه اپلیکیشن برای رزرو جلسات در روزهای مختلف 03:20
-
تعریف مسئله 04:29
-
طراحی کلاس Sprint 04:42
-
طراحی کلاس Task 03:54
-
طراحی کلاس کاربر - بخش 1 05:00
-
طراحی کلاس کاربر - بخش 2 03:01
-
طراحی کلاس کاربر - بخش 3 05:26
-
تست کد برای نیازمندیهای داده شده 05:36
-
تعریف مسئله 04:45
-
طراحی جلسه بازی برای بازی 03:01
-
طراحی کلاس بازی 06:26
-
طراحی کلاس Player - بخش 1 06:52
-
طراحی کلاس Player - بخش 2 07:00
-
تست کد برای نیازمندیهای داده شده 04:37
-
تعریف مسئله 05:51
-
طراحی کلاسهای پایه برای بازی 05:00
-
طراحی کلاس Game برای مسئله 08:45
-
تست کد برای نیازمندیهای داده شده 05:25
-
تعریف مسئله 08:24
-
طراحی کلاس User 06:06
-
طراحی کلاس Expense 04:41
-
طراحی کلاس Splitwise - بخش 1 08:04
-
طراحی کلاس Splitwise - بخش 2 09:15
-
طراحی کلاس Splitwise - بخش 3 07:11
-
تست کد برای نیازمندیهای داده شده 13:06
-
بهینهسازی کد 07:53
-
پیچیدگی زمانی unordered_map در ++C None
-
تمرین: سادهسازی هزینهها 02:43
-
راهحل: سادهسازی هزینهها 08:02
-
تعریف مسئله 04:24
-
طراحی کلاس Comment 04:10
-
طراحی کلاس Post 09:05
-
طراحی کلاس User 06:53
-
تست کد برای نیازمندیهای داده شده 07:02
-
تعریف مسئله 05:36
-
طراحی کلاس Store 06:27
-
طراحی کلاس City 05:55
-
طراحی کلاس State 02:58
-
طراحی کلاس System 01:52
-
تست کد برای نیازمندیهای داده شده 05:29
-
تعریف مسئله 02:53
-
طراحی کلاس Notepad - بخش 1 06:07
-
طراحی کلاس Notepad - بخش 2 08:51
-
تست کد برای نیازمندیهای داده شده 06:03
-
تعریف مسئله 03:01
-
طراحی کلاس Employee 04:19
-
طراحی کلاس System 07:13
-
تست کد برای نیازمندیهای داده شده 04:21
-
تعریف مسئله 04:05
-
طراحی کلاس Book 03:03
-
طراحی کلاس Catalog 10:26
-
تست کد برای نیازمندیهای داده شده 04:33
-
تعریف مسئله 05:11
-
طراحی کلاس Job 03:10
-
طراحی کلاس Scheduler - بخش 1 06:30
-
طراحی کلاس Scheduler - بخش 2 06:54
-
درک تست کیسها 07:52
-
تست کد برای نیازمندیهای داده شده 02:28
مشخصات آموزش
طراحی سیستم سطح پایین [با رویکرد مصاحبه]
- تاریخ به روز رسانی: 1404/09/07
- سطح دوره:همه سطوح
- تعداد درس:74
- مدت زمان :06:36:31
- حجم :1.72GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy