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

Kaspersky / Касперский - 1

  • Разница между буферизированным каналом размера один и небуферизированным (когда эффективнее)? go/channels
  • Как устроены каналы? go/channels
  • Как отдаются значения с одной горутины в другую? go/concurrency
  • Преимущества горутин перед потоками ОС? linux-os/processes
  • Размер стека у горутины? go/concurrency
  • Чем отличаются потоки от процессов? linux-os/processes
  • Зачем нужно кэширование, плюсы/минусы, алгоритмы обновления, lru/lfu? nosql-cache/caching
  • Как масштабировать приложение, вертикальное/горизонтальное масштабирование? architecture/system-design
  • Как масштабировать базу: синхронная репликация, шардирование? sql/replication-scaling
  • Как работает репликация? sql/replication-scaling
  • Балансировка нагрузки? network/balancing
  • Алгоритмы балансировки? network/balancing
  • Клиентская балансировка? network/balancing
  • Что происходит когда вбиваешь google.com в браузерере, зачем нужен DNS? network/dns-tls
type Count int
func (c Count) Increment() {
c++
}
func main() {
var count Count
count.Increment()
fmt.Print(count)
}
func main() {
fmt.Println("Hello ")
}
type Logger interface {
Log(message string) err
Close() error
}
type FileLogger struct{ file *os.File }
func NewFileLogger(fileName string) (*FileLogger, error) {
f, err := os.Create(fileName)
if err != nil {
return nil, err
}
return &FileLogger{f}, nil
}
func (f FileLogger) Log(message string) error {
_, err := f.file.WriteString(message + "\n ")
return err
}
func (f FileLogger) Close() error {
return f.file.Close()
}
type SequentialLogger struct {
wrppedLogger Logger
}
func NewSequentialLogger(wrppedLogger Logger) SequentialLogger {}
func (sl SequentialLogger) Log(message string) error {}
func (sl SequentialLogger) Close() error {}