.NET

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

async/await, Task, ValueTask, ConfigureAwait, cancellation token, การทำงานแบบขนาน, deadlock

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

บทบาทหลักของคีย์เวิร์ด 'await' ในเมธอดแบบอะซิงโครนัสคืออะไร?

คำตอบ

คีย์เวิร์ด await จะระงับการทำงานของเมธอดแบบอะซิงโครนัสจนกว่า Task จะเสร็จสิ้น พร้อมทั้งปลดปล่อย thread ที่เรียกใช้ให้สามารถประมวลผลงานอื่นได้ ซึ่งช่วยหลีกเลี่ยงการบล็อก thread และปรับปรุงความสามารถในการขยายตัวของแอปพลิเคชัน ต่างจาก Task.Wait() หรือ Task.Result ที่บล็อก thread นั้น await ช่วยให้ใช้ทรัพยากร thread pool ได้อย่างมีประสิทธิภาพ

2

ทำไมจึงควรหลีกเลี่ยง async void ยกเว้นสำหรับ event handler?

คำตอบ

เมธอด async void ไม่สามารถถูก await ได้ และ exception ที่ถูกโยนภายในไม่สามารถถูกจับโดยโค้ดที่เรียกใช้ได้ ส่งผลให้แอปพลิเคชันแครช นอกจากนี้ยังไม่สามารถทำ unit test เมธอด async void ได้เพราะไม่มี Task ให้ await เหตุการณ์ event handler เป็นข้อยกเว้นเพราะถูกเรียกโดย framework และไม่สามารถคืนค่า Task ได้

3

ในกรณีการใช้งานใดที่ควรเลือกใช้ ValueTask<T> แทน Task<T>?

คำตอบ

ValueTask เป็น value type ที่หลีกเลี่ยงการจัดสรร heap เมื่อผลลัพธ์พร้อมใช้งานแบบซิงโครนัสอยู่แล้ว เช่นในกรณีของ cache ซึ่งช่วยลดภาระต่อ garbage collector ในสถานการณ์ที่ต้องการประสิทธิภาพสูง ส่วน Task จะถูกจัดสรรบน heap เสมอแม้ว่าผลลัพธ์จะเป็นแบบซิงโครนัส ให้ใช้ ValueTask เฉพาะเมื่อสามารถวัดผลการเพิ่มประสิทธิภาพได้ เพราะการใช้งานที่ไม่ถูกต้องอาจทำให้ประสิทธิภาพลดลง

4

ข้อจำกัดสำคัญใดที่ใช้กับ ValueTask<T> เมื่อเทียบกับ Task<T>?

5

วัตถุประสงค์หลักของ ConfigureAwait(false) ในไลบรารี .NET คืออะไร?

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

หัวข้อสัมภาษณ์ .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 คำถาม

.NET Design Patterns

Senior
24 คำถาม

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

Senior
22 คำถาม

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

Senior
24 คำถาม

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

Senior
22 คำถาม

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

Senior
25 คำถาม

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

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

เริ่มใช้ฟรี