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

Интерфейсы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 4 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 20
Команда проверяет решение по теме «Неявная реализация». Как точнее всего описать выполнение фрагмента?
GoНеявная реализация: результат выполнения
// Фрагмент для трассировки.
package main
type Namer interface{ Name() string }
type File struct{}
func (File) Name() string { return "x" }
var _ Namer = File{}
func main(){}
Вопрос 2 из 20
Перед публикацией кода по теме «Неявная реализация» нужно уточнить контракт. Какая доработка делает поведение явным для вызывающего кода?
GoНеявная реализация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
type Namer interface{ Name() string }
type File struct{}
func (File) Name() string { return "x" }
var _ Namer = File{}
func main(){}
Вопрос 3 из 20
В рабочем примере по теме «Неявная реализация» важно отделить гарантию от догадки. Какое правило достаточно применить для проверки ответа?
GoНеявная реализация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
type Namer interface{ Name() string }
type File struct{}
func (File) Name() string { return "x" }
var _ Namer = File{}
func main(){}
Вопрос 4 из 20
Фрагмент относится к теме «Неявная реализация». Какой граничный случай нужно проверить отдельно?
Вопрос 5 из 20
На ревью разбирают тему «Неявная реализация». Какой инженерный компромисс здесь действительно существует?
Вопрос 6 из 20
Перед публикацией кода по теме «Пустой интерфейс» нужно уточнить контракт. Что именно произойдёт при выполнении показанного фрагмента?
GoПустой интерфейс: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ var x any = 3; _, ok := x.(int); _ = ok }
Вопрос 7 из 20
В рабочем примере по теме «Пустой интерфейс» важно отделить гарантию от догадки. Как исправить основной риск без ненужной перестройки решения?
GoПустой интерфейс: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ var x any = 3; _, ok := x.(int); _ = ok }
Вопрос 8 из 20
Фрагмент относится к теме «Пустой интерфейс». Какой принцип позволяет вывести ответ без запуска программы?
GoПустой интерфейс: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ var x any = 3; _, ok := x.(int); _ = ok }
Вопрос 9 из 20
На ревью разбирают тему «Пустой интерфейс». Какой контрпример разрушит слишком широкое толкование правила?
Вопрос 10 из 20
В разделе «Пустой интерфейс» показан конкретный случай. Что важно учесть помимо формальной корректности?
Вопрос 11 из 20
В рабочем примере по теме «Утверждение типа» важно отделить гарантию от догадки. Какое описание результата совпадает с правилами Go?
GoУтверждение типа: результат выполнения
// Фрагмент для трассировки.
package main
func main(){ var x any = "7"; n, ok := x.(int); _, _ = n, ok }
Вопрос 12 из 20
Фрагмент относится к теме «Утверждение типа». Какая правка устраняет причину, а не маскирует её проявление?
GoУтверждение типа: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
func main(){ var x any = "7"; n, ok := x.(int); _, _ = n, ok }
Вопрос 13 из 20
На ревью разбирают тему «Утверждение типа». Что именно гарантирует Go в этой ситуации?
GoУтверждение типа: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
func main(){ var x any = "7"; n, ok := x.(int); _, _ = n, ok }
Вопрос 14 из 20
В разделе «Утверждение типа» показан конкретный случай. Что нельзя автоматически переносить на похожий код?
Вопрос 15 из 20
Команда проверяет решение по теме «Утверждение типа». Как оценить этот подход для производственного кода?
Вопрос 16 из 20
Фрагмент относится к теме «Малые контракты». Какой итог можно предсказать без пробного запуска?
GoМалые контракты: результат выполнения
// Фрагмент для трассировки.
package main
import "io"
func count(r io.Reader) (int, error) {
    buf:=make([]byte,32); n,err:=r.Read(buf); return n,err
}
func main(){}
Вопрос 17 из 20
На ревью разбирают тему «Малые контракты». Как изменить решение, не ломая его исходную задачу?
GoМалые контракты: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "io"
func count(r io.Reader) (int, error) {
    buf:=make([]byte,32); n,err:=r.Read(buf); return n,err
}
func main(){}
Вопрос 18 из 20
В разделе «Малые контракты» показан конкретный случай. Какое утверждение остаётся верным на всех поддерживаемых платформах?
GoМалые контракты: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "io"
func count(r io.Reader) (int, error) {
    buf:=make([]byte,32); n,err:=r.Read(buf); return n,err
}
func main(){}
Вопрос 19 из 20
Команда проверяет решение по теме «Малые контракты». Какое условие нельзя считать выполненным по умолчанию?
Вопрос 20 из 20
Перед публикацией кода по теме «Малые контракты» нужно уточнить контракт. Какой вариант честно называет и преимущество, и издержку?

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

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

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

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