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

HTTP-клиент

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
На ревью разбирают тему «HTTP-запрос». Что гарантированно произойдёт в показанной последовательности операций?
GoHTTP-запрос: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"net/http")
func main(){ ctx,cancel:=context.WithCancel(context.Background()); req,_:=http.NewRequestWithContext(ctx,http.MethodGet,"https://example.com",nil); cancel(); _,_=http.DefaultClient.Do(req) }
Вопрос 2 из 30
В разделе «HTTP-запрос» показан конкретный случай. Какой вариант исправления соответствует обычной практике Go?
GoHTTP-запрос: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"net/http")
func main(){ ctx,cancel:=context.WithCancel(context.Background()); req,_:=http.NewRequestWithContext(ctx,http.MethodGet,"https://example.com",nil); cancel(); _,_=http.DefaultClient.Do(req) }
Вопрос 3 из 30
Команда проверяет решение по теме «HTTP-запрос». Какой принцип языка объясняет результат полностью?
GoHTTP-запрос: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"net/http")
func main(){ ctx,cancel:=context.WithCancel(context.Background()); req,_:=http.NewRequestWithContext(ctx,http.MethodGet,"https://example.com",nil); cancel(); _,_=http.DefaultClient.Do(req) }
Вопрос 4 из 30
Перед публикацией кода по теме «HTTP-запрос» нужно уточнить контракт. Какой предел контракта важен для вызывающего кода?
Вопрос 5 из 30
В рабочем примере по теме «HTTP-запрос» важно отделить гарантию от догадки. Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 6 из 30
В разделе «Транспорт HTTP» показан конкретный случай. Какое наблюдение о работе кода будет верным?
GoТранспорт HTTP: результат выполнения
// Фрагмент для трассировки.
package main
import("net/http";"time")
var client=&http.Client{Transport:&http.Transport{MaxIdleConns:100,IdleConnTimeout:90*time.Second}}
func main(){ _=client }
Вопрос 7 из 30
Команда проверяет решение по теме «Транспорт HTTP». Какую правку разумнее внести до объединения изменений?
GoТранспорт HTTP: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("net/http";"time")
var client=&http.Client{Transport:&http.Transport{MaxIdleConns:100,IdleConnTimeout:90*time.Second}}
func main(){ _=client }
Вопрос 8 из 30
Перед публикацией кода по теме «Транспорт HTTP» нужно уточнить контракт. Какое правило Go непосредственно объясняет поведение фрагмента?
GoТранспорт HTTP: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("net/http";"time")
var client=&http.Client{Transport:&http.Transport{MaxIdleConns:100,IdleConnTimeout:90*time.Second}}
func main(){ _=client }
Вопрос 9 из 30
В рабочем примере по теме «Транспорт HTTP» важно отделить гарантию от догадки. Где заканчивается гарантия показанного приёма?
Вопрос 10 из 30
Фрагмент относится к теме «Транспорт HTTP». Когда этот приём помогает, а когда начинает мешать?
Вопрос 11 из 30
Команда проверяет решение по теме «Таймауты». Каков наблюдаемый результат этого кода?
GoТаймауты: результат выполнения
// Фрагмент для трассировки.
package main
import("net/http";"time")
var client=&http.Client{Timeout:2*time.Second}
func main(){ _=client }
Вопрос 12 из 30
Перед публикацией кода по теме «Таймауты» нужно уточнить контракт. Какое изменение лучше всего укрепит контракт этого фрагмента?
GoТаймауты: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("net/http";"time")
var client=&http.Client{Timeout:2*time.Second}
func main(){ _=client }
Вопрос 13 из 30
В рабочем примере по теме «Таймауты» важно отделить гарантию от догадки. Какое утверждение точнее всего описывает действующую гарантию?
GoТаймауты: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("net/http";"time")
var client=&http.Client{Timeout:2*time.Second}
func main(){ _=client }
Вопрос 14 из 30
Фрагмент относится к теме «Таймауты». Что может изменить вывод при небольшом изменении условий?
Вопрос 15 из 30
На ревью разбирают тему «Таймауты». Как решение влияет на читаемость и надёжность?
Вопрос 16 из 30
Перед публикацией кода по теме «Повторные запросы» нужно уточнить контракт. Что увидит вызывающий код после выполнения?
GoПовторные запросы: результат выполнения
// Фрагмент для трассировки.
package main
import "net/http"
func retryable(req *http.Request) bool { return req.Method==http.MethodGet || req.Method==http.MethodHead }
func main(){}
Вопрос 17 из 30
В рабочем примере по теме «Повторные запросы» важно отделить гарантию от догадки. Как подготовить этот код к реальному использованию?
GoПовторные запросы: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "net/http"
func retryable(req *http.Request) bool { return req.Method==http.MethodGet || req.Method==http.MethodHead }
func main(){}
Вопрос 18 из 30
Фрагмент относится к теме «Повторные запросы». Какой контракт определяет результат показанного кода?
GoПовторные запросы: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "net/http"
func retryable(req *http.Request) bool { return req.Method==http.MethodGet || req.Method==http.MethodHead }
func main(){}
Вопрос 19 из 30
На ревью разбирают тему «Повторные запросы». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 20 из 30
В разделе «Повторные запросы» показан конкретный случай. Какое замечание о цене решения будет точным?
Вопрос 21 из 30
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки. Что гарантированно произойдёт в показанной последовательности операций?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
import("io";"net/http";"strings";"testing")
type roundTrip func(*http.Request)(*http.Response,error)
func(f roundTrip)RoundTrip(r *http.Request)(*http.Response,error){return f(r)}
func TestClient(t *testing.T){ c:=&http.Client{Transport:roundTrip(func(*http.Request)(*http.Response,error){return &http.Response{StatusCode:200,Body:io.NopCloser(strings.NewReader("ok")),Header:make(http.Header)},nil})}; resp,err:=c.Get("http://x"); if err!=nil||resp.StatusCode!=200{t.Fatal(err)};resp.Body.Close() }
Вопрос 22 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость». Какой вариант исправления соответствует обычной практике Go?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
import("io";"net/http";"strings";"testing")
type roundTrip func(*http.Request)(*http.Response,error)
func(f roundTrip)RoundTrip(r *http.Request)(*http.Response,error){return f(r)}
func TestClient(t *testing.T){ c:=&http.Client{Transport:roundTrip(func(*http.Request)(*http.Response,error){return &http.Response{StatusCode:200,Body:io.NopCloser(strings.NewReader("ok")),Header:make(http.Header)},nil})}; resp,err:=c.Get("http://x"); if err!=nil||resp.StatusCode!=200{t.Fatal(err)};resp.Body.Close() }
Вопрос 23 из 30
На ревью разбирают тему «Тестирование и наблюдаемость». Какой принцип языка объясняет результат полностью?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
import("io";"net/http";"strings";"testing")
type roundTrip func(*http.Request)(*http.Response,error)
func(f roundTrip)RoundTrip(r *http.Request)(*http.Response,error){return f(r)}
func TestClient(t *testing.T){ c:=&http.Client{Transport:roundTrip(func(*http.Request)(*http.Response,error){return &http.Response{StatusCode:200,Body:io.NopCloser(strings.NewReader("ok")),Header:make(http.Header)},nil})}; resp,err:=c.Get("http://x"); if err!=nil||resp.StatusCode!=200{t.Fatal(err)};resp.Body.Close() }
Вопрос 24 из 30
В разделе «Тестирование и наблюдаемость» показан конкретный случай. Какой предел контракта важен для вызывающего кода?
Вопрос 25 из 30
Команда проверяет решение по теме «Тестирование и наблюдаемость». Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 26 из 30
Фрагмент относится к теме «Конкурентность и эксплуатация». Какое наблюдение о работе кода будет верным?
GoКонкурентность и эксплуатация: результат выполнения
// Фрагмент для трассировки.
package main
var slots=make(chan struct{},20)
func call(fn func()){ slots<-struct{}{}; defer func(){<-slots}(); fn() }
func main(){}
Вопрос 27 из 30
На ревью разбирают тему «Конкурентность и эксплуатация». Какую правку разумнее внести до объединения изменений?
GoКонкурентность и эксплуатация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
var slots=make(chan struct{},20)
func call(fn func()){ slots<-struct{}{}; defer func(){<-slots}(); fn() }
func main(){}
Вопрос 28 из 30
В разделе «Конкурентность и эксплуатация» показан конкретный случай. Какое правило Go непосредственно объясняет поведение фрагмента?
GoКонкурентность и эксплуатация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
var slots=make(chan struct{},20)
func call(fn func()){ slots<-struct{}{}; defer func(){<-slots}(); fn() }
func main(){}
Вопрос 29 из 30
Команда проверяет решение по теме «Конкурентность и эксплуатация». Где заканчивается гарантия показанного приёма?
Вопрос 30 из 30
Перед публикацией кода по теме «Конкурентность и эксплуатация» нужно уточнить контракт. Когда этот приём помогает, а когда начинает мешать?

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

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

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

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