1.90M
Category: pedagogypedagogy

Монолит vs микросервисы

1.

2.

Монолит vs
микросервисы

3.

4.

Как устроен garbage
collector

5.

6.

7.

8.

Escape – анализ

9.

HTTP, REST API,
WebSocket

10.

11.

https://petstore.swagger.io/

12.

WebSocket handshake

13.

gRPC, protobuf
gRPC (Remote Procedure Calls) — это система удалённого
вызова процедур (RPC)
Protocol Buffers — протокол сериализазии данных

14.

Proto file

15.

16.

Git

17.

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

18.

git rebase vs git merge

19.

SQL
• Индексы - что такое, какой индекс по умолчанию строит Postgress
• Транзакции – что такое, виды (read uncommited, read committed,
repeatable read и serializable)
• ACID - atomicity, consistency, isolation, durability
• Виды изоляций - read uncommited, read committed, repeatable read и
serializable

20.

Docker
docker-compose.yml
docker-compose up –d - для запуска
docker-compose stop - для остановки

21.

Mocks
• Mock-объект представляет собой конкретную фиктивную
реализацию интерфейса, предназначенную исключительно для тестирования
взаимодействия и относительно которого высказывается утверждение.
• В Go для автоматической генерации моков используеются
библиотеки GoMock, Mockery, Testify

22.

Context
• Отмена выполнения. Например при отмене http запроса от пользователя,
отменить запросы в базу или внешним сервисам.
• Передача параметров. Например можно передать в контексте логгер.
context.WithValue

23.

ООП в Go
• OOП – обычно это 3 принципа:
Полиморфизм, инкапсуляция, наследование
• Как в Го:
Наследования нет, есть ВСТРАИВАНИЕ
Полиморфизм реализуется через ИНТЕРФЕЙСЫ
Инкапсуляция

24.

String
• По строению string – []byte
• Иммутабельность.
• Как итерироваться?
При помощи цикла for range
• Как подсчитать полисчество символов?
utf8.RuneCountInString(). Функция len() подсчитает количество byte.

25.

type SliceHeader struct {
Data uintptr
Len int
Cap int
}
• На сколько увеличивается слайс при
добавлении нового элемента, если
места в массиве не осталось?
Slice

26.

Channel

27.

Что нужно знать:
Какие бывают
Чем отличается буферизированный канал от небуферизированного
Отличается ли канал с буфером 1 от небуферизированного
Что произойдет при чтении из закрытого канала.
Как работает Select
Способы чтения из канала(for range; a, ok := <- chan )

28.

Map

29.

Что нужно знать:
Как все устроено внутри(хеш функция, бакеты)
Какие типы могут быть ключом и значением мапы.
Алгоритмическая сложность.
Что такое эвакуация и когда она происходит.
Как происходит доступ к элементу.

30.

Интерфейсы
Интерфейсный тип в Go — это своего рода определение. Он
определяет и описывает конкретные методы, которые должны
быть у какого-то другого типа.
type iface struct {
tab *itab data
unsafe.Pointer
}
Что спрашивают:
Соответствие интерфейсу
Что такое пустой интерфейс.
Почему любой тип может быть пустым
интерфейсом.
Duck typing(утиная типизация). Что такое. Есть ли
в Go

31.

Планировщик
Интерфейсный тип в Go — это своего рода определение. Он
определяет и описывает конкретные методы, которые должны
быть у какого-то другого типа.
type iface struct {
tab *itab data
unsafe.Pointer
}
Что спрашивают:
Соответствие интерфейсу
Что такое пустой интерфейс.
Почему любой тип может быть пустым
интерфейсом.
Duck typing(утиная типизация). Что такое. Есть ли
в Go

32.

Планировщик
Что спрашивают:
На рисунке 2 потока ядра (M), каждый
владеющий контекстом (P), каждый из
которых выполняет Go-рутину(G)
Чем горутины лучше потоков
Смена контекста
Когда планировщик переключает горутины?

33.

Замыкания(closures)
Замыкание - это функция, которая ссылается к
переменным вне ее тела. Функция имеет доступ к
связанным переменным, а также может присваивать
им значения; в этом смысле функция "связана" с
этими переменными.

34.

Escape - анализ
Escape analysis — это процесс, когда компилятор
выполняет статический анализ кода, чтобы
определить, может ли значение быть помещено в стек,
или значение должно «сбежать» в кучу.
в этом смысле функция "связана" с этими
переменными.

35.

Какие темы бывают еще:
Atomic, mutex, waitgroup, once, pool, map(sync pack)
Линтеры(gofmt, go vet, golangCI)
Go mod
logging(levels)
•ALL — логирование всех событий. ...
•DEBUG — логирование всех событий при отладке.
•INFO — логирование ошибок, предупреждений и сообщений.
•WARN — логирование ошибок и предупреждений.
•ERROR — логирование всех ошибок.

36.

Что тут не так?
English     Русский Rules