Assignment Help logo
Trò Chuyện Trực Tuyến

Loading...

Score %0 (0 correct0 incorrect20 unanswered)

Câu hỏi 1: Loại ép kiểu nào giữ nguyên giá trị toán học trong mọi trường hợp?

  • i64 như i32
  • usize như u64
  • i32 như i64
  • f64 như f32

Câu hỏi 2: Dấu thẳng đứng đại diện cho điều gì ở đây?

str::thread::spawn(|| {
    println!("LinkedIn");
});
  • một closure
  • một luồng
  • một tương lai
  • một khối

tham khảo

Câu hỏi 3: Lựa chọn nào không phải là loại dữ liệu scalar?

  • số nguyên
  • số thực
  • boolean
  • tuple

Câu hỏi 4: _ không thể được giải hủy.

  • Traits
  • Tuples
  • Enums
  • Structs

tham khảo

Câu hỏi 5: Lệnh cargo nào kiểm tra một chương trình để tìm lỗi mà không tạo ra một tập tin nhị phân thực thi?

  • cargo --version
  • cargo init
  • cargo build
  • cargo check

Câu hỏi 6: Thuật ngữ box và các cụm từ liên quan như boxing a value thường được sử dụng khi liên quan đến bố cục bộ nhớ. Box đề cập đến điều gì?

  • Đó là tạo một con trỏ trên bộ nhớ heap trỏ đến một giá trị trên ngăn xếp.
  • Đó là tạo một con trỏ trên ngăn xếp trỏ đến một giá trị trên heap.
  • Đó là tạo một bảo vệ bộ nhớ xung quanh các giá trị để ngăn truy cập trái phép.
  • Đó là một trừu tượng tham chiếu đến quyền sở hữu. Giá trị "Boxed" được gán nhãn rõ ràng.

Câu hỏi 7: Cách viết thay thế nào cho slice tạo ra kết quả giống nhau?

...
let s = String::form("hello");
let slice = &s[0..2];
  • let slice = &s[len + 2];
  • let slice = &s[len - 2];
  • let slice = &s.copy(0..2);
  • let slice = &s[..2];

Câu hỏi 8: Sử dụng toán tử ? ở cuối một biểu thức tương đương với _.

  • một mẫu phù hợp phân nhánh thành True hoặc False
  • gọi ok_error()
  • gọi panic!()
  • một mẫu phù hợp có thể dẫn đến việc trả về sớm

Câu hỏi 9: Cú pháp nào hợp lệ cho việc xác định một mảng giá trị i32?

  • Array<i32>::with_capacity(10)
  • [i32]
  • Array<i32>::new(10)
  • [i32; 10]

Câu hỏi 10: Cú pháp nào cần thiết để lấy một tham chiếu có thể thay đổi đến T, khi được sử dụng trong một đối số hàm?

fn increment(i: T) {
    // body elided
}
  • *mut T
  • mut ref T
  • mut &T
  • &mut T

Câu hỏi 11: Các con trỏ thông minh Rc và Arc cung cấp đếm tham chiếu. API nào được sử dụng để tăng số lượng tham chiếu?

  • .add()
  • .incr()
  • .clone()
  • .increment()

tham khảo

Câu hỏi 12: Điều gì xảy ra khi một lỗi xảy ra và được xử lý bằng toán tử dấu chấm hỏi (?)?

  • Lỗi được báo cáo và việc thực thi tiếp tục.
  • Một ngoại lệ được khởi lên. Hiệu ứng của ngoại lệ được xác định bởi macro error!.
  • Chương trình ngưng ngay lập tức.
  • Rust cố gắng chuyển đổi lỗi thành loại lỗi của hàm cục bộ và trả về nó như Result::Err. Nếu thất bại, chương trình sẽ ngưng.

Câu hỏi 13: Cú pháp nhận xét nào không hợp lệ?

  • /*
  • #
  • //!
  • //

Câu hỏi 14: Trong mẫu phù hợp, các giá trị được bỏ qua với _.

  • .ignore()
  • an underscore (_)
  • ..
  • skip

Câu hỏi 15: Xác định một _ đòi hỏi một tham số thờ

i gian tồn tại.

  • hàm kết thúc thời gian tồn tại của một trong các đối số của nó
  • struct chứa một tham chiếu đến một giá trị
  • hàm có đối số thông thường
  • struct chứa một tham chiếu đến một giá trị đã được đóng hộp

Tham khảo sách Rust

Câu hỏi 16: Ví dụ nào sử dụng chính xác API Entry của std::collections::HashMap để điền vào số đếm?

use std::collections::HashMap;
fn main() {
    let mut counts = HashMap::new();
    let text = "LinkedIn Learning";
    for c in text.chars() {
        // Complete this block
    }
    println!("{:?}", counts);
}
  • ­
for c in text.chars() {
    if let Some(count) = &mut counts.get(&c) {
        counts.insert(c, *count + 1);
    } else {
        counts.insert(c, 1);
    };
}
  • ­
for c in text.chars() {
    let count = counts.entry(c).or_insert(0);
    *count += 1;
}
  • ­
for c in text.chars() {
    let count = counts.entry(c);
    *count += 1;
}
  • ­
for c in text.chars() {
    counts.entry(c).or_insert(0).map(|x| x + 1);
}

tham khảo

Câu hỏi 17: Đoạn nào không gây ra phân bổ bộ nhớ trong khi ghi vào một "tệp" (đại diện bằng một Vec<u8>)?

use std::collections::HashMap;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut v = Vec::<u8>::new();

    let a = "LinkedIn";
    let b = 123;
    let c = '🧀';

    // replace this line

    println!("{:?}", v);

    Ok(())
}
  • :
write!(&mut v, "{}{}{}", a, b, c)?;
  • :
v.write(a)?;
v.write(b)?;
v.write(c)?;
  • :
v.write(a, b, c)?;
  • :
v.write_all(a.as_bytes())?;
v.write_all(&b.to_string().as_bytes())?;
c.encode_utf8(&mut v);
  1. Được trả lời trong diễn đàn người dùng rust
  2. tham khảo

Câu hỏi 18: Hàm main có biên dịch không? Nếu có, tại sao? Nếu không, bạn cần thay đổi gì?

fn main() {
    let Some(x) = some_option_value;
}
  • Mã không biên dịch. Tuyên bố let đòi hỏi một mẫu có thể bác bỏ. Thêm if trước let.
  • Mã biên dịch. Tuyên bố let đôi khi yêu cầu một mẫu có thể bác bỏ.
  • Mã không biên dịch. Tuyên bố let yêu cầu một mẫu không thể bác bỏ. Thêm if trước let.
  • Mã biên dịch. Tuyên bố let không yêu cầu một mẫu có thể bác bỏ.

Câu hỏi 19: Tuyên bố nào về tuổi thọ là sai?

  • Tuổi thọ đã được chỉ định dư thừa trong các phiên bản trước của Rust.
  • Tuổi thọ được chỉ định khi một struct giữ một tham chiếu đến một giá trị.
  • Tuổi thọ được chỉ định khi một số giá trị phải tồn tại lâu hơn các giá trị khác.
  • Tuổi thọ luôn được suy luận bởi trình biên dịch.

Câu hỏi 20: Khi được sử dụng như một loại kết quả, loại Rust nào có vai trò tương tự như None của Python, null của JavaScript, hoặc loại void trong C/C++?

  • !
  • None
  • Null
  • ()