Golang вопросы собеседований
13.5K subscribers
631 photos
3 videos
1 file
433 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
加入频道
💡Задача: То же дерево

Условие:
Получив корни двух бинарных деревьев p и q, напишите функцию, проверяющую, совпадают ли они.

Два бинарных дерева считаются одинаковыми, если они структурно идентичны, а узлы имеют одинаковое значение.

Примеры (картинки по порядку):
Ввод: p = [1,2,3], q = [1,2,3]
Вывод: true

Ввод: p = [1,2], q = [1,null,2]
Вывод: false

Ввод: p = [1,2,1], q = [1,1,2]
Вывод: false

Ограничения:
Количество узлов в обоих деревьях находится в диапазоне [0, 100].

📌 Решение

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

@golang_interview
💡Задача: Возможность Отправки Посылок В Течение D Дней

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

i-я упаковка на конвейерной ленте имеет вес гирь[i]. Каждый день мы загружаем судно упаковками на конвейерную ленту (в порядке, указанном по весу). Мы не можем загружать больше груза, чем максимальная грузоподъемность судна.

Возвращайте наименьшую грузоподъемность судна, что приведет к отправке всех упаковок на конвейерной ленте в течение нескольких дней.

Пример:

Ввод:
weights = [1,2,3,4,5,6,7,8,9,10], days = 5
Вывод: 15

Ввод: weights = [3,2,2,4,1,4], days = 3
Вывод: 6

📌 Решение

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

@golang_interview
💡Задача: Случайный узел списка

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

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

Инициализируется объект с помощью заголовка односвязного списка 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