RS Rust  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Сеть и ввод-вывод

Проверяет контракты ввода-вывода, потоковый TCP, буферизацию и корректную обработку частичных чтений и записей. Вопросы распределены между чтением кода, диагностикой компиляции, выбором исправления, граничными случаями и инженерными решениями. Базовый синтаксис соответствует Rust 2024 edition; задания не требуют nightly, если это прямо не сказано.

Отвечено: 0 из 30
--:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат, результаты по 6 тематическим шкалам и подробные объяснения.
Вопрос 1 из 30
Какая часть механизма «Буферы» зафиксирована тестом `std::io::`?
RustRust · Буферы
use std::io::{BufWriter, Write};
let mut out = BufWriter::new(Vec::new());
out.write_all(b"abc").unwrap();
out.flush().unwrap();
Вопрос 2 из 30
Какую регрессию должен ловить `std::io::Write`?
RustRust · Потоковый протокол TCP
use std::io::Write;
fn send(mut stream: std::net::TcpStream, bytes: &[u8]) -> std::io::Result<()> {
    stream.write_all(bytes)
}

# Отправитель: write_all(b"A"); write_all(b"BC");
# Получатель может read получить b"ABC" одним вызовом или разбить иначе.
Вопрос 3 из 30
Как убрать скрытое предусловие вокруг `sends_all_bytes_despite_partial_writes`, сохранив исходный замысел?
RustRust · Тестирование и инструменты Cargo
struct PartialWriter { max: usize, data: Vec<u8> }
// write принимает не больше max байтов за вызов.
#[test]
fn sends_all_bytes_despite_partial_writes() { /* write_all + assert data */ }
Вопрос 4 из 30
Какой риск остаётся после успешной компиляции кода по теме «Потоковый протокол TCP»?
Вопрос 5 из 30
Что Rust гарантирует при корректном использовании «Тестирование и инструменты Cargo»?
Вопрос 6 из 30
Какой результат даст этот фрагмент с `std::io::Write`?
RustRust · Потоковый протокол TCP
use std::io::Write;
fn send(mut stream: std::net::TcpStream, bytes: &[u8]) -> std::io::Result<()> {
    stream.write_all(bytes)
}
Вопрос 7 из 30
Что можно считать доказанным после успешного выполнения `Chunky`?
RustRust · Read и Write
struct Chunky { data: &'static [u8] }
// Реализация Read выдаёт по одному байту; read_exact всё равно собирает 4 байта.
Вопрос 8 из 30
Какой граничный случай важнее всего учесть для механизма «Тестирование и инструменты Cargo»?
Вопрос 9 из 30
Каков конечный результат операции `std::io::Read`?
RustRust · Частичные операции
use std::io::Read;
let mut buf = [0u8; 1024];
let n = stream.read(&mut buf)?;
process(&buf[..n]);
Вопрос 10 из 30
Какое объяснение механизма «Частичные операции» не смешивает компиляцию и выполнение?
Вопрос 11 из 30
Какое правило Rust точнее всего описывает механизм «Буферы»?
Вопрос 12 из 30
Какой способ правки делает использование `std::io::` корректным и явным?
RustRust · Буферы
use std::io::{BufRead, BufReader};
let input = b"one\ntwo\n";
let mut reader = BufReader::new(&input[..]);
let mut line = String::new();
reader.read_line(&mut line).unwrap();
Вопрос 13 из 30
Какие значения останутся доступными после `std::io::`?
RustRust · Буферы
use std::io::{BufRead, BufReader};
let input = b"one\ntwo\n";
let mut reader = BufReader::new(&input[..]);
let mut line = String::new();
reader.read_line(&mut line).unwrap();
Вопрос 14 из 30
На какую часть контракта распространяется проверка `std::io::Read`?
RustRust · Безопасность и производительность
fn read_message<R: std::io::Read>(mut r: R) -> std::io::Result<Vec<u8>> {
    let len = read_u32(&mut r)? as usize;
    let mut data = vec![0; len];
    r.read_exact(&mut data)?;
    Ok(data)
}

# В журнале: declared length = 4294967295, allocation failure перед read_exact.
Вопрос 15 из 30
Как убрать источник проблемы в коде с `std::io::`?
RustRust · Read и Write
use std::io::{self, Read};
fn read_header<R: Read>(mut r: R) -> io::Result<[u8; 4]> {
    let mut buf = [0; 4];
    r.read_exact(&mut buf)?;
    Ok(buf)
}
Вопрос 16 из 30
Какое изменение окружения может повлиять на вывод о «Буферы»?
Вопрос 17 из 30
Что должно войти в отрицательный тест механизма «Частичные операции»?
Вопрос 18 из 30
Как убрать скрытое предусловие вокруг `std::io::Read`, сохранив исходный замысел?
RustRust · Частичные операции
use std::io::Read;
let mut buf = [0u8; 1024];
let n = stream.read(&mut buf)?;
process(&buf[..n]);
Вопрос 19 из 30
К какому результату приводит последовательность вокруг `std::io::Read`?
RustRust · Безопасность и производительность
fn read_message<R: std::io::Read>(mut r: R) -> std::io::Result<Vec<u8>> {
    let len = read_u32(&mut r)? as usize;
    let mut data = vec![0; len];
    r.read_exact(&mut data)?;
    Ok(data)
}
Вопрос 20 из 30
Какая реализация выражает механизм «Потоковый протокол TCP» без лишнего копирования?
RustRust · Потоковый протокол TCP
use std::io::Write;
fn send(mut stream: std::net::TcpStream, bytes: &[u8]) -> std::io::Result<()> {
    stream.write_all(bytes)
}
Вопрос 21 из 30
Что показывает `sends_all_bytes_despite_partial_writes` применительно к механизму «Тестирование и инструменты Cargo»?
RustRust · Тестирование и инструменты Cargo
struct PartialWriter { max: usize, data: Vec<u8> }
// write принимает не больше max байтов за вызов.
#[test]
fn sends_all_bytes_despite_partial_writes() { /* write_all + assert data */ }
Вопрос 22 из 30
Что должно войти в отрицательный тест механизма «Безопасность и производительность»?
Вопрос 23 из 30
Чем завершится выполнение фрагмента с `std::io::`?
RustRust · Read и Write
use std::io::{self, Read};
fn read_header<R: Read>(mut r: R) -> io::Result<[u8; 4]> {
    let mut buf = [0; 4];
    r.read_exact(&mut buf)?;
    Ok(buf)
}
Вопрос 24 из 30
Какое правило связывает типы и наблюдаемое поведение в механизме «Read и Write»?
Вопрос 25 из 30
Как изменить фрагмент с `std::io::Read`, не перенося ошибку на время выполнения?
RustRust · Безопасность и производительность
fn read_message<R: std::io::Read>(mut r: R) -> std::io::Result<Vec<u8>> {
    let len = read_u32(&mut r)? as usize;
    let mut data = vec![0; len];
    r.read_exact(&mut data)?;
    Ok(data)
}
Вопрос 26 из 30
Как правильно прочитать результат диагностического сценария `sends_all_bytes_despite_partial_writes`?
RustRust · Тестирование и инструменты Cargo
struct PartialWriter { max: usize, data: Vec<u8> }
// write принимает не больше max байтов за вызов.
#[test]
fn sends_all_bytes_despite_partial_writes() { /* write_all + assert data */ }

# cargo test sends_all_bytes_despite_partial_writes -- --exact
Вопрос 27 из 30
Какой принцип лежит в основе механизма «Потоковый протокол TCP»?
Вопрос 28 из 30
Где заканчивается гарантия обычного сценария для «Read и Write»?
Вопрос 29 из 30
Что можно считать доказанным после успешного выполнения `std::io::ErrorKind::WriteZero`?
RustRust · Частичные операции
let mut offset = 0;
while offset < data.len() {
    let n = writer.write(&data[offset..])?;
    if n == 0 { return Err(std::io::ErrorKind::WriteZero.into()); }
    offset += n;
}
Вопрос 30 из 30
Какой принцип Rust объясняет обычный сценарий для «Безопасность и производительность»?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe)

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу