Техническое собеседование Senior Golang developer в телеком (№1) - пригласили на финальное

 

Прошла дальше - на финальное, как ни странно - этот собес был самым первым после очень длинного перерыва - думала, что завалила его. 00:00 - что такое спайс, как работает добавление к нему 01:26 - мэп - что это за структура? 01:59 - какими типами могут быть ключи в реализации мэпа? 03:17 - что такое горутины, чем они отличаются от тредов ОС? 04:48 - если у нас есть несколько горутин и мы в меру будем писать какие-то значения? 05:45 - какие есть способы синхронизации между горутинами? 08:50 - рассказать об RW- мьютексе 10:55 - что будет, если читать из закрытого канала? 11:33 - что будет, если писать в канал, который равен nil? 12:11 - что такое, контекст в Go, для чего он используется? 13:47 - есть ли опыт работы с дженериками? 14:29 - как принято работать с ошибками в Golang? 16:34 - что будет, если у нас есть какая-то вспомогательная горутина, в которой случилась паника, и мы ее не перехватили? 17:10 - задача1 package main import "fmt" func main() { err := do() if err != nil { fmt.Println("oops") } else { fmt.Println("OK") } } func do() error { var p *MyError = nil if false { p = &MyError{"error"} } return p } type MyError struct{ msg string } func (e MyError) Error() string { return e.msg } 21:00 Как устроен интерфейс внутри? 21:48 Задача 2 (ютуб не дает вставить знак меньше - записала словом): package main import "fmt" func main() { for i := 0; i меньше 5; i++ { go func() { fmt.Println(i) }() } } 26:07 - лайвкодинг задачи