Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+694новые вакансии за сутки·52 494вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 662
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 391 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python6 244
  • Облачные технологии4 749
  • QA вакансии1 736
  • Android1 148
  • Инженер данных800
  • Продакт-менеджер321

Разработка

  • iOS1 092
  • Backend вакансии1 046
  • Fullstack вакансии453
  • AI вакансии391
  • Frontend вакансии376
  • Mobile вакансии27

По стеку

  • Go3 590
  • Java2 153
  • Kotlin942
  • Node.js767
  • Rust544
  • .NET496
  • PHP267
  • C++220
  • C#198

DevOps и инфраструктура

  • Kubernetes2 686
  • Linux-инфраструктура2 117
  • DevOps вакансии1 960
  • Terraform / IaC1 615
  • CI/CD871
  • Мониторинг и Observability742
  • SRE228
  • Кибербезопасность47

Аналитика и данные

  • Аналитик данных495
  • Data Scientist449
  • Бизнес-аналитик351
  • Системный аналитик54

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США23 835
  • Вакансии в Европе9 341
  • Работа в России3 283
  • Вакансии в Канаде2 140

По формату

  • Удалённые вакансии41 311
  • Релокация в США23 835
  • Гибридная работа4 058
  • Офисная работа2 949

По уровню

  • Senior вакансии20 396
  • Middle вакансии11 620
  • Junior вакансии3 665

Сейчас нанимают

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Wise139 вакансий
  • Grab134 вакансии
  • Infobip28 вакансий
  • Adyen23 вакансии
  • Darktrace17 вакансий
  • Spotify15 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме GoВсе вопросы
GoSeniorОпыт

Какие production-риски чаще всего возникают в проектах на Go (Golang): производительность, зависимости, конкурентность, деплой или observability?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Главные production-риски Go: гонки данных без -race детектора, утечки горутин, зависание из-за блокировок без таймаутов, проблемы с зависимостями в go.sum и отсутствие structured logging и distributed tracing.

Конкурентность и гонки данных

Go упрощает написание конкурентного кода, но не защищает от гонок автоматически. Типичная ошибка — обращение к map из нескольких горутин без синхронизации:

// НЕПРАВИЛЬНО — гонка данных
var cache = map[string]string{}

func handler(w http.ResponseWriter, r *http.Request) {
	cache[r.URL.Path] = "visited" // concurrent writes
}

// ПРАВИЛЬНО — sync.Map или RWMutex
var cache sync.Map

func handler(w http.ResponseWriter, r *http.Request) {
	cache.Store(r.URL.Path, "visited")
}

Запускайте тесты и приложение с флагом -race:

// go test -race ./...
// go run -race main.go

Утечки горутин

Горутины дешевы, но не бесплатны. Запущенная горутина, ожидающая на заблокированном channel, живёт вечно:

// УТЕЧКА — никто никогда не пишет в ch
func leak() {
	ch := make(chan int)
	go func() {
		v := <-ch // заблокирована навсегда
		fmt.Println(v)
	}()
}

// ПРАВИЛЬНО — используйте context для отмены
func noLeak(ctx context.Context) {
	ch := make(chan int)
	go func() {
		select {
		case v := <-ch:
			fmt.Println(v)
		case <-ctx.Done():
			return
		}
	}()
}

Мониторьте количество горутин через runtime.NumGoroutine() и метрику Prometheus go_goroutines.

Таймауты и дедлайны

HTTP-клиент без таймаута блокирует горутину навсегда при зависшем upstream:

// НЕПРАВИЛЬНО
client := &http.Client{} // нет таймаута

// ПРАВИЛЬНО
client := &http.Client{
	Timeout: 10 * time.Second,
	Transport: &http.Transport{
		DialContext: (&net.Dialer{
			Timeout:   3 * time.Second,
			KeepAlive: 30 * time.Second,
		}).DialContext,
		TLSHandshakeTimeout:   5 * time.Second,
		ResponseHeaderTimeout: 5 * time.Second,
		MaxIdleConns:          100,
		MaxIdleConnsPerHost:   10,
	},
}

Зависимости и уязвимости

Используйте официальный vulnerability checker:

// Установка
// go install golang.org/x/vuln/cmd/govulncheck@latest

// Проверка
// govulncheck ./...

В CI добавьте go mod verify для проверки целостности go.sum.

Observability

Стандартный log пакет не поддаётся парсингу. Подключите zerolog или zap с обязательным request ID:

import "github.com/rs/zerolog/log"

func middleware(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		requestID := r.Header.Get("X-Request-ID")
		if requestID == "" {
			requestID = uuid.New().String()
		}
		logger := log.With().
			Str("request_id", requestID).
			Str("method", r.Method).
			Str("path", r.URL.Path).
			Logger()
		ctx := logger.WithContext(r.Context())
		next.ServeHTTP(w, r.WithContext(ctx))
	})
}

Деплой и graceful shutdown

srv := &http.Server{Addr: ":8080", Handler: router}

go func() {
	if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
		log.Fatal().Err(err).Msg("server error")
	}
}()

quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit

ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
	log.Fatal().Err(err).Msg("forced shutdown")
}

Подводные камни

  • Игнорирование возвращаемых ошибок — Go-конвенция предписывает обрабатывать каждую ошибку; используйте errcheck линтер в CI.
  • Closure захватывает переменную цикла — в Go 1.21 и ранее переменная цикла for i, v := range захватывается по ссылке; передавайте в горутину явно.
  • GOMAXPROCS в контейнере — без uber-go/automaxprocs Go видит все CPU хоста, игнорируя cgroup-ограничения.
  • Паника без recover в горутине — паника в горутине не перехватывается внешним recover и падает весь процесс; добавляйте defer func() { recover() }() в долгоживущие горутины.
  • Использование init() для инициализации зависимостей — порядок init() между пакетами непредсказуем; инициализируйте все зависимости явно в main().
  • Отсутствие pprof в production — без net/http/pprof на закрытом порту невозможно профилировать CPU и heap при инцидентах.
  • fmt.Errorf без %w — без %w теряется возможность использовать errors.Is и errors.As для проверки типов ошибок.
  • Отсутствие linter в CI — запускайте golangci-lint run с минимальным набором: errcheck, govet, staticcheck, gosec.

Частые вопросы на собеседовании

  • Для каких задач Go (Golang) является сильным выбором, а где лучше честно выбрать другой язык?
  • Как писать unit-тесты в Go? Что такое пакет testing?
  • Что происходит при добавлении элементов за пределы ёмкости slice?
  • Как Go управляет пакетами и модулями? Что такое go.mod?

Что портит ответ

  • Говорить только о запуске Go (Golang), но не об эксплуатации
  • Не упоминать observability, обновления, безопасность и rollback
  • Описывать риски абстрактно, без способов их снижать

Что слушает интервьюер

  • Видит production-риски Go (Golang)
  • Говорит про monitoring, rollout, rollback и безопасность
  • Умеет ранжировать риски по вероятности и влиянию

Как вы знаете этот вопрос?

Проверить себя по теме Go →
←Предыдущий вопросПредставьте, сервис на Go (Golang) стал медленнее или нестабильнее после релиза. Какие language/runtime-specific причины вы проверите?Следующий вопрос→Какие ошибки делают разработчики, переходящие на Go (Golang) с другого языка или стека?

Связанные темы

GoGo (Golang)production-readinesstechnical-communicationtechnology-selectiontrade-off-analysis