Тестовое собеседование Java разработчика #15 - Семён Баликов

Sdílet
Vložit
  • čas přidán 3. 07. 2024
  • Сегодня в качестве кандидата действующий Java разработчик - Семён Баликов.
    00:00:00 Знакомство
    00:01:55 Метод hashcode
    00:05:29 Ключевое слово transient
    00:07:16 Чем отличается сериализация от маршалинга?
    00:08:27 Сложность поиска элемента по ключу в HashMap
    00:11:00 Механизм CAS
    00:12:24 Optimistic vs pessimistic lock в Hibernate
    00:14:06 Потокобезопасные коллекции в Java
    00:15:46 Коллекция LinkedHashMap
    00:16:28 Решение алгоритмической задачи
    00:24:00 Что лежит "под капотом" parallelStream()?
    00:26:15 Чем отличается Future от CompletableFuture?
    00:27:47 Способы оптимизации запросов в БД в БД
    00:28:39 Сложность поиска элемента по индексу
    00:30:00 Чем отличается JOIN от UNION?
    00:30:55 Проблема N+1 в Hibernate
    00:36:00 Уровни кэширования в Hibernate
    00:39:50 Что такое ApplicationContext в Spring?
    00:41:35 Аннотация @Transactional в Spring Data
    00:43:20 Виды тестирования
    00:46:44 Заключение

Komentáře • 212

  • @katefedorova624
    @katefedorova624 Před 3 lety +66

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Спасибо за отзыв)

    • @java_couch
      @java_couch Před 2 lety

      за интервью такого уровня надо бить палками - в первую очередь собесера,так как видно что он не отдупляет что вообще происходит,ну собесуемый там понятно - даун с курсов+ прочитана какая то книга

    • @nurkhabib8954
      @nurkhabib8954 Před 2 lety

      @@java_couch посмотри с самого начала. На первых минутах он говорит о своих целях собеседования. Евгений и собеседник прекрасно понимают, что они делают.

    • @Roman218
      @Roman218 Před 2 lety

      @@java_couch можно аргументированно ? А то складывается впечатление что Вы написали херню

  • @amalnishanaliev3142
    @amalnishanaliev3142 Před 3 lety +87

    За новый микрофон и камеру лайк не глядя :)

  • @wildjoe6259
    @wildjoe6259 Před 3 lety +4

    Новый формат весьма радует! Спасибо!

  • @melkhihren5957
    @melkhihren5957 Před 3 lety +67

    офигеть Егор Крид в java шарит

  • @FilmicFil
    @FilmicFil Před 3 lety +55

    Микрофон, камера, таймкоды! Евгений, с новой камерой тебя не узнать!) С обновой, и рад видеть!)

  • @alexandernikolaev174
    @alexandernikolaev174 Před 3 lety +13

    Достойный собеседник. Приятно слушать.

  • @maxmaroff260
    @maxmaroff260 Před 3 lety +9

    Очень содержательное интервью. Евгению огромное спасибо за труды, Семён - молодец и умница.

  • @vbar-ukr
    @vbar-ukr Před 3 lety +1

    Супер классная рубрика, хорошие вопросы.
    Спасибо за труд и за контент в целом. Сейчас прохожу паттерны GoF и всегда смотрю Ваши видео.

  • @alexk809
    @alexk809 Před 3 lety +3

    Ёмаё, очень ценный материал. Я прям вовремя наткнулся на ваш канал, Евгений! Спасибо большое! Очень интересно увидеть процесс интервьюирования)

  • @AndreyDelay
    @AndreyDelay Před 3 lety +2

    Крутое интервью)!!! Спасибо за труды

  • @BaJIePkA86
    @BaJIePkA86 Před 3 lety +11

    Семён молодец. Хочу отметить, что приятно слушать человека, который может выражать мысли понятно. Местами может избыточно, но зато понятно)
    Жене как всегда респект за мок

  • @alexandrlebedev7992
    @alexandrlebedev7992 Před 3 lety +12

    Большое спасибо за интервью, очень ждал)
    Приятно видеть как растёт качество контента от выпуска к выпуску)
    Единственное что хотел бы посоветовать: возможно стоит добавить на стены немного аккустического поролона, слышно как звук отражается от стен создавая эхо, и тем самым немного портит качество записи. Но это по желанию, конечно. :)

  • @leetovetz
    @leetovetz Před 3 lety +3

    круто что под видео подробное описание.
    выделил. искать в гугле. и читаешь уже ответ.
    прям обучение на ходу)))

  • @FightRebelAndRiot
    @FightRebelAndRiot Před 3 lety +9

    Семён, ты молодец! Я посмотрел всего 10 минут и мне зашло! Успехов тебе! Я сам тоже вышел из инженеров АСУ ТП и КИП)

  • @alevadnaya
    @alevadnaya Před 2 lety

    Классное интервью, спасибо обоим

  • @phil2964
    @phil2964 Před 3 lety +3

    Супер, гость силён, спасибо за выпуск 👍

  • @mkrugl
    @mkrugl Před 3 lety +3

    Суперское интервью!

  • @user-lh5rv1gd2h
    @user-lh5rv1gd2h Před 3 lety +6

    Мощный выпуск, гость прокачанный, спасибо за труды!

  • @alexsav8776
    @alexsav8776 Před 3 lety +10

    Хорошие вопросы в этом интервью, много чего охвачено

  • @user-nx2wz1dq4z
    @user-nx2wz1dq4z Před 3 lety

    Как же приятно послушать двух умных людей)

  • @FilmicFil
    @FilmicFil Před 3 lety +16

    Весьма продвинутый парень.

  • @errodion
    @errodion Před 3 lety +1

    Спасибо за контент)

  • @clinteastwood2618
    @clinteastwood2618 Před 3 lety

    Сразу лайк и коммент , хорошее дело делаешь!

  • @bitrudo
    @bitrudo Před 3 lety +1

    Спасибо за ролик

  • @SoBoL9500
    @SoBoL9500 Před 3 lety

    Супер! Очень круто!

  • @alexserezhenko
    @alexserezhenko Před 3 lety +8

    Автор молодец. По хэшкоду, для любознательных - есть штук 5-6 стратегий генерации хешкода в jvm. Начиная от простой константы и счетчика, заканчивая различными функциями.

  • @MrSimon094
    @MrSimon094 Před 3 lety +21

    Спасибо Евгению за интервью! Было очень круто, вопросы нестандартные и с плавным усложнением. Евгений, хотелось бы получить ответы и материалы на мои неправильные ответы, в частности с @Transactional и с кешами для Hibernate)

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +2

      Постараюсь сделать в финальном фидбеке. И спасибо!

    • @shane2899
      @shane2899 Před 3 lety +1

      Отличное интервью! Евгению большое спасибо за новый микрофон и камеру, контент теперь воспринимается гораздо лучше) Интересно было бы узнать у Семена, почему перешел на java? Ведь делать "умные" железяки наверняка тоже прибыльно ну и еще приятное чувство, когда сразу видишь результат своей работы вживую. Тем более когда сейчас времени не хватает, автоматизация рутины с помощью "умных железок" весьма актуальна.

    • @MrSimon094
      @MrSimon094 Před 3 lety +10

      @@shane2899 Самая большая проблема, что для самые крутые и прибыльные проекты на моей прошлой работе включали в себя вахтовый метод или очень частые командировки, что ввиду текущих жизненных обстоятельств для меня не подходит. Выбор пал на джаву, потому что когда-то давно пришлось диплом в универе на ней писать, поэтому изначально какое-то понимание было о языке)
      Всем спасибо за теплые отзывы, это очень приятно) Данное интервью помогло выявить пробелы в тех областях, с которыми на данный момент достаточно редко приходиться взаимодействовать. Всем peace!

  • @user-yb1vl4po2y
    @user-yb1vl4po2y Před 3 lety +4

    Первым делом лайк, потом просмотр

  • @yaroslavnovichkov6736
    @yaroslavnovichkov6736 Před 2 lety

    Большое спасибо за видео

  • @NummeSpnet
    @NummeSpnet Před 3 lety +34

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

    • @eleias.singer
      @eleias.singer Před 3 lety +1

      Сеньору те же самые вопросы задают)) и ещё чуть-чуть больше

    • @FightingFalcao
      @FightingFalcao Před 3 lety

      Было тут интервью с сеньором, вопросы первоначально те же, просто потом идёт углубление в тему

  • @zakazaka1731
    @zakazaka1731 Před 3 lety +3

    Красава поднял уровень видео

  • @user-yf2te2ut3c
    @user-yf2te2ut3c Před 3 lety

    беру на работу. Молодца

  • @AS-ci9kj
    @AS-ci9kj Před 3 lety

    Интересные интервью снимаете

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem +1

    36:01 Cache
    1) во-первых имеет значение какой именно запрос: обычный query или получение сущности по id
    Query:
    2) для обычных запросов в контексте кэша имеет значение включено ли кэширование запросов (аля кэш третьего уровня)
    2.1) при использовании только первого или второго уровня кэша -- обращений к базе будет столько столько запросов, т.е. 4+4=8;
    2.2) если запросы кэшированные - выполнится всего 3 запроса;
    get by id:
    3) если под запросом подразумевается получение сущности по id (session.load(), get(), byId()), то:
    3.1) если кэш первого уровня -- выполнится по 3 запроса для каждого юзера: 3+3=6;
    3.2) если включен кэш второго уровня, то результаты запросов второго юзера будут браться уже из кэша: 3+0=3

  • @friedbearsburninhell2022
    @friedbearsburninhell2022 Před 3 lety +2

    Лайк - отлично!

    • @friedbearsburninhell2022
      @friedbearsburninhell2022 Před 3 lety +1

      Но по сложности, до красно-черного дерева почти прижал;) отличный собез - хоть и по верхам

  • @Sir-Hedgehog
    @Sir-Hedgehog Před 3 lety

    Лайк, не глядя

  • @VitaliyZlobin
    @VitaliyZlobin Před 3 lety

    #Нифигасебе! Сегодня не "прокуренный балкон", а студия подкаста прям)) Хотя суть от этого не меняется, но глазу приятно. Благодарю!

  • @user-hq6nm2tf6j
    @user-hq6nm2tf6j Před 3 lety +7

    Спасибо за видео. По моему мнению парень реально классно знает теорию, тут или память хорошая или хорошо подготовился. Но видно мало практики и на практических несложных вопросах плывет. Больше практических вопросов надо

  • @sergeyparakhin2634
    @sergeyparakhin2634 Před 3 lety +8

    В Москве с такими знаниями можно смело от 250 тысяч на руки просить.

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    31:31 проблема N+1
    здесь Семён ошибся, а поскольку я сам долго не понимал в чем суть этой проблемы из-за того что ее часто неправильно формулируют, то для меня это принципиально, поэтому хочу прояснить этот момент.
    Проблема N+1 заключается в том, что когда мы запрашиваем *список родительских сущностей* -- не одну, а именно список, то выполняется один запрос на этот список и дополнительно N запросов -- по одному от каждой родительской сущности на получение дочерних списков.
    _select * from parent;_ превращается в:
    1: select * from parent;
    2: select * from child where parent_id=1;
    3: select * from child where parent_id=2;
    ...
    N: select * from child where parent_id=N;

  • @nikolaykalmykov9025
    @nikolaykalmykov9025 Před 3 lety +1

    Евгений, спасибо за работу. Подобного материала, именно такого качества, в сети трудно найти. PS, просто очень хочется узнать правильный ответ на Transactional, так как сам часто получаю этот вопрос. В этом интервью ведь ответ был не верный?

  • @MsShnitz
    @MsShnitz Před 2 lety

    О, rode приехал!)

  • @Light_Heavy
    @Light_Heavy Před 3 lety +1

    Мне до него ещё год учить надо.

  • @user-lg3nm9qt9z
    @user-lg3nm9qt9z Před 3 lety +2

    Ааа кто-то меня вчера спрашивал про кеши в хибернете )), гц с микром

  • @Chekist2008
    @Chekist2008 Před 3 lety +1

    Все супер! По причёске сразу видно - удалёнка))

  • @creed3725
    @creed3725 Před 3 lety +1

    Евгений, надеюсь с вами все хорошо...ждем весточки.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +3

      Да, всё хорошо, спасибо :) Был крайне загружен по работе, но, сейчас должно быть легче и попробую в этом месяце выпустить новые видео.

  • @user-gd7oy9om7z
    @user-gd7oy9om7z Před 3 lety +5

    Вот достаточно лаконичное решение задачи на мой взгляд
    public static Map calculateRepeats(List input) {
    Map result = new HashMap();
    if (input == null || input.isEmpty()) return Collections.emptyMap();
    input.forEach(integer -> result.merge(integer, 1, Integer::sum));
    return result;
    }

    • @Evg_Af
      @Evg_Af Před 3 lety +1

      Этот иф выглядит не очень, обрати внимание на CollectionUtils

    • @romanfirsov89
      @romanfirsov89 Před 2 lety +1

      Вот еще лаконичнее.
      HashMap m = input.stream().collect(Collectors.toMap(t -> t, i->1 , Integer::sum, HashMap::new));

    • @dmitriygubanov9241
      @dmitriygubanov9241 Před 2 lety +2

      @@romanfirsov89 и ещё Map integersCountMap = integers.stream().collect(groupingBy(Function.identity(), counting()));

  • @kolmagin6949
    @kolmagin6949 Před 3 lety +3

    Здравствуйте, хотел узнать можно ли как-то попасть к Вам на интервью

  • @Oleg72855
    @Oleg72855 Před 3 lety

    Спасибо за интервью как всегда круто получилось, помогает и для прохождения интервью и для проведения!)
    Хочу все же уточнить один момент на 21:50 разве этот метод не потокобезопасен?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Спасибо за отзыв!
      По поводу вопроса - уже писал ниже, что вопрос не корректен с моей стороны.

  • @akrendegenadam7091
    @akrendegenadam7091 Před 3 lety

    Крутой если полгода

  • @neektt
    @neektt Před 3 lety +2

    Евгений, спасибо за видео. Было интересно посмотреть даже не смотря на опыт. Как думаете, на сколько $ при нынешней ситуации потянет такой разработчик, если окажется на рынке труда?

    • @sergeyparakhin2634
      @sergeyparakhin2634 Před 3 lety +3

      В Москве от 200 тысяч смело можно просить. И это вопрос 1-2 дней. Можно и на 250 зайти,если по собесам побольше походить.

  • @jimmayhem990
    @jimmayhem990 Před 3 lety +4

    Решение на Stream API:
    return list.stream().collect(Collectors.toMap(e -> e, e -> 1, Integer::sum, TreeMap::new));

    • @faniskhalikov9736
      @faniskhalikov9736 Před 3 lety

      Спасибо, элегантно ) Разобрал, оказывается ничего сложного

    • @jimmayhem990
      @jimmayhem990 Před 3 lety +1

      ​@@faniskhalikov9736 Если знаете английский, то посмотрите czcams.com/video/1OpAgZvYXLQ/video.html. Там дядька усатый очень хорошо рассказывает про Stream API

    • @jimmayhem990
      @jimmayhem990 Před 2 lety +1

      Этот же дядька про Collectors czcams.com/video/pGroX3gmeP8/video.html

    • @ildarvalitov2568
      @ildarvalitov2568 Před rokem

      @@faniskhalikov9736 Можно элегантней) list.stream().collect(Collectors.groupingBy(k -> k, summingInt(k -> 1)))

  • @romanprimuk2408
    @romanprimuk2408 Před 3 lety +3

    можно видео про докер(с нуля)? или как за деплоить pet project на сервак?
    а за микрофон и камеру большое спасибо))

  • @MrMaksimsergeevich
    @MrMaksimsergeevich Před 3 lety

    @Eugene_Suleimanov, Так он верно ответил про кеши 1 и 2 уровня? сколько запросов будет?

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    42:53 нельзя в спринге вызывать транзакционный метод из другого транзакционного (любого) метода *внутри одного класса*, т.к. при внутреннем вызове аннотация над вызываемым методом игнорируется, или другими словами, нельзя изменить поведение транзакции в процессе вызова другого метода внутри *того же* класса.
    Почему так: потому что при внешнем вызове мы обращаемся не к нашему классу, а к Spring proxy, который анализирует аннотации над методами. При внутреннем вызове -- мы обращаемся напрямую к нашему классу, а аннотации некому обрабатывать.

  • @user-sk1io8yu1c
    @user-sk1io8yu1c Před 3 lety +4

    ошибочка containsKey() а не contains кажется

  • @gangbang8630
    @gangbang8630 Před 2 lety +1

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

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    Хороший был бы вопрос для собеседования: отличие EntityManager от SessionFactory

  • @irbis4403
    @irbis4403 Před 3 lety

    здравствуйте подскажите сколько надо изучать java чтобы написать сервер или чат не списывая и не подсматривая или вы всё таки имеете конспект и подготовленные шпаргалки .Вот у меня проблема опыт программирования какой никакой есть по книге, выполняю все примеры, все задания. Пришёл к более сложному заданию, всё сделал вместе с автором всё работает. Но поймал себя на мысли что я не смогу написать это же код без книги или копипаста это нормально? нету четкого понимания цепочки действий тем самым скорость программирования очень медленное .пожалуйста расскажите как было у вас с этим

  • @yuriyleshchenko9650
    @yuriyleshchenko9650 Před 3 lety +39

    он точно работает джава девелопером пол года? или просто с первого раза все понимает и запоминает?)

    • @NummeSpnet
      @NummeSpnet Před 3 lety +10

      согласен. тут миддл явный

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +13

      @@NummeSpnet до этого контроллеры писал, а это мимо не походит )

    • @NummeSpnet
      @NummeSpnet Před 3 lety +2

      @@EugeneSuleimanov я слышал. у меня на работе есть такие инженеры КИПиА, которые пишут на OMRON

    • @phat80
      @phat80 Před 3 lety +12

      @@EugeneSuleimanov я может чего-то не знаю, но разве в контроллерах применяют ООП, паттерны, фреймворки? Ведь сам голый язык, любой, не так и сложно изучить. Самое большое время при изучении уходит на понимание архитектуры приложений, как именно надо делить приложение на классы и модули, как разделять приложения на слои, как строить взаимодействие между ними и т.д. Неужели это все применяется и в программировании контроллеров? Мне всегда казалось, что программки для контроллеров - это просто набор инструкций, где используется процедурный подход, и все, что надо знать - это синтаксис языка, допустим, С, который элементарен, побитовые операции, ну и саму архитектуру контроллера. Как это может помочь в разработке серьезных приложений, не очень понимаю.

    • @java_couch
      @java_couch Před 2 lety +1

      это фейк интервью- cas не знают и сеньеры.Собственно это и знать не надо по сути - надо просто понимать - что есть такая фича,которая помогает тебе в многопоточке счиать корректно - чувак же начал отвечать теорией- тоесть видно что никогда не использовал и не понимает для чего это.Собственно это и есть минусы интервью- ты возьмешь на роаботу вот этого васю- который воообще не понимает о чем говорит,но продинамишь нормального спеца,который просто не знает что такое cas ,хотя пользуется им на ежедневно))

  • @nikolaibeliaev8795
    @nikolaibeliaev8795 Před 3 lety +1

    Евгений, подскажите как можно попасть на ваше собеседование?

  • @goldenglory8250
    @goldenglory8250 Před 3 lety

    Евгений здравствуйте, не могли бы вы посоветовать что-нибудь по Java для продвинутых (книги)?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Если именно по языку и не для новичков, то вот:
      www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    За 15 тестовых собеседований, это смотреть сложнее всего...
    Семён столько ошибается, но при этом столько рассказывает да еще и с такой уверенностью. Мозг вскипает 🤯 Я его не упрекаю, это прям спецнавык -- на серьезных щах так что-то заливать и при том мимо, да еще и заворачивать такими формулировками, что порой неясно правильно он говорит или пургу несёт.
    Хорошее качество для работы с клиентами: надо так рассказать о состоянии проекта, чтоб они ничего не поняли, но посчитали, что работа в самом разгаре 😁

  • @mkrugl
    @mkrugl Před 3 lety +12

    Таким людям надо посложнее задачки давать 😁.

    • @NummeSpnet
      @NummeSpnet Před 3 lety +5

      вся задача на знание метода merge()

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    5:14 по поводу реализации hashCode:
    Объект может перемещаться по памяти в процессе работы приложения, поэтому hashCode это не совсем его адрес в памяти. Для хранения значения хешкода используется область заголовка объекта, это значение может быть лениво получено при ПЕРВОМ обращении к нему из адреса объекта по которому тот расположен в этот самый момент ПЕРВОГО обращения.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      Это зависит от реализации JVM. В современных версиях - это просто псевдослучайное число.

    • @AlexeySilichenko
      @AlexeySilichenko Před rokem

      @@EugeneSuleimanov а не подскажите на какой источник можно сослаться на собеседовании, если у интервьюера будет иное мнение?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem

      @@AlexeySilichenko документация или авторитетная статья

    • @AlexeySilichenko
      @AlexeySilichenko Před rokem

      @@EugeneSuleimanov само собой, я имею в виду - у Вас есть ссылка на источник, где указана стратегия генерации хешкода?
      Я искал, но официального подтверждения не нашел.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      @@AlexeySilichenko в данном случае - код + дока к коду. Код реализации JVM.

  • @SleePokeR
    @SleePokeR Před 3 lety +4

    Всем привет. Такой вопрос по 21:50 -- Что значит сделать потокобезопасным? Я мб чего-то не понимаю, но по-моему он изначально безопасен? Мы же не пишем в общий ресурс, мапа каждый раз новая создаётся. А из того листа, который к нам пришёл мы только читаем данные.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +2

      Да, вы правы. Я хотел попросить реализовать возможность распараллелить данный код (на случай больших объёмов данных на вход), но, потом решил не углубляться и поэтому данный фрагмент вышел размазанным и неоднозначным. Сам это заметил, но, не стал вырезать.
      Спасибо.

    • @SleePokeR
      @SleePokeR Před 3 lety +1

      @@EugeneSuleimanov Вам спасибо за ответ, а то я уже подумал, что башка не варит после рабочего дня=) Отличное интервью, уровень кандидата хороший, и это только за полгода работы) У меня как-то в голове столько информации не задерживается( Вроде что-то новое периодически изучаешь, но во время просмотра таких видео иногда ловишь себя на мысли, что основы забываются(

    • @MrSimon094
      @MrSimon094 Před 3 lety +1

      @@SleePokeR Согласен, все переменные локальные и каждый поток, который в метод будет заходить будет создавать новые инстансы

    • @tarasovsn
      @tarasovsn Před 3 lety

      Тоже сижу и думаю над этим после просмотра, спасибо за вопрос и ответ, а то уж было подумал, что я совсем ку-ку)))

  • @tolyaaniskevich763
    @tolyaaniskevich763 Před 3 lety +1

    довольно хороший разработчик
    взгляд как от специалиста уровня middle (belarus)

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Да, уровень хороший

    • @NummeSpnet
      @NummeSpnet Před 3 lety +1

      ну так его и спрашивали, не как джуна)

  • @alekseisurkov7003
    @alekseisurkov7003 Před 3 lety +4

    Евгений, привет! Спасибо за видео! Люблю твои алгоритмические задачи.
    Если кому интересно лаконичное решение -
    private static Map calculateRepeats(List ints) {
    return ints.stream() .collect(HashMap::new, (map, i) -> map.put(i, map.containsKey(i) ? map.get(i) + 1 : 1), (map, result) -> result.putAll(map));
    }
    Однако вопрос - а читаемо ли оно? :) Весьма спорно.

    • @t3mp0rare
      @t3mp0rare Před 2 lety

      @Nonnull
      private static Map countElements(@Nonnull List input) {
      return input.stream()
      .collect(Collectors.groupingByConcurrent(
      x -> x,
      ConcurrentHashMap::new,
      Collectors.counting()));
      }

  • @dzmitrydziachenka4602
    @dzmitrydziachenka4602 Před 3 lety

    N+1 проблема неверный ведь ответ. Используя Lazy мы получаем n+1 проблему если в родителе есть коллекция. Отчасти проблему можно решить при помощи Eager, но если в родителе 2 коллекции, то получим новую проблему - декартовое произведение. Евгений, согласны или нет?

  • @pavelvaluev2052
    @pavelvaluev2052 Před 3 lety

    О каком инструменте была речь в последнем вопросе про интеграционное тестирование микросервисов? Не расслышал(((

  • @user-dm1iw3xg6d
    @user-dm1iw3xg6d Před 3 lety +1

    А можно к вам на собеседование?)

  • @ivanbalashov468
    @ivanbalashov468 Před 3 lety

    > Попробуй сейчас сделать текущий метод потоко-безопасным 21:55
    Это как?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Уже отвечал на этот вопрос, если кратко, то ерунду сказал )

  • @McMeil
    @McMeil Před 3 lety +2

    Евгений, есть вопрос: вот работаю я разработчиком. Но откровенно говоря, сам недоволен своим уровнем развития и хотел бы поднять теоретическую базу во всех направлениях: самом java, spring, алгоритмах, паттернах, с тем же sql поиграться, т.к. на практике мы его используем не очень много.
    Если просто брать и читать книгу: одну, вторую, то каждый раз начинается все с 0 и практики там не особо много. По факту без практики в голове остается маловато...
    Можешь посоветовать какой-то путь развития тем, кто уже что то знает, но хочет развиваться дальше.
    Мб, конкретную какую-то программу, а еще лучше онлайн курс, где будут затронуты все данные аспекты. Или хотя бы основные но основательно.
    Потому что я сам то одну дисциплину пройду, то про паттерны почитаю, - но как-то системности не вижу, от этого и прогресс около нулевой.
    Если сформировать вопрос кратко, то "от strong junior к strong middle за пол года".
    Есть что сказать по этому поводу?)
    ЗЫ кста, если, ты читаешь этот коммент, ты не Евгений, но тоже есть что сказать - буду признателен =)

    • @user-xu2br2uf9z
      @user-xu2br2uf9z Před 3 lety

      Присоединяюсь к вопросу

    • @timon59388
      @timon59388 Před 3 lety +2

      dmdev канал на ютубе, теория основательно поднимается, практика тоже на уровне

    • @McMeil
      @McMeil Před 3 lety

      @@timon59388 спс, посмотрю

  • @alexsav8776
    @alexsav8776 Před 3 lety +9

    Такой вопрос:
    На собеседованиях часто спрашивают про многопоточность?
    Я так понимаю она не на всех проектах используется

    • @durbanpoison8831
      @durbanpoison8831 Před 3 lety +8

      Я тоже не понимаю, почему половина каждого интервью про многопоточку. Причем я сейчас не только про интервью с Евгением, а и про те, на которых сам бывал. Потом приходишь на проект и никогда не сталкиваешься с многопоточкой в принципе.

    • @SleePokeR
      @SleePokeR Před 3 lety +2

      @@durbanpoison8831 Мне кажется это как один из показателей глубины знаний джава в общем. Ну или может перестраховываются люди, чтоб если тебе раз в год дадут таск написать что-то с использованием ExecutorService, Future или банально где-то правильно влепить Atomic или Lock, то ты это написал сразу и правильно, а не за неделю и возможно неправильно)))

    • @durbanpoison8831
      @durbanpoison8831 Před 3 lety +12

      @@SleePokeR проблема, кмк, как раз в том, что вопросы эти теоретические "по списку", как на экзамене. Их можно заучить. Я никогда в жизни не работал с многопоточкой но многие ответы просто вызубрил для интервью, я знаю, как на них отвечать и какие могут быть в том числе дополнительные вопросы, но так как нет практики и все равно буду писать задачу неделю, как вы говорите и не факт, что правильно :)

    • @eleias.singer
      @eleias.singer Před 3 lety +5

      При понимании многопоточности и памяти, другими глазами смотришь на код

    • @neektt
      @neektt Před 3 lety +2

      В серьезных проектах часто надо написать параллельный поход в несколько сервисов\баз. Или просто микросервис с разделяяемым обновляемым ресурсом. А еще всякие опенсорс фреймворки очень любят косячить в многопоточке (сам ловил в недрах хадупа, например), так что пригодиться может в самый неожиданный момент.

  • @BeInJavaUkraine
    @BeInJavaUkraine Před 3 lety +30

    Надеюсь ето не на джуна собеседование?)))

  • @asdasd-fu4ow
    @asdasd-fu4ow Před 3 lety +4

    Евгений, как бы вы оценили знания парня?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +8

      По моему мнению - твёрдый мидл точно.

  • @manreaper1238
    @manreaper1238 Před 3 lety

    Хорошее интервью, но задача действительно слишком легкая. Подобное решается за месяц изучение джавы

  • @edward4851
    @edward4851 Před 2 lety

    Жаль не увидел решение задачи с использованием группировки Stream API (как предложил Евгений). То что предложил собеседуемый (через forEach) - не айс

  • @user-gb8fv2kw1b
    @user-gb8fv2kw1b Před 3 lety

    Привет Спасбо видео хочу тебя спросить как опытного (программиста, ...)
    Я заканчиваю 11 класс учу java (сейчас учу Pattern ... у тебя)
    Учу max-6 месяцев
    Как бысть я смогу найти работу и Самое главное что мне учить чтобы не расходы время.
    Хочу пойти на работу Java Developer если точнее JavaEE (потом может поменяю) Я из Винницы

  • @durbanpoison8831
    @durbanpoison8831 Před 3 lety +1

    Крутое интервью, много ценной информации. Спасибо! Вопрос: сколько навскидку процентов веб-разработчиков на спринговом стеке реально сталкиваются с многопоточкой и работает с ней часто? То есть не просто заглянули, как у них что-то в проекте было давно кем-то написано, а прямо решают эти проблемы. Уж очень много вопросов о многопоточности. Большая часть интервью.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety

      Сложно сказать, по моим наблюдениям, процентов 20-30.

    • @durbanpoison8831
      @durbanpoison8831 Před 3 lety

      @@EugeneSuleimanov Спасибо за ответ. Ну, это прилично так, да.

  • @ForsMajor008
    @ForsMajor008 Před 3 lety

    Больше Собесов Богу Собесов!

  • @monarch8188
    @monarch8188 Před 3 lety

    Сейчас работаю QA automation, хотел бы перейти на java разработку. Вопрос : стоит ли указывать в резюме этот опыт ?(год)
    По моим личным ощущениям, это вызывает какое-то недопонимание у hr и не трактуется положительно, мол человек не стабильный, скачет с направления на направление, зачем в него вкладывать, если он также и от нас уйдёт.
    (собственно я не свичер, никогда не хотел быть qa, просто нужно что-то кушать, пошёл куда взяли но не буду ж я об этом в резюме писать)
    P.s. вышка профильная, системное программирование

    • @dmitrybryzhatov131
      @dmitrybryzhatov131 Před 3 lety +2

      Опыт работы QA подразумевает: понимание бизнес (IT) процессов, написание кода, умение работать по Agile/Scrum (и аналогичным) методологиям, базовое понимание CI/CD, умение работать с GIT/SVN, понимание процессов в Jira и так далее и тому подобное. Почему вы думаете что о вас сложат такое мнение? Год опыта это хороший срок за который вы набрались опыта, поняли что хотите перейти в Java. В конце концов вам просто компания могла не понравиться. Главное самому верить в то, чего хотите и тогда у HR никаких недопониманий не будет.

  • @user-wq9vh8xt8d
    @user-wq9vh8xt8d Před 3 lety

    Как у вас прокатила строчка ++map.get(el) ?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Здесь же сам подход важен, поэтому на такие вещи можно и закрыть глаза иногда :)

    • @user-wq9vh8xt8d
      @user-wq9vh8xt8d Před 3 lety

      @@EugeneSuleimanov Скажите пожалуйста, вы занимаетесь курированием новичков, на начальных этапах карьеры?

  • @user-vo2wl2dq7f
    @user-vo2wl2dq7f Před 3 lety

    Спасибо, Евгений! Но, Семён это явный мидл, явно не пол года))))

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety

      Спасибо за отзыв!
      Я основываюсь только на данных от кандидата :)

  • @artemromanov6930
    @artemromanov6930 Před 3 lety

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

  • @mikhail6694
    @mikhail6694 Před 3 lety

    когду новое видео?

  • @caffeinejavacode1475
    @caffeinejavacode1475 Před 3 lety

    Хотел бы спросить у Семена как он учил java.util.concurent?

    • @caffeinejavacode1475
      @caffeinejavacode1475 Před 3 lety

      @@MrSimon094 там больше практика, мне бі хотелось практика+ теория тоесть когда использовать лучше, в чем о тличие одного от дуругого!

    • @nicejacket6607
      @nicejacket6607 Před 3 lety

      @@caffeinejavacode1475 java concurrency in practice отличная книжка

  • @leonkonig5131
    @leonkonig5131 Před 2 lety +34

    5 лет работаю java + spring и всю дорогу думаю для кого такие собеседования, что они показывают, как по ним можно что то понять о работе человека...Притом кто собеседовался в иностранные компании знает что там и близко нет такого. Обычно дают задачу, потом вместе смотрите на решение и могут быть вопросы почему тут так а там вот так сделал. Видно хотя бы что человек может. А тут как в институте, заучиваешь какую то якобы кому то нужную дичь, рассказываешь и ставят оценку. На видео парень заучил дохрена текста, вот единственный навык который тут проверяется. Почему именно в программировании люди проводят собеседования таким образом в РФ, где здравый смысл? Я например хочу нанять художника стену расписать, какая мне разница знает он о толщине волос кисточек из 18 века или чем кормили лошадь если кисть из лошадиных волос пахнет лавандой. Я просто попрошу его показать свои работы а потом дам простое задание практическое и это максимум. Но зато сразу видно какого уровня продукт он производит. Или вот вы хотите нанять к себе плиточника сделать кухню или ванную, неужели вы его будите про толщину плитки спрашивать и про то как вычислить площадь поверхности а потом когда он правильно ответит вы закроете глаза и не зная как он работает, какие у него есть готовые проекты просто отдадите ему деньги и квартиру. Делай что хочешь ты же знаешь про толщину плитки значит все будет ок. Мне кажется бизнес теряет хороших спецов по тому что доверили заучкам из институтов решать кого нанимать надо а кого нет. Они вместо того что бы думать о программисте как о человеке который должен делать работу думают о нем как о студенте в институте которого надо задрочить на собесе как когда то дрочили его самого. Это какая то месть что ли)

    • @ab8035
      @ab8035 Před 2 lety +4

      Это, конечно, правильно, но не совсем. Истина где-то по середине. Проверка уровня понимания темы также необходима. Знание подкапотного механизма сильно помогает в разработке, чтобы не вляпаться в мягкое. Это также говорит о том, что человек интересуется, имеет пытливый ум. А заучил интервьюи термины или реально понимает, о чём говорит, разобраться очень просто. Здесь больше не про кисти и плитку, а про автомат. Солдат должен, помимо хорошо стрелять, знать ТТХ оружия, как оно устроено, уметь его разобрать/собрать, чтобы использовать все возможности правильно и по максимуму.

    • @ResidentOf
      @ResidentOf Před rokem +2

      Не, это первый этап только. Потом должно быть интервью с решением задач

  • @SunCheezes
    @SunCheezes Před 3 lety +1

    Микрофон в кадре вроде не из плохих, а звук будто на микроф вебки дешевой записан. Качество звука ужасное

  • @alsh6953
    @alsh6953 Před 3 lety

    peek нельзя использовать

  • @user-segadev
    @user-segadev Před 3 lety

    Евгений прими у меня собес, если можешь, сейчас на middle на работу устраиваюсь, через пару недель буду собеседоваться, очень бы хотелось свой уровень проверить

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety

      Напишите на почту - proselytear@yahoo.com - обсудим детали.

  • @Bussynessmens
    @Bussynessmens Před 3 lety +13

    У меня скоро собеседование и волосы дыбом встали от таких вопросов, а потом увидел что это в Украине и выдохнул. 😰

    • @neektt
      @neektt Před 3 lety +4

      Эти вопросы интернациональны) Тут еще не жестили, так как собес всего 40 минут, сильно по верхам.

  • @Alex11Fox
    @Alex11Fox Před 3 lety +2

    Короче, если бы я был, то я провалил полностью.

  • @erlankarabaliyev7330
    @erlankarabaliyev7330 Před 3 lety

    Собеседование на позицию junior???

    • @phat80
      @phat80 Před 3 lety

      да, а на какую еще, если человек полгода только работает?

    • @erlankarabaliyev7330
      @erlankarabaliyev7330 Před 3 lety

      @@phat80 вопросы сложные

    • @phat80
      @phat80 Před 3 lety +1

      @@erlankarabaliyev7330 так такие реалии сейчас. Никому не нужны джуны, которые ничего не знают. Никто не готов учить. Только если подсказывать и направлять.

    • @erlankarabaliyev7330
      @erlankarabaliyev7330 Před 3 lety

      Согласен

  • @kaibrakhmanyelubay2671
    @kaibrakhmanyelubay2671 Před 10 měsíci

    Тот случай когда с 1.5х поставил на 1.0х 😂

  • @dmitry8652
    @dmitry8652 Před 3 lety

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety +1

      Цели у видео несколько другие. Не в ответах счастье... )

    • @dmitry8652
      @dmitry8652 Před 3 lety

      @@EugeneSuleimanov Я уважаю то что ты делаешь, я лишь предложил

  • @java_couch
    @java_couch Před 2 lety

    человек так и не ответил на ворпос что такое сериализация,я лично правильного ответа там не услышал- он увел в сторону какой то маршразалупы и тд- но на поставленный вопрос не ответил- поэтому что я могу сказать посмотрев 10 минут данного видео - хотите не пройти собес- вам сюда,хотите пройти - бегите и закройте глаза и уши и забудьте все что вы тут увидели

  • @alekseysverbeev2934
    @alekseysverbeev2934 Před 3 lety +1

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

  • @ollleg111
    @ollleg111 Před 3 lety +1

    не реальные знания.....мегамозг

  • @juliping4369
    @juliping4369 Před 3 lety

    Ю