
Design Pattern ของ Rust
Builder pattern, newtype, RAII, typestate, pattern การจัดการ error, pattern interior mutability
1ข้อได้เปรียบหลักของ Builder pattern ใน Rust เมื่อเทียบกับ constructor ที่มีพารามิเตอร์จำนวนมากคืออะไร?
ข้อได้เปรียบหลักของ Builder pattern ใน Rust เมื่อเทียบกับ constructor ที่มีพารามิเตอร์จำนวนมากคืออะไร?
คำตอบ
Builder pattern ช่วยให้สร้างออบเจกต์ได้อย่างอ่านง่ายและยืดหยุ่นโดยการเชน method แบบ fluent ใน Rust มันหลีกเลี่ยงข้อผิดพลาดที่เกี่ยวข้องกับลำดับของพารามิเตอร์ อนุญาตให้มีค่าเริ่มต้น และทำให้โค้ดอธิบายตัวเองได้ ต่างจาก constructor ที่มี argument ตามตำแหน่งจำนวนมาก Builder ทำให้แต่ละ field ชัดเจนผ่านชื่อ method ของมัน
2ใน Newtype pattern การห่อ primitive type ไว้ใน tuple struct แก้ปัญหาอะไร?
ใน Newtype pattern การห่อ primitive type ไว้ใน tuple struct แก้ปัญหาอะไร?
คำตอบ
Newtype pattern สร้าง type ที่แตกต่างในระดับ type system ป้องกันความสับสนระหว่างค่าที่ต่างกันในเชิงความหมายแต่มี type พื้นฐานเดียวกัน ตัวอย่างเช่น UserId(u64) และ ProductId(u64) เข้ากันไม่ได้ที่ compile-time หลีกเลี่ยง bug ที่จะส่ง ID สินค้าไปในที่ที่คาดหวัง ID ผู้ใช้ pattern นี้มีต้นทุน runtime เป็นศูนย์เนื่องจากการรับประกันการแทนค่าหน่วยความจำที่เหมือนกัน
3RAII pattern รับประกันการปล่อย resource ใน Rust อย่างไร?
RAII pattern รับประกันการปล่อย resource ใน Rust อย่างไร?
คำตอบ
RAII (Resource Acquisition Is Initialization) ผูกวงจรชีวิตของ resource เข้ากับ scope ของตัวแปร ใน Rust trait Drop จะถูกเรียกโดยอัตโนมัติเมื่อค่าออกจาก scope รับประกันการปล่อย resource แบบกำหนดได้โดยไม่ต้องมี garbage collector pattern นี้เป็นพื้นฐานสำหรับไฟล์ การเชื่อมต่อเครือข่าย lock และ resource ใด ๆ ที่ต้องการการ cleanup อย่างชัดเจน
หลักการของ Typestate pattern ในการเข้ารหัสสถานะของออบเจกต์ใน type system คืออะไร?
รูปแบบการจัดการ error แบบใดที่แนะนำสำหรับการส่งต่อ error พร้อมบริบทเพิ่มเติม?
+17 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Rust อื่นๆ
พื้นฐาน Rust
Ownership & Borrowing
Structs & Enums
การจัดการข้อผิดพลาด
คอลเลกชัน
โมดูลและแพ็กเกจ
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
มาโคร
Serde และการ Serialization
Unsafe Rust
Trait ขั้นสูง
Lifetime ขั้นสูง
Type System
Tokio & Async I/O
การเพิ่มประสิทธิภาพ
Memory Management
Web Frameworks
Database Integration
เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี