Golang вопросы собеседований
13.5K subscribers
625 photos
3 videos
1 file
432 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

Среди этих скриптов например:
— код для поиска доменного имени по IP
— кастомный планировщик для k8s
— скрипт для передачи файлов

На скрине код на Go для отображения доменного имени, привязанного к конкретному IP

🟡 Сайт со скриптами Go на разные случаи

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Работа с MongoDB при помощи Go

С большой долей вероятности Go-разработчик будет соприкасаться с разными БД в работе, возможно это будут NoSQL базы данных.

Так что вот отличная статья с примерами работы с MongoDB при помощи Go;
в статье затрагиваются базовые операции:
— вставка документа в MongoDB
— запись нескольких документов
— поиск документа в MongoDB
— обновление/удаление документа

🟡 Go & MongoDB

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Большая подборка задач по Go с LeetCode + решения к ним + тесты

Здесь есть самые разные задачи: простые/средние/сложные, много задач по структурам данных (таким как связные списки, деревья), есть задачи на динамическое программирование — в общем, неплохо порешать что-то из этого перед собеседованием

🖥 GitHub

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Реализация разных алгоритмов и структур данных на Go

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

🟡 Data Structures and Algorithms

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Давайте проверим ваши знания работы бинарного дерева поиска. Посмотрите на изображение и ответьте на вопрос ниже.

#викторина #bst
👣 Открытая книга по Go

В этой книге разбирается 25 тем, связанных с Go, таких как:
— работа с файлами, чтение/запись
— взаимодействие с разными БД, на примере Sqlite
— конкурентность, горутины
— тестирование
— интерфейсы, структуры и т.д.

Можно использовать эту книгу для освежения в памяти каких-то тем

🟡 Go book

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Решения разных задач с LeetCode на Go

Здесь собраны задания с LeetCode + решения к ним на Go, в целом довольно полезно прорешать пару таких задач перед собеседованием

🟡 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 - советы по обеспечению эффективности и стабильности работы Go приложений

#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
Объясните, что такое goroutine и как Go управляет конкурентностью. В чем разница между использованием goroutine и thread в традиционных языках программирования? Приведите пример, в котором несколько goroutine взаимодействуют через каналы

❗️ В Go goroutine — это легковесная потокоподобная сущность, используемая для выполнения задач параллельно или асинхронно. Goroutine легче и менее затратна по памяти по сравнению с традиционными потоками (threads), что позволяет создавать десятки тысяч goroutine в одном приложении.

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
}


💡 Основные отличия goroutine от потоков:

🌟Меньшие накладные расходы: goroutine используют порядка 2KB памяти, тогда как системные потоки требуют несколько мегабайт.

🌟Управление планировщиком Go: go-планировщик управляет goroutine и их распределением между потоками, тогда как в традиционных языках управление потоками часто ложится на ОС.

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

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