Программирование на Golang (Темы 1-9) тест с ответами Синергия/МОИ/ МТИ /МОСАП

Раздел
Программирование
Тип
Просмотров
35
Покупок
0
Антиплагиат
Не указан
Размещена
6 Дек в 04:00
ВУЗ
МФПУ Синергия / Московский открытый институт (МОИ) / Московский технологический институт (МТИ) / МОСАП
Курс
Не указан
Стоимость
300 ₽
Демо-файлы   
1
jpeg
Результат 90 баллов из 100 Результат 90 баллов из 100
120 Кбайт 120 Кбайт
Файлы работы   
1
Каждая работа проверяется на плагиат, на момент публикации уникальность составляет не менее 40% по системе проверки eTXT.
pdf
Программирование на Golang (Темы 1-9) ОТВЕТЫ
904.7 Кбайт 300 ₽
Описание

ИТОГОВЫЙ ТЕСТ

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?

* Замыкание - это функция, которая ссылается на переменные из внешней области видимости, оно используется для создания функций, которые могут изменять и использовать переменные из других функций

* Замыкание - это метод, который может быть вызван только из другого метода в том же пакете, оно используется для организации кода

* Замыкание - это переменная, хранящая другие функции, оно используется для повышения производительности программы

* Замыкание - это специальный тип данных, предназначенный для хранения списков значений, оно используется для обработки данных

Список литературы

Программирование на Golang

Учебные материалы

Тема 1. Начальные шаги и основы языка Go

Тема 2. Работа с приложениями в Go

Тема 3. Функции, методы и тестирование

Тема 4. Расширенные концепции языка Go

Тема 5. Параллельное и асинхронное программирование

Тема 6. Глубокое понимание работы Go

Тема 7. Работа с данными в различных форматах

Тема 8. Веб-программирование и взаимодействие с сетью

Тема 9. Расширенные возможности

Итоговая аттестация

Итоговый тест

Вам подходит эта работа?
Похожие работы
Основы программирования
Лабораторная работа Лабораторная
7 Дек в 17:09
17 +3
0 покупок
Основы программирования
Контрольная работа Контрольная
5 Дек в 08:42
38 +1
2 покупки
Основы программирования
Курсовая работа Курсовая
4 Дек в 20:21
19 +1
0 покупок
Другие работы автора
Премиум
Педагогика
Тест Тест
16 Ноя в 20:55
167 +6
3 покупки
Премиум
Физиология
Тест Тест
1 Ноя в 12:04
121 +2
5 покупок
Премиум
Железобетонные конструкции
Тест Тест
29 Окт в 02:53
315 +5
10 покупок
Премиум
Информационные системы
Тест Тест
11 Окт в 15:24
321 +4
11 покупок
Премиум
Государственное и муниципальное управление
Тест Тест
27 Сен в 01:53
208 +4
4 покупки
Премиум
Информационные технологии
Тест Тест
28 Авг в 14:51
258 +1
5 покупок
Премиум
Информационные системы
Тест Тест
30 Июл в 12:48
469
12 покупок
Премиум
Управление персоналом
Тест Тест
27 Июл в 12:22
1 108 +2
51 покупка
Премиум
Психология
Тест Тест
25 Июн в 14:33
385 +1
1 покупка
Премиум
Спортивный менеджмент
Тест Тест
25 Июн в 08:16
301
2 покупки
Премиум
Общая психология
Тест Тест
17 Июн в 00:27
185
3 покупки
Премиум
Психология
Тест Тест
16 Июн в 23:54
157 +1
4 покупки
Премиум
Основы программирования
Тест Тест
9 Июн в 22:16
186 +1
3 покупки
Премиум
Русский язык и культура речи
Тест Тест
12 Мая в 22:40
4 998
109 покупок
Темы журнала
Показать ещё
Прямой эфир