Kaspersky / Касперский - 5
Актуальность: 2 кв 2025
Вопросы
Заголовок раздела «Вопросы»- Что такое gorutine? Для чего используют?
go/concurrency - Что будет, если вызвать несколько gorutine в main и не ждать их завершения?
go/concurrency - При обработке гигабайт данных в горутине, где хранятся эти данные?
go/concurrency - В чем разница между конкурентностью и параллелизмом?
go/concurrency - Каким образом получается, что горутины выстраиваются в одну очередь выполнения?
go/runtime - От чего зависит количество очередей?
algorithms/data-structures - От чего зависит количество потоков?
go/runtime - Можно ли создать количество потоков больше, чем ядер процессора?
linux-os/processes - Как можно управлять количеством потоков в Go?
go/basics - Что такое кэширование?
nosql-cache/caching - Почему нельзя взять JSON-файл и положить его рядом с приложением, вместо использования механизмов кэширования? При чем здесь вообще кэширование?
nosql-cache/caching - Расскажите о масштабировании в распределенных системах. Какие есть виды масштабирования?
architecture/microservices - Как можно масштабировать базы данных?
sql/replication-scaling - Для чего нужен WAL-журнал в PostgreSQL?
sql/replication-scaling - Можно ли дважды записать одну и ту же запись в мультимастер?
sql/replication-scaling - Есть три юзер-сервиса. Перед ними стоит прокси. Как распределить нагрузку на эти три сервиса?
network/balancing
Задача: Что выведет на экран? Как сделать так, чтобы вывелась 1? go/puzzles
Заголовок раздела «Задача: Что выведет на экран? Как сделать так, чтобы вывелась 1? go/puzzles»type Count int
func (c Count) Increment() { c++}
func main() { var count Count count.Increment() fmt.Print(count)}Задача: Что выведет на экран? go/puzzles
Заголовок раздела «Задача: Что выведет на экран? go/puzzles»func insert(a []int) { a = append(a, 4)}
func main() { a := make([]int, 0, 4) a = append(a, []int{1, 2, 3}...) insert(a) fmt.Println(a)}Задача: Что выведет на экран? Что будет, если добавить конструкцию default? go/puzzles
Заголовок раздела «Задача: Что выведет на экран? Что будет, если добавить конструкцию default? go/puzzles»func main() { msgchan := make(chan string, 1) close(msgchan) stopchan := make(chan struct{}) close(stopchan)
select { case msgchan <- "msg ": fmt.Println("msg sent ") case <-stopchan: fmt.Println("stop signal received ") }}Задача: Что выведет на экран? go/puzzles
Заголовок раздела «Задача: Что выведет на экран? go/puzzles»func main() { c := make(chan int, 3) c <- 1 c <- 2
for msg := range c { fmt.Println(msg) } close(c)}Задача: Измененная задача 4. go/basics
Заголовок раздела «Задача: Измененная задача 4. go/basics»func main() {c:=make(chan int, 3)c<-1c<-2c<-3c<-4
for msg:=range c{fmt.Println(msg)}}
close(c)Задача: Что возле каждого вывода fmt выведет в комментариях? go/basics
Заголовок раздела «Задача: Что возле каждого вывода fmt выведет в комментариях? go/basics»var s *stringfmt.Println(s == nil)var i anyfmt.Println(i == nil)i = sfmt.Println(i == nil)Задача: Что выведется в первом, во втором и в третьем случае? go/puzzles
Заголовок раздела «Задача: Что выведется в первом, во втором и в третьем случае? go/puzzles»type Speaker interface { Speak() string}
type Person struct { name string}
func (p Person) Speak() string { return "Hi, I 'm " + p.name}
func main() { var s Speaker p := Person{name: "Alice "} s = p
p.name = "Bob "
fmt.Println(s.Speak()) // (1) { func() { s := p fmt.Println(s.Speak()) // (2) }() go func(p Person) { time.Sleep(10 * time.Millisecond) fmt.Println(p.Speak()) // (3) }(p)
p.name = "Charlie "
time.Sleep(20 * time.Millisecond) }}Задача: Необходимо реализовать middleware. Middleware будет отбрасывать n+1 запрос за секунду. Мы не пропускаем больше 100 запросов, например, как у нас здесь на 25 строчке указано, за одну секунду. То есть, если 101 пришел, то мы вернем клиенту ошибку с 429 статусом. Можно доработать конструктор, можно доработать структуру и можно добавить дополнительные приватные методы, если они нужны. Все, что выше комментария, править разрешено, все, что ниже комментария - не править. Как много памяти будет потреблять алгоритм и может ли быть проблема с памятью? Какова алгоритмическая сложность алгоритма? Как можно уменьшить алгоритмическую сложность? go/concurrency
Заголовок раздела «Задача: Необходимо реализовать middleware. Middleware будет отбрасывать n+1 запрос за секунду. Мы не пропускаем больше 100 запросов, например, как у нас здесь на 25 строчке указано, за одну секунду. То есть, если 101 пришел, то мы вернем клиенту ошибку с 429 статусом. Можно доработать конструктор, можно доработать структуру и можно добавить дополнительные приватные методы, если они нужны. Все, что выше комментария, править разрешено, все, что ниже комментария - не править. Как много памяти будет потреблять алгоритм и может ли быть проблема с памятью? Какова алгоритмическая сложность алгоритма? Как можно уменьшить алгоритмическую сложность? go/concurrency»type RateLimiter struct { N int}
func NewRateLimiter(n int) *RateLimiter { return &RateLimiter{}}
func (rl *RateLimiter) Middleware(h func(w http.ResponseWriter, r *http.Request)) func(w http.ResponseWriter) { return h}
func handler(w http.ResponseWriter, r *http.Request) { fmt.Println("REQUEST COMPLETED ")}
func main() { rl := NewRateLimiter(100) http.HandleFunc("/", rl.Middleware(handler))
go func() { for i := 0; i < 1000; i++ { time.Sleep(10 * time.Millisecond) if _, err := http.Get("http://localhost:8080/"); err != nil { log.Fatal(err) } os.Exit(0)
} }()}Задача: Рассматривается создание личного блога. Есть два подхода к хранению статей: sql/schema-design
Заголовок раздела «Задача: Рассматривается создание личного блога. Есть два подхода к хранению статей: sql/schema-design»- в Markdown-файлах - файлы лежат локально на сервере, когда пользователь запрашивает статью, бэкенд открывает соответствующий файл и отдает его содержимое;
- хранение статьи в базе данных.
Вопрос: когда именно понадобится кэширование в такой системе
Заголовок раздела «Вопрос: когда именно понадобится кэширование в такой системе»Задача: Напишите SQL-запрос, который выводит имя и город каждого человека из таблицы Person. Если для какого-либо personId нет записи в таблице Address, то в столбце city должно быть значение NULL. sql/general
Заголовок раздела «Задача: Напишите SQL-запрос, который выводит имя и город каждого человека из таблицы Person. Если для какого-либо personId нет записи в таблице Address, то в столбце city должно быть значение NULL. sql/general» | Column Name | Type ||-------------|---------|| personId | int || Name | varchar |Таблица Person
Заголовок раздела «Таблица Person»personId - первичный ключ.
Таблица Address
Заголовок раздела «Таблица Address»addressId - первичный ключ.