ИТОГОВЫЙ ТЕСТ
98 вопросов с ответами
Последний раз тест был сдан на 90 баллов из 100 "Отлично".
Год сдачи -2024.
***ВАЖНО*** Перед покупкой запустите тест и сверьте подходят ли эти ответы именно Вам***
После покупки Вы получите файл с ответами на вопросы которые указаны ниже:
1. … - это абстрактный тип данных, описывающий набор методов, которые должны быть реализованы в других типах данных; он нужен для реализации полиморфизма и абстракции в программе.
2… - это конструкция для выбора поведения в зависимости от типа переменной; используется для проверки типа переменной и выполнения соответствующих действий.
3… - это конструкция для выбора поведения в зависимости от типа переменной. Используется для проверки типа переменной и выполнения соответствующих действий.
4… - это название файла с тестами, созданного для автоматического выполнения тестирования.
5… - это стандартные статусные коды HTTP.
6… – это процесс проверки программного кода на соответствие определенным требованиям и ожидаемому поведению.
7… значений с помощью функций из пакета testing для проверки ожидаемых результатов с фактическим результатом в тесте.
8. Context (контекст) в языке программирования – это механизм для отмены операций и … задач в программе.
9. GoLand – это … разработки для Go.
10. GoLand в широком понятии – это интегрированная …(IDE) от JetBrains.
11. http. … - это функция в языке программирования Go, которая используется для выполнения HTTP GET-запроса на указанный URL.
12. http. … - это функция в языке программирования Go, которая используется для выполнения HTTP POST-запроса на указанный URL.
13. YAML – это язык программирования, используемый для написания …
14. Автодополнение кода, рефакторинг, навигация по коду – это …, предоставляемые GoLand для управления кодом.
15. Верно сопоставьте объекты кода с их назначением:
A. var cond
B. (&sync.Mutex{})
C. sync.NewCond
D. это объявление переменной
E. литерал структуры, который создает новый экземпляр структуры
F. функция из стандартной библиотеки
16. Выберите верную последовательность. Для того чтобы добавить новый пакет в проект нужно выбрать …
1 File
2 New
3 Go Module
17. Выберите верную последовательность. Для того чтобы использовать отладчик в GoLand нужно …
1 установить точку останова
2 нажать кнопку "Debug" или использовать комбинацию клавиш Shift + F9
3 следить за выполнением программы
18. Выберите верную последовательность. Значение переменной num должно быть изменено на новое значение и выведено на экран.
1 Создайте переменную num типа int и присвойте ей значение 10.
2 Создайте указатель ptr типа *int и присвойте ему адрес переменной num.
3 Измените значение переменной num, присвоив ей новое значение с использованием указателя ptr.
4 Выведите значение переменной num на экран с помощью указателя ptr.
19. Вызов переменной и дальнейший отказ от ее применения …
* запрещен
* может вызвать предупреждение компилятора
* не может вызвать предупреждение компилятора
* будет иметь значение по умолчанию
20. Для запуска простого веб-сервера на языке программирования Go, нужно использовать http. …(":8080", nil)
21. Для организации тестирования нужно использовать команду … для запуска тестов приложения перед его сборкой.
22. Для отправки ответа клиенту после обработки запроса HTTP на сервере в Go, нужно использовать:
* w.Send(response)
* w.Write(response)
* w.Body(response)
* w.Write(response)
23. Для получения параметра из запроса HTTP на сервере в Go, нужно использовать:
* r.Body
* r.URL.Query()
* r.Headers
* r.URL.Query()
24. Для того чтобы добавить дополнительные поля при декодировании YAML нужно предварительно расширить...
25. Для того чтобы закрыть канал нужно использовать …(ch)
26. Для того чтобы запустить программу в GoLand нужно нажать …
27. Для того чтобы использовать оператор select, для работы с несколькими каналами, нужно использовать select { case ˂-ch1: // do something case ˂ …// do something else }
28. Для того чтобы передать аргументы в shell команду из программы нужно использовать exec. … ("command", "arg1", "arg2")
29. Для того, чтобы объявить интерфейс в Go, используется код type MyIntarface …
30. Для того, чтобы распознать нулевое значение при декодировании JSON, нужно проверить значение на … после декодирования.
31. Для чего указывают версию модуля Go при сборке приложения?
* Внести изменения в файл конфигурации сборки
* Использовать флаг -mod=module с указанием версии
* Изменить значение переменной окружения GO_VERSION
* Добавить номер версии в имя исполняемого файла
32. Интерфейс Error - это интерфейса для … ошибок в программе.
33. Интерфейс Error - это интерфейса для … ошибок в программе.
34. Интерфейс Reader – это интерфейс для работы с …
35. Интерфейс для пользовательского типа данных в Go, реализуется путем создания …
36. Интерфейс для пользовательского типа данных в Go, реализуется путем создания …
37. Какие инструменты используются для управления зависимостями в Go?
* go mod, dep, glide
* npm, yarn, pnpm
* pip, conda, poetry
* mvn, gradle, sbt
38. Какие основные типы данных поддерживает Go?
* char, double, boolean, long
* text, number, true/false, void
* int, float64, string, bool и другие
* integer, float, text, Boolean
39. Какие преимущества, предоставляют модули Go в сравнении с GOPATH?
* Изоляция зависимостей, версионирование, повышенная безопасность
* Отсутствие необходимости в настройке окружения
* Ускоренная сборка приложений
* Поддержка автоматического масштабирования приложений
40. Каким кодом нужно воспользоваться для того, чтобы использовать цикл for range для итерации по элементам map?
* for key, value := range m { /* do something */ }
* for key := range m, value := range m[key] { /* do something */ }
* for key, value := range m, key { /* do something */ }
* for key, value := range m.keys { /* do something */ }
41. Каким кодом нужно воспользоваться для того, чтобы использовать цикл for range для итерации по элементам map?
* for key, value := range m { /* do something */ }
* for key := range m, value := range m[key] { /* do something */ }
* for key, value := range m, key { /* do something */ }
* for key, value := range m.keys { /* do something */ }
42. Каким кодом нужно воспользоваться для того, чтобы использовать цикл for range для итерации по элементам массива или слайса в Gо?
* for i, val := range arr { /* do something */ }
* for val, i := range arr { /* do something */ }
* for i, val := range arr, key { /* do something */ }
* for i := range arr, val := range arr[i] { /* do something */ }
43. Каким кодом нужно воспользоваться для того, чтобы использовать цикл for range для итерации по элементам массива или слайса в Gо?
* for i, val := range arr { /* do something */ }
* for val, i := range arr { /* do something */ }
* for i, val := range arr, key { /* do something */ }
* for i := range arr, val := range arr[i] { /* do something */ }
44. Какой код используется для объявления переменной типа map?
* var m map = make(map[keyType]valueType)
* map m = new map[keyType]valueType
* m := map[keyType]valueType{}
* var m map[keyType]valueType
45. Какой код используется для того, чтобы проверить наличие ключа в map?
* if key in m { /* do something */ }
* if m.contains(key) { /* do something */ }
* if _, ok := m[key]; ok { /* do something */ }
* if m[key]!= nil { /* do something */ }
46. Какой тип использует сборщика мусора в GO?
* Единственный тип сборщика мусора, работающий в Go.
*В Go используется сборщик мусора с поколениями, который разделяет объекты на несколько поколений и осуществляет сборку мусора для каждого из них с разной частотой.
* Сборщик мусора в Go различается только в зависимости от операционной системы.
* В Go используется несколько независимых сборщиков мусора для разных типов данных.
47. Коллекция данных различных типов; type MyStruct struct {field1 type1; field2 type2;} – это …
48. Мьютекс (mutex) в языке программирования – это …, используемый для защиты общих данных от параллельного доступа.
49. Основные протоколы, используемые для взаимодействия клиентов и серверов в веб-программировании:
A. HTTP
B. WebSocket
C. FTP
D. Передача гипертекстовых документов.
E. Двусторонний обмен данными, такой как в онлайн-играх.
F. Передача файлов любого типа.
50. Получение …, вызов методов и создание новых объектов во время выполнения программы позволяет программе динамически адаптироваться к различным условиям и требованиям, обеспечивая гибкость и расширяемость программного кода.
51. Протоколы, используемые для передачи гипертекстовых документов в вебе:
* TCP
* SMTP
* HTTPD
* HTTP
52. Расставьте в верной последовательности.
1 strconv
2 ParseInt()
3 str
4 64
53. Расставьте в верной последовательности.
1 go
2 test
3 run
4 TestName
54. Расставьте в верной последовательности. В зависимости от длительности выполнения задачи и установленного таймаута, на экран должно быть выведено сообщение о результате выполнения задачи (успешно или прервана).
1 Создайте функцию performTask, которая принимает в качестве аргумента контекст ctx типа context.Context и симулирует выполнение длительной задачи.- Внутри функции, создайте канал типа chan bool и запустите горутину, которая будет выполнять задачу в фоновом режиме.- В цикле, проверяйте состояние контекста ctx.Done(). Если контекст был отменен, прервите выполнение задачи и верните значение false через канал.- Если контекст не был отменен, продолжайте выполнение задачи.- По окончании задачи, верните значение true через канал.
2 В функции main, создайте корневой контекст ctx с помощью функции context.Background().
3 Используя функцию context.WithTimeout, создайте новый контекст ctxWithTimeout с таймаутом 3 секунды на основе корневого контекста ctx.
4 Вызовите функцию performTask передав в нее контекст ctxWithTimeout.
5 Дождитесь результатов выполнения задачи через канал и выведите соответствующее сообщение на экран, указывающее, была ли задача выполнена успешно или была прервана.
55. Расставьте в верной последовательности. В результате выполнения кода, объект типа Product должен быть декодирован из данных в формате YAML, содержащихся в переменной data.
1 Импортируйте пакет gopkg.in/yaml.v2.
2 Создайте структуру Product с полями Name и Price типа string.
3 Создайте переменную data типа []byte и присвойте ей данные в формате YAML, представляющие объект типа Product.
4 С помощью функции yaml.Unmarshal, декодируйте содержимое переменной data в объект типа Product.
56. Расставьте в верной последовательности. Значение переменной counter должно быть равно 10, так как каждая горутина инкрементирует значение переменной на 1.
1 Создайте глобальную переменную counter с типом int и присвойте ей значение 0.
2 Создайте мьютекс с помощью ключевого слова sync.Mutex.
3 Создайте функцию incrementCounter, которая будет увеличивать значение переменной counter на 1. Внутри функции используйте метод мьютекса Lock() для захвата мьютекса перед выполнением операции инкремента и метод Unlock() для освобождения мьютекса после выполнения операции.
4 Запустите 10 горутин, каждая из которых будет вызывать функцию incrementCounter одновременно.
5 Добавьте некоторую задержку (например, с помощью функции time.Sleep) после захвата мьютекса в функции incrementCounter, чтобы имитировать длительное выполнение операции инкремента.
6 Выведите на экран значение переменной counter.
57. Расставьте в верной последовательности. На экран должно быть выведено содержимое файла, которое было прочитано и записано в буфер.
1 Создайте структуру FileReader, реализующую интерфейс io.Reader.
2 В структуре FileReader, добавьте поле file типа *os.File, которое будет представлять файл для чтения.
3 В функции Read структуры FileReader, реализуйте чтение данных из файла. Используйте функцию Read из пакета os, чтобы прочитать данные из файла в буфер
4 В функции main, откройте файл на чтение с помощью функции os.Open и создайте экземпляр структуры FileReader, передав открытый файл.
5 Создайте буфер типа []byte и прочитайте данные из файла, вызвав метод Read у экземпляра структуры FileReader.
6 Выведите на экран содержимое прочитанного буфера, преобразовав его в строку с помощью функции string().
58. Расставьте в верной последовательности. На экран должно быть выведено сообщение о том, что нулевое значение Age было распознано.
1 Создайте структуру Person с полями Name типа string и Age типа int.
2 Создайте переменную jsonStr типа string и присвойте ей значение "{ "Name ": "John ", "Age ": null}".
3 Используя функцию json.Unmarshal, декодируйте переменную jsonStr в структуру Person.
4 Проверьте значение поля Age структуры Person после декодирования на равенство nil.
5 Выведите на экран сообщение, указывающее, было ли нулевое значение Age распознано.
59. Расставьте в верной последовательности. На экране должен быть выведен результат выполнения команды ls -l -a, отображающий все файлы и папки в текущем каталоге, включая скрытые.
1 Создайте программу, которая вызывает внешнюю shell команду ls с аргументами "-l" и "-a".
2 Используйте функцию exec.Command для создания команды ls с указанными аргументами.
3 Запустите команду с помощью метода Run() и проверьте результат выполнения команды.
4 Выведите на экран вывод команды ls -l -a.
60. Расставьте в верной последовательности. При правильной реализации функций, на экран должно быть выведено сообщение "Тест пройден успешно".
1 Создайте функцию addNumbers, которая принимает два целых числа в качестве аргументов и возвращает их сумму.
2 Напишите тестовую функцию testAddNumbers, которая проверяет правильность работы функции addNumbers.- В тестовой функции создайте две переменные с произвольными значениями и вызовите функцию addNumbers, передав эти значения в качестве аргументов.-Сравните возвращаемое значение функции addNumbers с ожидаемым результатом.- Если результаты совпадают, выведите на экран сообщение: "Тест пройден успешно".- Если результаты не совпадают, выведите на экран сообщение: "Тест не пройден".
3 Вызовите функцию testAddNumbers для проверки работы функции addNumbers.
61. Расставьте в верной последовательности. При успешном выполнении GET-запроса на указанный URL, на экран будет выведена полученная информация. При возникновении ошибки, будет выведено сообщение об ошибке.
1 Импортируйте пакет net/http.
2 Создайте функцию fetchData, которая принимает один аргумент - URL типа string и использует функцию http.Get() для выполнения GET-запроса на указанный URL.
3 Внутри функции fetchData обработайте ошибки, если они возникнут во время выполнения запроса. Если запрос завершится успешно, выведите на экран полученные данные с помощью fmt.Println.
4 В функции main вызовите функцию fetchData с передачей в нее URL, куда отправляется GET-запрос.
62. Расставьте части кода в верной последовательности:
1 var
2 mu
3 sync.Mutex
63. Рефлексия (reflection) в языке программирования Go – это механизм, позволяющий программе о себе и изменять свое поведение во время выполнения.
64. Синтаксис YAML позволяет использовать только … для обозначения структуры данных.
65. Создай верную последовательность из частей кода. В этой строке кода происходит декодирование строки YAML в объект структуры person с помощью функции yaml.Unmarshal.
1 err
2 yaml.Unmarshal
3 []byte(yamlString)
4 &person
66. Сопоставьте команды с их назначением.
A. go test
B. go run
C. go build
D. для запуска тестов в директории
E. для компиляции и запуска приложения
F. для компиляции приложения без его запуска
67. Сопоставьте части код а с их назначением:
A. sem
B. (chan struct{}, 2)
C. Make
D. способ объявления переменной
E. создание канала в языке программирования
F. встроенная функция, которая используется для создания объектов динамических типов данных
68. Сопоставьте части кода с их назначением:
A. name: John
B. nage: 30n
C. yamlString
D. это пара "ключ: значение" с именем
E. это пара "ключ: значение" с возрастом
F. идентификатор переменной
69. Сопоставьте части кода с их назначением:
A. Person
B. {Name: "John", Age: 30}
C. person
D. создание нового объекта
E. представление данных в формате YAML
F. объявление переменной
70. Сопоставьте часть кода и его назначение:
A. numbers
B. :=
C. []int{1, 2, 3, 4, 5}
D. имя переменной, которую мы используем для ссылки на слайс
E. оператор присваивания с объявлением переменной
F. литерал слайса, который содержит последовательность чисел
71. Сопоставьте часть кода и его назначение:
A. func main()
B. []int 1, 2, 3, 4, 5
C. numbers
D. главная функция, которая является точкой входа в программу
E. литерал слайса, который содержит последовательность чисел
F. имя переменной, которую мы используем для ссылки на слайс
72. Сопоставьте часть кода и его назначение:
A. func
B. (e *MyError)
C. Error()
D. String
E. объявление функции или метода
F. получатель метода
G. имя метода
H. возвращение строки
73. Сопоставьте часть кода и его назначение:
A. func
B. (e *MyError)
C. Error()
D. String
E. объявление функции или метода
F. получатель метода
G. имя метода
H. возвращение строки
74. Указатель в Go – это переменная, содержащая значение … другой переменной var ptr int
75. Упорядочьте этапы паники в правильной последовательности.
1 непредвиденные условия выполнения
2 критическая ошибка
3 аварийное завершение программы
76. Упорядочьте этапы паники в правильной последовательности.
1 непредвиденные условия выполнения
2 критическая ошибка
3 аварийное завершение программы
77. Условная переменная (condition variable) – это …, которое позволяет горутинам ожидать определенного состояния.
78. Установите соответствие между методами запроса HTTP и их назначением:
A. GET
B. POST
C. PUT
D. DELETE
E. Получение
F. Создание/Добавление
G. Обновление/Замена
H. Удаление
79. Что нужно для передачи функции в качестве аргумента в другую функцию?
* Использовать ключевое слово function
* Объявить параметр функции с типом функции, которую вы хотите передать
* Использовать ключевое слово callback
* Использовать ключевое слово argument
80. Что нужно использовать для того чтобы выполнить shell команду из программы?
* system.Execute("command")
* exec.Command("command").Run()
* os.Execute("command")
* shell.Run("command")
81. Что нужно использовать для того чтобы объявить переменную в Go?
* variableName = type
* var variableName type
* type variableName = value
* declare variableName type
82. Что нужно использовать для того чтобы создать новый файл и записать в него данные?
* file.Create("newfile.txt")
* os.Create("newfile.txt")
* os.OpenFile("newfile.txt", os.O_CREATE|os.O_WRONLY, 0644)
* file.Write("newfile.txt")
83. Что нужно использовать для того, чтобы отправить значение в канал?
* send(ch, value)
* ch ˂- value
* put(ch, value)
* ch.send(value)
84. Что нужно использовать для того, чтобы получить значение из канала?
* ch.receive()
* value := ˂-ch
* value := get(ch)
* value := receive(ch)
85. Что нужно использовать для того, чтобы преобразовать JSON в строку?
* json.SerializeToString(data)
* json.ToString(data)
* json.EncodeToString(data)
* json.MarshalToString(data)
86. Что нужно использовать для того, чтобы преобразовать JSON из строки в байтовый срез?
* json.Bytes(data)
* json.DecodeBytes(data)
* json.Unmarshal([]byte(data))
* []byte(data)
87. Что нужно использовать для того, чтобы проверить существование файла?
* file.Exists("filename.txt")
* os.Exists("filename.txt")
* _, err := os.Stat("filename.txt"); err == nil
* file.Check("filename.txt")
88. Что нужно сделать для замыкания?
* Определить функцию внутри другой функции и использовать переменные из внешней области
видимости
* Объявить анонимную функцию, которая ссылается на переменные из внешней области видимости
* Использовать ключевое слово closure при определении функции
* Создать структуру с методом, который изменяет внешние переменные
89. Что нужно сделать для того, чтобы добавить дополнительные поля при декодировании JSON?
* Это невозможно в стандартном пакете encoding/json.
* Использовать функцию AddField() из пакета encoding/json.
* Предварительно расширить структуру данных.
* Это делается автоматически.
90. Что такое JSON?
* JavaScript Object Notation - это язык разметки для создания веб-страниц.
* JSON - это формат передачи данных, основанный на подмножестве синтаксиса JavaScript.
* JSON - это язык программирования, разработанный компанией Oracle.
* JSON - это база данных для хранения структурированных данных.
91. Что такое горутина (goroutine) в языке программирования?
* Это тип данных для работы с многопоточностью.
* Это легковесная потоковая операция, которая выполняется независимо от других потоков.
* Это специальная функция для работы с каналами.
* Это механизм для синхронизации доступа к общим данным.
92. Что такое интерфейс в языке Go?
* Специальная структура данных для хранения ключей и значений.
* Абстрактный тип данных, описывающий набор методов; нужен для реализации полиморфизма и абстракции в программе.
* Функция, используемая для обработки пользовательского ввода.
* Спецификация, определяющая, как объекты взаимодействуют.
93. Что такое интерфейс в языке Go?
* Специальная структура данных для хранения ключей и значений.
* Абстрактный тип данных, описывающий набор методов; нужен для реализации полиморфизма и абстракции в программе.
* Функция, используемая для обработки пользовательского ввода.
* Спецификация, определяющая, как объекты взаимодействуют.
94. Что такое оператор select?
* Оператор для выбора случайного элемента из массива.
* Оператор для объединения двух каналов в один.
* Оператор, используемый для обработки нескольких каналов одновременно.
* Оператор для фильтрации данных в каналах.
95. Что такое пакет в языке Go?
* Коробка для наборов данных
* Отправление крипто шифра почтой
* Набор функций и типов данных, объединенных общей целью
* Список задач для ИИ, которые ему предстоит выполнить
96. Что такое сборка приложений в контексте Go?
* Процесс создания документации для приложения
* Процесс создания интерфейса приложения
* Процесс компиляции и линковки исходного кода в исполняемый файл
* Процесс развертывания приложения на сервере
97. Что такое функция обратного вызова (callback)?
* Функция, которая вызывается при возникновении ошибки
* Функция, передаваемая в качестве аргумента в другую функцию и вызываемая внутри нее для выполнения определенных действий
* Функция, вызываемая после завершения работы программы
* Функция, вызываемая после завершения работы другой функции
98. Что является замыканием в Go?
* Замыкание - это функция, которая ссылается на переменные из внешней области видимости, оно используется для создания функций, которые могут изменять и использовать переменные из других функций
* Замыкание - это метод, который может быть вызван только из другого метода в том же пакете, оно используется для организации кода
* Замыкание - это переменная, хранящая другие функции, оно используется для повышения производительности программы
* Замыкание - это специальный тип данных, предназначенный для хранения списков значений, оно используется для обработки данных
Учебные материалы
Тема 1. Начальные шаги и основы языка Go
Тема 2. Работа с приложениями в Go
Тема 3. Функции, методы и тестирование
Тема 4. Расширенные концепции языка Go
Тема 5. Параллельное и асинхронное программирование
Тема 6. Глубокое понимание работы Go
Тема 7. Работа с данными в различных форматах
Тема 8. Веб-программирование и взаимодействие с сетью
Тема 9. Расширенные возможности
Итоговая аттестация
Итоговый тест