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
加入频道
💡Задача: Случайный узел списка

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

Реализуйте класс решения:

Инициализируется объект с помощью заголовка односвязного списка head.
int getRandom() случайным образом выбирает узел из списка и возвращает его значение. Все узлы списка должны быть выбраны с равной вероятностью.

Пример:

Ввод:
["Solution", "getRandom", "getRandom", "getRandom", "getRandom", "getRandom"]
[[[1, 2, 3]], [], [], [], [], []]
Вывод: [null, 1, 3, 2, 2, 3]

Решение

Пишите свое решение в комментариях👇

@golang_interview
👣 Миграции баз данных с Golang

Недавно я присоединился к новой команде и был поражен созданной у них инфраструктурой тестирования для успешной работы приложений. Для меня это было большой переменой: я не привык к такой манере «тестирования».

С тестированием уровня данных связаны миграции БД. С базами данных я работаю на протяжении всей своей карьеры инженера-разработчика и все же задался вопросом: «Что это за миграции БД?»

Рассмотрим применение миграций БД в службах, написанных на Golang.

Что такое «миграции БД»?

Вот определение из prisma.io:

📌Читать


@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Golang: Шпаргалка для алгособеса часть 1. Алгоритмы сортировки

https://www.youtube.com/watch?v=Lkg_fXoeKTI

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Задача: Максимальное скользящее

Условие: дан целочисленный массив, а также размер k подмассива, начинающегося от левой границы, и заканчивающегося в процессе выполнения алгоритма у правой границы. На каждом шаге можно просматривать k последовательных элементов скользящего массива. На каждом шаге надо определить максимальное значение скользящего.

Пример:

Ввод:
nums = [1,3,-1,-3,5,3,6,7], k = 3
Вывод:
[3,3,5,5,6,7]

Объяснение:
Скользящее на каждой итерации Max
-------------------------- -----
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7

Ввод:
nums = [1], k = 1
Вывод:
[1]

Решение

Пишите свое решение в комментариях👇

@golang_interview
💡Задача: Сжатие строки

Условие: дается массив символов chars, сожмите его, используя следующий алгоритм:

Начинайте с пустой строки s. Для каждой группы последовательных повторяющихся символов в chars:

Если длина группы равна 1, добавьте символ для просмотра.
В противном случае добавьте символ, за которым следует длина группы.
Сжатые строки не должны возвращаться отдельно, а вместо этого должны храниться во входном символьном массиве chars. Обратите внимание, что длина группы, равная 10 или более, будет разделена на несколько символов в chars.

После того, как вы закончите изменять входной массив, верните новую длину массива.

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

Пример:

Ввод:
chars = ["a","a","b","b","c","c","c"]
Вывод: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]

Решение

Пишите свое решение в комментариях👇

@golang_interview
💡Задача: Сортировка массива

Условие: дается массив целых чисел nums, отсортируйте массив в порядке возрастания и верните его.

Вы должны решить проблему без использования каких-либо встроенных функций в O(nlog(n)) временной сложности и с наименьшей возможной пространственной сложностью.

Пример:

Ввод:
nums = [5,2,3,1]
Вывод: [1,2,3,5]

Ввод: nums = [5,1,1,2,0,0]
Вывод: [0,0,1,1,2,5]

Решение

Пишите свое решение в комментариях👇

@golang_interview
Салют, эксперты Go!

Вопрос: какой из этих 2 вариантов предпочтительнее?
Стоит ли делать переменную port глобальной и вместе с этим вынести проверку порта в init()?
Или пусть это всё так и будет в main()?
Что думаете по этому поводу?

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️Нереальный открытый учебник по Computer Science и алгоритмам

🔗 eecs376.github.io/notes/algorithms.html

Прокачивайся — и тогда ИИ тебя не заменит)

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Templ — пакет, который позволяет писать пользовательские интерфейсы на Go

Вместе с Templ мы можем написать следующий код:
/ index.templ

package mainhttps://github.com/a-h/templ/raw/main/ide-demo.gif

templ hello(name string) {
if name == "Виктор" {
<div>Привет, Виктор! Как твои дела сегодня?</div>
} else {
<div>Hello, { name }</div>
}
}

templ greeting(person Person) {
<div class="greeting">
@hello(person.Name)
</div>
}

// ...

Далее вам просто нужно запустить процесс генерации всех *.templфайлов...:
go run github.com/a-h/templ/cmd/templ@latest generate

...и после этого index.templ будет преобразована в обычную функцию Go и готоа к запуску. Выглядеть она может как-то так:
// main.go

package main

// ...

// Simple user struct.
type Person struct {
Name string
}

func main() {
// Create a new user with name.
user := Person{Name: "John"}

// Create Templ handler.
handler := templ.Handler(greeting(user))

// Serve Templ handler with HTTP server.
http.Handle("/", handler)

// Start simple HTTP server.
http.ListenAndServe(":3000", nil)
}


Теперь откройте браузер http://localhost:3000 и посмотрите результат.
Да, это так просто!

🖥 GitHub

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Интересная идея для пет-проекта — передача данных через анимированные QR на Gomobile и GopherJS

Креативный способ прокачать скиллы и получить +1 проект в портфолио 🌟

*️⃣Проект написан на Go, с использованием Gomobile и Gopherjs – последний для веб-приложения для автоматического замера скорости передачи данных.

*️⃣В проекте используется Vecty для создания простого и понятного кода, который облегчает работу с DOM.

*️⃣Компиляция Go кода в JavaScript происходит быстро и без проблем, что упрощает процесс разработки и позволяет писать веб-приложения без JS>

*️⃣Веб-сервис для передачи данных между веб-приложением и мобильным клиентом работает через WebSocket-прокси.

*️⃣В ходе тестирования и обкатки проекта выяснилось, что односторонняя передача данных через анимированные QR-коды возможна и подходит для ситуаций с небольшим объемом данных.

*️⃣Как выяснилось, использовать Gomobile и GopherJS — неплохая идея, они обеспечивают отличную скорость разработки и возможность рефакторинга на ходу.

Про весь процесс создания, с подробным описанием и примерами читать тут

@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
🔺Дизайн систем — основные понятия и принципы

CAP – Согласованность/целостность, доступность и устойчивость к разделению. Это означает, что версии одной и той же информации, хранящиеся на разных серверах, не противоречат друг другу и любой запрос к распределённой системе завершается корректным откликом. Такие системы возможны при поддержке ACID-требований к транзакциям

BASE — "в основном доступный, мягкое состояние, постепенно согласованный". Подход BASE ставит упор на доступность данных и их масштабируемость, позволяя достигнуть этих целей за счет компромисса в отношении согласованности данных.

SOLID — принцип единственной ответственности, принцип открытости/закрытости, принцип подстановки Барбары Лисков, принцип разделения интерфейса, принцип инверсии зависимостей

KISS — принцип, запрещающий использование более сложных средств, чем необходимо

И ещё некоторые важные требования к техническим системам в плане отказоустойчивости и т.д. на другом изображении

@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