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
加入频道
👣 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
👣 Полезная статья, где описываются методы оптимизации Go кода

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

📎 Статья

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