Rust

Smart Pointers

Box<T>, Rc<T>, Arc<T>, RefCell<T>, interior mutability, trait Deref และ Drop

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

กรณีการใช้งานหลักของ Box<T> ใน Rust คืออะไร?

คำตอบ

Box<T> จัดสรรข้อมูลบน heap แทนที่จะเป็น stack ซึ่งมีประโยชน์สำหรับชนิดข้อมูลที่ไม่ทราบขนาดในเวลาคอมไพล์ (ชนิดแบบเรียกซ้ำ) สำหรับการโอน ownership ของข้อมูลขนาดใหญ่โดยไม่ต้องคัดลอก หรือสำหรับการสร้าง trait object ตัวพอยน์เตอร์ Box เองมีขนาดคงที่บน stack

2

จะนิยามชนิดข้อมูลแบบเรียกซ้ำเช่น linked list ใน Rust ได้อย่างไร?

คำตอบ

ชนิดข้อมูลแบบเรียกซ้ำโดยตรงเช่น enum List { Cons(i32, List), Nil } จะคอมไพล์ไม่ผ่านเพราะคอมไพเลอร์ไม่สามารถระบุขนาดได้ การใช้ Box<List> จะสร้าง indirection ที่มีขนาดคงที่ (พอยน์เตอร์) ทำให้คอมไพเลอร์สามารถคำนวณขนาดของชนิดข้อมูลได้

3

ความแตกต่างหลักระหว่าง Rc<T> และ Arc<T> คืออะไร?

คำตอบ

Rc (Reference Counted) ใช้ตัวนับการอ้างอิงแบบไม่ใช่ atomic ทำให้มีประสิทธิภาพมากกว่าแต่จำกัดอยู่ที่เธรดเดียว ส่วน Arc (Atomically Reference Counted) ใช้การดำเนินการแบบ atomic สำหรับตัวนับ ทำให้สามารถแชร์ระหว่างเธรดได้แต่มี overhead ด้านประสิทธิภาพเล็กน้อย

4

trait Deref ใน Rust ทำให้สามารถทำอะไรได้?

5

Interior mutability (ความสามารถในการเปลี่ยนแปลงภายใน) ใน Rust คืออะไร?

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

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

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

เริ่มใช้ฟรี