Alexey
Да, cогласен.
Alexey
А что по sync.Map? Подольский намекает что она как бы lock-free... Я считал что раз там мьютекс, а мьютекс (при желании) может привести к deadlock, то уже нет гарантий lock-free.
Alexander
"как сделать из слайса массив?" - это прям лул. зачем?
Alexander
Ну, вообще, они все на мидла, но чтобы не смущать сеньоров с 3 года опыта он написал senior;)
1. Ты на все с ходу ответишь? 2. Давай тогда список вопросов на сеньора.
Anonymous
вопросы бы на джуна найти))
Anonymous
а на сениора это багаж с опытом)
Alexander
6. Как устроен тип map? Что я хочу оценить: насколько интересно кандидату, как именно ложатся в память наши байтики. Map, возможно, самая важная из стандартных структур данных, и весьма замысловато устроенная. Она сложная, она эффективная, она обладает встроенным race condition детектором… Неужели не любопытно?! Самый популярный неправильный ответ: «Это хеш-таблица». Да, это хеш-таблица. Как устроена хеш-таблица? Наводящие вопросы: какая hash-функция используется в map в Go? Что такое bucket? Меня кстати для гошки умиляют такие вопросы своим наличием в собеседованиях. Ведь язык таков, что чтобы разбираться в этих вопросах надо иметь плюсовый бэкграунд, ибо на го мэп ты писать не будешь. И язык преподносится по типу: вот тебе пара концепций чтобы не тормозило, но сильно во внутренности не заглядывай, давай там свой грпц генерируй и молодец
Alexey
так там будет два метода lock(), unlock() => lock-free
Ну это еще не строгая гарантия. Хотя в целом соглашусь. Нашел информацию что sync.RWMutex в Go работает на атомиках. А раз так то можно принять что sync.Map таки lock-free... Хотя на гитхабе целая пачка других map, которые утверждают что вот они то настоящие lock-free :-) и работают куда быстрее....
Herman
1. Ты на все с ходу ответишь? 2. Давай тогда список вопросов на сеньора.
1.Нет 2. К Подольскому. Он сам признался, что вопросы на мидла
Alexey
6. Как устроен тип map? Что я хочу оценить: насколько интересно кандидату, как именно ложатся в память наши байтики. Map, возможно, самая важная из стандартных структур данных, и весьма замысловато устроенная. Она сложная, она эффективная, она обладает встроенным race condition детектором… Неужели не любопытно?! Самый популярный неправильный ответ: «Это хеш-таблица». Да, это хеш-таблица. Как устроена хеш-таблица? Наводящие вопросы: какая hash-функция используется в map в Go? Что такое bucket? Меня кстати для гошки умиляют такие вопросы своим наличием в собеседованиях. Ведь язык таков, что чтобы разбираться в этих вопросах надо иметь плюсовый бэкграунд, ибо на го мэп ты писать не будешь. И язык преподносится по типу: вот тебе пара концепций чтобы не тормозило, но сильно во внутренности не заглядывай, давай там свой грпц генерируй и молодец
А вот на этот вопрос (какая функция хэширования используется) реально либо никто не ответит, либо не сможет пояснить ответ. Потому что такое aeshash не многие думаю в курсе... Я вот в первый раз слышу.
Herman
По поводу мапа можно почитать на хабре банально про бакеты и тд
Alexander
да тут ведь вопрос скорее в уместности самого вопроса
Herman
Много ума не надо, но прокатит
Alexander
я думаю, все знают, что те же мапы на слайсах при малых объемах будут эффективнее
Alexander
но к примеру, что разработчику на го даст знание устройства мап?
Alexander
это вот сейчас дженерики появятся, и сможем выбирать разные мапы или писать свои, а статья старая вроде и вопросы с самого начала задают
🅞leksiy
> какой у вас любимый логгер? чем хорош zerolog? Ага, какое бы блюдо вы убрали с новогоднего стола и почему именно холодец?
Anonymous
а почему зап не взять например?
Anonymous
или логрус?
Alexander
или log
Anonymous
извращенец
Alexander
не знаю, если пакет для логирования есть в стандартной библиотеке, и если он вот такой, значит другого не надо
Alexey
Какой у вас любимый линтер? Тоже из этого же разряда.... golangci же все юзают. А там все 100 что придумали до него...
🅞leksiy
Мне кажется, или варианта два, либо ты с джуна быстро прокачиваешься в сеньора, либо ты ебошишь и ты вечный мидл, потому-что когда у тебя полно серьезных задач, тебе не до названия хеш функции в мапах
Alexander
гыгыг)
Alexander
нет времени на раскачку)
Anonymous
так а что за прикол?
Anonymous
типо зачем мне знать как под капотом работает мапа?
Anonymous
я типо в разработке 6 месяцев и это не помогло бы мне сильно
Alexander
чтобы на интервью отвечать и знать почему нельзя давать указатель на значение мапы
Anonymous
да не
Anonymous
я не против как вкопанный танчить, но где это все искать?
Anonymous
из статьей вырывать куски инфы?
Emil
Может не всегда полезно знание, но мапа вообще прикольно работает
Anonymous
я не видел чтобы хотя бы в одной книге
Anonymous
рассказали как работает аппенд и тд
Alexander
надо было приходить в го из си++
Anonymous
Alexander
не пришел - лох пидр
Anonymous
а ты сам откуда?
Anonymous
пхп?
Alexander
да, но до этого в плюсы пытался попасть
Alexander
)))
Anonymous
с мостом которая
Anonymous
если есть норм подскажите пж
Anonymous
потому что страшно читать, что за вопросы на собесах дают))
Anonymous
а КаК рАбОтАеТ аПпЕнД
Alexander
я бы кстати и не переходил в го, если б на плюсы удалось попасть. зачем? там целый мир
Anonymous
да
Anonymous
ахаха))) я так и знал))
Anonymous
ну ладно)) тут я зафакапился(
🅞leksiy
Ну и немного здесь: https://go.dev/tour/moretypes/15
Alexander
значит по этой книге учил, узнаю
Anonymous
так а дальше то куда двигаться?
Anonymous
ты же никогда не знаешь что на собесе дропнется
Anonymous
ну понял, я как работает аппенд, а дропнется вопрос про синк
Anonymous
и че делать
Anonymous
Alexey
Но там вроде не написано одной мелочи: исходного кода этой функции на Go не существует :—)
Anonymous
выглядит норм но это могли и троли сделать хз
Anonymous
типо как книги пишут, а по факту там бред
Alexander
интересный у нас язык все-таки. знать можно много, реализовать на самом языке - никак
Anonymous
ок, спасибо
Anonymous
да не, по табличке буду
Anonymous
даже если это и джохушка лохера, то явно что-то полезное все таки подчеркну)
Alexey
Про defer все должны знать: до 100 наносек оверхеда. Никогда не юзайте 😊 (шутка).
Alexander
не, дефер реально высвечивается в профилях
Alexander
так что вот допустим: mut.Lock() defer mut.Unlock() a = append(a, b) лучше все-таки без дефера переписать
Alexey
В реализациях быстрых кэшей регулярно встречаю комменты разработчиков: defer не используется потому что вот такое оно...
🅞leksiy
С go 1.14 defer вроде как инлайнится и его производительность выросла значительно
Alexander
Вроде это пофиксили, не?
мммм? где-то скостили стоимость? я просто из того, что прям имеет смысл профилировать и оптимизировать вынужден на 1.14 компилировать
Alexander
ясно, к несчастью к моменту перехода на 1.14 все деферы в таких местах были выпилены