Golang вопросы собеседований
13.5K subscribers
631 photos
4 videos
1 file
434 links
@notxxx1 - админ

@Golang_google - Golang для разработчиков

@itchannels_telegram - 🔥лучшие из ит

@golangl - chat

@golangtests - golang tests

@golang_jobsgo - go chat jobs

@ai_machinelearning_big_data - AI

@data_analysis_ml

РКН: clck.ru/3FmtKd
加入频道
👣 Оптимизация использования памяти в Go: освоение выравнивания структуры данных!

🌟 Оптимизация памяти имеет решающее значение для написания производительных программ. Когда программное обеспечение имеет ограниченный объем памяти для работы, может возникнуть множество проблем, если эта память используется неэффективно. Вот почему оптимизация памяти имеет решающее значение для улучшения общей производительности.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 haxmap — реализация хэш-таблицы в языке программирования Go!

🌟 Этот репозиторий предоставляет структуру данных, которая позволяет эффективно хранить и искать элементы с использованием хэш-функции. Он может быть полезен разработчикам, которые работают с большими объемами данных и нуждаются в быстром доступе по ключу.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Использование CloudEvents в Go!

🌟 Внедрение событийно-управляемой архитектуры (EDA) для повышения масштабируемости и снижения взаимосвязи между компонентами/сервисами довольно распространено в сложных средах.

🌟 Хотя этот подход решает ряд проблем, одной из проблем, с которой сталкиваются команды, является стандартизация событий для обеспечения совместимости между всеми компонентами. Чтобы смягчить эту проблему, мы можем использовать проект CloudEvents.

🌟 Целью проекта является спецификация для стандартизации и описания событий, привносящих согласованность, доступность и портативность. Еще одним преимуществом является то, что проект предоставляет ряд SDK для ускорения принятия команды в дополнение к спецификации.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 GoTTH — стек для быстрого создания полнофункционального веб-приложения на Go!

🌟 Он включает современные технологии, такие как HTMX для улучшения взаимодействия с пользователем, TailwindCSS для стилизации, Turso LibSQL (производственный вариант SQLite) для работы с базой данных, и Templ в качестве шаблонизатора.

💡 GoTTH ориентирован на простоту развертывания, предлагая поддержку Docker и встроенные инструменты, такие как live-reload с помощью air. Проект отлично подходит для быстрой разработки серверной и клиентской частей приложения, включая поддержку маршрутизации, баз данных и UI-компонентов, интегрированных с минимальными усилиями.

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Эта статья посвящена обучению разработчиков написанию бенчмарк-тестов для функций на языке Go!

🌟 Автор объясняет, что бенчмарк-тесты используются для измерения производительности кода, включая скорость выполнения и использование памяти, и являются частью стандартного тестировочного фреймворка Go.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Одинаково ли по времени выполнятся foo и bar и почему?

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Вышли версии Go 1.23.5 и 1.22.11!

🔒 Безопасность: включены исправления безопасности для CVE-2024-45336 и CVE-2024-45341 в файлах crypto/x509 и net/http.

📡 Анонс: https://groups.google.com/g/golang-announce/c/sSaUhLA-2SI.

📦 Скачать: https://go.dev/dl/#go1.23.5

@golang_interview

#golang #release #Go
👣 Курс: Создание Fullstack приложения с использованием Go и React!

🌟 В этом курсе вы создадите полнофункциональное веб-приложение с функциями создания, чтения, обновления и удаления (CRUD) для заметок! Приложение будет иметь стильный пользовательский интерфейс со светлым и темным режимами, что гарантирует адаптивный дизайн, который отлично смотрится на экранах любого размера. К концу этого курса вы будете иметь прочное понимание Go и React, а также практический опыт интеграции различных современных инструментов и библиотек.

🕞 Продолжительность: 2:07:28

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

МАШИННОЕ ОБУЧЕНИЕ: t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Docker: t.me/DevopsDocker
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
Собеседования МЛ: t.me/machinelearning_interview
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://yangx.top/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://yangx.top/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy
👣 httpz — это минималистичная библиотека для Go, построенная поверх стандартного пакета net/http!

