Оптимизация и реструктуризация Go‑кода
Главные проблемы — SQL-инъекции, открытые пароли, ненастроенная сессия и небезопасная работа с входными данными. Начать нужно с типизированных контрактов.
Читать ответПодготовка к интервью
866 вопросов по Golang с технических собеседований
Что проверяют на интервью
На странице собраны вопросы по Golang — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: go, backend, concurrency.
Каталог
Главные проблемы — SQL-инъекции, открытые пароли, ненастроенная сессия и небезопасная работа с входными данными. Начать нужно с типизированных контрактов.
Читать ответЭто ошибка компиляции, не panic: строки неизменяемы, а fmt не импортирован. Для замены символа создайте изменяемый срез и новую строку.
Читать ответПрограмма напечатает oops. При i=4 err внутри foo равен nil как *MyError, но возврат упаковывает его в интерфейс error с ненулевым динамическим типом.
Читать ответПрограмма напечатает [0 0 0 0 0 0 0 0 0 0] []. Первый слайс имеет длину 10, второй — 0, хотя capacity у обоих равна 10.
Читать ответОтправитель не может завершить передачу в небуферизированный канал до начала чтения. Main закрывает канал раньше этого, поэтому работник при выполнении отправки получит panic: send on closed channel.
Читать ответРезультат сравнения — false. NewRepo1 возвращает интерфейс с динамическим типом *InMemoryRepo и nil-значением, а NewRepo2 — действительно nil-интерфейс.
Читать ответИспользуйте range по каналу: он прочитает накопленные 1–5 и завершится после опустошения закрытого канала. Исходный бесконечный цикл затем печатает нули, а не вызывает panic.
Читать ответПрограмма не компилируется: chan int нельзя передать параметру chan any. После простого исправления типа она всё равно зависнет, потому что функция ch ничего не читает.
Читать ответГлавный перерасход памяти вызван возвратом маленького слайса, удерживающего массив на 100 000 элементов. Скопируйте последний элемент в отдельный слайс или вычислите его напрямую.
Читать ответОбычно программа выводит [1 2 3 5] [1 2 3 5]: оба слайса разделяют массив с запасом capacity, и последний append перезаписывает четвёртый элемент.
Читать ответПосле тайм-аута получатель уходит, а горутина навсегда блокируется на отправке в небуферизированный канал. Минимальное исправление — буфер на один результат; полноценное — отменяемая медленная операция.
Читать ответГлавная проблема — ожидание через Sleep вместо подтверждения завершения горутин. Для явного управления таймером используйте NewTimer и Stop, а для ожидания — WaitGroup.
Читать ответ