Держите, тут обсуждение популярных вопросов, которые вам могут задать на собеседовании, к паре из них приведены ответы.
Здесь поднимается много тем, если ориентируешься во всех из них — с большой вероятностью оффер будет твой)
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
new()
, и через имя структуры + фигурные скобки, т.е. Foo{}
?type Foo struct {
X int
}
f1 := &Foo{}
f2 := new(Foo)
Foo
и возвращается указатель *Foo
на вновь созданный элемент. Только в первом случае можно еще указывать параметры
f1 := &Foo{100}
. Зачем нужны два одинаковых метода? Первый
&
является частью указателей и применяется для операций с ними, второй для явного создания пустого объекта.@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы для начинающих, для тех, кто только вливается в Go
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
array := []int{10, 65, 21, 19, 43}
Нужно сделать массив вида (value, index):
[[10, 0], [65, 1], [21, 2], [19, 3], [43, 4]]
По сути, как в Python через enumerate:
[(v, i) for v, i in enumerate(array)]
. А потом, также как в Python отсортировать его: по value.Как также сделать в Golang?
package main
import (
"fmt"
"sort"
)
type Matrix [][]int
func main() {
data := []int{10, 65, 21, 19, 43}
var matrix [][]int
for index, value := range data {
matrix = append(matrix, []int{value, index})
}
sort.SliceStable(matrix, func(i, j int) bool {
return matrix[i][0] < matrix[j][0]
})
fmt.Println(matrix)
}
Результат:
[[10 0] [19 3] [21 2] [43 4] [65 1]]
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Здесь довольно много вопросов, есть вопросы не только по Go, на и по Computer Science в целом, есть вопросы для разных грейдов: для junior, middle, senior, есть практические задания
Используйте, закрывайте свои слепые зоны, получайте оффер)
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Неплохой список задач для подготовки к собеседованию, к некоторым приведено несколько вариантов решения — обычное, и без требования доп. памяти, скажем.
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Некоторые из вопросов:
• Как эффективно склеивать множество строк?
• Как задать направление канала?
• Напиши собственную функцию
Sleep
, используя time.After
• Что такое буферизированный канал?
• Как работает Garbage Collection в Go?
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В частности, освещаются такие ошибки как:
— загрязнение интерфейса
—
map
и утечки памяти— ошибка считать, что параллелизм всего ускоряет код
— неиспользование средств диагностики Go
— и другие ошибки
Основано на книге Тейва Харшани «100 ошибок Go и как их избежать»
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой заметке — задачи на лайв-кодинг для Go разработчиков; задачки наподобие этих часто встречаются на собеседованиях.
А вот сами задачи:
— Найти пересечение двух неупорядоченных слайсов любой длины
— Развернуть односвязный список
— Написать генератор случайных чисел
— Слить N каналов в один
— Сделать конвейер чисел
— Сделать кастомную WaitGroup на семафоре
— Алгоритм бинарного (двоичного) поиска
— Обход ссылок из файла
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Открытый учебник по Go с упором на тестирование и test coverage
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM