Давайте проверим ваши знания работы бинарного дерева поиска. Посмотрите на изображение и ответьте на вопрос ниже.
#викторина #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
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
▪️Github
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM