Mock-собеседование со студентом курса Golang
Из интересного/в заметки/запомнить/повторить:
- Как устроены строки в Go. Как аппендить/менять строку ?
- strings.Builder
- Как работает метод Grow ?
- Copy On Write
- Как устроены мапы ?
- В чем отличие слайса от массива ?
- Можно ли массиву из 5 элементов присвоить массив из 6 ? Нет, это разные типы данных
- Где аллоцируется слайс ? Или в стеке или в куче. Когда аппендим слайс - на куче.
- Почему append возвращает слайс? Переприсвоить нужно если была новая аллокация.
- Динамический массив. Какая сложность удаления из начала? Асимптотическая сложность - линейная.
- Как за константное время удалить первый элемент массива при этом порядок элементов не важен ? Свопнуть первый с последним и удалить последний.
- Как хранить деньги в Go ?
- Структура: рубли и копейки отдельно
- Целочисленно: хранить в копейках
- Побайтово: 2 байта рубли, 2 байта копейки
- Float не берем так как могут быть аномалии при вычислениях из-за потери точности
- Runtime Go и горутины
- GO_MAX_PROCS - на что влияет ? Горутина в бесконечном цикле и main. Что будет? Прервется.
- Процессы, потоки, горутины - в чем разница?
- Когда горутина вызывает сискол - горутина откладывается в специальный поток, на отдельный процессор.