Тестовое собеседование Java разработчика #25 - Алексей Пригода

Sdílet
Vložit
  • čas přidán 4. 07. 2024
  • Кандидат - действующий мидл Java разработчик - Алексей Пригода.
    Алексей работает Java разработчиком в течение двух лет в аутстаф компании.
    Материалы для разработчиков:
    proselyte.net/
    Телеграмм канал для общения:
    t.me/pse_club
    00:00:00 Вступление.
    00:00:51 Знакомство.
    00:14:27 Решение алгоритмической задачи.
    00:41:50 Системный дизайн CZcams.
    01:04:22 Дополнительные вопросы.
    01:12:10 Ответы на вопросы кандидата.
    01:14:21 Финал.

Komentáře • 89

  • @voker8465
    @voker8465 Před rokem +6

    Ещё не смотрел ,но огромное Вам спасибо, Евгений !❤

  • @user-lk8n0fgjk
    @user-lk8n0fgjk Před rokem +3

    Отличное видео! Продолжай данный вид интервью, вопросы про дизайн просто топ!!!

  • @Guhar4k
    @Guhar4k Před rokem +19

    Женя, спасибо за интервью! Думал, что будет страшно смотреть, но в целом ты прав, что всё получилось хорошо. Было очень приятно пообщаться!
    Конечно, хотелось блеснуть техническими знаниями, но, на мок-интервью я шёл в первую очередь узнать свои пробелы (с чем мы успешно справились). Будем работать)))

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +2

      Тебе спасибо за время, Лёша!
      Взаимно, было очень приятно пообщаться :)

    • @katefedorova624
      @katefedorova624 Před rokem +1

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

    • @Guhar4k
      @Guhar4k Před rokem

      @@katefedorova624 Спасибо!
      Задача была от лида, и было это когда я только пришёл на проект джуном (допускаю, что возможно это был один из способов занять меня :D).
      У нас скопилась довольно обширная коллекция таких тестов, лид рассматривал это как один из вариантов теста API. Я проверил эту возможность и довёл до рабочего решения. В итоге этот вариант не пригодился и не был интегрирован.

    • @katefedorova624
      @katefedorova624 Před rokem

      @@Guhar4k понятно) очень любопытно, как всё устроено в других проектах

  • @user-lx4dc1ls3e
    @user-lx4dc1ls3e Před rokem +6

    Было очень интересно!!! Евгению, как всегда огромная благодарность👍👍👍

  • @LacqueredNoCap
    @LacqueredNoCap Před rokem +3

    Спасибо большое за такой формат собеседования!! Сам мечу в FAANG, поэтому начинаю разбираться c форматом System Design интервью!

  • @Roman-ec9iw
    @Roman-ec9iw Před rokem +3

    Спасибо огромное!

  • @QuickCube
    @QuickCube Před rokem +3

    Большое спасибо за проделанную работу. Интересно смотреть интервью мидл, сеньер разработчиков!

  • @user-pf2hq3un2r
    @user-pf2hq3un2r Před rokem +2

    Познавательно. Спасибо. Идея с превью в начале ролика хорошая, передаёт кратко содержимое и настраивает на просмотр.

  • @user-qy4dt8sx7l
    @user-qy4dt8sx7l Před rokem +2

    Спасибо! Очень интересно!

  • @vetl-foto
    @vetl-foto Před rokem +2

    Спасибо за видео 🤝

  • @SvetlanaCapri
    @SvetlanaCapri Před rokem

    Спасибо, Ваши видео помогают в обучении.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem

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

  • @adeskmath
    @adeskmath Před rokem +2

    Отличное собеседование, пробежались по многим темам, самые интересные вопросы - "как вы ... " по текущей работе,
    при этом в вопросах много информации по теме, спасибо.

  • @ibraim3197
    @ibraim3197 Před rokem +6

    Ооо, то что нужно! Еду в штаты, там как раз упор на дизайн. Спасибо, Евгений!

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +2

      Спасибо за комментарий! Надеюсь, материал будет полезен :)

    • @UFOBroCaptain
      @UFOBroCaptain Před rokem +1

      реферал дать ?

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

      ​@@UFOBroCaptainа можно??

  • @alevadnaya
    @alevadnaya Před rokem +2

    Faang формат интервью тоже очень интересный. Спасибо, Евгений.

  • @MrRomanvideo
    @MrRomanvideo Před rokem +6

    1:22 Ха-ха! Тоже 1.5 года на проекте и не понимаю, что он делает 😂

  • @SP-cx8oq
    @SP-cx8oq Před rokem +4

    Отличный формат видео, более оживленный) Евгений, подскажите пожалуйста, что бы вы порекомендовали почитать/посмотреть по system design из актуального сегодня?

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +2

      Спасибо за отзыв!
      Я оставлю полный список рекомендаций в разборе интервью. Материалы по системному дизайну будут там.

  • @user-kh7du4ot2j
    @user-kh7du4ot2j Před rokem +1

    Круто

  • @gulfstream1800
    @gulfstream1800 Před rokem +2

    полезно

  • @IvanIvanov07
    @IvanIvanov07 Před 7 měsíci

    Интересное видео, при прохождении курса Java в онлайн школе мы изучали строки и там была такая задачка, мб где то недопонимаю, почему "миддл"? Потому что он знает Spring? А я еще нет?

  • @araa3308
    @araa3308 Před 6 měsíci

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

  • @shluhogon_42
    @shluhogon_42 Před rokem

    Не смотрел ещё, как решил задачу, но для подобного рода задач придумал алгоритм не так давно. Делаешь структуру, например линкед лист. Заводишь инт результат. Проходишься в цикле по строке. Смотришь, есть ли в листе этот символ. Если есть, то удаляешь с начала списка симовлы до тех пор, пока он не будет содержаться там. В любом случае добавляешь елемент в конец и в результат добавляешь маусимум от пары длина списка - результат.
    Но кажется, это не очень быстро

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      Не думаю, что через LinkedList оптимальное решение, ведь поиск по нему - O(n).

    • @shluhogon_42
      @shluhogon_42 Před rokem +1

      @@EugeneSuleimanov конечно не оптимально. Но как решение в лоб работает)

  • @madcalm2024
    @madcalm2024 Před rokem +1

    Задачу неповторяющихся символов проще всего через последовательный граф-дерево. Или перепоручить ее BingChat-у: ======> Java: в строке найти длину самой длинной подстроки из неповторяющихся символов =========> Для того чтобы найти длину самой длинной подстроки из неповторяющихся символов в строке на Java, можно использовать алгоритм "скользящего окна". Этот алгоритм работает следующим образом:
    1. Создаем пустой HashSet.
    2. Инициализируем два указателя - left и right - в начало строки.
    3. Перемещаем правый указатель вправо до тех пор, пока не встретим повторяющийся символ.
    4. Запоминаем длину текущей подстроки без повторяющихся символов.
    5. Перемещаем левый указатель вправо до тех пор, пока не удалим повторяющийся символ из HashSet.
    6. Повторяем шаги 3-5 до конца строки и запоминаем максимальную длину подстроки без повторяющихся символов.
    Вот пример кода на Java:
    ```java
    public static int lengthOfLongestSubstring(String s) {
    Set set = new HashSet();
    int left = 0;
    int right = 0;
    int maxLength = 0;
    while (right < s.length()) {
    if (!set.contains(s.charAt(right))) {
    set.add(s.charAt(right));
    maxLength = Math.max(maxLength, set.size());
    right++;
    } else {
    set.remove(s.charAt(left));
    left++;
    }
    }
    return maxLength;
    }
    ```

  • @nsandrus
    @nsandrus Před rokem +1

    Отличное интервью, сделал себе пометки что подтянуть надо, у меня получился чуть другой вариант, без мапы но с "прыгающим" назад курсором. Для любителей кода
    public static void main(String[] args) {
    String s = "abcadefa";

    Set chars = new HashSet();
    int maxLen = 0;

    for(int i=0; i

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem

      Спасибо за отзыв!
      Выглядит как рабочий вариант - нужно будет толко через тесты прогнать.

    • @alenagavriluk9663
      @alenagavriluk9663 Před rokem

      зачем i -= chars.size(); ? Вазш код не работает на первой строке из примера

    • @alenagavriluk9663
      @alenagavriluk9663 Před rokem

      public int lengthOfLongestSubstring(String s){
      if(s.length() == 0) return 0;
      Set chars = new HashSet();
      int maxLen = 0;
      for(int i=0; i

    • @igorivanov5115
      @igorivanov5115 Před 6 měsíci

      можно ещё проще:
      String s = "bbbbbbb";
      int ans = 0;

      char[] c = s.toCharArray();

      for(int i = 0; i < c.length - 1; i++) {
      for(int j = i + 1; j < c.length; j++) {
      if(c[i] == c[j]) {
      if(ans < j - i) {
      ans = j - i;
      }
      break;
      }
      }
      }

  • @JavaDevOld
    @JavaDevOld Před rokem +2

    Здравствуйте, Евгений,... По поводу задачки про стринги, где нужно найти самую длинную из неповторяющихся символов... Здесь, мне кажется, очень помогут Set ..... Через Set решать. Будет мало кода довольно... Хотя, не уверен, что работать будет быстрее... СПС )))))))

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem

      Спасибо за комментарий. Если приведён пример реализации - будет отлично. Я, к сожалению, на данный момент не вижу решения через Set.

    • @JavaDevOld
      @JavaDevOld Před rokem +1

      @@EugeneSuleimanov Сейчас попробую.... привести...... СПС..

    • @LacqueredNoCap
      @LacqueredNoCap Před rokem +2

      Эту задачу можно решить через sliding window + Map, чтобы запоминать позицию символа в строке, на которую нужно сдвигать наше "окно", если пришел повторяющийся символ. А вообще эта задача с литкода под номером 3))

    • @madcalm2024
      @madcalm2024 Před rokem +2

      @@LacqueredNoCap Вот решение на Set-e от BingChat :
      ```
      public static int lengthOfLongestSubstring(String s) {
      Set set = new HashSet();
      int left = 0;
      int right = 0;
      int maxLength = 0;
      while (right < s.length()) {
      if (!set.contains(s.charAt(right))) {
      set.add(s.charAt(right));
      maxLength = Math.max(maxLength, set.size());
      right++;
      } else {
      set.remove(s.charAt(left));
      left++;
      }
      }
      return maxLength;
      }

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      @@madcalm2024 интересно, опробую. Спасибо

  • @konstantinemelyanov1684
    @konstantinemelyanov1684 Před rokem +1

    Даёшь System Design !

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      Обязательно, скоро начну публиковать видео отдельно по нему :)

    • @konstantinemelyanov1684
      @konstantinemelyanov1684 Před rokem +1

      @@EugeneSuleimanov Недавно проходил System Design в Авито. Всё было хорошо, интервьюер остался доволен. Хвалил. Пришёл отказ. Сейчас для меня очень не понятны критерии таких интервью и материалы для подготовки.

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      @@konstantinemelyanov1684 могли прост обнайтовивший другого кандидата, который запросил более низкую ЗП. Масса вариантов.

  • @MrRomanvideo
    @MrRomanvideo Před rokem +1

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

    • @EugeneSuleimanov
      @EugeneSuleimanov  Před rokem +1

      Да, формат не самый простой - перегнул с уровнем вопросов в ютом случае.
      И спасибо за отзыв!

  • @lelelelevv
    @lelelelevv Před rokem

    Я уж думал, что для джуна сложноватые вопросы, а это миддл) фух)

  • @user-ur7bn1kd1p
    @user-ur7bn1kd1p Před 5 měsíci

    А какой смысл на интервью рассказывать сценарий решения задачи?
    Обычно происходит так: продумал 5 минут, всё, дальше можно не решать, свободен.
    Не понял задачу, значит на работе не поймёт задачу с первого раза.

  • @user-og2ti2wd5o
    @user-og2ti2wd5o Před rokem +1

    Отакої

  • @ktotam8913
    @ktotam8913 Před rokem

    Люди, подскажите книгу мощную по stream API, а то я щас с ума сойду, как работать со стримом. Весь ютуб в простых примерах, а у меня задания сложные 😪

    • @Guhar4k
      @Guhar4k Před rokem

      А есть пример задания?

    • @ktotam8913
      @ktotam8913 Před rokem

      @@Guhar4k Дан массив студентов с оценками по предметам. Найти (необходимо получить Map):
      Найти среднее каждого студента по предметам;
      class Student3_1 {
      //1.Дан массив студентов с оценками по предметам. Найти (необходимо получить Map):
      //• Найти среднее каждого студента по предметам;
      //• Найти среднее по предмету среди всех студентов;
      //• Найти среднее среди всех студентов по всем предметам (общее среднее);
      //• Посчитать «оценку» студента, исходя из его общего количества баллов: 0-7 - bad, 8-15 - normal, 16+ - good.
      //• Получить String - название самого легкого предмета среди студентов.
      //• Получить String - самого умного студента.
      String name;
      Map marks;
      public Student3_1(String name, Map marks) {
      this.name = name;
      this.marks = marks;
      }
      }

    • @ktotam8913
      @ktotam8913 Před rokem

      @@Guhar4k мне либо с окна прыгать, либо норм книгу искать. 😹Видел решение одного из заданий через стрим с Collection. singletonelist, так это вообще сущий кошмар, как понять, когда его в стримах исп-ть!

    • @MrRomanvideo
      @MrRomanvideo Před rokem

      Java 8 in action

    • @ktotam8913
      @ktotam8913 Před rokem

      @@MrRomanvideo вау, выглядит внушающе) спасибо!

  • @John.Constantine.777
    @John.Constantine.777 Před 9 měsíci

    В 30 лет не может связать 2х слов не вставив "ну"...

    • @John.Constantine.777
      @John.Constantine.777 Před 9 měsíci

      и не справился после 2х лет работы?...
      а нафиг вам map? вам же не требуется хранить несколько значений, вы ищите одно.

  • @Revasha228Crime
    @Revasha228Crime Před rokem

    Задача с неповторяющимися символами, не нашел такого решения в комментариях, но тесты проходят
    int calc(String str) {
    int maxSize = -1;
    Set unique = new HashSet();
    for (Character s : str.toCharArray()) {
    if (unique.contains(s)) {
    if (maxSize < unique.size()) { //update size
    maxSize = unique.size();
    }
    unique.clear();
    }
    unique.add(s);
    }
    return maxSize == -1 ? unique.size() : maxSize; //prevent 'bbbbb'
    }

    • @user-xu2fb5jk3s
      @user-xu2fb5jk3s Před rokem

      ваш метод для строки "ababc" возвращает двойку🙃

    • @user-zr3xj8fy5q
      @user-zr3xj8fy5q Před 11 měsíci

      А между тем, метод то рабочий, просто нужно return заменить на
      Math.max(unique.size(), maxSize)