.NET

.NET Design Patterns

Singleton, Factory, Builder, Strategy, Decorator, Repository, Unit of Work, SOLID

24 คำถามสัมภาษณ์·
Senior
1

ปัญหาหลักของ Singleton pattern ใน .NET สมัยใหม่ที่ใช้ Dependency Injection คืออะไร?

คำตอบ

Singleton pattern แบบดั้งเดิม (static instance) ขัดแย้งกับ dependency injection เพราะสร้างการผูกมัดที่แน่นเกินไปและทำให้การทดสอบยาก ใน .NET สมัยใหม่ ควรใช้ service lifetime แบบ 'Singleton' ผ่าน DI (services.AddSingleton) ซึ่งให้การรับประกัน instance เดียวเหมือนกันพร้อมทั้งรองรับ injection, mocking และความสามารถในการทดสอบ ส่วน Singleton แบบ static จะข้าม DI container และสร้างการพึ่งพาที่ซ่อนอยู่

2

ในรูปแบบ Factory Method ความแตกต่างระหว่าง Factory Method และ Abstract Factory ใน .NET คืออะไร?

คำตอบ

Factory Method กำหนดเมธอดแบบ virtual เพื่อสร้างอ็อบเจกต์ชนิดเดียว (เช่น CreateLogger) โดยให้ subclass เป็นผู้ตัดสินใจว่าจะสร้างอินสแตนซ์ของคลาสรูปธรรมใด ส่วน Abstract Factory กำหนด interface เพื่อสร้างกลุ่มของอ็อบเจกต์ที่เกี่ยวข้องกัน (เช่น IUIFactory ที่มี CreateButton, CreateTextBox) ทำให้สามารถสร้างผลิตภัณฑ์หลายตัวที่สอดคล้องกันพร้อมกันได้ Factory Method มุ่งเน้นที่ผลิตภัณฑ์เดียวด้วย polymorphism ในขณะที่ Abstract Factory จัดการผลิตภัณฑ์หลายตัวจากตระกูลเดียวกัน

3

ข้อได้เปรียบหลักของ Builder pattern ใน .NET สำหรับการสร้างอ็อบเจกต์ที่ซับซ้อนซึ่งมีพารามิเตอร์ทางเลือกจำนวนมากคืออะไร?

คำตอบ

Builder pattern หลีกเลี่ยง telescoping constructor (overload หลายตัวที่มีการผสมพารามิเตอร์ต่างกัน) ด้วยการมี interface แบบ fluent เพื่อสร้างอ็อบเจกต์ทีละขั้นตอน ทำให้สามารถสร้างอ็อบเจกต์ที่ซับซ้อนซึ่งมีพารามิเตอร์ทางเลือกได้อย่างอ่านง่ายและดูแลรักษาง่าย ต่างจาก constructor ที่มีพารามิเตอร์มากกว่า 10 ตัว ใน C# สมัยใหม่ init properties และ record สามารถแทนที่ Builder ได้ในกรณีง่าย ๆ แต่ Builder ยังมีประโยชน์สำหรับการตรวจสอบที่ซับซ้อนหรือการสร้างแบบหลายขั้นตอน

4

Single Responsibility Principle (SRP) ใน SOLID คืออะไร และนำไปใช้ใน .NET อย่างไร?

5

หลักการ Open/Closed (OCP) ใน SOLID คืออะไร และจะนำไปใช้กับ interface ใน .NET ได้อย่างไร?

+21 คำถามสัมภาษณ์

หัวข้อสัมภาษณ์ .NET อื่นๆ

พื้นฐาน C#

Junior
25 คำถาม

LINQ & Delegates

Junior
20 คำถาม

พื้นฐานสำคัญของภาษา C#

Junior
15 คำถาม

พื้นฐาน ASP.NET Core

Junior
18 คำถาม

วงจรชีวิตของ request ใน ASP.NET Core

Junior
20 คำถาม

Configuration & Settings

Junior
20 คำถาม

วงจรชีวิตของแอปพลิเคชัน

Junior
20 คำถาม

Dependency Injection

Mid-Level
24 คำถาม

Entity Framework Core

Mid-Level
25 คำถาม

Minimal APIs

Mid-Level
18 คำถาม

การพัฒนา Web API

Mid-Level
22 คำถาม

Async ใน ASP.NET Core

Mid-Level
20 คำถาม

Authentication & Authorization

Mid-Level
18 คำถาม

HttpClient & Networking

Mid-Level
20 คำถาม

การซีเรียลไลซ์ JSON

Mid-Level
20 คำถาม

Entity Framework Core ขั้นสูง

Mid-Level
25 คำถาม

ฟีเจอร์ขั้นสูงของ C#

Mid-Level
20 คำถาม

Clean Architecture

Mid-Level
20 คำถาม

Logging, Monitoring & Observability

Mid-Level
22 คำถาม

Unit Testing และ xUnit

Mid-Level
20 คำถาม

การทดสอบแบบบูรณาการ

Mid-Level
18 คำถาม

Docker & Containerization

Mid-Level
16 คำถาม

การจัดการแพ็กเกจ NuGet

Mid-Level
16 คำถาม

Memory Management & GC

Senior
22 คำถาม

การเขียนโปรแกรมแบบรีแอกทีฟ

Senior
24 คำถาม

Async/await และรูปแบบ

Senior
26 คำถาม

การเพิ่มประสิทธิภาพการทำงาน

Senior
22 คำถาม

ความปลอดภัยและ Best Practices

Senior
24 คำถาม

SignalR และเรียลไทม์

Senior
22 คำถาม

สถาปัตยกรรม Microservices

Senior
25 คำถาม

เชี่ยวชาญ .NET สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี