مصاحبه Architecture — سطح Senior
سؤالها بر اساس دفعات تکرار در مصاحبههای واقعی مرتب شدهاند.
چکلیست آمادگی مصاحبه
هنوز هیچ سؤالی را تمرین نکردهای. حالت تمرین را شروع کن.
0 از 32 سؤال «بلد بودم» · 0 سؤال مرور شده · این پیشرفت فقط روی همین مرورگر ذخیره میشود.
32 سؤال
- 1.میکروسرویس چیست و چه مزیتی نسبت به Monolith دارد؟سبک معماریای که سیستم را به سرویسهای کوچک و مستقل تقسیم میکند؛ مزیت اصلی، امکان توسعه/استقرار/مقیاسدهی مستقل هر بخش بدون تأثیر روی بقیه است.تکرار در مصاحبهها: 80٪
- 2.Entity و Value Object در DDD چه تفاوتی دارند؟Entity هویت یکتا و پایدار در طول زمان دارد (حتی اگر مقادیرش تغییر کند)؛ Value Object فقط با مقدارش تعریف میشود و هویت مستقلی ندارد.تکرار در مصاحبهها: 75٪
- 3.CQRS چیست و چه مشکلی را حل میکند؟CQRS (Command Query Responsibility Segregation) مسیر کد خواندن و نوشتن داده را از هم جدا میکند تا هرکدام مستقل بهینهسازی و توسعه یابند.تکرار در مصاحبهها: 72٪
- 4.مهمترین چالش Microservices نسبت به یک Monolith چیست؟پیچیدگی سیستم توزیعشده: نیاز به Monitoring قوی، مدیریت Consistency داده بین سرویسها و Debug کردن درخواستهایی که از چند سرویس عبور میکنند.تکرار در مصاحبهها: 72٪
- 5.Clean Architecture چیست و جهت وابستگیها در آن چگونه است؟معماری لایهای که در آن جهت همه وابستگیها بهسمت داخل (Domain) است و لایههای بیرونی مثل دیتابیس و UI جزئیات قابل تعویض محسوب میشوند.تکرار در مصاحبهها: 71٪
- 6.MediatR در ASP.NET Core چه نقشی دارد؟یک کتابخانه که الگوی Mediator را پیاده میکند: Controller بهجای صدا زدن مستقیم سرویسها، یک Command/Query را به MediatR میفرستد و MediatR آن را به Handler مربوطه هدایت میکند.تکرار در مصاحبهها: 70٪
- 7.CQRS مخفف چیست و چه مشکلی را حل میکند؟Command Query Responsibility Segregation؛ مسیر نوشتن (Command) را از مسیر خواندن (Query) جدا میکند تا هرکدام مستقل بهینه و Scale شوند.تکرار در مصاحبهها: 70٪
- 8.تفاوت Onion Architecture و Layered Architecture سنتی چیست؟در Layered سنتی معمولاً وابستگیها رو به پایین (تا دیتابیس) جریان دارند؛ در Onion همه وابستگیها رو به داخل و بهسمت هسته Domain جریان دارند.تکرار در مصاحبهها: 68٪
- 9.Aggregate Root چیست و چرا اهمیت دارد؟ریشهٔ یک گروه از Entity/Value Objectهای مرتبط که تنها نقطهٔ مجاز برای تغییر کل گروه است؛ تضمین میکند قواعد سازگاری (Invariant) همیشه رعایت شوند.تکرار در مصاحبهها: 68٪
- 10.Aggregate Root در DDD چیست؟شیئی که مسئول حفظ Invariantهای یک گروه از Entity/Value Object مرتبط است؛ تغییرات فقط باید از طریق آن انجام شود.تکرار در مصاحبهها: 66٪
- 11.چرا شروع مستقیم یک پروژه جدید با Microservices معمولاً توصیه نمیشود؟چون در ابتدای پروژه، مرز درست سرویسها هنوز مشخص نیست و پیچیدگی زیرساخت سرعت توسعه اولیه را بهشدت کاهش میدهد.تکرار در مصاحبهها: 65٪
- 12.تفاوت Event و Command در معماری پیاممحور چیست؟Command دستوری برای انجام یک کار در آینده است (مثلاً CreateOrder)؛ Event اعلام یک اتفاق که قبلاً افتاده است (مثلاً OrderCreated).تکرار در مصاحبهها: 64٪
- 13.چرا هر میکروسرویس باید دیتابیس مستقل داشته باشد؟برای حفظ استقلال واقعی سرویسها؛ اگر چند سرویس یک دیتابیس مشترک را Join کنند، تغییر Schema یک سرویس میتواند بقیه را بشکند و استقرار مستقل عملاً غیرممکن میشود.تکرار در مصاحبهها: 62٪
- 14.چرا در Onion Architecture لایه Domain نباید مستقیماً به EF Core وابسته باشد؟چون در این صورت هسته کسبوکار به یک فناوری خاص قفل میشود و تغییر ORM یا تستنویسی بدون دیتابیس واقعی سخت میشود.تکرار در مصاحبهها: 62٪
- 15.Message Broker در Event-Driven Architecture چه نقشی دارد؟واسطهای است که رویدادها را از Producer دریافت و به Consumerهای مشترک تحویل میدهد، بدون اتصال مستقیم بین آنها.تکرار در مصاحبهها: 60٪
- 16.آیا CQRS همیشه به دو دیتابیس فیزیکی جدا برای خواندن و نوشتن نیاز دارد؟نه. میتوان با یک دیتابیس مشترک هم شروع کرد و فقط مدل Command و Query را در کد جدا نگه داشت.تکرار در مصاحبهها: 60٪
- 17.تفاوت Entity و Value Object در DDD چیست؟Entity هویت (Id) دارد و در طول زمان تغییر میکند؛ Value Object بدون هویت است و فقط با مقدارش تعریف میشود.تکرار در مصاحبهها: 60٪
- 18.هر Microservice معمولاً چه ویژگی مستقلی نسبت به سرویسهای دیگر دارد؟دیتابیس و چرخه دیپلوی مستقل خودش را دارد.تکرار در مصاحبهها: 58٪
- 19.چه زمانی نباید از معماری میکروسرویس استفاده کرد؟برای پروژههای کوچک/جدید، تیمهای کوچک، یا زمانی که مرزهای دامنه هنوز مشخص نیست — پیچیدگی عملیاتی میکروسرویس در این شرایط بیشتر از فایدهٔ آن است.تکرار در مصاحبهها: 58٪
- 20.قانون وابستگی (Dependency Rule) در Onion Architecture یعنی چه؟هر لایه فقط مجاز است به لایه داخلیتر از خودش وابسته باشد، هرگز به لایه بیرونیتر.تکرار در مصاحبهها: 58٪
- 21.Anemic Domain Model چیست و چرا در DDD نامطلوب است؟الگویی که در آن کلاسهای Entity فقط Property با Get/Set دارند و تمام منطق کسبوکار در Serviceهای بیرونی نوشته میشود.تکرار در مصاحبهها: 58٪
- 22.Port در Hexagonal Architecture چیست؟یک Interface که هسته برنامه آن را تعریف میکند تا نیازش به یک قابلیت بیرونی (دیتابیس، پیامرسان، API) را اعلام کند.تکرار در مصاحبهها: 55٪
- 23.چه زمانی استفاده از CQRS توصیه نمیشود؟برای یک CRUD ساده که نیاز واقعی به Scale مستقل خواندن/نوشتن ندارد.تکرار در مصاحبهها: 55٪
- 24.آیا CQRS همیشه به معنای دو دیتابیس جدا برای خواندن و نوشتن است؟خیر؛ این یک باور غلط رایج است. CQRS در سطح پایه فقط یعنی مسیر کد Command و Query از هم جدا باشد؛ دیتابیس جدا (همراه Event Sourcing) یک گزینهٔ پیشرفتهٔ اختیاری برای سناریوهای بسیار مقیاسپذیر است.تکرار در مصاحبهها: 55٪
- 25.Modular Monolith چه تفاوتی با یک Monolith معمولی دارد؟در Modular Monolith، کد داخل ماژولهای مستقل با مرز مشخص و Public API تقسیم شده؛ در Monolith معمولی معمولاً چنین مرزبندی رعایت نمیشود.تکرار در مصاحبهها: 54٪
- 26.تفاوت Driving Adapter و Driven Adapter چیست؟Driving Adapter برنامه را صدا میزند (مثل Controller)؛ Driven Adapter را برنامه صدا میزند (مثل Repository).تکرار در مصاحبهها: 52٪
- 27.چرا Hexagonal Architecture باعث تستپذیری بیشتر میشود؟چون هسته برنامه فقط با Interfaceها (Portها) کار میکند و در تست میتوان بهجای Adapter واقعی، یک نسخه Fake/Mock جایگزین کرد.تکرار در مصاحبهها: 50٪
- 28.چه زمانی نباید از DDD استفاده کرد؟برای برنامههای CRUD ساده بدون منطق کسبوکار پیچیده (مثل یک فرم ثبت اطلاعات ساده)، DDD فقط پیچیدگی اضافه میکند بدون فایدهٔ متناسب.تکرار در مصاحبهها: 50٪
- 29.چرا Modular Monolith را نقطه شروع امنتری نسبت به Microservices میدانند؟چون بیشتر مزیت مرزبندی تمیز Microservices را میدهد، بدون هزینههای عملیاتی سیستم توزیعشده.تکرار در مصاحبهها: 50٪
- 30.خطر اصلی زنجیرهکردن بیشازحد Eventها در Event-Driven Architecture چیست؟دنبالکردن مسیر واقعی یک عملیات در کل سیستم غیرممکن میشود — وضعیتی که به آن Distributed Monolith میگویند.تکرار در مصاحبهها: 50٪
- 31.مرز بین ماژولها در Modular Monolith چگونه حفظ میشود؟با اجازهندادن به ماژولهای دیگر برای دسترسی مستقیم به کلاسهای داخلی یک ماژول؛ ارتباط فقط از طریق Interface یا رویداد داخلفرایندی مجاز است.تکرار در مصاحبهها: 45٪
- 32.چطور بین معماریهای مختلف (Layered، Clean، Microservices) برای یک پروژه انتخاب میکنید؟بر اساس اندازهٔ تیم، پیچیدگی دامنه، نیاز به مقیاسپذیری مستقل و بلوغ عملیاتی تیم تصمیم میگیرم، نه بر اساس ترند.تکرار در مصاحبهها: 25٪
