Rust

async/await

ฟังก์ชัน async, trait Future, runtime tokio, บล็อก async, ไวยากรณ์ .await, Streams, Pin<T>, การยกเลิก, รูปแบบ executor

22 คำถามสัมภาษณ์·
Mid-Level
1

ฟังก์ชันที่ประกาศด้วยคีย์เวิร์ด async ใน Rust คืนค่าอะไร?

คำตอบ

ฟังก์ชัน async จะคืนค่าเป็น type ที่ implement trait Future โดยอัตโนมัติ คอมไพเลอร์จะแปลงเนื้อหาของฟังก์ชันให้เป็น state machine ที่ implement Future ค่าที่คืนกลับมาจะไม่ถูกคำนวณทันที แต่จะถูกคำนวณก็ต่อเมื่อ Future ถูกรอด้วย .await หรือถูกรันโดย runtime เท่านั้น

2

บทบาทหลักของ trait Future ใน Rust คืออะไร?

คำตอบ

trait Future แทนการคำนวณแบบ asynchronous ที่อาจยังไม่เสร็จสิ้น เมธอด poll ของมันช่วยให้ executor ตรวจสอบได้ว่า Future พร้อมแล้ว (Poll::Ready) หรือยังต้องรอ (Poll::Pending) นี่คือกลไกพื้นฐานของการทำงานแบบ asynchronous ใน Rust ที่ทำให้เกิดการทำงานแบบ non-blocking และมีประสิทธิภาพ

3

ทำไมจึงจำเป็นต้องมี runtime อย่าง tokio ในการรันโค้ด async ใน Rust?

คำตอบ

Rust ไม่ได้รวม runtime แบบ asynchronous ไว้ในไลบรารีมาตรฐาน เพื่อให้ภาษามีความเรียบง่ายและให้สามารถเลือก runtime ได้ตามความต้องการ runtime อย่าง tokio จะจัดเตรียม executor ที่ poll Future, scheduler สำหรับจัดการ task และ I/O แบบ asynchronous หากไม่มี runtime, Future จะไม่มีวันถูกรันเลย

4

ความแตกต่างระหว่าง async block และ async function ใน Rust คืออะไร?

5

เกิดอะไรขึ้นเมื่อใช้ .await กับ Future ใน Rust?

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

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

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

เริ่มใช้ฟรี