🌟 Она предназначена для упрощения разработки веб-приложений за счёт добавления удобного интерфейса для маршрутизации, работы с middleware и обработки ошибок. httpz поддерживает стандартный стиль разработки в Go, сохраняя совместимость с net/http, что делает её подходящей для перехода с базовых серверов, построенных на стандартной библиотеке.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Полезная статья, которая обсуждает использование структур данных как инструментов для создания эффективных программных решений!

🌟 В статье автор рассматривает, как правильно выбирать структуры данных в зависимости от решаемой задачи, сравнивая их с инженерными шаблонами или "основами", на которых строится более сложное решение. Лемир подчеркивает, что правильный выбор структуры данных (например, хеш-таблицы, массивы, списки) может существенно упростить разработку и повысить производительность, а также находит аналогии между этим процессом и подходами, применяемыми в других областях инженерии и технологий.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️ Крутая подборка из 200 идей для проектов разработчиков всех уровней.

В ней собраны различные проекты, которые вы сможете реализовать самостоятельно вне зависимости от своего опыта.

Проекты классифицированы не только по уровню сложности, но и по используемым технологиям: блокчейн, веб-разработка и другие.

Подборку можно скачать бесплатно по следующей ссылке:

https://dev.to/kishansheth/200-project-ideas-from-beginner-to-advanced-with-open-source-contributions-3g6a
👣 jsonlex — это библиотека для работы с JSON в Go!

🌟 Она предоставляет функции для быстрого и удобного парсинга JSON-строк и их анализа без нагрузки на сборщик мусора (По заявлениям автора, библиотека работает в 5 раз быстрее, чем стандартный инструмент в Go).

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 konf — простая и гибкая библиотека для работы с конфигурациями в Go!

🌟 Она поддерживает загрузку конфигурации из различных источников, включая файлы, переменные окружения, флаги и облачные сервисы (AWS, Azure, GCP). Библиотека позволяет отслеживать изменения конфигураций, а также уведомлять об этих изменениях через нотификаторы. Конфигурационные источники можно легко менять, что делает её удобной для различных приложений, требующих гибкости в настройке.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Эта статья объясняет логику работы одноразовых паролей (OTP) при оффлайн-генерации токенов!

🌟 Рассматриваются алгоритмы, такие как HOTP (основанный на счётчике) и TOTP (основанный на времени), их криптографические основы, включая использование HMAC, и процесс синхронизации между клиентом и сервером. Также обсуждаются преимущества и ограничения этих методов, а также их реализация в реальных системах безопасности.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔍 Эта статья исследует работу с типом данных "Big Decimal" (большие десятичные числа) в различных языках программирования и как преодолевать различия в их реализации!

🌟 В статье рассматриваются особенности работы с большими числами с фиксированной точностью в таких языках, как Java, Python, JavaScript, Go и других. Автор объясняет, как решать проблемы точности при вычислениях с большими числами, особенно в финансовых приложениях и других критичных к точности областях. Также обсуждаются библиотеки и инструменты, которые помогают обеспечивать корректность арифметических операций и унифицировать подходы между языками программирования.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Bellman — это библиотека на языке Go для работы с API крупных моделей ИИ (LLM), таких как OpenAI, Anthropic, Gemini (Google), и других!

🌟 Она предоставляет унифицированный интерфейс для взаимодействия с различными поставщиками ИИ, позволяя легко переключаться между ними. Также включает сервис bellmand, который выступает как прокси для API-ключей, упрощая интеграцию с различными моделями. Библиотека поддерживает общие функции, такие как чат, структурированные данные, инструменты и работу с бинарными данными.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос: Один из ваших товарищей по команде отправил этот код на проверку. Этот код несет потенциальную угрозу. Определите ее и предложите решение для ее устранения.

package main 

import (
"fmt"
"time"
)

func main () {
ch := make ( chan int )

go func () {
time.Sleep( 2 * time.Second)
ch <- 42
fmt.Println( "Отправлено: 42" )
}()

val := <-ch
fmt.Println( "Получено:" , val)

fmt.Println( "Продолжение выполнения..." )
}


