Тестовое собеседование Java разработчика #9 - Денис Шувалов

Sdílet
Vložit
  • čas přidán 9. 05. 2020
  • Видеозапись mock интервью с разработчиком, специализирующимся на высоконагруженых системах, Денисом Шуваловім

Komentáře • 155

  • @MrRomanvideo
    @MrRomanvideo Před 2 lety +13

    00:00​ - Знакомство
    00:55 - Ежедневные задачи
    3:19 - Отличие Aerospike от Redis
    4:14 - Какие существую функциональные фичи в Java
    4:41 - Отличие Unmodifiable от Immutable
    5:24 - Функциональные интерфейсы
    5:50 - Что такое Lambda
    6:47 - Метод reduce()
    7:22 - чем его преимущество перед циклом
    8:43 - HashTable и ConcurrentHashMap - отличия и что эффективнее
    9:53 - Классы мониторов для мониторинга многопоточки
    10:45 - retry block
    12:39 - Шаблон Builder - что такое и для каких задач
    13:30 - что будет если конструктор класса будет private , и зачем это нужно
    14:00 - Singleton - почему его называют анти-паттерн
    14:51 - Как обойтись без synchronized в многопоточке на Singleton”е
    15:52 - Что такое Double check
    16:58 - Stateful и Stateless сервисы
    18:54 - Optimistic vs. Pessimistic locking
    20:33 - Задачка
    40:07 - Ключевое отличие SQL vs NoSQL DBs
    41:03 - Возможно ли изоляция транзакций в распределенных системах
    42:27 - Доказать CAP теорему
    43:45 - Почему нет смысла гнаться за 100% или 99.999% надежности, если есть 99.99%
    44:48 - Что такое Rest
    45:14 - Какие минусы Rest в высоконагруженных сис-мах
    46:40 - Что такое JRPC
    47:04 - Процесс от пуша кода до продакшена
    48:32 - Сколько нужно instance`ов чтобы обеспечить CI\CD
    49:38 - Заключение

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 2 lety

      Спасибо вам, добрый человек :)

    • @MrRomanvideo
      @MrRomanvideo Před 2 lety

      @@EugeneSuleimanov и вам за видео! Полгода назад ничего не понял в этом интервью. А сейчас наоборот все зашло. Растем :).

    • @romanfirsov89
      @romanfirsov89 Před 2 lety

      ​@@EugeneSuleimanov а есть ли у вас возможность закрепить этот комментарий с тайм-кодами в верху. УдобоПросматриваемость видео от этого повысится.

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

      @@romanfirsov89 сделано, спасибо :)

  • @antonzernov3702
    @antonzernov3702 Před 3 lety +17

    Аж дух захватывает, и какой контраст по сравнению с собеседованием джуниора. Это видео не только демонстрирует интервью, но и носит обучающий характер. Спасибо, Евгений!!!

  • @timurkhasanov5978
    @timurkhasanov5978 Před 3 lety +14

    Очень интересно смотреть интервью с опытными разработчиками. Пока этот парень один из лучших. Быстро и ясно отвечает на все вопросы

  • @denisshuvalov5726
    @denisshuvalov5726 Před 4 lety +74

    Большое спасибо Евгению за предоставленную возможность и время.
    Могу только представить сколько сил отнимает создание подобного контента.
    Когда я только начинал и не знал как проходит интервью, что спрашивают на что смотрят, мне очень не хватало такого материала.
    п.с.
    Саму задачку я потом довольно быстро решил на скале рекурсивно
    def rev[T](xs: List[T]): List[T] = {
    xs match {
    case List() => xs
    case head :: tail => rev(tail) ::: List(head)
    }
    }

    • @andrewshapovalov484
      @andrewshapovalov484 Před 4 lety

      А зачем рекурсия на плоском списке? На pure Java задача решается без рекурсии например так
      =====================
      package com.jc.interview;
      public class Main {
      public static void main(String[] args) {
      IntLikedNode head = new IntLikedNode(1, null);
      IntLikedNode item1 = new IntLikedNode(2, null);
      IntLikedNode item2 = new IntLikedNode(3, null);
      IntLikedNode item3 = new IntLikedNode(4, null);
      IntLikedNode item4 = new IntLikedNode(5, null);
      IntLikedNode item5 = new IntLikedNode(6, null);
      head.setNext(item1);
      item1.setNext(item2);
      item2.setNext(item3);
      item3.setNext(item4);
      item4.setNext(item5);
      System.out.println("==== Source List ====");
      printListItems(head);
      System.out.println("==== New Reversed List ====");
      IntLikedNode newReversedList = newReversedList(head);
      printListItems(newReversedList);
      IntLikedNode reverseList = reversedList(head);
      System.out.println("==== Reversed List ====");
      printListItems(reverseList);
      }
      static IntLikedNode reversedList(IntLikedNode head) {
      IntLikedNode prevPrev=null;
      IntLikedNode prev=null;
      IntLikedNode current = head;
      while (current!=null && current.hasNext()) {
      prevPrev=prev;
      prev = current;
      current=current.getNext();
      if (prevPrev==null) {
      prev.setNext(null);
      } else {
      prev.setNext(prevPrev);
      }
      }
      current.setNext(prev);
      return current;
      }
      static IntLikedNode newReversedList(IntLikedNode head) {
      IntLikedNode current = head;
      IntLikedNode prev = null;
      IntLikedNode newNode = null;
      if (current!=null) {
      while (current.hasNext()) {
      if (prev != null) {
      newNode.setNext(prev);
      }
      prev = newNode;
      newNode = new IntLikedNode(current.getValue(), null);
      current = current.getNext();
      }
      }
      newNode.setNext(prev);
      prev=newNode;
      newNode = new IntLikedNode(current.getValue(),null);
      newNode.setNext(prev);
      return newNode;
      }
      static void printListItems(IntLikedNode head) {
      IntLikedNode node = head;
      while (head!=null) {
      System.out.println(node.value);
      if (node.hasNext()) {
      node=node.getNext();
      } else {
      break;
      }
      }
      }
      }
      ================
      package com.jc.interview;
      public class IntLikedNode {
      Integer value;
      IntLikedNode next;
      public IntLikedNode(Integer value, IntLikedNode next) {
      this.value = value;
      this.next = next;
      }
      public Integer getValue() {
      return value;
      }
      public void setValue(Integer value) {
      this.value = value;
      }
      public IntLikedNode getNext() {
      return next;
      }
      public void setNext(IntLikedNode next) {
      this.next = next;
      }
      boolean hasNext() {
      return next!=null;
      }
      }

    • @denisshuvalov5726
      @denisshuvalov5726 Před 4 lety +6

      @@andrewshapovalov484 На скале, как правило, это более идиоматичный подход. Любой алгоритм можно написать как рекурсивно так и итеративно, чаще при рекурсии меньше дополнительных переменных и состояний. Хотя даже если отбросить производительность, то я бы не дал однозначного ответа когда какой подход лучше.
      На скале можно и без реукрсии в одну строчку решить через foldLeft, но после драки кулаками не машут :)

    • @andrewshapovalov484
      @andrewshapovalov484 Před 4 lety

      @@denisshuvalov5726 Ну на Java тоже можно, в одну строчку, подключил Guava и Lists.reverse(). Видидимо таск был из "другого круга понятий"-).

    • @redeyes256
      @redeyes256 Před 4 lety

      ​@@denisshuvalov5726 денис, спасибо за то, что приняли участие в этом интервью. Очень интересно было смотреть

    • @caffeinejavacode1475
      @caffeinejavacode1475 Před 3 lety

      Денис дай совет как учить java.util.cuncurrent

  • @katatonicTheMad
    @katatonicTheMad Před 4 lety +23

    Крутой, думающий разработчик., интересно объяснял некоторые вещи. Спасибо за прекрасный контент!

  • @Holdy_Couldy
    @Holdy_Couldy Před 4 lety +73

    с 2:29 начали что-то на эльфийском

    • @dark_evil77
      @dark_evil77 Před 4 lety

      Ахаах

    • @vmir88
      @vmir88 Před 3 lety

      У собеседуемого ещё и иврит местами проскакивает ))

  • @user-hq6nm2tf6j
    @user-hq6nm2tf6j Před 4 lety +47

    Супер интервью. То, что давно ждал - общение с скилованными разработчиками. Ждем ссылок на ресурсы, где можно это прочитать

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

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

    • @alexandrshuvaev4046
      @alexandrshuvaev4046 Před 4 lety +12

      Более того, Денис еще и очень круто формулирует мысли и объясняет. Реально, было бы даже интересно послушать ответы на какие-то простые вопросы.

  • @AnnSadovskaya
    @AnnSadovskaya Před 4 lety +5

    Женя и Денис - интервью топ, очень интересно было слушать. И приятно осознавать, что понимаешь с большего нить интервью :)

  • @romanihnatov5629
    @romanihnatov5629 Před 4 lety +1

    Евгений, хотел бы выразить большую благодарность за set mock интервью, эти видео мне очень помогли при прохождении собеседования, а так же остальные видео по спрингу и design patterns, в итоге получил свою первую работу :)

  • @user-dx9yq5js2c
    @user-dx9yq5js2c Před 4 lety

    Отличный формат! Услышать, как какие-то вещи представляют и объясняют практикующие специалисты, бесценно!

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

    Спасибо, Евгений за ваш контент, очень интересно и информативно. Желаю вам успехов!

  • @danielsedoff
    @danielsedoff Před 3 lety

    Спасибо вам, это очень интересно и при надлежащем использовании может быть очень полезно.

  • @user-zi2sl7jh3t
    @user-zi2sl7jh3t Před 4 lety +2

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

  • @vikis418
    @vikis418 Před 4 lety

    Евгений, спасибо огромное за старания. Потрясающий канал, особенно помогло при подготовке к собеседованию.

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

      Спасибо за отзыв! Рад, что материал оказался полезен)

  • @user-vf8vh5xq9f
    @user-vf8vh5xq9f Před 4 lety

    Какое мотивационное видео!
    Пошёл учиться!)

  • @reestts
    @reestts Před 3 lety

    Спасибо за видео! Из всей серии это пока лучшее)

  • @vadympylypchenko5801
    @vadympylypchenko5801 Před 4 lety

    Качественный контент интервью. Спасибо, Евгений!

  • @romanihnatov5629
    @romanihnatov5629 Před 4 lety +1

    Евгений, очень всё круто, классно, что нашёл материал такого вектора, спасибо вам за старания и работу, отправил письмо на почту, прочтите пожалуйста!

  • @MrDepava
    @MrDepava Před 4 lety

    Спасибо огромное, посмотрел с удовольствием!

  • @user-iu6yz6ck6h
    @user-iu6yz6ck6h Před 4 lety +1

    Очень крутое собеседование! Спасибо за видео)

  • @bauyrzhanmaksot3022
    @bauyrzhanmaksot3022 Před 4 lety +1

    Очень крутое интервью по Java

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

    Наверно это самое сильное собеседование. Вообщем спасибо очередной раз!

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety

      Да, уровень, действительно, хороший. Спасибо за отзыв!

  • @mrshmitt4583
    @mrshmitt4583 Před 2 lety

    Шикарное интревью! Спасибо огромное!

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 2 lety

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

    • @mrshmitt4583
      @mrshmitt4583 Před 2 lety

      @@EugeneSuleimanov с нетерпением жду новых выпусков. Очень надеюсь, что будешь продолжать!

  • @tuareg77
    @tuareg77 Před 4 lety

    Супер,класс!

  • @user-vf9in6ht7e
    @user-vf9in6ht7e Před 4 lety +37

    Пурум пурум новый собес

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety +14

      Запись запускается секунд 10, а заполнить паузу чем-то нужно ))

  • @mikhail6694
    @mikhail6694 Před 4 lety

    public abstract class Enum

  • @thegaavr
    @thegaavr Před 4 lety +25

    Евгений, думаю многим было бы удобнее, если бы Вы писали уровень разработчика с которым проходит собеседование :-)

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety +15

      Это крайне субъективно, но здесь, безусловно, senior :)

    • @BCEMCPATb
      @BCEMCPATb Před 3 lety +32

      Eugene Suleimanov ели бы ты щас написал джун я бы бросил учебу ))

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

      @@BCEMCPATb я бы начал пить )))

  • @sam-or4vu
    @sam-or4vu Před 4 lety

    Евгений, вы лучший

  • @zhenyalee2731
    @zhenyalee2731 Před 4 lety +7

    было бы неплохо, чтоб в описании хотя бы было написано про того, с кем общаетесь
    Допустим:
    Время работы
    джун, мид, синиор

  • @dark_evil77
    @dark_evil77 Před 4 lety

    Как всегда лайк

  • @artemkostrych9537
    @artemkostrych9537 Před 3 lety

    Спасибо огромное, можно побольше интервю с D2 - D3 левелом))

  • @lWeRl
    @lWeRl Před 2 lety

    Норм, ответы супер.

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

    Passing be - pushing there my unmodifiable awesome like!

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

    @Denis Shuvalov @Eugene Suleimanov Какие задачи ещё могут быть при прохождении собеседования? У меня с решением задач в подобном формате туговато, хотелось бы потренироваться

  • @dark_evil77
    @dark_evil77 Před 4 lety +4

    Евгений почему вам не создать телеграм группу?

  • @phil2964
    @phil2964 Před 4 lety +1

    Супер

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

    Рекурсивное решение задачи в интервью. Контент реально годный))
    public LinkedList reverse(Node head) {
    if (head == null ) return new LinkedList();
    LinkedList result = reverse(head.next);
    result.addFirst(head);
    return result;
    }

    • @vlas1010
      @vlas1010 Před rokem

      По-моему тут надо делать result.add(head) вместо addFirst. Потому что в конце рекурсии, когда head==null, мы начинаем возвращаться по стеку вызовов обратно, т.е. движемся в обратном направлении по элементам head. Поэтому в результат их надо складывать как есть.

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

    Привет. а можно как то с тобой пройти интервью? (2 года опыта java)

  • @finalename7464
    @finalename7464 Před 4 lety

    Рекурсивный разворот связного списка:
    public static ListNode reverse(ListNode head) {
    return reverse(null, head);
    }
    private static ListNode reverse(ListNode prev, ListNode node) {
    if (node.getNext() == null) {
    node.setNext(prev);
    return node;
    }
    ListNode head = reverse(node, node.getNext());
    node.setNext(prev);
    return head;
    }

  • @bekzatsk
    @bekzatsk Před 2 lety

    Пом пом помм :) Классный интервью)

  • @fara0n333
    @fara0n333 Před 4 lety

    Денис инженер ! Крут )респект!

  • @kekster2204
    @kekster2204 Před 4 lety

    здравствуйте Евгений, спасибо вам за ваши видео! В тех, что я посмотрел вы используете java 11 и у меня возник вопрос, насколько новичку необходимо знать предыдущие версии версии (5 и 8) и на каком уровне.

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

      Спасибо за отзыв! Я бы сразу изучал 11+. На данный момент это наиболее актуально.

  • @user-pt5lq5sf7e
    @user-pt5lq5sf7e Před 4 lety +2

    Досмотрел до 5:30 - космос.

  • @undefined310
    @undefined310 Před 4 lety +1

    парень молодец, держался на позитиве в стрессовой ситуации(собеседование), мне к сожалению такого качества не хватает

    • @misteranderson6058
      @misteranderson6058 Před 4 lety +1

      Так он уже миллион собесов прошел.

    • @denisshuvalov5726
      @denisshuvalov5726 Před 4 lety

      Спасибо, все приходит с годами. Я первое время тоже очень волновался на собеседованиях.

    • @Alex-gn6xb
      @Alex-gn6xb Před rokem

      100 собеседований в помощь

  • @Individius
    @Individius Před rokem

    В решении задачи ошибка. Нужен while(current != null). В случае while(current.next != null) не переворачивается последний элемент исходного массива, у которого current.next == null

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

    Пурум пурум пум и в продакшен) Спасибо за видео!

  • @alexandernikolaev174
    @alexandernikolaev174 Před 4 lety +8

    Код разворота не отработает. Два момента поправить:
    while (current!=null) и return previous.
    Интервью отличное, собеседник позитивный и толковый.

    • @FightingFalcao
      @FightingFalcao Před 3 lety

      Я так и не понял как это работает, но Вы совершенно правы!
      gist.github.com/ov-petrov/a97c0e859e108f39916db00cbb8fb891

    • @kolob204
      @kolob204 Před 2 lety

      или добавить после цикла current.next = prev;
      так как итерация с последним элементом пропускается

  • @finalename7464
    @finalename7464 Před 4 lety +1

    Нерекурсивный разворот связного списка:
    public static ListNode reverse2(ListNode head) {
    ListNode prev = null;
    ListNode node = head;
    while (node != null) {
    ListNode origNext = node.getNext();
    node.setNext(prev);
    prev = node;
    node = origNext;
    }
    return prev;
    }

  • @millioner_iz_trushob
    @millioner_iz_trushob Před 3 lety

    Работаю сисадмином несколько лет.. ансибл , заббикс , баш, vbs , повершелл.. ip телефония - asterisk. Но в последнее время очень задумываюсь об изучении java программирования. Хочется сосредоточится на чем то одном

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

    Я только начал изучать Java, вот сейчас разбираюсь с BufferedReader. Вообще не понимал о чём говорят , но просмотрел все видео, очень интересно было)
    Вопрос: как это разогреть кеш?

    • @denisshuvalov5726
      @denisshuvalov5726 Před 3 lety +7

      @Сергей Маляренко О да, я его помню, он наводит ужас на неокрепшие умы :)
      Что такое кэш, я думаю, объяснять не надо. Вот представь, ты только запустил свой сервис и пока не придет хотя бы один запрос, ничего в кэшах нет и все запросы лезут в базу данных. После пары десятков запросов уже в них какая то информация закэшировалась, и ,вероятно, из поседющих ста не все полузет в базу. Теперь, когда работаешь с высокой нагрузкой, таких запросов тысячи в первые же минуты. Если все сразу пойдут в базу, то она вполне может и уйти в отказ. Поэтому новым сервисам, обычно, дают небольшую часть нагрузки, что бы кэш прогрелся.

    • @Serge_g900
      @Serge_g900 Před 3 lety

      @@denisshuvalov5726 ясненько, спасибо большое за ответ =)

  • @Vlad-cg3yd
    @Vlad-cg3yd Před 4 lety +3

    Прум-пум)

  • @mikhail6694
    @mikhail6694 Před 4 lety

    уже больше месяца нет видео(

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    24:36
    При использовании рекурсии сложность по памяти - O(n) за счет использования рекурсивного стека, а без - O(1).
    39:45
    перед ретурном забыли переуказать next для новой головы, а то она остаётся оторванной =)

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +2

      Да, вы правы, спасибо за уточнение, не учёл этот момент.

  • @nomatterwhoooo
    @nomatterwhoooo Před 4 lety +6

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

  • @undefined310
    @undefined310 Před 4 lety +4

    пурумпурумпурум пум, возьму себе на вооружение, спс

  • @mschief4867
    @mschief4867 Před 3 lety +6

    Что это за Бог джавы ))

  • @mikhail6694
    @mikhail6694 Před 4 lety

    есть какая-то стратегия как и какие воросы задавать или импровизация?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety

      Безусловно, есть общие принципы, но конкретные вопросы, практически рандомны

  • @user-np4rc6cc9i
    @user-np4rc6cc9i Před 4 lety +5

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

    • @denisshuvalov5726
      @denisshuvalov5726 Před 4 lety +11

      @Иван Борзов Работаю как Big Data Engineer в Appsflyer. В основном занимаюсь оптимизацией процессов Spark'a и Druid'a, поиском новых решений для насущных проблем. На данный момент работаю над так называемым capacity planning для одного из наших Druid кластеров. Мы ожидаем много новых клиентов с китайского рынка и хотим понять сможем ли мы выдержать такую нагрузку. К примеру как наш кластер поведет себя при горизонтальном масштабировании, улучшится ли и на сколько performance. А при смене настроек, а с другими типами машин? Какие на текущий момент bottlenecks. А что если паттерн запросов изменится, и как будут взаимодействовать запросы которые сканируют большое количество данных (report queries) с точечными (ad-hoc queries). Будут ли одни влиять на другие, и что с этим делать. Ну и так далее.

    • @goodwin2223
      @goodwin2223 Před 4 lety

      @@denisshuvalov5726 Если не секрет, для каких задач используете Clickhouse и Aerospike?

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

      @@goodwin2223 Не секрет. Aerospike - как key-value, Clickhouse как аналитическую бд )
      Мы работаем с данными мобильных аппликаций. Когда пользователь совершает какое-то действие нам приходит событие, как правило мы хотим связать его либо с какой то сессией либо добавить другие данные (enrichment). Это происходит по ключу уникально идентифицирующему пользователя. Aerospike идеально подошел для этой задачи.
      Clickhouse хранит небольшую часть данных для наших аггрегативных репортов, как правило за последний день. Мы пишем в него данные в режиме real-time, Druid хранит уже все данные и пишут в него ночные batch процессы. Мы пробовали использовать Clickhouse для хранения всех данных, но он подходит когда запросы попадают в primary key, если нет, то он начинаем сканировать слишком много данных и время ответа становится слишком большим. Кода данных в нем немного, то это не слишком заметно.

  • @oleh_marchenko
    @oleh_marchenko Před 4 lety

    Разве ConcurrentHashMap на каждый бакет создает свой Lock?
    Если я правильно все помню, то ConcurrentHashMap объединяет бакеты в группы и на каждую группу создает Lock.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety

      Да, верно, локи ставятся по группам.

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

      Интересно, можно покопаться в коде, из того что написано тут локи создаютса на бакетах.
      > ConcurrentHashMap maintains a list of 16 locks by default (number of locks equal to the initial capacity , which is by default 16) each of which is used to lock on a single bucket of the Map
      Хотя может и поменялось уже.
      javahungry.blogspot.com/2015/02/how-concurrenthashmap-works-in-java-internal-implementation.html

  • @elpirato5428
    @elpirato5428 Před 3 lety

    Жалко нету видео о MV(C, P, VM) шаблонах, поскольку это самая тяжелая тема, которую каждый объясняет по своему и при этом, на своих готовых проектах, а не с нуля.

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

      Хорошо, что меня об этом не спросили, я бы точно поплыл :)

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

    У Дениса степень по computer science? просто интересно)

    • @denisshuvalov5726
      @denisshuvalov5726 Před 4 lety +7

      Нету - я самоучка

    • @daniilbredesku2047
      @daniilbredesku2047 Před 4 lety

      @@denisshuvalov5726 можно тебе по мейлу или фб задать пару вопросов на счет твоей работы? Я недалеко от Хайфы живу, тема актуальная как никогда)

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

      @@daniilbredesku2047 конечно, нет проблем - просто вбей в поиск Denis Shuvalov appsflyer. Просто не хочу почту писать в комментариях.

  • @caffeinejavacode1475
    @caffeinejavacode1475 Před 3 lety

    я бы оценил его на Senior Dev

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

    У парня даже акцент проявляется по мелочи))

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

      Он из израиля...у нас такой акцент...плюс в израиле английский в школе высокого уровня это даёт отпечаток

  • @BtXFWkyZBtXFWkyZ
    @BtXFWkyZBtXFWkyZ Před 3 lety

    А про Object класс не спросил...

  • @sirojiddingroup
    @sirojiddingroup Před rokem

    Which livel thats person ? middle,senior,or Junior

  • @finalename7464
    @finalename7464 Před 4 lety +8

    7:15 "String НИКУДА join" :-))
    Никуда - точка на иврите.

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

      Я знаю иврит ..но даже не заметил😃😀😅🤣

  • @AndreyDeveloper
    @AndreyDeveloper Před 4 lety +1

    Senior?

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

    для джуна пойдет

  • @Ofizerios
    @Ofizerios Před 4 lety

    А можно вопрос? В чем смысл собеседования вы берете на работу онлайн или как?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety +12

      Это mock интервью. Для человека проверить силы, для меня - провести интервью и опубликовать видео, для зрителей - посмотреть, как проходят интервью на практике

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

      @@EugeneSuleimanov Это не просто "win-win", а прям "win-win-win" ситуация)

  • @pngun-gd9yb
    @pngun-gd9yb Před 4 lety

    ты 50 минут монтировал переключение вебок??!?17717!?!7 звучит жёстко

  • @maksimus.ssirotkin1124

    у меня previous == nextNode

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

    с самого начала сnало понятно , что тип шарящий.

  • @alexanderk3762
    @alexanderk3762 Před 3 lety

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 3 lety

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

    • @alexanderk3762
      @alexanderk3762 Před 3 lety

      @@EugeneSuleimanov понял, спасибо за ответ.

  • @2012kostyan
    @2012kostyan Před 4 lety +1

    По grpc ... Первая буква в аббревиатуре, говорят, ничего не имеет общего с Гугл)

    • @TimC0x
      @TimC0x Před 4 lety +1

      general-purpose RPC

    • @2012kostyan
      @2012kostyan Před 4 lety

      @@TimC0x are you sure?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před 4 lety

      Возможно, я точной расшифровки не видел нигде, но точно знаю, что разработано компанией Google.

    • @vladimirvychuzhanin4105
      @vladimirvychuzhanin4105 Před 3 lety

      Yes !
      grpc.io/about/
      The story behind gRPC
      gRPC was initially created by Google, which has used a single "general-purpose RPC" infrastructure called Stubby to connect the large number of microservices running within and across its data centers for over a decade

  • @Thebeamoflight5984
    @Thebeamoflight5984 Před 3 lety

    пум, пум пум

  • @alexandrguravskiy9985
    @alexandrguravskiy9985 Před 2 lety

    Все, задачу не решил на интервью перевод в джуны!!! 😁

  • @MrMoshell
    @MrMoshell Před 4 lety

    6 лет это машина. Давай теперь 15 лет. О чем говорить будете?)

    • @user-hq6nm2tf6j
      @user-hq6nm2tf6j Před 4 lety +1

      Количество годов все-таки не показатель. По своему опыту сужу. Т.к. больше зависит от проектов, технологий, какие юзал. Можно и 15 лет проработать в одной конторе без развития, на саппорте какого-то легаси кода. Интереснее пособеседовать разработчиков каких-то топовых контор или реально топовых проектов

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

      Поговорить всегда есть о чем))

  • @AlexeySilichenko
    @AlexeySilichenko Před rokem

    8:51 HashMap не является коллекцией, т.к. не реализует интерфейс Collection. Это всё же принципиально, хотя бы потому что Collection непосредственно связан с процессом итерирования, а мапа не поддерживает итерирование непосредственно. Это как исключение называть ошибкой или полагать что Throwable это интерфейс.
    Часто мапы приплетают к коллекциям на собеседованиях: либо собеседователи, либо собеседуемые. Было бы намного лучше, если бы эта тема использовалась в качестве вопроса с подвохом.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      Она относится к коллекциям (Collections Framework), хоть и не наследуется от интерфейса Collection. Но безусловно - это часть фреймворка. Этот вопрос поднимался много раз в сообществе разработчиков и ответ был дан.
      docs.oracle.com/javase/tutorial/collections/interfaces/map.html
      В документации он относится к этому фреймворку. И в смой доке это упоминается.