Similar presentations:
Монолит vs микросервисы
1.
2.
Монолит vsмикросервисы
3.
4.
Как устроен garbagecollector
5.
6.
7.
8.
Escape – анализ9.
HTTP, REST API,WebSocket
10.
11.
https://petstore.swagger.io/12.
WebSocket handshake13.
gRPC, protobufgRPC (Remote Procedure Calls) — это система удалённого
вызова процедур (RPC)
Protocol Buffers — протокол сериализазии данных
14.
Proto file15.
16.
Git17.
GitКонфликты
Обычно конфликты
возникают, когда два
человека изменяют
одни и те же строки в
файле или один
разработчик удаляет
файл, который в это
время изменяет
другой разработчик.
В таких случаях Git
не может
автоматически
определить, какое
изменение является
правильным.
18.
git rebase vs git merge19.
SQL• Индексы - что такое, какой индекс по умолчанию строит Postgress
• Транзакции – что такое, виды (read uncommited, read committed,
repeatable read и serializable)
• ACID - atomicity, consistency, isolation, durability
• Виды изоляций - read uncommited, read committed, repeatable read и
serializable
20.
Dockerdocker-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.
Channel27.
Что нужно знать:Какие бывают
Чем отличается буферизированный канал от небуферизированного
Отличается ли канал с буфером 1 от небуферизированного
Что произойдет при чтении из закрытого канала.
Как работает Select
Способы чтения из канала(for range; a, ok := <- chan )
28.
Map29.
Что нужно знать:Как все устроено внутри(хеш функция, бакеты)
Какие типы могут быть ключом и значением мапы.
Алгоритмическая сложность.
Что такое эвакуация и когда она происходит.
Как происходит доступ к элементу.
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 — логирование всех ошибок.