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

Скала^р - 2

Актуальность: 1 кв 2026

  • Горутины и планировщик Go: базовые вопросы; go/concurrency
  • Как Go работает с IO-bound и CPU-bound задачами? go/stdlib-tooling
  • Как Go оборачивает системные вызовы? linux-os/general
  • Что делает Sysmon? devops/observability
  • Какие библиотеки для БД вы использовали? sql/general
  • Есть ли полноценный ORM в Go? sql/orm-drivers
  • Какие веб-фреймворки в Go вы использовали? go/stdlib-tooling
  • В продакшене выявлен проблемный API-эндпоинт со временем ответа 200 мс. Опишите ваш пошаговый план диагностики и оптимизации; devops/observability
  • Когда PostgreSQL не использует индекс? sql/indexes
  • Как оптимизировать тяжелые JOIN/CTE? sql/query-optimization
  • Когда нужно использовать materialized view? sql/query-optimization
  • По каким метрикам решать, нужен ли кэш? devops/observability
  • Как посчитать, ускорит ли Redis конкретный запрос? nosql-cache/redis
func foo() error {
var err *os.PathError
return err
}
func main() {
err := foo()
if err != nil {
fmt.Printf("NOT NIL: %v\n ", err)
return
}
fmt.Printf("NIL: %v\n ", err)
}
func main() {
s := "Hi 😀"
for i := 0; i < len(s); i++ {
fmt.Printf("index %v: %c\n ", i, s[i])
}
fmt.Println()
for i, r := range s {
fmt.Printf("index %v: %c\n ", i, r)
}
}
func modSlice(s []int) {
for k, v := range s {
s[k] = v * 2
}
s = append(s, 10)
}
func main() {
s := []int{1, 2, 3}
modSlice(s)
fmt.Println(s)
}
func main() {
i := 0
defer fmt.Println(i)
i++
return
}
func main() {
funcs := []func(){}
i := 0
for i < 3 {
funcs = append(funcs, func() {
fmt.Println(i)
})
i++
}
for _, f := range funcs {
f()
}
}
func main() {
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
wg.Add(1)
fmt.Println("Nested ")
}()
wg.Wait()
fmt.Println("Done ")
}
func main() {
ch := make(chan int, 2)
ch <- 1
ch <- 2
close(ch)
fmt.Println(<-ch)
fmt.Println(<-ch)
fmt.Println(<-ch)
fmt.Println(<-ch)
}
func main() {
ch1 := make(chan int, 1)
ch2 := make(chan int, 1)
ch1 <- 1
ch2 <- 2
for i := 0; i < 5; i++ {
select {
case v := <-ch1:
fmt.Print(v)
ch1 <- 1
case v := <-ch2:
fmt.Print(v)
ch2 <- 2
}
}
fmt.Println()
}
func main() {
m := make(map[int]int)
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func(n int) {
defer wg.Done()
for j := 0; j < 100; j++ {
m[n*100+j] = n
}
}(i)
}
wg.Wait()
fmt.Printf("Result: %d items\n ", len(m))
}
type Counter struct {
sync.Mutex
n int
}
func (c Counter) Inc() {
c.Lock()
c.n++
c.Unlock()
}
func main() {
c := Counter{}
c.Inc()
c.Inc()
fmt.Println(c.n)
}