Go

Tricky Output & Code-Review Puzzles Interview Questions

38 Go interview questions on tricky output & code-review puzzles, with detailed answers and code.

0/577 known
38 questions
Tricky Output & Code-Review PuzzlesQ478Medium

func main() { var wg sync.WaitGroup var ptrs []*int for i := 0; i < 3; i++ { ptrs = append(ptrs, &i) wg.Add(1) go func() { defer wg.Done() fmt.Print(i, " ") }() }…

Tricky Output & Code-Review PuzzlesQ481Medium

func main() { x := 1 defer fmt.Println("a", x) defer func() { fmt.Println("b", x) }() x = 2 } Output: b 2 a 1 The function value and arguments of a deferred call are…

Tricky Output & Code-Review PuzzlesQ482Hard

func f() (r int) { defer func() { r *= 2 }() return 3 } func g() int { r := 3 defer func() { r *= 2 }() return r } func h() (r int) { defer func() { r *= 2 }() r = 1…

Tricky Output & Code-Review PuzzlesQ483Hard

a := make([]int, 3, 10) b := append(a, 1) c := append(a, 2) fmt.Println(a, b, c) fmt.Println(len(a), len(b), cap(b)) Output: [0 0 0] [0 0 0 2] [0 0 0 2] 3 4 10 a has…

Tricky Output & Code-Review PuzzlesQ484Medium

func modify(s []int) { s[0] = 99 s = append(s, 4) s[1] = 42 } func main() { x := []int{1, 2, 3} // len 3, cap 3 modify(x) fmt.Println(x) // ? y := make([]int, 3, 4) //…

Tricky Output & Code-Review PuzzlesQ486Hard

arr := [3]int{1, 2, 3} for i, v := range arr { if i == 0 { arr[1] = 100 } fmt.Print(v, " ") } fmt.Println(arr) sl := []int{1, 2, 3} for i, v := range sl { if i == 0 {…

Tricky Output & Code-Review PuzzlesQ487Medium

type User struct { Name string Age int } users := []User{{"ann", 30}, {"bob", 40}} for _, u := range users { u.Age++ } fmt.Println(users) // [{ann 30} {bob 40}] u is a…

Tricky Output & Code-Review PuzzlesQ489Medium

type Shape interface{ Area() float64 } type Square struct{ side float64 } func (s *Square) Area() float64 { return s.side * s.side } func main() { var s Shape =…

Tricky Output & Code-Review PuzzlesQ494Medium

func parse(s string) (int, error) { var n int var err error if s != "" { n, err := strconv.Atoi(s) // := declares NEW n and err if err != nil { log.Println("inner:",…

Tricky Output & Code-Review PuzzlesQ495Medium

func worker(id int, wg sync.WaitGroup) { // BUG 2: copied defer wg.Done() fmt.Println("worker", id) } func main() { var wg sync.WaitGroup for i := range 3 { go func() {…

Tricky Output & Code-Review PuzzlesQ497Medium

a := make(chan int, 1) b := make(chan int, 1) a <- 1 b <- 2 select { case v := <-a: fmt.Println("a", v) case v := <-b: fmt.Println("b", v) } ticker := time.NewTicker(10…

Tricky Output & Code-Review PuzzlesQ502Hard

func handle() { if r := recover(); r != nil { fmt.Println("recovered:", r) } } func a() { defer handle(); panic("A") } // 1 func b() { defer func() { handle() }();…

Tricky Output & Code-Review PuzzlesQ503Medium

func main() { defer func() { if r := recover(); r != nil { fmt.Println("recovered", r) } }() var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() var m…

Tricky Output & Code-Review PuzzlesQ505Medium

var x int8 = 127 x++ fmt.Println(x) // ? var u uint8 = 0 u-- fmt.Println(u) // ? m := int8(-128) fmt.Println(-m) // ? fmt.Println(-7/2, -7%2) // ? // const big = 1 << 62…

Tricky Output & Code-Review PuzzlesQ507Medium

s := "héllo" fmt.Println(len(s)) // 6 fmt.Println(s[1]) // 195 fmt.Printf("%c %q\n", s[1], s[1:3]) // Ã "é" for i, r := range s { fmt.Print(i, ":", string(r), " ") //…

Tricky Output & Code-Review PuzzlesQ508Hard

var a, b any = []int{1}, []int{1} fmt.Println(a == b) // panic: runtime error: comparing uncomparable type []int seen := map[any]bool{} seen[[]int{1}] = true // panic:…

Tricky Output & Code-Review PuzzlesQ509Medium

var ErrNotFound = errors.New("not found") e1 := fmt.Errorf("get user: %v", ErrNotFound) e2 := fmt.Errorf("get user: %w", ErrNotFound) fmt.Println(e1) // get user: not…

Tricky Output & Code-Review PuzzlesQ512Hard

s := []int{1, 2, 3, 4, 5} t := append(s[:1], s[3:]...) fmt.Println(t, s) u := []int{1, 2, 3, 4, 5} v := slices.Delete(u, 1, 3) fmt.Println(v, u) Output: [1 4 5] [1 4 5 4…

Next topicClassic Concurrency Coding Problems