
คอลเลกชัน
Vec<T>, String, HashMap, HashSet, iterator, collect, ownership กับ collections
1เมธอดใดที่ใช้เพิ่มสมาชิกไว้ที่ท้ายของ Vec<T>?
เมธอดใดที่ใช้เพิ่มสมาชิกไว้ที่ท้ายของ Vec<T>?
คำตอบ
เมธอด push() เพิ่มสมาชิกไว้ที่ท้ายของเวกเตอร์ ทำให้ขนาดเพิ่มขึ้น 1 การดำเนินการนี้มีความซับซ้อนแบบเฉลี่ย O(1) เพราะเวกเตอร์อาจต้องจัดสรรหน่วยความจำใหม่หากเกินความจุ หากต้องการเพิ่มสมาชิกหลายตัว สามารถใช้ extend() หรือ append() ได้ตามความต้องการ
2ความแตกต่างหลักระหว่าง String และ &str ใน Rust คืออะไร?
ความแตกต่างหลักระหว่าง String และ &str ใน Rust คืออะไร?
คำตอบ
String เป็นชนิดที่เป็นเจ้าของ (owned) ซึ่งเก็บไว้บน heap สามารถเปลี่ยนแปลงและปรับขนาดได้ ส่วน &str เป็นการอ้างอิงแบบไม่เปลี่ยนแปลงไปยังลำดับ UTF-8 ซึ่งมักเรียกว่า 'string slice' String เป็นเจ้าของข้อมูลของตัวเองและสามารถถูกแก้ไขได้ ในขณะที่ &str ยืมข้อมูลที่มีอยู่โดยไม่ได้เป็นเจ้าของ ความแตกต่างนี้เป็นพื้นฐานสำคัญสำหรับการจัดการหน่วยความจำใน Rust
3จะสร้าง Vec<i32> ว่างใหม่ใน Rust ได้อย่างไร?
จะสร้าง Vec<i32> ว่างใหม่ใน Rust ได้อย่างไร?
คำตอบ
Vec::new() สร้างเวกเตอร์ว่างโดยไม่มีการจัดสรรเริ่มต้น แมโคร vec![] ก็สามารถสร้างเวกเตอร์ว่างได้เช่นกัน แต่ Vec::new() เป็นเมธอดแบบชัดเจนมาตรฐาน ชนิดเจเนอริกสามารถอนุมานได้หรือระบุอย่างชัดเจนด้วยไวยากรณ์ turbofish Vec::<i32>::new() หรือด้วยการกำกับชนิด
เมธอด get() คืนค่าอะไรเมื่อเรียกบน Vec<T>?
ควรใช้โครงสร้างข้อมูลใดในการเชื่อมโยงคีย์กับค่าโดยมีการเข้าถึงเฉลี่ย O(1)?
+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
Design Pattern ของ Rust
เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี