
- Главная
- Каталог
- Интернет технологии
- Golang подготовка к собеседованию
Golang подготовка к собеседованию
Go (часто также golang) — компилируемый многопоточный язык программирования, разработанный внутри компании Google. В канале собраны реальный вопросы с Golang собеседований
Статистика канала
Установка (Go)
git clone https://github.com/eduardolat/clancy
cd clancy
go build -o clancy
Первый запуск
./clancy chat
Работа внутри проекта
./clancy chat --path ./your-project
Планирование
./clancy ask "Plan how to refactor authentication module"
Реализация
./clancy ask "Implement the plan step by step"
Ревью
./clancy ask "Review the changes and suggest improvements"{}
import _ "net/http/pprof"
{}
После этого сервис автоматически получает debug-эндпоинты:
/debug/pprof/profile CPU профиль
/debug/pprof/heap snapshot памяти
/debug/pprof/goroutine все горутины
/debug/pprof/block блокировки
/debug/pprof/mutex конкуренция мьютексов
/debug/pprof/trace runtime trace
{}
Важно: никогда не открывайте эти эндпоинты на публичном порту.
В продакшене их обычно выносят на отдельный внутренний debug-сервер:
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
{}
После этого можно снимать профиль прямо с работающего сервиса:
curl -o cpu.prof http://service:6060/debug/pprof/profile?seconds=30
go tool pprof cpu.prof
{}
И анализировать:
(pprof) top
(pprof) list <function>
(pprof) web
{}
Главная идея статьи - не оптимизируйте код вслепую.
Сначала снимите профиль, посмотрите flamegraph и оптимизируйте реальное узкое место, а не то, которое кажется медленным.
https://fulmenflux.co/blog/go/complete-guide-to-profile-golang-services-in-production/Speak(), подойдёт.
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct{}
func (Dog) Speak() string { return "woof" }
type Person struct{ Name string }
func (p Person) Speak() string { return "hi, I'm " + p.Name }
// функция принимает ИНТЕРФЕЙС, а не конкретный тип
func SaySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
SaySomething(Dog{})
SaySomething(Person{Name: "Gus"})
}
{}
Что важно понять (самые полезные тезисы):
- интерфейс лучше объявлять там, где он используется, а не “в библиотеке заранее”
- интерфейсы в Go обычно маленькие (1-3 метода) - так код гибче
- типы не “наследуют” интерфейсы - они просто соответствуют им
- из этого рождается сильный стиль Go: “принимай интерфейсы - возвращай структуры”
Если ты раньше был в Java/C# - после этой статьи Go-интерфейсы начинают реально “щелкать”.
https://www.calhoun.io/crash-course-on-go-interfaces/Speak(), подойдёт.
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Dog struct{}
func (Dog) Speak() string { return "woof" }
type Person struct{ Name string }
func (p Person) Speak() string { return "hi, I'm " + p.Name }
// функция принимает ИНТЕРФЕЙС, а не конкретный тип
func SaySomething(s Speaker) {
fmt.Println(s.Speak())
}
func main() {
SaySomething(Dog{})
SaySomething(Person{Name: "Gus"})
}
{}
Что важно понять (самые полезные тезисы):
- интерфейс лучше объявлять там, где он используется, а не “в библиотеке заранее”
- интерфейсы в Go обычно маленькие (1-3 метода) - так код гибче
- типы не “наследуют” интерфейсы - они просто соответствуют им
- из этого рождается сильный стиль Go: “принимай интерфейсы - возвращай структуры”
Если ты раньше был в Java/C# - после этой статьи Go-интерфейсы начинают реально “щелкать”.
https://www.calhoun.io/crash-course-on-go-interfaces/go-md2pdf - минималистичный инструмент на Go, который делает ровно это: берёт .md файл и генерирует .pdf.
Почему удобно:
- идеально для документации и чек-листов
- можно встроить в CI/CD (сборка PDF на релизе)
- норм вариант для автогенерации PDF-методичек из Markdown
Кейс:
пишешь контент один раз в Markdown - получаешь и текст, и PDF-версию без ручной верстки.
github.com/alnah/go-md2pdf«Hello, World» и горутины ради галочки.
Это про бэкенд на Go, который:
* выдерживает нагрузку
* обрабатывает тысячи запросов одновременно
* работает быстро и стабильно
* легко масштабируется
* выглядит как реальный сервис, а не учебный проект
Ты начнёшь видеть Go не как язык, а как инструмент для построения систем.
В итоге ты сможешь:
* писать высоконагруженные API
* создавать микросервисы
* работать с базами данных и очередями
* разбираться в конкурентности и производительности
* брать коммерческие backend-проекты
Это навык, который ценится на рынке.
Не «знаю Go», а умею делать быстрые и надёжные сервисы.
🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/274119/Buffer.Peek(n) в пакете bytes.
Что делает:
- возвращает следующие N байт
- не сдвигает указатель чтения
- то есть можно “подсмотреть”, что впереди, и не портить поток
Это идеальная штука для:
- парсеров протоколов
- stream processing
- проверок заголовков/сигнатур
- peek-before-read логики
Важный нюанс:
Peek() возвращает срез, который указывает прямо на внутренний буфер.
То есть:
- он валиден, пока буфер не изменился
- если ты поменяешь срез - поменяешь буфер (осторожно!)
Мини-юзкейс: сначала peek, потом решаешь - читать дальше или нет.Отзывы канала
всего 8 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Golang подготовка к собеседованию — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 14.9K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 16.2, количество отзывов – 8, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 14685.3 ₽, а за 70 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий