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

database/sql и транзакции

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом вопросе верен только один вариант. После завершения вы увидите общий результат и результаты по 6 тематическим шкалам с объяснениями и практическими рекомендациями.
Вопрос 1 из 30
На ревью разбирают тему «Пул соединений с базой». Каков наблюдаемый результат этого кода?
GoПул соединений с базой: результат выполнения
// Фрагмент для трассировки.
package main
import("database/sql";"time")
func tune(db *sql.DB){db.SetMaxOpenConns(20);db.SetMaxIdleConns(10);db.SetConnMaxLifetime(30*time.Minute)}
func main(){}
Вопрос 2 из 30
В разделе «Пул соединений с базой» показан конкретный случай. Какое изменение лучше всего укрепит контракт этого фрагмента?
GoПул соединений с базой: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("database/sql";"time")
func tune(db *sql.DB){db.SetMaxOpenConns(20);db.SetMaxIdleConns(10);db.SetConnMaxLifetime(30*time.Minute)}
func main(){}
Вопрос 3 из 30
Команда проверяет решение по теме «Пул соединений с базой». Какое утверждение точнее всего описывает действующую гарантию?
GoПул соединений с базой: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("database/sql";"time")
func tune(db *sql.DB){db.SetMaxOpenConns(20);db.SetMaxIdleConns(10);db.SetConnMaxLifetime(30*time.Minute)}
func main(){}
Вопрос 4 из 30
Перед публикацией кода по теме «Пул соединений с базой» нужно уточнить контракт. Что может изменить вывод при небольшом изменении условий?
Вопрос 5 из 30
В рабочем примере по теме «Пул соединений с базой» важно отделить гарантию от догадки. Как решение влияет на читаемость и надёжность?
Вопрос 6 из 30
В разделе «Параметры» показан конкретный случай. Что увидит вызывающий код после выполнения?
GoПараметры: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"database/sql")
func find(ctx context.Context,db *sql.DB,name string)error{return db.QueryRowContext(ctx,"SELECT id FROM users WHERE name = ?",name).Scan(new(int))}
func main(){}
Вопрос 7 из 30
Команда проверяет решение по теме «Параметры». Как подготовить этот код к реальному использованию?
GoПараметры: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"database/sql")
func find(ctx context.Context,db *sql.DB,name string)error{return db.QueryRowContext(ctx,"SELECT id FROM users WHERE name = ?",name).Scan(new(int))}
func main(){}
Вопрос 8 из 30
Перед публикацией кода по теме «Параметры» нужно уточнить контракт. Какой контракт определяет результат показанного кода?
GoПараметры: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"database/sql")
func find(ctx context.Context,db *sql.DB,name string)error{return db.QueryRowContext(ctx,"SELECT id FROM users WHERE name = ?",name).Scan(new(int))}
func main(){}
Вопрос 9 из 30
В рабочем примере по теме «Параметры» важно отделить гарантию от догадки. Какое допущение здесь чаще всего оказывается ложным?
Вопрос 10 из 30
Фрагмент относится к теме «Параметры». Какое замечание о цене решения будет точным?
Вопрос 11 из 30
Команда проверяет решение по теме «Транзакции». Что гарантированно произойдёт в показанной последовательности операций?
GoТранзакции: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"database/sql")
func run(ctx context.Context,db *sql.DB)error{tx,err:=db.BeginTx(ctx,nil);if err!=nil{return err};defer tx.Rollback();if _,err=tx.ExecContext(ctx,"UPDATE t SET n=n+1");err!=nil{return err};return tx.Commit()}
func main(){}
Вопрос 12 из 30
Перед публикацией кода по теме «Транзакции» нужно уточнить контракт. Какой вариант исправления соответствует обычной практике Go?
GoТранзакции: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"database/sql")
func run(ctx context.Context,db *sql.DB)error{tx,err:=db.BeginTx(ctx,nil);if err!=nil{return err};defer tx.Rollback();if _,err=tx.ExecContext(ctx,"UPDATE t SET n=n+1");err!=nil{return err};return tx.Commit()}
func main(){}
Вопрос 13 из 30
В рабочем примере по теме «Транзакции» важно отделить гарантию от догадки. Какой принцип языка объясняет результат полностью?
GoТранзакции: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"database/sql")
func run(ctx context.Context,db *sql.DB)error{tx,err:=db.BeginTx(ctx,nil);if err!=nil{return err};defer tx.Rollback();if _,err=tx.ExecContext(ctx,"UPDATE t SET n=n+1");err!=nil{return err};return tx.Commit()}
func main(){}
Вопрос 14 из 30
Фрагмент относится к теме «Транзакции». Какой предел контракта важен для вызывающего кода?
Вопрос 15 из 30
На ревью разбирают тему «Транзакции». Как решение скажется на тестировании и дальнейших изменениях?
Вопрос 16 из 30
Перед публикацией кода по теме «Закрытие rows» нужно уточнить контракт. Какое наблюдение о работе кода будет верным?
GoЗакрытие rows: результат выполнения
// Фрагмент для трассировки.
package main
import("context";"database/sql")
func list(ctx context.Context,db *sql.DB)error{rows,err:=db.QueryContext(ctx,"SELECT id FROM t");if err!=nil{return err};defer rows.Close();for rows.Next(){var id int;if err:=rows.Scan(&id);err!=nil{return err}};return rows.Err()}
func main(){}
Вопрос 17 из 30
В рабочем примере по теме «Закрытие rows» важно отделить гарантию от догадки. Какую правку разумнее внести до объединения изменений?
GoЗакрытие rows: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import("context";"database/sql")
func list(ctx context.Context,db *sql.DB)error{rows,err:=db.QueryContext(ctx,"SELECT id FROM t");if err!=nil{return err};defer rows.Close();for rows.Next(){var id int;if err:=rows.Scan(&id);err!=nil{return err}};return rows.Err()}
func main(){}
Вопрос 18 из 30
Фрагмент относится к теме «Закрытие rows». Какое правило Go непосредственно объясняет поведение фрагмента?
GoЗакрытие rows: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import("context";"database/sql")
func list(ctx context.Context,db *sql.DB)error{rows,err:=db.QueryContext(ctx,"SELECT id FROM t");if err!=nil{return err};defer rows.Close();for rows.Next(){var id int;if err:=rows.Scan(&id);err!=nil{return err}};return rows.Err()}
func main(){}
Вопрос 19 из 30
На ревью разбирают тему «Закрытие rows». Где заканчивается гарантия показанного приёма?
Вопрос 20 из 30
В разделе «Закрытие rows» показан конкретный случай. Когда этот приём помогает, а когда начинает мешать?
Вопрос 21 из 30
В рабочем примере по теме «Тестирование и наблюдаемость» важно отделить гарантию от догадки. Каков наблюдаемый результат этого кода?
GoТестирование и наблюдаемость: результат выполнения
// Фрагмент для трассировки.
package sample
// Псевдокод ожиданий: Begin -> Exec OK -> Exec error -> Rollback.
func main(){}
Вопрос 22 из 30
Фрагмент относится к теме «Тестирование и наблюдаемость». Какое изменение лучше всего укрепит контракт этого фрагмента?
GoТестирование и наблюдаемость: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package sample
// Псевдокод ожиданий: Begin -> Exec OK -> Exec error -> Rollback.
func main(){}
Вопрос 23 из 30
На ревью разбирают тему «Тестирование и наблюдаемость». Какое утверждение точнее всего описывает действующую гарантию?
GoТестирование и наблюдаемость: проверка контракта
// Определите правило Go, которое объясняет результат.
package sample
// Псевдокод ожиданий: Begin -> Exec OK -> Exec error -> Rollback.
func main(){}
Вопрос 24 из 30
В разделе «Тестирование и наблюдаемость» показан конкретный случай. Что может изменить вывод при небольшом изменении условий?
Вопрос 25 из 30
Команда проверяет решение по теме «Тестирование и наблюдаемость». Как решение влияет на читаемость и надёжность?
Вопрос 26 из 30
Фрагмент относится к теме «Конкурентность и эксплуатация». Что увидит вызывающий код после выполнения?
GoКонкурентность и эксплуатация: результат выполнения
// Фрагмент для трассировки.
package main
import "database/sql"
func stats(db *sql.DB)(int,int64){s:=db.Stats();return s.InUse,s.WaitCount}
func main(){}
Вопрос 27 из 30
На ревью разбирают тему «Конкурентность и эксплуатация». Как подготовить этот код к реальному использованию?
GoКонкурентность и эксплуатация: фрагмент на ревью
// Фрагмент из ревью: требуется выбрать безопасную правку.
package main
import "database/sql"
func stats(db *sql.DB)(int,int64){s:=db.Stats();return s.InUse,s.WaitCount}
func main(){}
Вопрос 28 из 30
В разделе «Конкурентность и эксплуатация» показан конкретный случай. Какой контракт определяет результат показанного кода?
GoКонкурентность и эксплуатация: проверка контракта
// Определите правило Go, которое объясняет результат.
package main
import "database/sql"
func stats(db *sql.DB)(int,int64){s:=db.Stats();return s.InUse,s.WaitCount}
func main(){}
Вопрос 29 из 30
Команда проверяет решение по теме «Конкурентность и эксплуатация». Какое допущение здесь чаще всего оказывается ложным?
Вопрос 30 из 30
Перед публикацией кода по теме «Конкурентность и эксплуатация» нужно уточнить контракт. Какое замечание о цене решения будет точным?

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

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

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

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