Rust

Design Pattern ของ Rust

Builder pattern, newtype, RAII, typestate, pattern การจัดการ error, pattern interior mutability

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

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

คำตอบ

Builder pattern ช่วยให้สร้างออบเจกต์ได้อย่างอ่านง่ายและยืดหยุ่นโดยการเชน method แบบ fluent ใน Rust มันหลีกเลี่ยงข้อผิดพลาดที่เกี่ยวข้องกับลำดับของพารามิเตอร์ อนุญาตให้มีค่าเริ่มต้น และทำให้โค้ดอธิบายตัวเองได้ ต่างจาก constructor ที่มี argument ตามตำแหน่งจำนวนมาก Builder ทำให้แต่ละ field ชัดเจนผ่านชื่อ method ของมัน

2

ใน Newtype pattern การห่อ primitive type ไว้ใน tuple struct แก้ปัญหาอะไร?

คำตอบ

Newtype pattern สร้าง type ที่แตกต่างในระดับ type system ป้องกันความสับสนระหว่างค่าที่ต่างกันในเชิงความหมายแต่มี type พื้นฐานเดียวกัน ตัวอย่างเช่น UserId(u64) และ ProductId(u64) เข้ากันไม่ได้ที่ compile-time หลีกเลี่ยง bug ที่จะส่ง ID สินค้าไปในที่ที่คาดหวัง ID ผู้ใช้ pattern นี้มีต้นทุน runtime เป็นศูนย์เนื่องจากการรับประกันการแทนค่าหน่วยความจำที่เหมือนกัน

3

RAII pattern รับประกันการปล่อย resource ใน Rust อย่างไร?

คำตอบ

RAII (Resource Acquisition Is Initialization) ผูกวงจรชีวิตของ resource เข้ากับ scope ของตัวแปร ใน Rust trait Drop จะถูกเรียกโดยอัตโนมัติเมื่อค่าออกจาก scope รับประกันการปล่อย resource แบบกำหนดได้โดยไม่ต้องมี garbage collector pattern นี้เป็นพื้นฐานสำหรับไฟล์ การเชื่อมต่อเครือข่าย lock และ resource ใด ๆ ที่ต้องการการ cleanup อย่างชัดเจน

4

หลักการของ Typestate pattern ในการเข้ารหัสสถานะของออบเจกต์ใน type system คืออะไร?

5

รูปแบบการจัดการ error แบบใดที่แนะนำสำหรับการส่งต่อ error พร้อมบริบทเพิ่มเติม?

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

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

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

เริ่มใช้ฟรี