Полезный репозиторий, в котором собраны разные пет-проекты и не только, реализующие множество алгоритмов и структур данных.
Вот к примеру в этом списке имплементация фильтра Блума, а вот реализация словаря с удобным интерфейсом как в Python.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Давайте проверим ваши знания работы бинарного дерева поиска. Посмотрите на изображение и ответьте на вопрос ниже.
#викторина #bst
#викторина #bst
Что произойдет при добавлении узла со значением 25 в бинарное дерево поиска (BST) на изображении выше?
Anonymous Quiz
13%
Узел 25 добавится справа от узла 20
3%
Узел 25 добавится слева от узла 20
68%
Узел 25 не будет добавлен, так как уже существует
8%
Узел 25 добавится справа от узла 10
8%
Узел 25 не будет добавлен, так как справа от числа 20 уже есть число 40
В этой книге разбирается 25 тем, связанных с Go, таких как:
— работа с файлами, чтение/запись
— взаимодействие с разными БД, на примере Sqlite
— конкурентность, горутины
— тестирование
— интерфейсы, структуры и т.д.
Можно использовать эту книгу для освежения в памяти каких-то тем
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Здесь собраны задания с LeetCode + решения к ним на Go, в целом довольно полезно прорешать пару таких задач перед собеседованием
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#golang
https://golang.withcodeexample.com/blog/memory-management-golang-safeguarding-efficiency-stability/
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💼 Обратное собеседование (reverse-interview) это список вопросов для соискателей.
Пункты не упорядочены и могут быть неприменимы к конкретной должности или виду работы. Вначале это был просто список вопросов, но со временем он стал включать ещё и те вещи, которых хотелось бы видеть больше, и «красные флажки», то есть вещи, которых хочется избегать. Ещё я обратил внимание, что многие люди, которых я собеседовал, не задавали эти вопросы, и, я думаю, это были упущенные возможности.
Разделы вопросов:
- Технологии
- Должность
- Команда
- Ваши будущие коллеги
- Компания
- Бизнес
- Удалённая работа
- Офисная работа
- Компенсация
- Больничный, декретный период, отпуск
📌 Вопросы
@golang_interview
Пункты не упорядочены и могут быть неприменимы к конкретной должности или виду работы. Вначале это был просто список вопросов, но со временем он стал включать ещё и те вещи, которых хотелось бы видеть больше, и «красные флажки», то есть вещи, которых хочется избегать. Ещё я обратил внимание, что многие люди, которых я собеседовал, не задавали эти вопросы, и, я думаю, это были упущенные возможности.
Разделы вопросов:
- Технологии
- Должность
- Команда
- Ваши будущие коллеги
- Компания
- Бизнес
- Удалённая работа
- Офисная работа
- Компенсация
- Больничный, декретный период, отпуск
📌 Вопросы
@golang_interview
Forwarded from Golang Библиотека Знаний
👉 Все Книги для Go разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Go предоставляет встроенные средства управления конкурентностью: планировщик Go автоматически распределяет goroutine между системными потоками, балансируя нагрузку. Основное отличие в том, что goroutine не привязаны к конкретным потокам и могут свободно перемещаться между ними. Это снижает накладные расходы и упрощает конкурентное программирование.
Каналы chan используются для безопасного обмена данными между goroutine, обеспечивая синхронизацию и избегая гонок данных.
▪️ Ниже приведен пример, в котором две goroutine взаимодействуют через канал:
package main
import (
"fmt"
"time"
)
// Функция для записи чисел в канал
func produceNumbers(channel chan int) {
for i := 1; i <= 5; i++ {
fmt.Printf("Produced: %d\n", i)
channel <- i // Отправка числа в канал
time.Sleep(500 * time.Millisecond)
}
close(channel) // Закрытие канала после завершения отправки
}
// Функция для чтения из канала
func consumeNumbers(channel chan int) {
for num := range channel { // Чтение значений из канала
fmt.Printf("Consumed: %d\n", num)
time.Sleep(700 * time.Millisecond)
}
}
func main() {
channel := make(chan int)
go produceNumbers(channel) // Запуск первой goroutine
go consumeNumbers(channel) // Запуск второй goroutine
time.Sleep(4 * time.Second) // Ожидание завершения всех goroutine
}
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
try-catch
? Можете ли вы привести пример, где использование panic
и recover
будет уместным, и объяснить, почему этот подход не следует использовать повсеместно?package main
import (
"errors"
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("деление на ноль")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Ошибка:", err)
} else {
fmt.Println("Результат:", result)
}
}
package main
import "fmt"
func riskyFunction() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Поймана ошибка:", r)
}
}()
fmt.Println("Выполняется riskyFunction...")
panic("Что-то пошло не так!")
fmt.Println("Этот код не будет выполнен")
}
func main() {
fmt.Println("Начало программы")
riskyFunction()
fmt.Println("Конец программы")
}
Механизмы panic и recover следует использовать только в следующих случаях:
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Курс по основам системного дизайна
Вы готовитесь к интервью по системному дизайну или просто хотите узнать больше о работе сложных систем? Тогда репозиторий от ByteByteGo – идеальный выбор!
В этом курсе вас ожидают следующие темы:
– Протоколы
– CI/CD
– Архитектурные шаблоны
– Базы данных
– Кэширование
– Микросервисные архитектуры
– Платежные системы
– DevOps
– Git
– Облачные сервисы
– Инструменты для повышения производительности разработки
– Linux
– Безопасность
– Реальные примеры систем
▪ GitHub
▪ Перевод
@golang_interview
Вы готовитесь к интервью по системному дизайну или просто хотите узнать больше о работе сложных систем? Тогда репозиторий от ByteByteGo – идеальный выбор!
В этом курсе вас ожидают следующие темы:
– Протоколы
– CI/CD
– Архитектурные шаблоны
– Базы данных
– Кэширование
– Микросервисные архитектуры
– Платежные системы
– DevOps
– Git
– Облачные сервисы
– Инструменты для повышения производительности разработки
– Linux
– Безопасность
– Реальные примеры систем
▪ GitHub
▪ Перевод
@golang_interview
Go API
с помощью пользовательских middleware. Middleware перехватывает запросы перед отправкой на обработку и позволяет добавлять функции обработки.
Это поможет улучшить дебаггинг кода и повысить стабильность сервера.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM