И ещё некоторые важные требования к техническим системам в плане отказоустойчивости и т.д. на другом изображении
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Топ 150 задач c собеседований.
Это большой списиок самых популярных задач, которые спрашивают на собесах.
Задачи, которые покрывают 90% задач, структур данных, алгоритмов которые спрашивают на собеседованиях.
📂 Список
@golang_interview
Это большой списиок самых популярных задач, которые спрашивают на собесах.
Задачи, которые покрывают 90% задач, структур данных, алгоритмов которые спрашивают на собеседованиях.
📂 Список
@golang_interview
Оптимизации включают использование map со значениями указателей, парсинг температур вручную и создание специальной хэш-таблицы.
Самое то для понимания, как работают высоконагруженные приложения, и как можно проводить их профилирование.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Залетайте на нашу прямую трансялцию и задавайе вопросы: https://www.youtube.com/watch?v=VHMW9M8rwQQ
Gonews
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Golang собеседования для тех, кто хочет научиться решать алгоритмы
🔥 https://yangx.top/+RAiQoS5k4Bg4NGYy – огромное количество уроков, библиотек и примеров с кодом в канале для Go разработчиков.
📌 https://yangx.top/addlist/MUtJEeJSxeY2YTFi – тут я собрал гигантскую папку маст-хэв для Golang программистов.
Вы сможете посмотреть…
📌 https://yangx.top/addlist/MUtJEeJSxeY2YTFi – тут я собрал гигантскую папку маст-хэв для Golang программистов.
Вы сможете посмотреть…
Статья о человеке, которому Go помогает справляться с диабетом.
Если вкратце, то парень использует Go и распределённую систему микросервисов, чтобы отслеживать уровень инсулина и сахара в крови и т.д.
Параллельно в статье рассказывается про такие инструменты как Prometheus, Grafana, PagerDuty, так что можно узнать много полезного.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В Go можно писать в файлы без использования буферов, что означает, что каждая операция записи в файл приводит к записи на диск. Это поведение отличается от многих других языков программирования, где операции ввода-вывода буферизуются по дефолту для улучшения производительности.
Если вы хотите использовать буферизованный ввод-вывод, вы должны явно использовать пакет
bufio
для создания буферизованных объектов чтения и записи.В случае записи без использования буфера, каждый вызов
WriteString
приводит к непосредственной записи данных в файл, а с использованием буфера данные сначала записываются в него, и только после происходит запись данных в файл. Это может значительно улучшить производительность, особенно при большом количестве операций записи, поскольку уменьшает количество системных вызовов.В общем, использование буферизованного ввода-вывода может быть более эффективным по сравнению с небуферизованным.
При работе с большими файлами и необходимости минимизировать использование памяти, может быть целесообразно рассмотреть использование
bufio.Scanner
, который также использует буферизацию, но с более низким потреблением памяти.@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Loop:
for {
select {
case val, ok :=<- someChan:
if !ok {
// канал закрыт
break Loop
}
// получены данные, работа с val
default:
// канал пуст, что-то делать
}
}
Здесь,
ok
будет истиной только для открытого канала. Но при закрытии по каналу будут приходить пустые сообщения постоянно и ok
будет ложью.Однако вышеприведённая конструкция оптимальна только если нужно выполнять действие в
default
-ветке. Т.е. что-то делать, когда сообщений нет. Есть более простая и понятная конструкцияfor val := range someChan {
// получено сообщение
}
// канал закрыт
В этом случае канал читается, используя
for-range
. Когда канал будет закрыт и из него будет прочитано последнее сообщение, произойдёт выход из цикла.Запись в закрытый канал вызывает панику.
Дизайн приложения должен быть таким, что сторона создающая канал, его же и закрывает и пишет в него то же она. Более того, в этих случая рекомендуется, что б функция возвращала канал только для чтения
func run () <-chan string {
c := make(chan string)
// [...]
}
Конечно можно в отложенном вызове вызвать
recover()
, чтобы подавить панику. Но это в корне неправильно. @golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Среди заданных вопросов много интересных, типо:
— можно ли с Go и HTMX делать fullstack-приложения
— в чём отличие между namespace в других ЯП и package в Go
— как обстоят дела с Dependency Injection в Go
— и ещё несколько других
Отличное видео, помогает узнать об актуальных задачах, которые решаются с помощью Go и не только
Рекомендую)
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
rune
и byte
— в чём разница?rune
- это 32-х битный тип, представляющий юникодные символы в кодировке UTF-32 aka UCS-4.byte
- это универсальный 8-битный тип.rune
используется для работы с не-ASCII символами в строках. Есть встроенное приведение []rune
для типа string
, которое парсит строку из UTF-8
(представление с переменной длиной байтов) в представление с фиксированной длиной байтов.[]byte(str)
и []rune(str)
разительна. Строка Привет, мир!
:Байты: [208 159 209 128 208 184 208 178 208 181 209 130 44 32 208 188 208 184 209 128 33]
Руны: [1055 1088 1080 1074 1077 1090 44 32 1084 1080 1088 33]
[]rune(string)
эквивалентно вот такой функции:func ToRunes(bytes []byte) []rune {
result := []rune{}
for i := 0; i < len(bytes); {
r, size := utf8.DecodeRune(bytes[i:])
result = append(result, r)
i += size
}
return result
}
Привет, мир!
в руны и обратно@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM