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

Поділитися
Вставка
  • Опубліковано 27 вер 2024

КОМЕНТАРІ • 209

  • @melkhihren5957
    @melkhihren5957 3 роки тому +67

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

  • @katefedorova624
    @katefedorova624 4 роки тому +66

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

    • @nurkhabib8954
      @nurkhabib8954 3 роки тому

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

    • @Roman218
      @Roman218 2 роки тому

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

  • @amalnishanaliev3142
    @amalnishanaliev3142 4 роки тому +87

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

  • @FilmicFil
    @FilmicFil 4 роки тому +55

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому +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

  • @maxmaroff260
    @maxmaroff260 4 роки тому +9

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

  • @alexandernikolaev174
    @alexandernikolaev174 4 роки тому +13

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

  • @BaJIePkA86
    @BaJIePkA86 4 роки тому +11

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

  • @MrSimon094
    @MrSimon094 4 роки тому +21

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +2

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

    • @shane2899
      @shane2899 4 роки тому +1

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

    • @MrSimon094
      @MrSimon094 4 роки тому +11

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

  • @alexsav8776
    @alexsav8776 4 роки тому +10

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

  • @NummeSpnet
    @NummeSpnet 4 роки тому +34

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

    • @eleias.singer
      @eleias.singer 4 роки тому +1

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

    • @FightingFalcao
      @FightingFalcao 4 роки тому

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

  • @FightRebelAndRiot
    @FightRebelAndRiot 4 роки тому +9

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

  • @alexandrlebedev7992
    @alexandrlebedev7992 4 роки тому +12

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

  • @leetovetz
    @leetovetz 4 роки тому +3

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

  • @phil2964
    @phil2964 4 роки тому +3

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

  • @wildjoe6259
    @wildjoe6259 4 роки тому +4

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

    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;

  • @mkrugl
    @mkrugl 4 роки тому +3

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

  • @ДмитрийХодько-у9ж
    @ДмитрийХодько-у9ж 4 роки тому +4

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

  • @vbar-ukr
    @vbar-ukr 3 роки тому +1

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

  • @ПавелИзгаршев
    @ПавелИзгаршев 4 роки тому +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 4 роки тому +1

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

    • @romanfirsov89
      @romanfirsov89 2 роки тому +1

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

    • @dmitriygubanov9241
      @dmitriygubanov9241 2 роки тому +2

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

  • @AndreyDelay
    @AndreyDelay 4 роки тому +2

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

  • @leonkonig5131
    @leonkonig5131 2 роки тому +34

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

    • @ab8035
      @ab8035 2 роки тому +4

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

    • @ResidentOf
      @ResidentOf 2 роки тому +2

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

  • @zakazaka1731
    @zakazaka1731 4 роки тому +3

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

  • @jimmayhem990
    @jimmayhem990 3 роки тому +4

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

    • @faniskhalikov9736
      @faniskhalikov9736 3 роки тому

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

    • @jimmayhem990
      @jimmayhem990 3 роки тому +1

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

    • @jimmayhem990
      @jimmayhem990 3 роки тому +1

      Этот же дядька про Collectors ua-cam.com/video/pGroX3gmeP8/v-deo.html

    • @ildarvalitov2568
      @ildarvalitov2568 2 роки тому

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

  • @ВладиславСорокин-и5н

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

  • @yuriyleshchenko9650
    @yuriyleshchenko9650 4 роки тому +39

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

    • @NummeSpnet
      @NummeSpnet 4 роки тому +10

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +13

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

    • @NummeSpnet
      @NummeSpnet 4 роки тому +2

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

    • @phat80
      @phat80 4 роки тому +12

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

    • @Roman218
      @Roman218 2 роки тому

      @Пожилой Программист Вы точно херню пишете, то что не можете выучить/запомнить сами, не означает что другие не могут... Парень возможно приврал , что работает полгода.

  • @VitaliyZlobin
    @VitaliyZlobin 4 роки тому

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

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

  • @alevadnaya
    @alevadnaya 3 роки тому

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

  • @friedbearsburninhell2022
    @friedbearsburninhell2022 4 роки тому +2

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

    • @friedbearsburninhell2022
      @friedbearsburninhell2022 4 роки тому +1

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

  • @BogdanovArtemiy
    @BogdanovArtemiy 3 роки тому +1

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

  • @AS-ci9kj
    @AS-ci9kj 3 роки тому

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

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

  • @mkrugl
    @mkrugl 4 роки тому +12

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

    • @NummeSpnet
      @NummeSpnet 4 роки тому +5

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Рік тому +1

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

    • @AlexeySilichenko
      @AlexeySilichenko Рік тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Рік тому

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

    • @AlexeySilichenko
      @AlexeySilichenko Рік тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Рік тому +1

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

  • @SoBoL9500
    @SoBoL9500 4 роки тому

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

  • @ВасилийЕгоров-е4с
    @ВасилийЕгоров-е4с 4 роки тому

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

  • @Chekist2008
    @Chekist2008 4 роки тому +1

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

  • @BeInJavaUkraine
    @BeInJavaUkraine 4 роки тому +30

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

  • @creed3725
    @creed3725 3 роки тому +1

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  3 роки тому +3

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

  • @nikolaykalmykov9025
    @nikolaykalmykov9025 3 роки тому +1

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

  • @ПавелМедведев-р5ш
    @ПавелМедведев-р5ш 4 роки тому +2

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

  • @СтаниславЮшин-э6н
    @СтаниславЮшин-э6н 4 роки тому +4

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

  • @MsShnitz
    @MsShnitz 2 роки тому

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

  • @alexsav8776
    @alexsav8776 4 роки тому +9

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

    • @durbanpoison8831
      @durbanpoison8831 4 роки тому +8

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

    • @SleePokeR
      @SleePokeR 4 роки тому +2

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

    • @durbanpoison8831
      @durbanpoison8831 4 роки тому +12

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

    • @eleias.singer
      @eleias.singer 4 роки тому +5

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

    • @neektt
      @neektt 4 роки тому +2

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

  • @kolmagin6949
    @kolmagin6949 4 роки тому +3

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

  • @romanprimuk2408
    @romanprimuk2408 4 роки тому +3

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

  • @SleePokeR
    @SleePokeR 4 роки тому +4

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +2

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

    • @SleePokeR
      @SleePokeR 4 роки тому +1

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

    • @MrSimon094
      @MrSimon094 4 роки тому +1

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

    • @tarasovsn
      @tarasovsn 4 роки тому

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

  • @Sir-Hedgehog
    @Sir-Hedgehog 4 роки тому

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

  • @neektt
    @neektt 4 роки тому +2

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

    • @sergeyparakhin2634
      @sergeyparakhin2634 3 роки тому +3

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

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

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

  • @alekseisurkov7003
    @alekseisurkov7003 4 роки тому +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 2 роки тому

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

  • @asdasd-fu4ow
    @asdasd-fu4ow 4 роки тому +4

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +8

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

  • @McMeil
    @McMeil 3 роки тому +2

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

    • @КириллКириллов-п2в
      @КириллКириллов-п2в 3 роки тому

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

    • @timon59388
      @timon59388 3 роки тому +2

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

    • @McMeil
      @McMeil 3 роки тому

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

  • @manreaper1238
    @manreaper1238 3 роки тому

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

  • @Oleg72855
    @Oleg72855 4 роки тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

  • @dzmitrydziachenka4602
    @dzmitrydziachenka4602 4 роки тому

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

  • @МихаилМастанов-ы5ы
    @МихаилМастанов-ы5ы 3 роки тому +1

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

  • @Bussynessmens
    @Bussynessmens 4 роки тому +13

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

    • @neektt
      @neektt 4 роки тому +4

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

  • @artemromanov6930
    @artemromanov6930 3 роки тому

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

  • @MrMaksimsergeevich
    @MrMaksimsergeevich 3 роки тому

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

  • @irbis4403
    @irbis4403 3 роки тому

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

  • @edward4851
    @edward4851 3 роки тому

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

  • @akrendegenadam7091
    @akrendegenadam7091 3 роки тому

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

  • @SunCheezes
    @SunCheezes 3 роки тому +1

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

  • @ivanbalashov468
    @ivanbalashov468 4 роки тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

  • @goldenglory8250
    @goldenglory8250 4 роки тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

  • @pavelvaluev2052
    @pavelvaluev2052 4 роки тому

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

  • @durbanpoison8831
    @durbanpoison8831 4 роки тому +1

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

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

    • @durbanpoison8831
      @durbanpoison8831 4 роки тому

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

  • @mikhail6694
    @mikhail6694 3 роки тому

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

  • @raman8853
    @raman8853 3 роки тому +4

    Пол года учит джаву?) Никогда не поверю
    Судя по достаточно глубокому понимаю теории, у парня минимум пара лет опыта

    • @antonvolodin2924
      @antonvolodin2924 2 роки тому

      Пол года работает програмистом на java.

  • @kaibrakhmanyelubay2671
    @kaibrakhmanyelubay2671 Рік тому

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

  • @Alex11Fox
    @Alex11Fox 3 роки тому +2

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

  • @alsh6953
    @alsh6953 4 роки тому

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

  • @АлексейСидорин-э9ы

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

    • @АлексейСидорин-э9ы
      @АлексейСидорин-э9ы 4 роки тому

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

  • @alekseysverbeev2934
    @alekseysverbeev2934 4 роки тому +1

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

  • @dmitry8652
    @dmitry8652 3 роки тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  3 роки тому +1

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

    • @dmitry8652
      @dmitry8652 3 роки тому

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

  • @erlankarabaliyev7330
    @erlankarabaliyev7330 4 роки тому

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

    • @phat80
      @phat80 4 роки тому

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

    • @erlankarabaliyev7330
      @erlankarabaliyev7330 4 роки тому

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

    • @phat80
      @phat80 4 роки тому +1

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

    • @erlankarabaliyev7330
      @erlankarabaliyev7330 4 роки тому

      Согласен

  • @AlexeySilichenko
    @AlexeySilichenko Рік тому

    3:15 у отрицательного инта отрицательный хешкод...
    а вот когда хешкоды используются для индексирования в массивах, например в хешмапе, то это неприятное обстоятельство устраняется при помощи битовых операций.
    Стандартный метод вычисления хешкода для ключа хешмапы:
    (result = hashCode) ^ (result >>> 16)
    Хешкод (Integer) -2 равен -2, тогда хешкод ключа для хешмапы:
    бинарное представление (int) -2:
    1111 1111 1111 1111 1111 1111 1111 1110
    -2 >>> 16:
    0000 0000 0000 0000 1111 1111 1111 1111
    -2 ^ (-2 >>> 16):
    1111 1111 1111 1111 0000 0000 0000 0001
    Получаем хешкод ключа: -65535
    Он опять отрицательный, как же адресоваться к элементам массива с таким индексом?
    table[i = (table.length - 1) & hash]
    длинна массива всегда положительна, значит число (length-1) должно быть больше либо равно нулю, следовательно его старший бит (знаковый) также всегда равен нулю, далее операция логического "И" для нуля (+) и единицы (-) всегда даст 0, т.е. положительное число. Более того, результат всегда будет находиться в рамках [0; length-1].
    Например, возьмем дефолтный размер таблицы 16:
    0000 0000 0000 0000 0000 0000 0001 0000
    (16-1):
    0000 0000 0000 0000 0000 0000 0000 1111
    (-65535):
    1111 1111 1111 1111 0000 0000 0000 0001
    (16-1) & (-65535):
    0000 0000 0000 0000 0000 0000 0000 0001
    что равно 1.
    Таким образом, ключ (Integer) -2 формирует позицию с индексом 1 во внутреннем массиве хешмапы.

  • @user-segadev
    @user-segadev 4 роки тому

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому

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

  • @ollleg111
    @ollleg111 4 роки тому +1

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

  • @dmitrypetrov8491
    @dmitrypetrov8491 4 роки тому +4

    19:51 Чувак сделал грубую ошибку: написал "++map.get(el)". Это прям расстраивает( Говорит о том, что кандидат плохо понимает, как работает префиксный инкремент.
    21:18 Зачем выбрасывать NPE?) Выглядит так, что человек знает синтаксис языка, при этом не понимает, что и зачем пишет.
    Возникло ощущение, что кандидат знает теорию, при этом имеет мало опыта на практике

  • @juliping4369
    @juliping4369 3 роки тому

    Ю

  • @juliping4369
    @juliping4369 3 роки тому

    Юзю9}

  • @juliping4369
    @juliping4369 3 роки тому

    За {{{

  • @Denis-sds
    @Denis-sds 2 роки тому

    Собес на программиста похож (наверное) на то как встречают зэки в хате. Задают абсолютно бесполезные вопросы с целью выявить насколько ты свой

  • @АлексейЧалов-т3ы

    решение алгоритмической задачки с использованием локальной переменной типа ассоциативного массива не лучшее. Результат лаконичнее мог бы выглядеть так stream.collect(Collectors.toMap(i -> i, i -> 1, (i, j) -> i + 1))

  • @FilmicFil
    @FilmicFil 4 роки тому +16

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

  • @juliping4369
    @juliping4369 3 роки тому

    За {{{

  • @sergeyparakhin2634
    @sergeyparakhin2634 3 роки тому +8

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

  • @ВасилийГоловко-д9и
    @ВасилийГоловко-д9и 4 роки тому +7

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

  • @alexserezhenko
    @alexserezhenko 4 роки тому +8

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

  • @ВаняИванов-к4ъ
    @ВаняИванов-к4ъ 4 роки тому +6

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

  • @alexk809
    @alexk809 4 роки тому +3

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

  • @gangbang8630
    @gangbang8630 2 роки тому +1

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

  • @nikolaibeliaev8795
    @nikolaibeliaev8795 3 роки тому +1

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

  • @Олег-п6ш3ч
    @Олег-п6ш3ч 3 роки тому

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

  • @bitrudo
    @bitrudo 3 роки тому +1

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

  • @tolyaaniskevich763
    @tolyaaniskevich763 4 роки тому +1

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  4 роки тому +1

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

    • @NummeSpnet
      @NummeSpnet 4 роки тому +1

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