🌟 На первый взгляд ничего подозрительного в этом коде. Если мы попробуем его запустить, он действительно скомпилируется и запустится без каких-либо заметных проблем.

[Running] go run "main.go"

Отправлено: 42
Получено: 42
Продолжение выполнения...

[Done] exited with code=0 in 2.124 seconds


💡 Сам код тоже кажется в порядке. У нас есть правильно реализованное параллельное потребление с двумя горутинами, работающими независимо. Давайте разберем код и посмотрим, что происходит:

🌟 Канал ch создан с помощью make(chan int). Это небуферизованный канал.

🌟 Запускается горутина, которая спит 2 секунды, а затем отправляет значение 42 на канал.

🌟 Основная функция выполняет операцию чтения по ch с помощью val := <-ch.

🔍 Опять же, кажется, все в порядке. Но на самом деле операция отправки задерживается. Анонимная горутина ждет 2 секунды, прежде чем отправить значение в канал. Поэтому, когда мы запускаем этот код, основная функция начинает считывать канал и ожидает там значение, прежде чем канал будет заполнен значением. Эта операция блокирует дальнейшее выполнение кода.

❗️ Подобная блокировка может вызвать серьезные проблемы с параллелизмом. Если основная горутина (или любая критическая горутина) блокируется на неопределенное время, ожидая данные, это может помешать выполнению других важных задач, что приведет к взаимоблокировкам или неотзывчивому поведению.

💡 Чтобы избежать блокирования чтения, можно использовать неблокирующие альтернативы, такие как оператор select с вариантом по умолчанию. Оператор select в Go — это мощная функция, которая позволяет goroutine ожидать несколько операций связи, что позволяет выполнять неблокирующие операции и обрабатывать несколько каналов. Оператор select работает, оценивая несколько операций канала и продолжая с первой готовой. Если несколько операций готовы, одна из них выбирается случайным образом. Если ни одна операция не готова, выполняется вариант по умолчанию, если он есть, что делает его неблокирующей операцией.

🔍 Вот его синтаксис:
select { 
case <-ch1:
// Сделать что-то, когда ch1 готов к приему
case ch2 <- value :
// Сделать что-то, когда ch2 готов к отправке
default :
// Сделать что-то, когда ни один канал не готов (неблокируемый путь)
}


🌟 Теперь исправим изначальную проблему с помощью select:
package main 

import (
"fmt"
"time"
)

func main () {
ch := make ( chan int )

// Goroutine для отправки данных в канал через 2 секунды
go func () {
time.Sleep( 2 * time.Second)
ch <- 42
fmt.Println( "Отправлено: 42" )
}()

// Основная функция, выполняющая неблокирующее чтение
for {
select {
case val := <-ch:
fmt.Println( "Получено:" , val)
fmt.Println( "Продолжение выполнения..." )
return
default :
fmt.Println( "Значения не были получены" )
time.Sleep( 500 * time.Millisecond) // Некоторое время ждем, чтобы предотвратить зацикливание
// обрабатываем поток выполнения инструкций и операций, которые должны быть продолжены
}
}
}



@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Эта статья описывает процесс создания службы доставки payload'ов вебхуков в Go!

💡 Автор объясняет, как создать прокси-сервис для перенаправления событий GitHub Webhooks на локальный сервер. В статье рассмотрены архитектура решения, использование server-sent events (SSE) для потоковой передачи данных, а также настройка сервера и CLI-приложения.

🔗 Ссылка: *клик*

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 go2rtc — это универсальное open-source приложение для стриминга с камер, поддерживающее различные протоколы, такие как RTSP, WebRTC, RTMP, HLS, HomeKit и другие!

🌟 Оно позволяет стримить с разных источников, включая RTSP камеры, USB-камеры и устройства HomeKit, обеспечивая низкую задержку и простоту настройки. Включает поддержку двухстороннего аудио, согласования кодеков и транскодирования. Также интегрируется с такими платформами, как Home Assistant, и поддерживает стриминг в браузеры и другие популярные сервисы.

🔐 Лицензия: MIT

🖥 Github

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM