Forwarded from 🤟 TechRocks: Тестирование QA
🔥6👏2😱2👍1👎1😁1
Может ли функция Go быть создана на лету и использоваться в качестве значений?
Anonymous Quiz
88%
Да
12%
Нет
👍4
Что из следующего не является булевым типом в Go?
Anonymous Quiz
3%
true
2%
false
78%
0
17%
Все вышеперечисленное.
👎5👍4😁2🍾2👏1
Что из следующего верно в отношении выражения lvalue в Go?
Anonymous Quiz
30%
Выражения, которые относятся к ячейке памяти, называются выражениями «lvalue».
11%
Значение lvalue может отображаться как в левой, так и в правой части задания.
25%
Переменные являются lvalues и поэтому могут отображаться в левой части задания.
34%
Все вышеперечисленное.
🤡15👍6
Какой вариант объявления переменной не скомпилируется?
Anonymous Quiz
18%
var p = 99
61%
var p := 99
7%
p := 99
14%
все варианты скомпилируются
👌7👍1
Ответ на «Какие есть способы достать данные из JSON?»
Тут можно либо демаршализовать (
Для всего этого используется
Тут можно либо демаршализовать (
Unmarshal
) JSON и разлить его данные в объект с фиксированной структурой. Либо можно залить данные в пустой интерфейс.Для всего этого используется
json.Unmarshal()
👍13😁6👏1
Ответ на «Что такое горутины и зачем они нужны?»
Горутина (
Они нужны, если нам параллельно требуется сделать несколько действий. Например, ваш скрипт должен опросить множество сторонних сервисов и поработать с ответом. А что делать, если некоторые из сервисов долго отвечают? Как говорится, семеро одного не ждут! Каждому по горутине, и тогда не придется ждать «отстающих».
Горутина (
goroutine
) — это функция, которая выполняется асинхронно. Чтобы запустить горутину нужно лишь написать что-то вроде этого:go someFunc(args…) {Весит одна горутина около 4кб. Так что, если у вас 4ГБ оперативной памяти, то можно одновременно запустить немало горутин 🙂
//тут действия
}()
Они нужны, если нам параллельно требуется сделать несколько действий. Например, ваш скрипт должен опросить множество сторонних сервисов и поработать с ответом. А что делать, если некоторые из сервисов долго отвечают? Как говорится, семеро одного не ждут! Каждому по горутине, и тогда не придется ждать «отстающих».
👍27
Что из следующего верно для инструкции цикла в Go?
Anonymous Quiz
19%
если условие доступно, то цикл выполняется до тех пор, пока условие истинно.
6%
если диапазон доступен, то для цикла выполняется для каждого элемента в диапазоне.
73%
оба вышеупомянутых.
2%
ни один из вышеперечисленных.
Ответ на «Расскажите об ООП в Golang»
Формально оно в Go есть, но не совсем в том виде, в каком оно есть в PHP или Java.
В Go мы создаем структуры (читайте «классы») с определенными полями (свойствами), и далее создаем «экземпляры» этих структур. Методы описываются отдельно, а не внутри структур.
Формально оно в Go есть, но не совсем в том виде, в каком оно есть в PHP или Java.
В Go мы создаем структуры (читайте «классы») с определенными полями (свойствами), и далее создаем «экземпляры» этих структур. Методы описываются отдельно, а не внутри структур.
👎25👍4
Ответ на «Если в функции есть return, обязательно ли она вернет то, что указано в return?»
Мы привыкли, что обычно, если код внутри функции добрался до return, то на выходе мы получим то, что стоит после return. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в
Мы привыкли, что обычно, если код внутри функции добрался до return, то на выходе мы получим то, что стоит после return. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в
return
.package main
import "fmt"
// Основной метод
func main() {
// функция возвращает два значения
m, d := calculator(105, 7)
fmt.Println("105 x 7 = ", m)
fmt.Println("105 / 7 = ", d)
}
// функция с именованными аргументами
func calculator(a, b int) (mul int, div int) {
defer func() {
mul = 95
div = 27
}()
// здесь простое назначение т.к. инициализация произошла выше
//функция вернет именно эти переменные
mul = a * b
div = a / b
// здесь у вас есть ключевое слово return
return 1, 2
}
Функция вернет в итоге: 95 и 27.👍21👎3😁1
В каком из следующих методов передачи параметров изменения, внесенные в параметр внутри функции, не влияют на аргумент?
Anonymous Quiz
66%
вызов по значению.
19%
вызов по ссылке
7%
оба вышеуказанные.
8%
ничего из вышеперечисленного.
💩19👍1
Что из следующего верно в отношении range в Go?
Anonymous Quiz
38%
Ключевое слово range используется для цикла для перебора элементов массива, среза, канала или карты.
6%
С массивом и срезами он возвращает индекс элемента как целое.
3%
С помощью карт он возвращает ключ следующей пары ключ-значение.
52%
Все вышеперечисленное.
👍1
🤡39🤣16👎1
Ответ на "Что такое ломтик Golang?"
В Golang сканирование срезов рассматривается как абстракция над обычными массивами. Как и массивы, они имеют индексы, длину и ссылку на другой массив. Массивы в Golang могут содержать переменные, которые могут иметь значения одного и того же типа, но их размеры не могут быть изменены динамически. В этом плане помогают ломтики.
#собеседование
В Golang сканирование срезов рассматривается как абстракция над обычными массивами. Как и массивы, они имеют индексы, длину и ссылку на другой массив. Массивы в Golang могут содержать переменные, которые могут иметь значения одного и того же типа, но их размеры не могут быть изменены динамически. В этом плане помогают ломтики.
#собеседование
🤯15🤡7😁4👍2💩2
👣 Какие есть примитивы синхронизации?
Ответ
➡️
Ответ
➡️
wait group;
➡️ mutex;
➡️ atomic;
➡️ sync map;
➡️ channel.
Что думаете?👍9
Простые трюки для экономии памяти в Golang
При меньшем объеме памяти снижаются затраты на инфраструктуру, а масштабирование становится немного проще. Несмотря на то, что Go известен тем, что не потребляет много памяти, существуют способы дополнительно уменьшить ее потребление.
PS: Прикрепленная картинка была сгенерирована нейронной сетью Midjourney по запросу "new golang logo". Мы уже заменили иконку сайта Golangify на 3й из сгенерированных логотипов.
🔷 Статья: https://golangify.com/memory-saving-slice-struct-map
При меньшем объеме памяти снижаются затраты на инфраструктуру, а масштабирование становится немного проще. Несмотря на то, что Go известен тем, что не потребляет много памяти, существуют способы дополнительно уменьшить ее потребление.
PS: Прикрепленная картинка была сгенерирована нейронной сетью Midjourney по запросу "new golang logo". Мы уже заменили иконку сайта Golangify на 3й из сгенерированных логотипов.
🔷 Статья: https://golangify.com/memory-saving-slice-struct-map
👍9👎3🔥2💩2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда Питонщик приходит в мир Golang
😁28👎10👍7🥴2
👣 Тестовое задание для Golang разработчика
Тестовое задание для кандидата на должность Golang разработчика.
Описание
Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время.
Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно!
Определение сервиса:
- язык программирования Golang.
- решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...).
Пожелания
- документирование кода;
- тесты;
- использование статического анализатора (конфигурацию положить в репозиторий).
Варианты решений можно присылать в комментарии.
❤️, если нравится такие задачи.
Тестовое задание для кандидата на должность Golang разработчика.
Описание
Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время.
Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно!
Определение сервиса:
package main
import (
"context"
"errors"
"time"
)
// ErrBlocked reports if service is blocked.
var ErrBlocked = errors.New("blocked")
// Service defines external service that can process batches of items.
type Service interface {
GetLimits() (n uint64, p time.Duration)
Process(ctx context.Context, batch Batch) error
}
// Batch is a batch of items.
type Batch []Item
// Item is some abstract item.
type Item struct{}
Требования- язык программирования Golang.
- решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...).
Пожелания
- документирование кода;
- тесты;
- использование статического анализатора (конфигурацию положить в репозиторий).
Варианты решений можно присылать в комментарии.
❤️, если нравится такие задачи.
❤48👍7🔥5💩4