Перейти к содержимому

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
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 ")
}
}
func main() {
a := 0
defer fmt.Println(a)
defer func() {
a++
fmt.Println(a)
}()
}
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)
}
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))
}
}