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
加入频道
💡Задача: Префиксное дерево

Условие : префиксное дерево - это структура данных для эффективного хранения и извлечения ключей в массиве строк.

Необходимо реализовать класс со следующими методами:

- Trie() - инициализатор;
-
void insert(String word) - осуществляет вставку в экземпляр класса;
- boolean search(String word) - возвращает флаг о наличии слова word в дереве;
- boolean startsWith(String prefix) - возвращает флаг о том, начинается ли слово, вставленное на предыдущем шаге с prefix.

Пример:

Ввод:
["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]

Вывод: [null, null, true, false, true, null, true]

Объяснение:
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple"); // return True
trie.search("app"); // return False
trie.startsWith("app"); // return True
trie.insert("app");
trie.search("app"); // return True

Решение

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

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Легкий способ получать свежие обновлении и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Машинное обучение: t.me/ai_machinelearning_big_data
Go: t.me/Golang_google
Базы данных: t.me/sqlhub
C++/ t.me/cpluspluc
Data Science: t.me/data_analysis_ml
Python: t.me/pythonl
Хакинг: t.me/linuxkalii
Devops: t.me/devOPSitsec
C#: t.me/csharp_ci
Java: t.me/javatg
Linux: t.me/+A8jY79rcyKJlYWY6
Мобильная разработка: t.me/mobdevelop
Docker: t.me/+0WdB4uvOwCY0Mjdi
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Big Data: t.me/bigdatai
Тестирование:https://yangx.top/+F9jPLmMFqq1kNTMy
Аналитика данных: https://yangx.top/+mAXY9ppJwitkMDBi

😆ИТ-Мемы: t.me/memes_prog

🇬🇧Английский: t.me/english_forprogrammers

📕Ит-книги бесплатно: https://yangx.top/addlist/BkskQciUW_FhNjEy

ИИ: t.me/vistehno

Книги по искусственному интеллекту

💼 Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка Java разработчика: https://yangx.top/addlist/ZM3J6oFNAnRlNWU6
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
⚡️ 20 сайтов, на которых можно найти удаленную работу с оплатой в долларах США

1. Remote. co: https://remote.co
2. We Work Remotely: https://weworkremotely.com
3. FlexJobs: https://flexjobs.com
4. Remote OK: https://remoteok.io
5. Working Nomads: https://workingnomads.co/jobs
6. Jobspresso: https://jobspresso.co
7. Stack Overflow Jobs: https://stackoverflow.com/jobs
8. AngelList: https://angel.co
9. LinkedIn: https://linkedin.com
10. SkipTheDrive: https://skipthedrive.com
11. Remotive: https://remotive.io
12. Виртуальные профессии: https://virtualvocations.com
13. JustRemote: https://justremote.co
14. Удаленная техническая работа: https://remotetechwork.com
15. Dynamite Jobs: https://dynamitejobs.co
16. Pangian: https://pangian.com
17. Outsourcely: https://outsourcely.com
18. Remote Woman: https://remotewoman.com
19. Jobmote: https://jobmote.com
20. EuropeRemotely: https://europeremotely.com

@golang_interview
👣 Задача от подписчика

Интересно как это можно было бы решить более оптимально:


Назовем натуральное число "особым", если все его цифры различны.
Для заданного положительного целого числа n верните количество особых целых чисел, принадлежащих интервалу [1, n].

Пример
Аргумент: n = 20
Вывод: 19
Обьяснение: Все числа от 1 до 20, кроме 11, являются особыми.
Таким образом, существует 19 особых целых чисел.

Ограничения
1 <= n <= 2 * 10^9


Мое решение на битовых операциях не очень оптимальным получилось: https://go.dev/play/p/bf_JqAV9YC8, есть идея еще добавить словарик для прогнанных значений

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

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
📌Максимальное среднее подмассива

Сложность: Easy

Условие задачи: Дан целочисленный массив nums, состоящий из n элементов и целого числа k.

Найдите непрерывный подмассив, длина которого равна k, который имеет максимальное среднее значение, и верните это значение. Будет принят любой ответ с ошибкой вычисления менее 10-5.

Пример:

Ввод:
nums = [1,12,-5,-6,50,3], k = 4
Вывод: 12.75000
Объяснение:

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

Решение

@golang_interview
🥳 Выпущены версии Go 1.21.4 и 1.20.11!

🔐 Безопасность: Включены исправления безопасности для path/filepath (CVE-2023-45283, CVE-2023-45284).

🗣 Анонс: https://groups.google.com/g/golang-announce/c/4tU8LZfBFkY

🗃 Скачать: https://go.dev/dl/#go1.21.4

@golang_interview
Немного расширенный функционал Mutex в грядущем пакете "go101․org/nstd".

m.Lock()
defer m.Unlock()


vs

defer m.Lock().Unlock()

https://github.com/golang/go/issues/63941

#Golang

@golang_interview
tg_image_1191967053.jpeg
342.3 KB
Как разрабатывать эффективные и безопасные API?

На схеме показаны типовые конструкции API на примере корзины товаров.

@golang_interview
👣 Что-то интересная #Golang и его количетсво звезд по всем репозиториям 🌠 по годам.

Будет ли в 2023 году больше или меньше звезд, чем в предыдущем? (на данный момент 2 610 110).

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Задача: Двумерный бинарный поиск

Условие: дана 2-мерная матрица чисел, в которой числа упорядочены по возрастанию сверху-вниз и слева-направо. Надо определить, есть ли в матрице целевое значение.

Пример:

Ввод:
matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Вывод:
True

Ввод:
matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
Вывод:
Fasle

Решение

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
💡 Балансировщики нагрузки буквально в 100 раз лучше, чем старый добрый светофор.

Они могут обрабатывать миллионы входящих запросов, распределять трафик между серверами и вообще поддерживать бесперебойную работу при минимальной настройке.

Почему?

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

В общем случае существует две категории таких алгоритмов:

Статические

- Round Robin
- Sticky Round Robin
- Хэш
- Weighted Round Robin


Динамический

- Наименьшее количество соединений
- Наименьшее время отклика

Рассмотрим каждый алгоритм чуть более подробно

👉 Round Robin

- Запросы последовательно распределяются между группой серверов.

- Нет гарантии, что несколько запросов от пользователя попадут к одному и тому же экземпляру.

👉Sticky Round Robin

- Лучшая альтернатива round-robin

- Различные запросы от одного и того же пользователя поступают на один и тот же эндпоинт.

👉 Hash-Based

- Алгоритм распределяет запросы на основе хэша значения ключа.

- В качестве ключа может выступать IP-адрес или URL-адрес запроса

👉 Weighted Round Robin

- Каждый сервер получает значение веса.

- Это значение определяет долю трафика.

- Серверы с большим весом получают больше трафика. Хорошо подходит для систем с серверами разной мощности

👉 Наименьшее количество соединений

- Новый запрос отправляется на тот экземпляр сервера, который имеет наименьшее количество соединений.

- Количество подключений определяется исходя из относительной вычислительной мощности сервера

👉 Наименьшее время отклика

- Новый запрос отправляется на сервер с наименьшим временем отклика, чтобы минимизировать общее время отклика.

- Хорошо подходит для случаев, когда время отклика критично.

Протестируйте балансировку нагрузки телеграм с помощью кнопки LIKE👍.

@golang_interview
👣 Погружаемся в кроличью нору - сложности динамического подключения хуков на Golang

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

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

https://blog.quarkslab.com/lets-go-into-the-rabbit-hole-part-1-the-challenges-of-dynamically-hooking-golang-program.html

#golang #infosec

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Задача: Смена операции

Условие: Дано целое число, нужно переконвертировать данное число в сумму, слагаемых должно быть не менее двух. А само разложение должно осуществляться таким образом, что произведение слагаемых будет максимальным.

В результате необходимо получить это самое произведение.

Пример:

Ввод:
n = 2
Вывод: 1
Объяснение: 2 = 1 + 1, 1 × 1 = 1.

Ввод: n = 10
Вывод: 36
Объяснение: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36.

📌 Решение

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Текущий официальный стандартный компилятор Go по-прежнему делает много ненужных проверок на связанность.

Все связанные проверки в следующем коде фактически не нужны, можете объяснить почему ?: https://github.com/golang/go/issues/64272

@golang_interview
👣 Комбинация сумм II

Сложность: Средняя

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

Каждое число из списка кандидатов должно содержаться в конечном подсписке из ответов ровно один раз.

Результирующий ответ не должен содержать в себе дубликатов.

Пример:

Ввод:
candidates = [10,1,2,7,6,1,5], target = 8
Вывод: [
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

Ввод: candidates = [2,5,2,1,2], target = 5
Вывод: [
[1,2,2],
[5]
]

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

🔗 Решение
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 500 самых высокооплачиваемых компаний (для инженеров-программистов)

https://github.com/miketromba/highest-paying-software-companies

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔧 12 инструментов аутентификации с открытым исходным кодом, которые помогут вам создавать лучшие приложения, некоторые из них написаны на golang

https://permit.io/blog/top-12-open-source-auth-tools

@golang_interview
💡Задача: Идеальное число

Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.

Необходимо проверить входное число на идеальность.

Пример:

Ввод:
num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14

Ввод: num = 7
Вывод: false

👉 Решение

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

@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
💡Задача: Нахождение существующего пути

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

Необходимо определить существует ли корректная дорога между узлом source и destination.

Пример:

Ввод:
n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
Вывод: true
Объяснение: *во вложении

Ввод: n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
Вывод: false

📌 Решение

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

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