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

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
加入频道
👨🏻‍💻 Легкую задачку вам в ленту

Напишите функцию, которая принимает строку, а возвращает ее перевернутый вариант (слова в обратном порядке).

Пример входных параметров
a = "hello world"
Ожидается на выходе
"world hello"


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

Ответ в следующем посте👇
👆Ответ к легкой задачке

package main

import (
"bufio"
"os"
)

func Reverse(a string) string {
// великолепный код тут
}

func main() {
inputFile, err := os.Open(os.Getenv("INPUT_FILE"))
checkError(err)
defer inputFile.Close()

inputFileScanner := bufio.NewScanner(inputFile)
inputFileScanner.Split(bufio.ScanLines)

inputFileScanner.Scan()
b:= inputFileScanner.Text()
err1 := inputFileScanner.Err()
checkError(err1)

result := Reverse(b)

outputFile, err := os.OpenFile(os.Getenv("OUTPUT_FILE"), os.O_WRONLY, os.ModePerm)
checkError(err)
defer outputFile.Close()

_, err = outputFile.WriteString(result)
checkError(err)
}

func checkError(err error) {
if err != nil {
panic(err)
}
}

Golang задачи с собеседований
В Go можно задавать «дедлайны». С помощью таких лимитов по времени можно ограничивать время работы основного потока или горутины.

Как думаете, где допущена опечатка?
Anonymous Quiz
9%
вместо "context.WithDeadline" должно быть "context.Deadline".
77%
вместо "ctx.Dead()" должно быть "ctx.Done()".
14%
вместо "context.WithDeadline" должно быть "context.WithCancel".
Какой json мы получим из этих слайсов?
Anonymous Quiz
57%
... aa: "null"; bb: "[]"
15%
... aa: ""; bb: ""
28%
... aa: "[]"; bb: "[]"
Почти во всех языках есть конструкция «return», которая призвана вернуть контекст выполнения из функции/процедуры — то, что мы привыкли считать «возвращаемым значением». В Golang для возврата значения тоже можно воспользоваться «return», но в отличие от других языков значение или имя переменной указывать не обязательно. Можно деклалировать имя или имена переменных при объявлении, а после необходимых операций в функции просто написать return и значения данных будут возвращены из функции.

А ещё в Go есть способ обмануть этот механизм возврата значений. Как?

Golang задачи с собеседований
Какой вариант подойдет, чтоб обмануть этот механизм возврата значений?
Anonymous Quiz
15%
Вариант 1
62%
Вариант 2
23%
Вариант 3
В Go есть привычные массивы, но есть и другое понятие — слайс байт. Слайсы аналогичны массивами в других языках программирования, но со своими особенностями. Строка в Go — это тоже слайс байт. А вот для работы с одним символом используется тип…
Anonymous Quiz
10%
...char.
85%
...rune.
4%
...string.
Разработка_и_анализ_компьютерных_алгоритмов.pdf
33.8 MB
📔 Title: Разработка и анализ компьютерных алгоритмов

#book #algorithm #RU

🌐 Lang.: Russian
🧔 Author: Альфред В. Ахо, Джон Э. Хопкрофт, Джеффри Д. Ульман
🕘 Year: 2021
📑 Pages: 544
#️⃣ ISBN: 978-0-201-00029-0

📝 Description: В этой монографии, ставшей классикой, излагаются результаты теоретических и прикладных исследований по построению и анализу эффективных вычислительных алгоритмов. Рассмотрены задачи поиска, сортировки массивов, умножения целых чисел, умножения матриц, алгоритмы на графах, а также основы теории сложности. Книга предназначены для специалистов по компьютерным наукам и программистов, а также будет полезна студентам и аспирантам, специализирующимся в области информатики.

@bzd_channel
Jeff_Gothelf,_Josh_Seiden_Lean_UX_Creating_Great_Products_with_Agile.pdf
7.1 MB
📔 Title: Lean UX

#book #UX #design #EN

🌐 Lang.: English
🧔 Author: Jeff Gothelf, Josh Seiden
🕘 Year: 2021
📑 Pages: 286
#️⃣ ISBN: 9781449311650

📝 Description: Lean UX - синоним современного дизайна и разработки продуктов. Сочетая качественный дизайн, гибкие методы работы и сильное деловое чутье, дизайнеры, менеджеры по продуктам и разработчики по всему миру делают Lean UX ведущим подходом для цифровых продуктов сегодня.

@bzd_channel
Creating_Augmented_and_Virtual_Realities_Theory_and_Practice_for.pdf
64.5 MB
📔 Title: Creating Augmented and Virtual Realities: Theory and Practice for Next-Generation Spatial Computing

#book #AR #VR #EN

🌐 Lang.: English
🧔 Author: Erin Pangilinan, Steve Lukas, Vasanth Mohan
🕘 Year: 2019
📑 Pages: 372
#️⃣ ISBN: 978-1-492-04419-2

📝 Description: Разработчикам, которые хотят войти в область разработки приложений с виртуальной и дополненной реальностью, на сегодня предоставляется уйма возможностей начать изучать работу в этой сфере. В данной книге авторы показывают процесс разработки AR и VR приложений и предоставляют практические упражнения, которые помогут отточить ваши навыки.

@bzd_channel
В Go есть бенчмарки для тестирования производительности программы или функции. Бывает недостаточно иметь код программы на языке Go, и нужно узнать, что происходит на уровне ассемблерного кода. Получить ассемблерный код из исходного кода программы на Go...
Anonymous Quiz
62%
...можно с помощью команды go tool compile -S main.go.
11%
....нельзя.
27%
...можно, но только из уже скомпилированного бинарного файла.
В Go для некоторых базовых вещей отсутствует элегантное решение. Например, для работы со слайсами не добавлены «базовые» операции над ним.

sl := []int{1, 3, 4} n := 1 Поэтому, чтобы удалить второй элемент в этом слайсе, нужно использоваться код…
Anonymous Quiz
86%
res := append(sl[:n], sl[n+1:]...)
9%
sl.delete(n)
5%
sl[n] = nil
При компиляции программы, может понадобиться зафиксировать некоторую информацию в итоговом бинарном файле. Например указать хеш коммита и ветку Git, или версию собранной программы. Для этого в Go можно устанавливать переменные пакета на этапе компиляции:
Anonymous Quiz
62%
go build -ldflags -X package-import-path.val=foo'
11%
это невозможно.
27%
go build package-import-path.val=foo GOOS=linux GOARCH=arm
Компилятор Go может производить escape analysis, чтобы определить, будут ли данные размещены на heap. Для этого используется флаг -m: go tool compile -m main.go.

В каком из вариантов x определена на heap?
Anonymous Quiz
33%
func foo() int { x := new(int) return *x}
67%
func bar() *int { x := new(int) return x}
Apress_Pro_Go_The_Complete_Guide_to_Programming_Reliable_and_Efficient.pdf
17.1 MB
📔 Title: Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang

#book #Golang #EN

🌐 Lang.: English
🧔 Author: Adam Freeman
🕘 Year: 2022
📑 Pages: 1105
#️⃣ ISBN: 978-1-4842-7354-8

📝 Description: Автор бестселлеров Адам Фриман объясняет, как получить максимальную отдачу от Go, начиная с основ и заканчивая самыми продвинутыми и сложными функциями языка. Вы узнаете, как Go строит простую и согласованную систему типов для создания комплексной и продуктивной разработки, позволяющей создавать быстрые и надежные приложения, работающие на разных платформах.

@bzd_channel