// Находим максимальное четное число

Исходный main содержит гонку по max и не ждёт горутины. Для диапазона 1…n максимум находится без параллелизма: это n, если оно чётное, иначе n−1.

Короткий ответ

Что ответить на собеседовании

Исходный main содержит гонку по max и не ждёт горутины. Для диапазона 1…n максимум находится без параллелизма: это n, если оно чётное, иначе n−1.

Подробный разбор

Ответ с пояснениями

Условие

// Находим максимальное четное число

package main

import "fmt"

func main() { var max int

for i := 1000; i > 0; i-- {
    go func() {
        if i%2 == 0 && i > max {
            max = i
        }
    }()
}

fmt.Printf("Maximum is %d", max)

}

func maxEvent(n, workers int) int { var wg sync.WaitGroup

results := make(chan int, workers)
jobs := make(chan int, workers)

for w := 0; w < workers; w++ {
    wg.Add(1)
    go func() {
        defer wg.Done()
        localMax := -1

        for num := range jobs {
            if num%2 == 0 && num > localMax {
                localMax = num
            }
        }
        result <- localMax
    }()
}

go func() {
    for i := 1; i <= n; i++ {
        jobs <- i
    }
    close(jobs)
}()

go func() {
    wg.Wait()
    close(results)
}()

globalMax := -1

for localMax := range results {
    if localMax > globalMax {
        globalMax = localMax
    }
}

return globalMax

}

Ответ

Исходный main содержит гонку по max и не ждёт горутины. Для диапазона 1…n максимум находится без параллелизма: это n, если оно чётное, иначе n−1.

func maxEven(n int) int {
    if n < 2 { return -1 }
    return n - n%2
}

Для n=1000 ответ 1000. В worker-варианте из условия нужно исправить result на results, импортировать sync и отклонять workers<=0. Закрывает jobs отправитель, results — горутина после wg.Wait; каждый worker считает собственный максимум, общий результат собирается одним читателем.

Если оставить первый main, никакого устойчивого вывода нет из-за гонки и отсутствия ожидания. Захват переменной цикла дополнительно зависит от версии Go, но саму гонку обновления max это не устраняет.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее