Rust

คอลเลกชัน

Vec<T>, String, HashMap, HashSet, iterator, collect, ownership กับ collections

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

เมธอดใดที่ใช้เพิ่มสมาชิกไว้ที่ท้ายของ Vec<T>?

คำตอบ

เมธอด push() เพิ่มสมาชิกไว้ที่ท้ายของเวกเตอร์ ทำให้ขนาดเพิ่มขึ้น 1 การดำเนินการนี้มีความซับซ้อนแบบเฉลี่ย O(1) เพราะเวกเตอร์อาจต้องจัดสรรหน่วยความจำใหม่หากเกินความจุ หากต้องการเพิ่มสมาชิกหลายตัว สามารถใช้ extend() หรือ append() ได้ตามความต้องการ

2

ความแตกต่างหลักระหว่าง String และ &str ใน Rust คืออะไร?

คำตอบ

String เป็นชนิดที่เป็นเจ้าของ (owned) ซึ่งเก็บไว้บน heap สามารถเปลี่ยนแปลงและปรับขนาดได้ ส่วน &str เป็นการอ้างอิงแบบไม่เปลี่ยนแปลงไปยังลำดับ UTF-8 ซึ่งมักเรียกว่า 'string slice' String เป็นเจ้าของข้อมูลของตัวเองและสามารถถูกแก้ไขได้ ในขณะที่ &str ยืมข้อมูลที่มีอยู่โดยไม่ได้เป็นเจ้าของ ความแตกต่างนี้เป็นพื้นฐานสำคัญสำหรับการจัดการหน่วยความจำใน Rust

3

จะสร้าง Vec<i32> ว่างใหม่ใน Rust ได้อย่างไร?

คำตอบ

Vec::new() สร้างเวกเตอร์ว่างโดยไม่มีการจัดสรรเริ่มต้น แมโคร vec![] ก็สามารถสร้างเวกเตอร์ว่างได้เช่นกัน แต่ Vec::new() เป็นเมธอดแบบชัดเจนมาตรฐาน ชนิดเจเนอริกสามารถอนุมานได้หรือระบุอย่างชัดเจนด้วยไวยากรณ์ turbofish Vec::<i32>::new() หรือด้วยการกำกับชนิด

4

เมธอด get() คืนค่าอะไรเมื่อเรียกบน Vec<T>?

5

ควรใช้โครงสร้างข้อมูลใดในการเชื่อมโยงคีย์กับค่าโดยมีการเข้าถึงเฉลี่ย O(1)?

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

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

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

เริ่มใช้ฟรี