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
加入频道
💡Задача: Ряд клавиатуры

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

Пример:

Ввод:
words = ["Hello","Alaska","Dad","Peace"]
Вывод:
["Alaska","Dad"]
Объяснение:

Ввод:
words = ["omk"]
Вывод:
[ ]

📌 Решение

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

@golang_interview
💡Задача: Общая подпоследовательность наибольшей длины

Условие: на вход подаются две строки, необходимо вывести их наидлиннейшую общую подпоследовательность, а точнее ее длину.

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

Пример:

Ввод:
text1 = "abcde", text2 = "ace"
Вывод: 3
Объяснение: "ace"

Ввод: text1 = "abc", text2 = "def"
Вывод: 0

📌 Решение

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

@golang_interview
💡Задача: Подмассив с фиксированными границами

Условие: дается целочисленный массив nums и два целых числа minK и maxK.

Подмассив nums с фиксированной привязкой - это подмассив, который удовлетворяет следующим условиям:

Минимальное значение в подмассиве равно minK.
Максимальное значение в подмассиве равно max.
Возвращает количество подмассивов с фиксированной привязкой.

Подмассив - это непрерывная часть массива.

Пример:

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

Ввод
: nums = [1,1,1,1], minK = 1, maxK = 1
Вывод: 10

Решение

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

@golang_interview
💡Задача: То же дерево

Условие:
Получив корни двух бинарных деревьев 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