Golang задачи с собеседований
4.58K subscribers
488 photos
6 videos
12 files
256 links
Задачи, тесты и теоретические вопросы по Go. Так же по gin, grpc, горутинах, архитектуре api и http стэку.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
В Go есть бенчмарки для тестирования производительности программы или функции. Но бывает, нужно узнать, что происходит на более низком уровне — на уровне ассемблерного кода. Получить ассемблерный код из исходного кода программы на Go…
Anonymous Quiz
68%
...можно с помощью команды go tool compile -S main.go.
10%
....нельзя.
23%
...можно, но только из уже скомпилированного бинарного файла.
Go славится простотой, но для некоторых базовых вещей отсутствует элегантное решение. Например, для работы со слайсами не добавлены «базовые» операции над ним.

sl := []int{1, 3, 4} n := 1 Чтобы удалить второй элемент в этом слайсе, нужно использовать
Anonymous Quiz
90%
res := append(sl[:n], sl[n+1:]...)
7%
sl.delete(n)
3%
sl[n] = nil
Когда вы компилируете программу, вам может понадобиться указать хеш коммита и ветку Git, а также версию собранной программы. Для этого в Go можно устанавливать непосредственно переменные пакета на этапе компиляции:
Anonymous Quiz
59%
go build -ldflags -X package-import-path.val=foo'
17%
это невозможно.
24%
go build package-import-path.val=foo GOOS=linux GOARCH=arm
В каком из вариантов x определена на heap?
Anonymous Quiz
32%
Вариант 1
68%
Вариант 2
Какой размер буфера по умолчанию у каналов в Go?
Anonymous Quiz
29%
nil
28%
1
43%
0
Какие символы команда go fmt использует для отступа?
Anonymous Quiz
26%
4 пробела
21%
Эту функцию можно настроить
10%
2 пробела
43%
Символ табуляции
Для тех, кто программирует на Go!

Golang-разработчиков с опытом от трех лет приглашают на Go Weekend Offer в Тинькофф. Все этапы интервью можно будет пройти за выходные. А еще вы познакомитесь с командой и спросите обо всем, что вас интересует.

В Тинькофф нет бюрократии, много интересных проектов и прозрачная система карьерного роста. А работать можно в гибридном режиме в офисах в 22 городах России или в Казахстане, Беларуси и Армении.

И главное: Go Weekend Offer состоится 3 и 4 июня. Но подать заявку надо до 31 мая. Регистрируйтесь!
25 мая в Петербурге – в оффлайн и онлайн формате – пройдет митап для всех, кто только задумывается или уже начал применять Go в коммерческой разработке. Ждем разработчиков любого уровня, лидов и команды!
 
Регистрируйтесь и приходите или смотрите трансляцию онлайн, участие бесплатное.   
 
>> To Go or not to Go (Евгений Соколов, YADRO)
Рассмотрим ключевые парадигмы программирования на Go. Узнаем, как работают горутины, планировщик, каналы и модули. И поймем, как ускорить изучение языка.
 
>> Функции, методы и интерфейсы в Gо: особенности и идиомы (Владислав Белогрудов, YADRO)
Вы узнаете, как идиоматично писать функции без побочных эффектов и когда это не работает. Заглянем под капот интерфейсов и устроим небольшие соревнования производительности.
 
>> Эффективно используем Go в команде (Геннадий Ковалев, YADRO)
Поговорим, что такое хороший код на Go с точки зрения командной разработки, и как средства языка помогут убрать лишние споры, сделать продукт тестируемым, а будущий рефакторинг — спокойным.
Какой спецификатор следует использовать с fmt.Printf, чтобы напечатать логическое значение?
Anonymous Quiz
59%
%b
18%
%t
19%
%v
3%
%s
Вакансия инженера по эксплуатации ClickHouse
  
Ozon в поисках разработчика в команду платформы баз данных, без которых не обходится ни один проект или сервис в Ozon. ∼100 инсталляций Clickhouse и несколько крупных кластеров (петабайты данных!). Важно, чтобы они работали быстро и безотказно. Поэтому нужен человек, который умеет копать вглубь и решать сложные технические вопросы. 
  
Что ждут от тебя:  
• Владеешь C++ или Golang;  
• Знаешь устройство ClickHouse, движков, индексов;  
• Работал с Git, Kubernetes, Docker, Kafka, Zookeeper, Ansible/Terraform/Helm;  
• Понимаешь внутренности Unix/Linux и инструментов отладки;  
  
Оставить отклик и рассказать о себе можно по ссылке ниже 
Откликнуться
👨🏻‍💻 Реальный вопрос от реального человека

Есть табличное тестирование функции (делал на основании туториалов с официального сайта go). Примечание: Go недавно щупаю.

Условный код:

func TestMyFunc(t *testing.T) {
testTable := []struct {
name string
input string
want error
}{
{"find_expect_nil", "data", nil},
{"not_find_expect_err", "otherdata", ErrNoData},
}

for _, test := range testTable {
test := test
t.Run(test.name, func(t *testing.T) {
t.Parallel()
err := MyFunc(test.input)

if !errors.Is(err, test.want) {
t.Errorf("input value %s, result: %s, expected: %s", test.input, err, test.want)
}
})
}
}
Так вот, у меня в массиве структур порядка 30 позиций для теста, но почему-то возникает ситуация, когда я нажимаю пройти тесты в vscode, некоторые тесты кидают в result просто что-то случайное. Например ожидается какая-то ошибка, но приходит nil, или наоборот, ожидается nil, но приходит ошибка, и третий вариант, ожидается одна ошибка, но приходит совершенна другая(!). При этом корректность функции проверена и точно должна выдавать нужный результат.

Если прожать кнопку тестирования несколько раз, то со второго-третьего раза тесты все проходят успешно и больше ошибок не возникает, пока не изменить код. Сначала я думал что дело в vscode, но go test даёт тот же самый эффект.

Пробовал ставить t.Parallel() в главную функцию, не помогает. Есть объяснение что за чародейство и какое решение может быть?

Golang задачи с собеседований