Напиши функцию на Go, которая будет принимать слайс целых чисел и возвращать новый слайс, содержащий только уникальные элементы исходного слайса. При решении задачи используй только встроенные пакеты языка Go.
Написал?
Можешь смотреть один из вариантов решения
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3❤🔥1
И ещё некоторые важные требования к техническим системам в плане отказоустойчивости и т.д. на другом изображении
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🥱3🔥2
Напиши программу, которая будет читать файл и выводить топ 10 самых часто встречающихся слов.
Написал? Тогда можешь смотреть решение; оно специально не самое оптимальное, так что предлагай свой вариант кода в комментах
Данное решение использует передачу файла как аргумента командной строки, поэтому
go run <файл.go> <файл.txt>
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2🔥1😁1
💡 Топ 150 задач c собеседований.
Это большой списиок самых популярных задач, которые спрашивают на собесах.
Задачи, которые покрывают 90% задач, структур данных, алгоритмов которые спрашивают на собеседованиях.
📂 Список
@golang_interview
Это большой списиок самых популярных задач, которые спрашивают на собесах.
Задачи, которые покрывают 90% задач, структур данных, алгоритмов которые спрашивают на собеседованиях.
📂 Список
@golang_interview
👍14❤2🔥2
Оптимизации включают использование map со значениями указателей, парсинг температур вручную и создание специальной хэш-таблицы.
Самое то для понимания, как работают высоконагруженные приложения, и как можно проводить их профилирование.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6❤3😁1
Задание: напиши программу на Go, которая будет генерировать простые числа с помощью алгоритма "Решето Эратосфена".
"Решето Эратосфена" используется для нахождения простых чисел, алгоритм такой:
Получилось? Можешь смотреть решение
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤1
Залетайте на нашу прямую трансялцию и задавайе вопросы: 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 программистов.
Вы сможете посмотреть…
👍5🔥4❤1
Статья о человеке, которому 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
👍10🔥4❤3
В 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
👍17🔥7❤1
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
❤12🔥3🥰2
Среди заданных вопросов много интересных, типо:
— можно ли с 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
❤6🔥3🥱1
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
❤9👍4🔥1