Pavel
Да обычные там задачки были
Pavel
В Яндексе на собесах тоже не требуют прям алгоритмов
Pavel
Базовое знание структур данных и работа с ними на типовых задачках
Vladislav
Да обычные там задачки были
Они обычные тогда когда от тебя НЕ требуется решить 8 таких задач за 5 часов. В моей обычной работе, когда попадаются одна из таких задач, я сначала беру кофе, пью его и думаю о жизни, потом общаюсь с коллегами, о том какая интересная задачка попалась, потом пару часов прикидываю различные варианты решения. Затем рабочий день кончается....
Vladislav
Когда нужно решить 8 за 5 часов, это стресс, боль, отчаяние и страх
John
В Яндексе на собесах тоже не требуют прям алгоритмов
каждый раз когда говорят о алгоритмах у меня всплывает ассоциация с сортировкой бинарно-пирамидальной , перестановками, пузырьком и др, красное-черное дерево, ханойские башни, задача о ферзях, но боль в том что в бою приходиться писать "средняя температура по больнице".
Vladislav
Когда нужно решить 8 за 5 часов, это стресс, боль, отчаяние и страх
Ну а затем осознание своей ничтожности, даже не смотря на то что на текущей работе зарабатываешь 300к в нано секунду. Несколько дней поднимаешь свою самооценку и думаешь на кой черт я вообще в этот голанг сунулся с его алгоритмами.
Sergey
к слову
Sergey
меня тут пару недель захейтили джуны в этом канале за то, что я на собесах спрашиваю задачи на кодинг, но сегодня спросил у эйчара,что думаю люди которых я собешу....и был удивлен. Они довольны.
Vladislav
хз причем тут го, если на всем остальном спрашивают тоже самое и теже литкод задачи
К слову. Все крупные компании которые ищут golang разработчиков, дрючат их алгособесами. Далеко не все крупные компании которые ищут разработчиков на других языках поступают так же
Vladislav
я пишу на jvm и на каждом собесе, что прохожу я или спрашиваю я как собеседующих, спрашиваю алго
Тоже Jvm. Райф, x5 group, сбер, мтс. Т1 консалтинг. Алгособесов не было 🤷‍♂
Sergey
не так давно меня спрашивали алго, на то как понять, что в связанных нодах, есть нода имеющая ссылка на ноду из более раннее связи
Sergey
Тоже Jvm. Райф, x5 group, сбер, мтс. Т1 консалтинг. Алгособесов не было 🤷‍♂
ну хз, я сейчас в Сбер, спрашиваю алго. За последние 4 дня 6 собесов провожу. В отдел ЕФС постоянно алго спрашивают. Тут наверное от команды зависит
MiZiMi
Сап ребят, подскажите, что нужно знать джуну на поприще алгоритмов?)
Sergey
Сап ребят, подскажите, что нужно знать джуну на поприще алгоритмов?)
засамолюби изи левел литкода. Хватит за глаза
Sergey
Засамолюби?)
хз за какие слова тут банят
MiZiMi
Ахаха, ну я на кодварсе решал, 5 кю
MiZiMi
Принял)
Sasha
Тоже Jvm. Райф, x5 group, сбер, мтс. Т1 консалтинг. Алгособесов не было 🤷‍♂
А я доволен был, вообще ничего не умел и даже гит никогда не юзал, но умел в алгосы и попал на стажку в яндекс, слава тем кто придумал давать алгоритмы
Sasha
Задачки решать куда проще, чем с нуля самому копаться (имхо)
Сергей
Товарищи, у кого нибудь есть внятный пример реализации grpc, а то пока что я вижу все примеры как картинку про сову)
Сергей
Сергей
Ощущение, что что-то упускается))
Сергей
Пока не натыкался, завтра гляну
Сергей
Да, есть сервер, есть клиент, сервер раз в какое-то количество времени генерит инфу, клиент или несколько клиентов её должны забрать.
Владимир
Да, есть сервер, есть клиент, сервер раз в какое-то количество времени генерит инфу, клиент или несколько клиентов её должны забрать.
А проблема базовая, нет понимания как готовить сервер, как готовить клиент и все кодгенить? Или в чем-то ещё
Сергей
Проблема пока базовая - с чего начать. Допустим уже есть код, который генерит данные, прописаны все функции и прописан тип данных, который будет передаваться (структура с вложенными структурами)
Владимир
Проблема пока базовая - с чего начать. Допустим уже есть код, который генерит данные, прописаны все функции и прописан тип данных, который будет передаваться (структура с вложенными структурами)
простой вариант без дистрибуции прото-контрактов. 1) пишешь прото файл для сервера. Прихраниваешь в репозитории в proto/x.proto or api/x/x.proto 2) добавляешь в мейкфайл директивы на зависимости protoc, protoc-gen-go 3) выбираешь папку куда генерить pb сырцы (например protogen/x/), обычно добавляешь в мейкфайл директиву на билд как тут https://grpc.io/docs/languages/go/quickstart/ 4) билдишься директивами обычно make generate 5) регаешь в мейне грпц сервис и создаешь пакет-класс-обработчик с встраиванием UnimplementedServer как тут для старта https://medium.com/@tj.ruesch/your-first-grpc-api-in-golang-d277d684b84e 6) запускаешь тут еще можно вечно улучшаться, писать утилиты для дистрибуции, добавлять создание/пополнение кодгеном отдельных методов, которые ты в прото пропишешь и тп. Но для старта сойдет
Сергей
А в grpc есть реализация типа "подписка"? Как только данные обновились клиент их сразу же получает
Сергей
Владимир, спасибо!
Владимир
но там тоже подводных камней масса и на каналах и селектах жить
Данил
интересный факт: в методах протобафа нельзя оставлять пустыми входные или выходные. нужно прям прописывать empty, что ты не ждешь каких-то данных.
Владимир
если хочешь, я завтра именно этот вариант собирался к вечеру на гитхаб запушить, как причешу. Напиши в личку, закину ссыль
Сергей
Ок, завтра тебе напишу!
Владимир
интересный факт: в методах протобафа нельзя оставлять пустыми входные или выходные. нужно прям прописывать empty, что ты не ждешь каких-то данных.
очень нехороший вариант. Сегодня пустой - завтра уже нужны данные. Хороший тон - прописывать сразу структуру, оставлять пустой и расширять по необходимости без ломки обратной совместимости
K
var b1 byte = byte(2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * one / 128) Вот тут компилятор оптимизирует. Он делает 512 / 128, а потом умножает на 1. Так что всё-таки это оптимизации компилятора для констант.
Это неверно. Если заменить 2 на гарантированно не константную функцию то результат не изменится. https://play.golang.com/p/be7JPkXtoo0 В случае rand.Int(1) оптимизатор не справляется и вызов функции остается не константным. Компилятор никак не может оптимизировать выражение. Посмотрите на ассемблерный код. https://godbolt.org/z/f77a59Yv6
K
var b1 byte = byte(2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * one / 128) Вот тут компилятор оптимизирует. Он делает 512 / 128, а потом умножает на 1. Так что всё-таки это оптимизации компилятора для констант.
Проблема не в константных вычислениях. Проблема в побитовом сдвиге (<< и >>). Когда писали спеки случайно сделали сдвиг контекстно зависимым. Причем тип выводится весьма своеобразно. Теперь поменять уже поздно. // identity функция func same[T any](value T) T { return value } func main() { var s = "Hi World!" var b1 = byte(1 << len(s) / 128) // == 0 var b2 = byte(same(1 << len(s) / 128)) // == 4 var b3 = byte(1<<len(s)/128 + same(0)) // == 4 var b4 = byte(1 << len(s) / (128 << same(0))) // == 0 var b5 = byte(1 << len(s) / (128<<same(0) + same(0))) // == 4 println(b1, b2, b3, b4, b5) } https://play.golang.com/p/uD_WRsQv0ec
Roman
Товарищи, у кого нибудь есть внятный пример реализации grpc, а то пока что я вижу все примеры как картинку про сову)
https://github.com/MaksimDzhangirov/complete-gRPC глянь, для начала вкатиться в протобаф и grpc хватит
Aleks
С алгоритмами на собесах еще тот прикол, а когда еще их на бумажке писать вообще цирк с конями. В C++ если написал сам что есть в STL, вообще сразу мочат. :) За все время, которое я что-то кодил реально писать приходилось подобное когда давно на asm пытался запихать что хотел в микроконтроллер Attiny13. :) С тех пор не разу не пришлось писать сортировки и т.п. :)))
Aleks
Наверно на ум собеседующим не приходит что лучше спрашивать например навыки декомпозиции, архитектурные патерны, патерны асинхронщины и т.п. Но это не где почти не спрашивают, или в минимальном виде. :(
Aleks
А "олимпиадник" обвешаный "алгоритмами" в команде, это вообще беда...
Aleks
Он всем доказывает альтернативность всю жизнь кривейшими невнятными реализациями чего либо "быстрее на 3 такта"...
Aleks
Вы хоть раз не собесе встречали вопрос к примеру: "как эту задачу реализовать на ООП и как на функциональщине на уровне блоков, и что из этого лучше подойдет?" Сколько нужно слоев и почему для реализации такого?
Aleks
Как снизить количество ветвлений и т.п?
Aleks
Нет, только сортировка...
Aleks
Причем в 90х сам баловался на z80 меряньем пиписками, интрами и т.п. Но одно дело творчество для себя, а другое разработка для бизнеса. Кидаться json'ами меж микросервисов, нафига сортировка пузырьком? :)
WerdnaZX
Я в 90х просто баловался 😂
Тоже баловался на z80. Хорошее время было..
WerdnaZX
Ага
Pavel
Причем в 90х сам баловался на z80 меряньем пиписками, интрами и т.п. Но одно дело творчество для себя, а другое разработка для бизнеса. Кидаться json'ами меж микросервисов, нафига сортировка пузырьком? :)
Если задачи сводятся к подобному ремесленничеству, то понятно, что практической востребованности в алгоритмах нет, это скорее как фильтр для потока резюме. В смысле, те, кто приложил усилия в алгоритмистике, как минимум, обладают волей и способностями к изучению. Если же задачи у компании вполне себе шире, то сами вопросы по алгосам на собесе еще более оправданы как technology agnostic, без привязки к конкретному стеку/ языку. Может там базу свою разрабатывают, и неплохо бы тогда по теории графов поспрашивать, например, для транзитивных замыканий. Впрочем в большинстве случаев, скорее всего, придерживаются неких best practices как у "взрослых"
sonochiwa
в природе есть такое явление как вакансии на джуна с удаленкой из рф, или такое только в фантазиях?
Aliaksandr
Наверно на ум собеседующим не приходит что лучше спрашивать например навыки декомпозиции, архитектурные патерны, патерны асинхронщины и т.п. Но это не где почти не спрашивают, или в минимальном виде. :(
На собеседованиях нужно спрашивать то, чем затем предстоит заниматься собеседуемому на работе. Если в его обязанности не будет входить решение leetcode задач, проектирование архитектуры приложения, асинхронное программирование и т.п., то зачем про это спрашивать на собеседовании? Лучше спросить про crud с конвертацией JSON в yaml, которыми, вероятнее всего, придется заниматься на работе. Если собеседуемый начнет упражняться в leetcode или городить миллион ненужных абстракций для решения простой crud-задачи, то с ним лучше попрощаться, т.к. от него на работе будет больше вреда, чем пользы
Не ну это
ну тут явно подмешано нейронкой
Dmitriy
На собеседованиях нужно спрашивать то, чем затем предстоит заниматься собеседуемому на работе. Если в его обязанности не будет входить решение leetcode задач, проектирование архитектуры приложения, асинхронное программирование и т.п., то зачем про это спрашивать на собеседовании? Лучше спросить про crud с конвертацией JSON в yaml, которыми, вероятнее всего, придется заниматься на работе. Если собеседуемый начнет упражняться в leetcode или городить миллион ненужных абстракций для решения простой crud-задачи, то с ним лучше попрощаться, т.к. от него на работе будет больше вреда, чем пользы
Не совсем согласен. Не, тупой прогон по алгоритмам действительно немного не то. Но даже "простой CRUD" завтра может стать кокурентным. Вот прямо пример из жизни - была простая табличка со списком телефонов и рейтингом клиента, вот прям тупой CRUD (даже без аутентификации и RBAC), правда очень злоровая. Тут к ней добавляется схожая табличка просто заполняемая другим отделом, а потом третья. И т.к. БД разные (хардварно), то надо параллельно опрашивать все три, последовательно - не вариант, выходим за таймауты. И тут началось....
Pavel
>придерживаются неких best practices как у "взрослых" Это называется "карго-культ"
Ну я не стал уж совсем набрасывать, что там подход, что если мы будет кадры набирать как гугл/амазон, то станем такие же успешные и богатые :)
K
ну тут явно подмешано нейронкой
Нейронка рисует сову из кружочков вот так
Feofan
заведи жену
не будет успевать зарабатывать
Abzal
хаха, я на нормальную квартиру накопил именно в разводе
Abzal
да потом сошлись опять, там дочку пришлось зарубеж на учебу отправлять и прочее, но это как говорится, другая история ... :)
Abzal
в итоге накопление замедлилось