Zaymigo / Займиго
- Что такое горутина?
go/concurrency - Как работает горутина?
go/concurrency - Как управляется горутина?
go/concurrency - Какой тип памяти у горутины?
go/concurrency - Откуда выделяется стек?
go/memory-gc - За счет чего увеличивается стек?
go/memory-gc - С чем может взаимодействовать куча?
go/memory-gc - Что такое строка и руна, и чем они отличаются?
go/strings-runes - Какие программные архитектуры знаешь и по каким работал?
architecture/general - В чистой архитектуре как ты связываешь сущности между собой?
architecture/principles - С какой бд работал?
sql/general - Как устроены уровни изоляции транзакций?
sql/transactions - Как можем построить распределенную транзакцию в рамках сервиса с распределенным вычислением?
architecture/microservices - Есть две горутины, каждая из которых выполняет свою транзакцию. Каким образом можно обернуть это в одну глобальную транзакцию?
sql/transactions - Как сделать двухфазный коммит?
architecture/microservices - Что такое паттерн сага?
architecture/microservices - Есть две глобальные горутины, каждая из них запускает десять своих подгорутин, выполняющих свою бизнес логику. Как можно реализовать механизм возврата в консистентное состояние, если в одной из этих десяти подгорутин произошла ошибка?
go/concurrency - Что такое массив и слайс, и в чем они отличаются?
go/slices-arrays - Как работает append в слайсе?
go/slices-arrays - Какие существуют структуры данных в Go?
algorithms/data-structures
Задача: Что будет в принте? go/basics
Заголовок раздела «Задача: Что будет в принте? go/basics»type myError struct { code int}
func (e myError) Error() string { return fmt.Sprintf("code: %d ", e.code)}
func run() error { var e *myError if false { e = &myError{code: 123} }
return e}
func main() { err := run() if err != nil { fmt.Println("failed to run, error: ", err) } else { fmt.Println("success ") }}Задача: Что будет в принте? go/basics
Заголовок раздела «Задача: Что будет в принте? go/basics»func main() { a := 0 defer fmt.Println(a)
defer func() { a++ fmt.Println(a) }()}Задача: Что будет в принте? go/basics
Заголовок раздела «Задача: Что будет в принте? go/basics»func main() { var x []int fmt.Println(cap(x)) x = append(x, 0) fmt.Println(cap(x)) x = append(x, 1) fmt.Println(cap(x)) x = append(x, 2) fmt.Println(cap(x)) y := append(x, 3) fmt.Println(cap(x), cap(y)) z := append(x, 4) fmt.Println(cap(x), cap(y), cap(z)) fmt.Println(x, y, z)}Задача: Код отрабатывает за 1 сек. Нужно его ускорить. go/basics
Заголовок раздела «Задача: Код отрабатывает за 1 сек. Нужно его ускорить. go/basics»const numRequests = 1000
var count int
func networkRequest() { time.Sleep(time.Millisecond)
count++}
func main() { defer timer()()
for i := 0; i < numRequests; i++ { networkRequest() }}
func timer() func() { start := time.Now()
return func() { fmt.Printf("count %v took %v\n ", count, time.Since(start)) }}