GO Go  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Структуры и методы

Разбирает значения структур, методы со значимым и указательным получателем, автоматическое взятие адреса и композицию через встраивание. В тесте 20 вопросов, из них 12 требуют чтения кода, команд или диагностических фрагментов. Задания опираются на устойчивые правила современного Go; если поведение зависит от версии, это оговорено в самом вопросе.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 4 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 20
В разделе «Структуры» показан конкретный случай. Как завершится показанный фрагмент при указанных входных данных?
GoСтруктуры: результат выполнения
// Фрагмент для трассировки.
package main
import "fmt"
type Box struct{ Items []int }
func main(){ a:=Box{[]int{1}}; b:=a; b.Items[0]=7; fmt.Println(a.Items[0]) }
Вопрос 2 из 20
Команда проверяет решение по теме «Структуры». Что здесь следует изменить прежде всего?
GoСтруктуры: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "fmt"
type Box struct{ Items []int }
func main(){ a:=Box{[]int{1}}; b:=a; b.Items[0]=7; fmt.Println(a.Items[0]) }
Вопрос 3 из 20
Перед публикацией кода по теме «Структуры» нужно уточнить контракт. Какое правило отделяет верный разбор от правдоподобной догадки?
GoСтруктуры: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "fmt"
type Box struct{ Items []int }
func main(){ a:=Box{[]int{1}}; b:=a; b.Items[0]=7; fmt.Println(a.Items[0]) }
Вопрос 4 из 20
В рабочем примере по теме «Структуры» важно отделить гарантию от догадки. Какой крайний случай обязан попасть в тесты?
Вопрос 5 из 20
Фрагмент относится к теме «Структуры». Какой выбор лучше отражает баланс простоты и контроля?
Вопрос 6 из 20
Команда проверяет решение по теме «Методы значения». Как изменится состояние программы после этого фрагмента?
GoМетоды значения: результат выполнения
// Фрагмент для трассировки.
package main
type Point struct{ X int }
func (p Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 7 из 20
Перед публикацией кода по теме «Методы значения» нужно уточнить контракт. Какое замечание на ревью будет наиболее точным?
GoМетоды значения: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
type Point struct{ X int }
func (p Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 8 из 20
В рабочем примере по теме «Методы значения» важно отделить гарантию от догадки. Какое правило важнее случайных деталей конкретного запуска?
GoМетоды значения: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
type Point struct{ X int }
func (p Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 9 из 20
Фрагмент относится к теме «Методы значения». Где корректный фрагмент легко становится ошибочным?
Вопрос 10 из 20
На ревью разбирают тему «Методы значения». Что учитывать при выборе этого приёма для публичного API?
Вопрос 11 из 20
Перед публикацией кода по теме «Методы указателя» нужно уточнить контракт. Какой результат даст этот код на поддерживаемой реализации Go?
GoМетоды указателя: результат выполнения
// Фрагмент для трассировки.
package main
type Point struct{ X int }
func (p *Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 12 из 20
В рабочем примере по теме «Методы указателя» важно отделить гарантию от догадки. Что нужно поменять, чтобы граничный случай не превратился в сбой?
GoМетоды указателя: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
type Point struct{ X int }
func (p *Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 13 из 20
Фрагмент относится к теме «Методы указателя». Какое свойство конструкции определяет её поведение?
GoМетоды указателя: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
type Point struct{ X int }
func (p *Point) Move(){ p.X++ }
func main(){ p:=Point{}; p.Move(); _=p.X }
Вопрос 14 из 20
На ревью разбирают тему «Методы указателя». Что стоит проверить до переноса решения в общий компонент?
Вопрос 15 из 20
В разделе «Методы указателя» показан конкретный случай. Как точнее всего описать пользу и цену этого решения?
Вопрос 16 из 20
В рабочем примере по теме «Встраивание» важно отделить гарантию от догадки. К какому результату приводит показанная конструкция?
GoВстраивание: результат выполнения
// Фрагмент для трассировки.
package main
type User struct{}
func (User) Name() string { return "u" }
type Admin struct{ User }
func main(){ a:=Admin{}; _=a.Name() }
Вопрос 17 из 20
Фрагмент относится к теме «Встраивание». Какую правку стоит предложить на ревью, сохранив назначение кода?
GoВстраивание: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
type User struct{}
func (User) Name() string { return "u" }
type Admin struct{ User }
func main(){ a:=Admin{}; _=a.Name() }
Вопрос 18 из 20
На ревью разбирают тему «Встраивание». На какой контракт языка или стандартной библиотеки здесь нужно опереться?
GoВстраивание: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
type User struct{}
func (User) Name() string { return "u" }
type Admin struct{ User }
func main(){ a:=Admin{}; _=a.Name() }
Вопрос 19 из 20
В разделе «Встраивание» показан конкретный случай. Какое ограничение опаснее всего пропустить?
Вопрос 20 из 20
Команда проверяет решение по теме «Встраивание». Какой вывод о сопровождении решения наиболее взвешенный?

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

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

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

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