Channel: Golang вопросы собеседований
Distributed tracing в Go
Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?
Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.
Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖
А еще он подготовил для вас репозиторий с инструкциями и командами, чтобы вы могли потестить и выбрать для себя подходящий инструмент!
Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwWKz2a
Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?
Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.
Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖
А еще он подготовил для вас репозиторий с инструкциями и командами, чтобы вы могли потестить и выбрать для себя подходящий инструмент!
Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwWKz2a
❤3👍3🌭1
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6❤3
Forwarded from Golang
@devopsitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Представляем вам крутую шпаргалку по шести основным архитектурным шаблонам, каждый из которых подходит для разных сценариев.
Это самый простой и традиционный подход, при котором все компоненты связаны между собой в единой кодовой базе. Монолитная архитектура проста и идеально подходит для небольших приложений, не требующих обширной масштабируемости. Однако по мере роста систем ее масштабирование, тестирование и поддержка могут стать сложными. Идеально подходит для стартапов или небольших команд, ищущих быструю разработку.
Любимый вариант для больших сложных приложений, которым требуется масштабируемость и гибкость. Здесь приложение разделено на независимо развертываемые сервисы, каждый из которых обрабатывает определенные бизнес-функции. Микросервисы позволяют командам использовать различные технологические стеки и масштабировать сервисы независимо. Этот шаблон популярен в приложениях с высоким трафиком и организациях, которым нужна свобода для независимого развертывания функций.
Этот шаблон разделяет задачи на контроллеры и рабочие. Контроллер управляет взаимодействиями с пользователем, в то время как рабочие выполняют фоновые задачи, такие как обработка данных, создавая систему, которая является высокомасштабируемой и эффективной. Идеально подходит для приложений, которым необходимо выполнять интенсивные фоновые задания, такие как обработка заказов, аналитика в реальном времени или уведомления.
Классический шаблон, обычно используемый в веб-приложениях, MVC разделяет логику приложения (модель), пользовательский интерфейс (представление) и взаимодействие (контроллер). Такое разделение задач упрощает поддержку и обновление определенных частей, не затрагивая всю систему. MVC является популярным выбором для приложений, которым требуются пользовательские интерфейсы, особенно в сферах электронной коммерции и управления контентом.
Идеально подходит для систем, которым необходимо реагировать на определенные действия или события, такие как щелчки пользователя, обновления базы данных или показания датчиков. В этом шаблоне компоненты реагируют на события асинхронно, что делает его масштабируемым и слабосвязанным. Архитектура, управляемая событиями, отлично подходит для приложений со сложными рабочими процессами или асинхронными потребностями в обработке, такими как IoT, аналитика в реальном времени и системы уведомлений клиентов.
Организует приложение по слоям (Презентация, Бизнес, Доступ к данным и Инфраструктура) для создания четкого разделения интересов. Каждый слой отвечает за определенный аспект, делая систему более обслуживаемой и тестируемой. Многоуровневый подход часто используется в корпоративных приложениях и идеально подходит для создания четкой стандартизированной структуры во всей системе.
#doc #web #cheatsheet
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥴5❤3🤣3🥰2🥱2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍5❤2🤔1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤4🔥4
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3👍2
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥2🥰2🥱2💯1
В этой задаче Вам необходимо найти самую длинную подстроку строки \(s\), такую что каждая буква в ней встречается не менее \(k\) раз.
Если такой подстроки нет, вернуть 0.
Пример:
Вход: s = "aaabb", k = 3
Выход: 3
Объяснение: Самая длинная подходящая подстрока – "aaa", так как буква 'a' повторяется три раза.
### Описание алгоритма:
1. Генерация подстрок: Генерируем все возможные подстроки строки \(s\). Для каждой подстроки будем отслеживать частоту появления символов при помощи массива countMap.
2. Проверка валидности: Метод isValid проверяет, что каждый символ в текущей подстроке появляется хотя бы \(k\) раз. Это делается через проверку значений в массиве countMap. Если все символы удовлетворяют условию, то подстрока считается допустимой.
3. Обновление результата: Отслеживаем максимальную длину допустимых подстрок. Когда находим новую подходящую подстроку большей длины, обновляем результат. В итоге возвращаем длину самой длинной найденной подстроки.
Ответ:
package main
import (
"fmt"
)
func longestSubstring(s string, k int) int {
if len(s) == 0 || k > len(s) {
return 0
}
n := len(s)
result := 0
for start := 0; start < n; start++ {
countMap := make([]int, 26)
for end := start; end < n; end++ {
countMap[s[end]-'a']++
if isValid(countMap, k) {
if end-start+1 > result {
result = end - start + 1
}
}
}
}
return result
}
func isValid(countMap []int, k int) bool {
countLetters, countAtLeastK := 0, 0
for _, count := range countMap {
if count > 0 {
countLetters++
}
if count >= k {
countAtLeastK++
}
}
return countLetters == countAtLeastK
}
func main() {
fmt.Println(longestSubstring("aaabb", 3)) // Output: 3
fmt.Println(longestSubstring("ababbc", 2)) // Output: 5
}
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤2🥱2🥴2🤣1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥱6👍4❤3
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5❤3👍3🔥1🤔1
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: hottg.com/ai_machinelearning_big_data
C++ hottg.com/cpluspluc
Python: hottg.com/pythonl
Linux: hottg.com/linuxacademiya
Хакинг: hottg.com/linuxkalii
Devops: hottg.com/DevOPSitsec
АНАЛИЗ Данных: hottg.com/data_analysis_ml
Javascript: hottg.com/javascriptv
C#: hottg.com/csharp_ci
Java: hottg.com/javatg
Базы данных: hottg.com/sqlhub
Python собеседования: hottg.com/python_job_interview
Мобильная разработка: hottg.com/mobdevelop
Docker: hottg.com/DevopsDocker
Golang: hottg.com/golang_interview
React: hottg.com/react_tg
Rust: hottg.com/rust_code
ИИ: hottg.com/vistehno
PHP: hottg.com/phpshka
Android: hottg.com/android_its
Frontend: hottg.com/front
Big Data: hottg.com/bigdatai
Собеседования МЛ: hottg.com/machinelearning_interview
МАТЕМАТИКА: hottg.com/data_math
Kubernets: hottg.com/kubernetc
Разработка игр: https://hottg.com/gamedev
💼 Папка с вакансиями: hottg.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: hottg.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: hottg.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://hottg.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://hottg.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: hottg.com/memes_prog
🇬🇧Английский: hottg.com/english_forprogrammers
🧠ИИ: hottg.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://hottg.com/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: hottg.com/ai_machinelearning_big_data
C++ hottg.com/cpluspluc
Python: hottg.com/pythonl
Linux: hottg.com/linuxacademiya
Хакинг: hottg.com/linuxkalii
Devops: hottg.com/DevOPSitsec
АНАЛИЗ Данных: hottg.com/data_analysis_ml
Javascript: hottg.com/javascriptv
C#: hottg.com/csharp_ci
Java: hottg.com/javatg
Базы данных: hottg.com/sqlhub
Python собеседования: hottg.com/python_job_interview
Мобильная разработка: hottg.com/mobdevelop
Docker: hottg.com/DevopsDocker
Golang: hottg.com/golang_interview
React: hottg.com/react_tg
Rust: hottg.com/rust_code
ИИ: hottg.com/vistehno
PHP: hottg.com/phpshka
Android: hottg.com/android_its
Frontend: hottg.com/front
Big Data: hottg.com/bigdatai
Собеседования МЛ: hottg.com/machinelearning_interview
МАТЕМАТИКА: hottg.com/data_math
Kubernets: hottg.com/kubernetc
Разработка игр: https://hottg.com/gamedev
💼 Папка с вакансиями: hottg.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: hottg.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: hottg.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://hottg.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://hottg.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: hottg.com/memes_prog
🇬🇧Английский: hottg.com/english_forprogrammers
🧠ИИ: hottg.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://hottg.com/addlist/BkskQciUW_FhNjEy
👍1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
HTML Embed Code: