Перейти к содержимому

Positive Technologies

  • В чем плюсы и минусы Go? go/basics
  • Работал ли с докером? Что такое multistage build? containers/docker
  • Как дебажить сервисы в кластере? devops/observability
  • Пользовался ли инструментами для удаленной разработки в кубере? containers/kubernetes
  • Пользуешься ли дебаггером? hr-behavioral/general
  • Что такое SOLID в целом и применительно к Go? architecture/principles
  • Можешь рассказать про чистую архитектуру и слои? architecture/principles
  • Что такое сервисы/хэндлеры/репозитории/слои/адаптеры и юзкейсы? architecture/patterns
  • Что такое dependency injection? architecture/principles
  • Как реализован параллелизм в Go и какие средства синхронизации есть? go/concurrency
  • Что будет, если писать или читать в/из закрытого канала? go/channels
  • Что будет, если писать или читать в/из канала nil? go/channels
  • C какими БД работал? sql/general
  • Что такое ACID, транзакции, уровни изоляции, аномалии? sql/transactions
  • Что такое миграции? Какие пакеты для миграций использовал в Go? sql/orm-drivers
  • Что можешь рассказать про связи one-to-one, one-to-many, many-to-many? go/interfaces
  • Что такое нормализация БД? Какие есть нормальные формы? sql/schema-design
  • Что можешь рассказать про анализирование SQL запросов? sql/general
  • REST/GRPC разница и когда какой применяется? network/http
  • Как шарили Прото файлы между сервисами, если один зависит от другого и что-то меняется в proto? network/grpc
  • Что такое идемпотентность и как ее реализовать? architecture/microservices
  • Что выведет? go/puzzles
func handlel(s1 []int) {
s1[0] = 111
}
func handle2(s1 []int) {
s1 = append(s1, 12345)
}
func main() {
s1 := []int{0, 1, 2}
log.Printf("before: %v ", s1)
handlel(s1)
log.Printf("after handle1: %v ", s1) // что будет напечатано?
handle2(s1)
log.Printf("after handle2: %v ", s1) // что будет напечатано?
}
  • Доп вопрос: какие типы данных в Go ведут себя так же как слайс (у которого под капотом ссылка на массив?) go/slices-arrays
  • Еще доп вопрос: какой тип данных под капотом у мапы по аналогии со слайсами на массив? (Ответ - hmap - https://go.dev/src/runtime/map.go ) go/maps
  • Еще доп вопрос: что будет, если заменить слайс на массив в примере выше? go/slices-arrays
  • Что выведет? go/puzzles
type Example struct{}
type MyInterface any
func example1() MyInterface {
var e *Example
return e
}
func example2() MyInterface { return nil }
func main() {
fmt.Println(example1())
fmt.Println(example2())
fmt.Println(example1() == example2()) // ?
}
func main() {
num := make(chan int)
values := []int{1, 2, 3}
for _, v := range values {
go func() {
num <- v
}()
}
for _ = range values {
fmt.Println(<-num) // ?
}
}
  • Доп вопрос: как поправить для старых версий, чтоб выводилось 1, 2, 3 в случ порядке, а не 3, 3, 3 (v:= v) go/puzzles
  • Спроектировать handler architecture/system-design
func LongTask() int {
result := callService() // >5 min
// process result
return result
}
func main() {
// init server
handler := func(w http.ResponseWriter, r *http.Request) {
// write response
}
http.HandleFunc("/", handler)
// run server
}

callService медленный (до 5 минут), надо отдавать свежий результат вызова callService (время жизни - полчаса). Можно сделать background job через таймер, который вызывает callService и засовывает в структуру с мьютексом, а хэндлер отдает клиенту.

  • Есть таблицы sites (id, url и vulnerability_id) и vulnerabilities. У одного сайта может быть много уязвимостей. Как связать таблицы? (У vulnerability указать site_id или сделать таблицу связей id, site_id, vuln_id - поле id обязательно? В некоторых бд дa, а вообще нет) security/appsec
  • Написать запрос, который выведет все сайты, у которых есть уязвимости. security/appsec
  • Написать запрос, который выведет число уязвимостей на сайтах. security/appsec
  • Зачем нужен group by и отличие от order by. sql/query-optimization
  • чем разница where и having? sql/query-optimization
  • Что такое агрегатные функции? Примеры. sql/general
  • Можно ли использовать where с join? (Дa) sql/query-optimization
  • Какие есть join-ы и чем отличаются? (Left/right/cross join) sql/query-optimization
  • Что такое индексы в БД и какие типы бывают? sql/indexes
  • Что такое btrее индекс? Чем отличается balanced trее от binary tree sql/indexes
  • В чем минус индексов? (Занимают место и надо апдейтить на insert/update/delete - лишнее время). sql/indexes
  • Есть ли смысл в индексе для поля enum из 4-х значений? (Нe особо, ибо выборка по индексу должна отдавать процентов 10-15, иначе выигрыша особо не будет, учитывая чтение индекса по сравнению с чтением всей таблицы). sql/indexes
  • Что такое селективность индексов? Какие там границы? sql/indexes