Pull to refresh

Comments 22

Если я усну и проснусь через сто лет и меня спросят, что сейчас спрашивают на джава собесах, я отвечу: hashCode, equals, N+1 problem

М.Е. Салтыков-Щедрин

Меж тем в контексте AI-assisted кодинга преступно мало времени уделено ревью.

Не @Lazy, а @Resource. Это про 7 вопрос. Сходу. Сам бывало задавал. Есть ещё способ - самый правильный кстати - рефакторинг: распилить на два или более сервисов. Тут нарушение первой буквы в SOLID.

А вот 7 вариантов транзакций сходу не скажу. 🤔

И плюс есть, например, Quarkus, который много тащит в build-time и реализует кучу нестандартных для CDI фич, включая intercepted self-invocation, поддержку вызова interceptor’ов на static методах и создание бинов требующих прокси для final классов (или классов с final методами). Хз как с этим обстоит дело в Helidon и Micronaut

От нечего делать такие вопросы задают лишь бы 99% отсеять. А по факту на проекте будет все наоборот. Везде старое г, которое написано абы как и абы кем.

Зато "гениальные" вопросы про фонарики и мостики спрашивают))) И просят архитектуры разрабатывать, когда помидор этим все равно заниматься не будет

Никак не гарантировать отправку ровно один раз.

Ну, email как то научили не слать письма дважды. И с смс такой проблемы нет

Это только высокая вероятность

Все в нашем мире - только вероятность. Где-то выше, где-то ниже. Если брать по определению, то “гарантия - условие, обеспечивающее успех, осуществление чего-либо”. Обеспечение не является синонимом 100% вероятности, это просто дополнительная помощь, которая обычно работает.

Под Новый Год моей бабушке родственник отправил одно короткое СМС с поздравлением. После чего оно повторно приходило еще недели две или три, в случайное время суток, в общем количестве несколько десятков раз. Такое вот отсутствие проблем с СМС.

ну там в тексте не отправку, а обработку, атк что кой че можно придумать на адекватном временном горизонте

В общем виде - решения нет. Например, если при обработке отправляется неидемпотентный внешний вызов, то ничего не придумать внутри обработки.
В частных случаях - да, можно что-то придумать.

247 собесов — серьёзная выборка. Но вопрос в другую сторону: если 12 вопросов покрывают 80% случаев, то банки 5 лет нанимают одних и тех же людей с одинаковыми знаниями. И потом удивляются, почему легаси-код не умирает. Может, проблема не в кандидатах, которых валит №7, а в том, что отбор воспроизводит сам себя?

247 Java-собесов в банках


Случайно прочитал про 247 Java бесов в банках. :)

Сегодня проходил техническое интервью, и было ощущение идиотизма вопросов: задавали вопросы из самых разных областей разработки.
При всём при том, что сам активно разрабатываю, последние 15 лет в архитектуре, ощущение ребенка, обделавшегося в штаны, было очень стойким. :)

Последние лет двадцать сам набирал ребят и технические знания на интервью почти никогда не коррелировали с сильными разработчиками и красивыми решениями.
Что-то сломано в системе найма.

У Postgres другая модель реализации транзакционности (MVCC), так что там норм. А если ещё for no key update, то вообще накладные расходы минимальны.

Эх ещё учиться и учиться

Интересно что за люди рассказывают про различия прокси, но не могут ответить на элементарный вопрос по self-invocation, так еще и 9 из 10 кандидатов

Это для вас он стал элементарным, в тот момент когда вы об этом узнали. А другим может никогда в голову не приходило вешать транзакцию на вложенный (приватный?) метод и у них все всегда работало.

У меня была подобная фигня однажды на собесе давным-давно. Вопрос был какой-то заковыристый про race condition, deadlock и все такое. У меня уже был некоторый опыт, но я не смог ответить. Потому что когда я строил свое решение (проект как раз был в банковской сфере, но не АБС) - я в первую очередь подумал про конфликты обработки данных, разграничил обработку порциями без пересечений и у меня не было проблем ни на запланированной нагрузке, ни на повышенной спустя некоторое время.

Это как раз те моменты, когда ответ на вопрос «я такой говнокод не пишу».

С другой стороны я лично наталкивался на различную другую дичь, но мне в голову не придет спрашивать про нее.

Например вы знаете, что mysql при определенной комбинации по разному обрабатывает блокировки на таблице с уникальным индексом? И зависит это от того - вызываете вы это внутри хранимки или без нее?

Я так же проверил mssql и postgresql, и там такой фигни нет.

Восьмой еще бы добавил отсутствие всякой обработки ошибок, в частности в приведении типов...

Senior Java в Альфа-Банке местами выходит на уровень книжного автора. В одном из интервью был вопрос: «Как гарантировать обработку сообщения ровно один раз со стороны приложения?». Полноценный ответ занимает пятнадцать минут и требует уверенного владения idempotency-key, дедупликацией через UUID в БД, транзакционным producer’ом Kafka и параметром isolation.level=read_committed у consumer’а. Это уровень главы из официальной книги Confluent, а не повседневной работы Senior-разработчика.

Сколько хоть за это платят ? Поделитесь кто знает)

Ну, вообще нормальные знания для senior-dev. Вернее, знание, что гарантий обработки в общем случае не бывает и если знать парочку вариантов для частных случаев.

По DSA вообще что ли нет на собесах? Разбор equals и hashCode c HashMap явно на то не тянут. Или это за скобками или уже никому не надо или не надо в банках по которым обзор?
А то впервые за карьеру засел все это фигачить ибо обычно это то с чем хуже всего на собесах у меня, а тут ни слова!

Sign up to leave a comment.

Articles