JavaScript 5 типовых задач на собеседовании, решаем их!

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024
  • Курс JS: js.itgid.info
    Курс верстки: html.itgid.info
    Интернет магазин на Node: node.itgid.info
    Плейлист: goo.gl/63osiv
    Телеграм: t.me/jsrules
    Мои курсы: itgid.info

Комментарии • 398

  • @near5090
    @near5090 5 лет назад +158

    понравилось, тока могли бы разделить по частям уроки а то люди будут думать что в этом видео все 5 задач

  • @nickolaypanasyuk9711
    @nickolaypanasyuk9711 5 лет назад +7

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

  • @MArt-lz9xu
    @MArt-lz9xu 5 лет назад +9

    Спасибо за решение задачи. Все по полочкам split.разложено, join.разжевано и в String положено :)

  • @da_costa-h7t
    @da_costa-h7t 5 лет назад +11

    Я в JS полный ноль, но с точки зрения производительности это не очень хорошо. Гонять туда сюда стринг в массив и массив в стринг это лишние операции. Я думаю на собеседованиях больше обращают внимание на производительность кода, а не его краткость (может быть JS исключение?:) ). С таким же успехом, задание на сортировку массива можно решить готовым методом типа sort(), но в корне не понимать как эта самая сортировка работает. Может быть хотя бы так
    const is_polyndrom = str => {
    var n=str.length;
    str=str.toLowerCase();
    for (let i=0;i

    • @artemkostylev2856
      @artemkostylev2856 5 лет назад

      А если у вас не четное количество букв? Тогда n/2 будет не целым числом и проверка сломается

    • @ДмитрийБеляев-ъ1з
      @ДмитрийБеляев-ъ1з 5 лет назад +1

      @@artemkostylev2856 ничего не сломается, при нечетной длине центральный символ не будет проверяться, что и не нужно для данной задачи

    • @artemkostylev2856
      @artemkostylev2856 5 лет назад

      Дмитрий Беляев понятно, спасибо

    • @Warox42
      @Warox42 5 лет назад +1

      Можно убрать ловер кейс, и делать ту ловер в иф конструкции для символов. Тогда на 1 проход будет меньше, что в данном случае являеться 50% сложности
      будет O(n) вместо O(2n)

    • @MrRagday
      @MrRagday 5 лет назад +3

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

  • @idinaxuj100
    @idinaxuj100 3 года назад +11

    Скиньте видео с остальными 4 задачами? очень тяжеловато найти :(

  • @simplewebdev1098
    @simplewebdev1098 5 лет назад

    Могу предложить более оптимальный способ. Если критерий оптимальности сложность алгоритма, а не, например, количество кода. Идея в том, чтобы не сравнивать всю строку, а отлетать на первом неравном символе. Мы подготавливаем массив: преобразуем строку в массив, убираем пробелы и знаки препинания, приводим всё к нижнему регистру, и т.п.
    Далее
    let count = Math.floor(arr.length/2);
    for (let i = 0; i < count; i++) {
    if(arr[i] != arr[arr.length-i])
    return false;
    }
    return true;
    Логика такова: если в массиве чётное количество элементов сравниваются попарно все. Если нечётное, средний элемент всё равно как-бы не влияет. Переменная count создана чтобы каждый цикл не вызывать Math.floor().

    • @MrRagday
      @MrRagday 5 лет назад

      Почему лет каунт, а не конст?

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад +1

      @@MrRagday да, const тут правильнее будет. Но не люблю я, почему то, этот const. Не нравится он мне, и всё ))

  • @rainysky84
    @rainysky84 5 лет назад +38

    На видео на 4:14 -->> let str2 = str.split('');
    В 2019ом году для преобразования в массив проще писать let str2 = [...str1]
    Итераторы и деструктуризация во всей их красе :)

    • @Сергей-у6и7б
      @Сергей-у6и7б 4 года назад

      Да у автора проблемы с наименованием.

    • @apollon-8151
      @apollon-8151 2 года назад +1

      то есть с помощью оператора spread можно из строки сделать массив? Надо будет попробовать на практике:)
      Спасибо за информацию

  • @numbersevenunderheaven1898
    @numbersevenunderheaven1898 4 года назад +7

    7:02 Звучит так, как будто всегда чем короче, тем лучше, на деле, если такого принципа придерживаться, то дебажить становится в разы сложнее, да и на выразительности кода это сильно сказывается, особенно если описывается не самая очевидная логика, а ещё можно упомянуть, что методы массивов делятся на те, которые мутируют сам массив и те, которые этого не делают, в частности reverse его мутирует, для данного решения не очень существенно, но на практике очень важно это помнить. А за видео спасибо, хороший разбор типовой задачи.

    • @sergei-sabitov
      @sergei-sabitov 4 года назад +1

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

  • @dmitrypichugin7449
    @dmitrypichugin7449 5 лет назад +11

    Можно ничего не делать с входной строкой.
    Имеет значение четное число символов или нет.
    Можно двигаться по массиву и сравнивать первый символ с последним, и сужаться до середины. В итоге сложность будет O(n), по памяти O(1).
    Если строка не четная, то символ в середине можно не смотреть.
    Почитайте книгу "Cracking coding interview".

    • @senioreasy
      @senioreasy 5 лет назад +1

      Я тоже сначала так подумал )) Но потом прикинул - а ведь пофиг чётное количество или нет. Делаешь цикл до "длинна строки делённая на 2" например 5/2 = 2 (остальное в остатке); а 3й символ можно не сравнивать )) Всё выше справедливо для плюсов.

    • @MrRagday
      @MrRagday 5 лет назад +2

      "Аргентина манит негра"

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад

      @@senioreasy верно, но только в JS 5/2 = 2.5. Нужно округлять, хотя, с другой стороны, не нужно. Ибо 3 всё равно > 2.5 так что для сравнения пойдёт.

    • @zhenshuang
      @zhenshuang 4 года назад

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

    • @AwesomeMrUser
      @AwesomeMrUser 4 года назад +1

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

  • @nightlair1215
    @nightlair1215 5 лет назад +2

    Можно написать код длиннее,но оптимальнее по времени,так как создавать вторую строку,переворачивать ее и сравнивать с другой очень долго при больших строках.
    function palindrom(s){
    s = s.toLowerCase();
    s = s.split('');
    var flag = true;
    for(let i = 0;i

    • @lexSkiller
      @lexSkiller 5 лет назад

      Хороший пример

    • @ДмитрийБеляев-ъ1з
      @ДмитрийБеляев-ъ1з 5 лет назад

      только достаточно так проверить половину строки, да и сплитить строку не нужно

    • @Warox42
      @Warox42 5 лет назад

      Это не О(N)
      Ведь ту ловер кейс - полтный проход по строке
      потом сплит - полный проход по строке
      потом цикл. итого О(3n)
      А можно и правда за О(н)

    • @nightlair1215
      @nightlair1215 5 лет назад

      Алгоритм проходит 3 раза, но в асимптотике не записываются коэффициенты O(n/100) = O(100n) = O(n)

    • @MrRagday
      @MrRagday 5 лет назад

      В чем смысл ускорять некорректный код?

  • @burenkoigor1984
    @burenkoigor1984 3 года назад +10

    В палиндроме, я бы все же сделал
    const reversedString = str.split('').reverse().join('')
    return string === reversedString
    Так будет на одну строчку больше, но сразу повышается читаемость кода.

    • @fuhait
      @fuhait Год назад +1

      function palindrome(str) {
      return str.toLowerCase().split('').reverse().join('') == str;
      }

  • @Roman-vl8su
    @Roman-vl8su 5 лет назад +28

    Лучший канал про Web

    • @itgid
      @itgid  5 лет назад +6

      Согласен!

    • @TheWorldPeace
      @TheWorldPeace 5 лет назад

      Самокритично)

  • @ВасяСидоров-я6ш
    @ВасяСидоров-я6ш 5 лет назад +3

    Спасибо братка, крепкого тебе здоровья!

    • @itgid
      @itgid  5 лет назад +1

      Спасибо!

  • @КсенияЛ-р7у
    @КсенияЛ-р7у 5 лет назад

    Полностью поддерживаю Roman! Объясняет, раскладывая все по полочкам! Прохожу курс, очень довольна!

  • @ЕвгенийЛапин-о4т
    @ЕвгенийЛапин-о4т 5 лет назад +5

    Первой строкой в функции надо проверять, что длина строки более 1 символа, иначе сразу возвращать true.
    Ещё передать могут что попало вместо строки, например объект. Тоже надо проверять.

  • @azabum12ee
    @azabum12ee 5 лет назад +4

    Классный канал. Я наконец понял работу с массивами.

    • @itgid
      @itgid  5 лет назад

      Супер!

  • @БайтемирАнакеев
    @БайтемирАнакеев 5 лет назад +2

    Просто лучший в мире за работой.

  • @stra1f595
    @stra1f595 3 года назад +3

    Думаю для первой задачи такой код выглядит лутше:
    const palindrom = string => {return (string.toLowerCase().split("").reverse().join("") == string.toLowerCase())? true : false;}
    console.log(palindrom("HHHhh")); // true

  • @ychetka
    @ychetka 5 лет назад

    написал за 2 минуты, пользуйся, по идее работает со всем в UTF-8
    function test (chars) {
    const normalise = chars.toUpperCase()
    let polindrom = ''
    for(let i = normalise.length; i > 0; i-- ){
    polindrom += normalise[i - 1]
    }
    return (polindrom == normalise)
    }

  • @Minty290
    @Minty290 4 года назад +1

    Еще есть такое решение:
    const func = str => {
    let string = str.toLowerCase().split('').reverse().join('');
    let result = (string == str) ? true : false;
    return result
    }
    console.log(func('abbba'));

    • @r45her
      @r45her 3 года назад

      return string === str

  • @eXacT9090
    @eXacT9090 5 лет назад +5

    Канал пушка!

    • @itgid
      @itgid  5 лет назад

      Ага, спасибо!

  • @olganovak209
    @olganovak209 5 лет назад +9

    Спасибо за уроки!
    По поводу палиндромов - классический пример "А роза упала на лапу Азора", т.е. предложение с пробелами :) неплохо бы наверное было бы почистить строку от пробелов, или даже от всех небуквенных символов (прежде всего знаков припинания)

    • @МихаилВикторович-р2я
      @МихаилВикторович-р2я 5 лет назад

      Все эти условия (эмодзи и прочее) зависит только от твоего представления палиндрома, лично я считаю что "А роза упала на лапу Азора" не является палиндромом.

    • @MrRagday
      @MrRagday 5 лет назад +1

      @@МихаилВикторович-р2я А если лично я считаю, что у палиндрома длина строки не может превышать единицу, то решение const isPalindrome = (str) => str === str.charAt(0); резко станет правильным?

    • @МихаилВикторович-р2я
      @МихаилВикторович-р2я 5 лет назад

      @@MrRagday Да, для тебя станет правильным (но не истенным), ты же этого хотел добиться, 121 - это палиндром? А в двоичной системе? Можно полагаться на википедию, но там про эмоджи ничего нет. Зато там есть магический квадрат, про который никто ничего не сказал.

    • @MrRagday
      @MrRagday 5 лет назад +1

      @@МихаилВикторович-р2я 121 - это палиндром. И в двоичной системе тоже. А вот придумывать свои определения словам, у которых есть общепринятое значение - дело нехорошее. Хотя запретить я тебе, конечно, не могу)

    • @МихаилВикторович-р2я
      @МихаилВикторович-р2я 5 лет назад

      MrRagday в двоичной тоже, ну ну

  • @orlem5837
    @orlem5837 5 лет назад

    0) Где проверка входных данных?
    1) Я бы возмутился именованием функции. Логичнее было бы назвать checkIsPalendrome или isPalendrome в крайнем случае.
    2) Алгоритмическая сложность этого решения о(n) всегда т.к. для реверса нужно пройти весь массив, я бы посимвольно проверял символы, шагая от начала до середины массива и сравнивая их с соответствующими символами, взятыми от конца массива. В этом случае ещё бы и расход памяти уменьшился, а сложность алгоритма была бы о(n/2) в худшем случае и о(1) в лучшем случае. + такой подход позволил бы вылавливать эмодзи без лишних велокостылей.

  • @данилкононов-э3в
    @данилкононов-э3в 5 лет назад

    так же есть вот такой варинат функции, которая определяет палиндром
    function isPalindrome(num) {
    let str = String(num),
    sum = 0;
    for (let i = 0; i < str.length; i++) {
    let left = i;
    let right = str.length - 1 - i;
    if (str[left] == str[right]) {
    sum++;
    if (sum == str.length - 1)
    return true;
    }
    }
    return false;
    }

    • @MrRagday
      @MrRagday 5 лет назад

      Можно улучшить, сделав i

  • @evgeniypp
    @evgeniypp 5 лет назад +6

    Пробелы, запятые и т.п. - куда более серьезные проблемы, чем эмодзи.
    Чтобы работало с предложениями, нужно ещё сделать str.replace(/\W/g, "").
    Чтобы обрабатывало без ошибок числа, undefined и т.п., нужно в начале добавить str+"".

  • @Давид-п8и
    @Давид-п8и 5 лет назад

    Очень интересно! Ждём новой части!

  • @FilmsMediaTV
    @FilmsMediaTV Год назад

    Этот палиндром мне теперь во сне как ужастик сниться будет 😅

  • @tihon4979
    @tihon4979 5 лет назад +1

    Объясняешь круто! Я вообще питон учу, но так как автор преподносит инфу, мне ничего не мешает параллельно рассматривать js. Если будет курс по питону, я б глянул.

    • @itgid
      @itgid  5 лет назад +1

      Спасибо!

  • @ramforinh
    @ramforinh 5 лет назад +2

    Самый классический палиндром:"А роза упала на лапу Азора". Данная функция его не определит. Необходимо перед сравнением удалать все пробелы и знаки препинания. Проблема со смайликами мне кажется гораздо менее важной, чем эта.

    • @pavelharelyshau6106
      @pavelharelyshau6106 Год назад

      зависит этот требований. если у нас предполагается что строку будет без пробелов, то нет смысла это проверять. А если нет, то обычный str.split(' ').join('') решает проблему

  • @tivirp1997
    @tivirp1997 5 лет назад

    Класс, продолжай, как раз буду устраиваться js js se

  • @abolnikov
    @abolnikov 4 года назад

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

  • @ArthurYelkin
    @ArthurYelkin 5 лет назад

    Со строкой все довольно просто, но часто встречаются задачи по типу "проверьте является ли целое число палиндромом"
    На такой случай я знаю красивый алгоритм:
    // функция, которая разворачивает число по принципу чтения числа задом наперед
    const reverseNumber = num => {
    let result = 0;
    for (; Math.floor(num) !== 0; num /= 10) {
    result *= 10;
    result += Math.floor(num) % 10;
    }
    return result;
    };
    // функция, которая сопоставляет развернутое число с исходным
    const isPalindrom = num => reverseNumber(num) === num
    console.log(isPalindrom(121))
    // true
    console.log(isPalindrom(123)) // false

    • @MrRagday
      @MrRagday 5 лет назад

      С помощью str = "" + num; задача сводится к исходной =Р

    • @ArthurYelkin
      @ArthurYelkin 5 лет назад

      @@MrRagday а при чем тут str?

    • @MrRagday
      @MrRagday 5 лет назад

      @@ArthurYelkin Если со строкой просто, а для числа нужны отдельные алгоритмы, то не проще ли превратить число в строку и воспользоваться "простым" решением?

    • @ArthurYelkin
      @ArthurYelkin 5 лет назад +1

      @@MrRagday ну кстати логично)

  • @StoneWeaver_RU
    @StoneWeaver_RU 5 лет назад +4

    Может, стоит ещё пробелы убирать в строках при проверке палиндрома? "А роза упала на лапу Азора" - палиндром, но данный метод вернёт false, поскольку пробелы в разных местах.

    • @anastasiafanina8760
      @anastasiafanina8760 2 года назад

      в данном примере пробелы не учитываются

  • @TheOlius
    @TheOlius 5 лет назад +1

    1. toLowerCase можно тоже в возврат =).
    2. слово "abrba" тоже является полиндромом об этом ни слова
    3. данная задача даже не на ДЖУНА (по сути задача решается как и звучит (если развернуть слово наоборот то они будут равны), то есть ДУМАТЬ не нужно). Правильнее сформулированная задача о которой ты говоришь будет звучать так - "Определить, можно ли по входящей строке ПОСТРОИТЬ слово полиндром? то есть "abba" , "aabb" и "abbar" должны вернуть true, само слово строить не нужно, нужно лишь определить возможность." и вот тут начинаются сложности, при входящей строке в миллион символов... попробуй найти самое БЫСТРОЕ решение (АЛГОРИТМ) с МИНИМУМОМ циклов. Именно эту задачу задают при собеседовании на ПРОГРАММИСТА, а не определить что слово полиндром изначально... Которое решается в одну строчку.
    4. Лайк если хочешь знать решение реальной задачи

    • @TheOlius
      @TheOlius 5 лет назад

      в общем решил забить - правильный ответ:
      const isPolindromPossible = str => {
      let hashMap = [];
      str.split('').forEach(e => {
      let position = hashMap.indexOf(e)
      if (position >= 0) {
      hashMap.splice(position,1);
      }
      else {
      hashMap.push(e);
      }

      });
      return hashMap.length

    • @MrRagday
      @MrRagday 5 лет назад

      Отличная задача. Я так понимаю, что нужно сначала проверить длину строки, потом проверить символы на парность. Если длина непарная - допустима одна непарная буква, если парная - все буквы должны быть в четном количестве? Ответ не смотрел, так неспортивно =Р

    • @MrRagday
      @MrRagday 5 лет назад

      ​ Андрей Галкин посмотрел твое решение... подумал... Понял, что достаточно просто проверить буквы на парность. Если останется одна непарная или ноль - годно. Нет - нет ;)

    • @MrRagday
      @MrRagday 5 лет назад

      Кстати, вместо хешМеп-массива с прогонами индексОф-ом, можно сделать объект, а цикл проверяет есть ли свойство с именем, совпадающим с текущей буквой. если есть - удаляет его и идет к следующей букве, если нет - создает и идет к следующей букве.
      Задача *гораздо* лучше чем в видео! Спасибо еще раз!

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 года назад

      @@TheOlius решальщик, пробелы и регистр у тебя учтены?

  • @dimanarizhnyi391
    @dimanarizhnyi391 5 лет назад +3

    Тоже изучаю JS, но мне кажется есть еще один недочет. Если попросят проверить является ли строка палиндромом, то строка может содержать пробелы. Скажем, если передать в str "а роза упала на лапу азора" (что в тоже явялется строкой), такой вариант не сработает.
    То есть к минусам данного метода, я бы еще добавил "работает только для слов". Ведь задание "является ли строка", а не является ли "слово". Тут нужно быть внимательным к деталям.

    • @ИгорьОсиюк-б5м
      @ИгорьОсиюк-б5м 5 лет назад +1

      тогда скорее всего нужно избавится для начала от пробелов через replace, а потом все как в видео, конечно если просят вывести только true / false.

    • @3dzbot
      @3dzbot 5 лет назад

      palindrom('ab ba ab ba') сработало. пробелы не проблема

    • @dimanarizhnyi391
      @dimanarizhnyi391 5 лет назад

      @@3dzbotне самый лучший пример, сейчас я вам его сломаю. Проверьте "abb aab ba", что как бы тоже палиндром. Учитывайте индексы элементов строки.

    • @3dzbot
      @3dzbot 5 лет назад

      @@dimanarizhnyi391 -> str = str.toLowerCase().replace(/\s/g, ''); где со сменой регистра так же добавляем рег.выражение .replace(/\s/g, '') которое убирает пробелы со строки. "а роза азора" решена :)

    • @dimanarizhnyi391
      @dimanarizhnyi391 5 лет назад

      @@3dzbot да, но код явно отличается от того, что представлен в видео. Про это решение я тоже знаю.

  • @Max-kr4ie
    @Max-kr4ie 5 лет назад +9

    Благодарю. И жду новых. Интересно.

    • @itgid
      @itgid  5 лет назад +1

      Да, завтра будут новые.

  • @zloy_tushkanchik
    @zloy_tushkanchik 5 лет назад

    Так вот где спец по js скрылся. Искал - не выходил нигде, а тут случайно наткнулся в рекомендациях. Однозначно подписка.

    • @MrRagday
      @MrRagday 5 лет назад

      Замечательного спеца нашли. Код которого не пройдет проверку первыми же примерами палиндромов из Википедии.

    • @zloy_tushkanchik
      @zloy_tushkanchik 5 лет назад

      @@MrRagday можете посоветовать что то или кого то лучше?

    • @MrRagday
      @MrRagday 5 лет назад

      @@zloy_tushkanchik learn.javascript.ru
      Да тот же соракс на три головы выше этого "спеца"

  • @vovaseagull1097
    @vovaseagull1097 5 лет назад +1

    Очень круто объяснили
    спасибо!
    еще наверное б добавил что просят вместо reverse() и как оказалось что еще вариант который от меня хотели услышать это обратный цыкл

    • @itgid
      @itgid  5 лет назад

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

  • @JavaScriptcher
    @JavaScriptcher 3 года назад

    Отличное объяснение!!!!!!Спасибо!!

  • @alexsoft7073
    @alexsoft7073 4 года назад

    очень хорошая и простая задача. особенно решение. лайк

  • @doombeatsmusic
    @doombeatsmusic 2 года назад

    str = 'abba'.split('')
    let s = str.length
    for(let i = 0; i < s; i++){
    if(str[i] !== str[s - i - 1]){
    console.log('Not a palindrom')
    return 0
    }
    }
    console.log('It is a palindrom')

  • @AikawaGeorge
    @AikawaGeorge 5 лет назад +1

    а еще можно оптимизировать этот метод проверяя на нечетность и проверяя в цикле посимвольно тип такого:
    const length = str.length
    for(let i = 0; i < length/2; i++) {
    if (str[i] !== str[length - i - 1]) {
    return false
    }
    return true
    }
    return true
    ну это если уж совсем упарываться, если работа с малым количеством данных то и в одну строчку решение норм

    • @da_costa-h7t
      @da_costa-h7t 5 лет назад +1

      можно добежать до середины строки, этого будет достаточно

    • @AikawaGeorge
      @AikawaGeorge 5 лет назад

      @@da_costa-h7t да, ты прав, всё-таки писать код в комментарии не очень удобно, пропустил этот момент

  • @linaKaderhc
    @linaKaderhc 5 лет назад

    После строки " str2 = str2.join;
    "
    "str2" необходимо преобразовать в строку, поскольку на данный момент это массив.
    Сделать это можно подобным образом: " str2 = " "; ". Иначе функция возвращает " false ".
    А второй вариант работает некорректно и всегда выводит "true".

  • @Ekscen
    @Ekscen 5 лет назад +1

    function check (str) {
    let str2 = "";
    for (let i = str.length - 1; i >= 0; i--){
    str2 += str[i];
    }
    console.log(str2 == str);
    }
    check ("ala");

    • @MrRagday
      @MrRagday 5 лет назад

      Не жадничай на знаки "="

  • @АлександрБугров-н7т

    Алекс очень поступков и полезно спасибо!

  • @Tipuchek
    @Tipuchek 5 лет назад +1

    Как обычно топчик)

    • @itgid
      @itgid  5 лет назад

      Спасибо!

  • @webdmitriev
    @webdmitriev 5 лет назад +1

    Классно)) мне понравилось такое решение))

    • @itgid
      @itgid  5 лет назад +2

      да, особенно прикольно от 3 операций к одной.

  • @OlexandrBerezan
    @OlexandrBerezan 4 года назад

    let string = "Abba"
    let ans = string => {
    string = string.toLowerCase();
    for(let i=0;i

  • @azatgalyautdinov3548
    @azatgalyautdinov3548 Год назад

    Имхо, я как собеседующий ожидал бы решение с 2мя циклами. Это реально показал бы умеет ли думать Джун или нет

  • @sergiistryzg9699
    @sergiistryzg9699 5 лет назад +1

    Решил только у вас в раз 10 короче код чем у меня))
    const inputText = document.querySelector(".js_input");
    inputText.addEventListener("change", isPol);
    function isPol() {
    const inpValue = inputText.value.toLowerCase();
    const doArray = inpValue.split("");
    console.log(doArray);
    let count = doArray.length;
    // console.log(count);
    const doMirrou = doArray.reduce((newArr, el, idx, arr) => {
    count -= 1;
    newArr.push(arr[count]);
    return newArr;
    }, []);
    console.log(doMirrou);
    const isGood = doMirrou.map((letter, idx) => letter === doArray[idx]);
    console.log(isGood);
    const aaa = isGood.every(bul => bul);
    console.log(aaa);
    }

  • @tommygun7913
    @tommygun7913 4 года назад

    зацените, сделал так, чтобы ответ был верным независимо от заглавных или строчных букв. Верное решение?
    const someName = str => {
    if (str.toLowerCase() == str.toLowerCase().split('').reverse().join('')) {
    return `${str} is palindrom`}
    else {return `${str} is not palindrom`};
    }
    console.log(someName('woW'));

  • @ТалантАсанкулов-ы2м

    function palindrom(str) {
    let stroka=str.toLowerCase();
    let strArr=stroka.split('')
    let revArr=''
    for (let i=strArr.length-1;i>=0;i--){
    revArr+=strArr[i]
    }
    return stroka==revArr?true:false
    }
    console.log(palindrom('abba'))

  • @russian2475
    @russian2475 3 года назад +1

    На прямую никто не изменяет аргументы функции..

  • @Cat-zh6xx
    @Cat-zh6xx Год назад

    Эх, решил задачу в 20 строк, совсем забыл про сплит и реверс, видимо еще учиться и учиться

  • @ИринаИрина-ш5ы7р
    @ИринаИрина-ш5ы7р 3 месяца назад

    С латиницей всё понятно-все работает.А вот с кирилицей будет ли так же срабатывать,или нужно ещё чтото дополнительно?

    • @0xO2
      @0xO2 Месяц назад

      @user-nd4sl1lp9b,
      UTF-16 работает через обычный индекс массива, или прямо строки. Если массив создан из строки через итератор (например ...) тогда и любые композитные символы, типа, эмодзи, работают. См. моё решение.

  • @ПлатониМарк-л2ю
    @ПлатониМарк-л2ю 4 года назад

    очень понятно объясняте, спасибо

  • @artem98723
    @artem98723 5 лет назад +4

    Здравствуйте ,можете объяснить , в вашем коде мы используем множество методов ,поэтому колличесто итераций высокое , не проще ли написать так(с телефона код вставить не могу ,но попробую объяснить):
    переводим в нижний регистр, потом проходимся циклом for(var i = 0; i < str.length/2; i++) if(str[i] != str[str.length - i - 1]) return false;
    return true;
    Я бы хотел понять минусы (кроме смайлов) этих двух вариантов ,заранее Спасибо

    • @bloodrik
      @bloodrik 5 лет назад

      ваше решение является самым оптимальным, но на собеседованиях чаще хотят увидеть процесс именно ревёрса строки, в этом и цель.
      автор действительно показал не очень оптимальный вариант, ибо даже формирование новой строки по типу
      var res = "";
      for(let j = str.length-1; j>=0;--j)
      {
      res+=str[j];
      }
      является в 3 раза оптимальнее

    • @ДмитрийБеляев-ъ1з
      @ДмитрийБеляев-ъ1з 5 лет назад

      @@bloodrik бежать надо с таких собеседований, где "хотят неоптимально", особенно если Вы понимаете это, особенно если Вы джун (опыта набраться у Вас в такой конторке не получится)

    • @MrRagday
      @MrRagday 5 лет назад

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

    • @МихаилВикторович-р2я
      @МихаилВикторович-р2я 5 лет назад

      Ты на интуиции программируешь?
      jsperf.com/palindrome/3

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад

      @@MrRagday я не собеседователь, но, как по мне, гораздо важнее, чтобы человек понимал как это работает, чем знал волшебные слова (reverse, split, join). Научить заклинаниям можно и обезьяну, толпы jqery програмыздов (которые не знают нативный JS) не дадут соврать.

  • @denisstepanov3328
    @denisstepanov3328 5 лет назад

    Есть одно но, задачу можно решить без использования массива. У меня на собеседовании была эта задача, но к ней прилагались условия память m(1), все символы в сравнении учавствуют один раз, строка может содержать пробелы и другие спец символы, не являющиеся буквами, такие символы должны быть проигнорированы, пустая строка является полиндромом.

  • @hv4070
    @hv4070 2 года назад

    const isPalindrome = (str) => {
    for(let i = 0 ; i< Math.round(str.length/2); i++) {
    if(str[i] !== str[str.length-1-i]) {
    return false;
    }
    return true;
    }
    }

  • @ВикторКлименко-щ9ф
    @ВикторКлименко-щ9ф 4 года назад

    Я вот такое понаписывал:
    function palindrom() {
    let word = prompt("put a word").toLowerCase();
    let backWords = word.split("").reverse().join("");
    if (word == backWords) {
    return true;
    } else {
    return false;
    }
    }

  • @stasmaksimov9531
    @stasmaksimov9531 5 лет назад

    Отличное видео! 👍

    • @itgid
      @itgid  5 лет назад

      Спасибо!

  • @AlexBell_86
    @AlexBell_86 4 года назад

    const palindrom = (str) => str === str.toLowerCase().split('').reverse().join('');

  • @ivanvano8571
    @ivanvano8571 4 года назад

    супер, класно, велике дякую!

  • @РузельАбдурахманов

    Круто, спасибо!

  • @jewgenijmoldawski3306
    @jewgenijmoldawski3306 4 года назад +1

    Никогда не понимал, зачем в js нужна функция reverse. Ни разу в практике не понадобилась. Может кто-то знает?

    • @TalkerTube
      @TalkerTube 3 года назад +1

      Чтобы задачки на собеседованиях решать ))

  • @jankaban2871
    @jankaban2871 4 года назад

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

  • @АлександрБугров-н7т

    Алекс! А можем рассмотреть такой пример -
    Покупатель заходит на сайт вводит свои данные (ФИО или лучше телефон)
    Из базы данных подтягивается информация и выводит цены с учетом его скидки.

    • @theRusDerevnya
      @theRusDerevnya 5 лет назад

      В топ!

    • @ruslanfilyk2904
      @ruslanfilyk2904 5 лет назад +1

      Делаешь MySQL табличку с колонками (phone, discount), потом через какой-нибудь запрос обращаешься к этой таблице (мы учили ajax, но это старая штука насколько я знаю), пишешь SELECT discount FROM WHERE phone = ; После при прогрузке товаров из другой базы просто умножаешь price *= 1 + discount / 100 (если в процентах). Если не прав поправьте пож, не особо шарю это дело.

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад

      @@ruslanfilyk2904 в целом норм.

  • @NeverGTI
    @NeverGTI 5 лет назад

    let pal = (str) => {
    if (typeof str != 'string') return false;
    let tmp = [];
    for(let c of str) {
    tmp.unshift(c);
    }
    return tmp.join('') == str;
    }
    Не лучше ли вот так написать?

  • @zergzerg4844
    @zergzerg4844 7 месяцев назад

    А если цикл выдать интервьюеру типа такого , зная кейс про эмодзи
    function palindromeCheck(str: string) {
    let left = 1;
    const mid = Math.round(str.length - left / 2);
    const end = str.length - 1;
    while (left < mid) {
    if (str[left - 1] != str[str.length- (left - 1)]) return false;
    left++;
    }
    return true;
    }
    Нормально будет ? Или громоздко?

  • @ИгорьОсиюк-б5м
    @ИгорьОсиюк-б5м 5 лет назад +3

    будет ли продолжение? а то написано 5 задач, а разобрали одну :)

  • @Так-ч5у
    @Так-ч5у Год назад

    а какой у тебя опыт програмирования?

  • @rmstr7
    @rmstr7 2 года назад

    Лайк за Олега )) olleh ))

  • @данилкононов-э3в
    @данилкононов-э3в 5 лет назад

    мне кажется, надо убрать все пробелы перед сравнением, т.к. они ни на что не влияют
    + если мы хотим найти слова-полиндромы из текста, то нам надо сделать из текста массив, разделить его по пробелам и пройтись по этому массиву этой функцией, НО
    допустим у нас следующий текст: "Abba, Rolling Stone - good groups" и в нашу функцию придет строка "Abba," и функция вернет false, т.к. запятая все нарушит.
    получается надо убирать еще и пунктуационные знаки.
    нюансов много

    • @MrRagday
      @MrRagday 5 лет назад

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

  • @froststorm77
    @froststorm77 5 лет назад +5

    То есть никакого алгоритма действий, ни описания плана, сразу начинаем колбасить функцию, хорошее начало =(, я бы это назвал worst practice для начинающзего разработчика.

    • @froststorm77
      @froststorm77 5 лет назад +2

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

  • @nizomiddin_shahina
    @nizomiddin_shahina 3 года назад

    Спасибо большое

  • @DavitAve
    @DavitAve 2 года назад

    Ребята всем привет завтра на собеседоваине будет тест js волнуюсь необеснять моё первоё собеседование

  • @ch.d.8485
    @ch.d.8485 3 года назад

    function polindrom(str) {
    str = String(str).toLowerCase();
    let strReverse = str.split('').reverse().join('');
    return strReverse === str
    }
    console.log(polindrom('aBBa abba'))

  • @Bunny_Love
    @Bunny_Love 4 года назад

    Очень круто

  • @onlynowmotivation
    @onlynowmotivation 3 года назад

    Спасибо;)

  • @LxndrKrchvtsv
    @LxndrKrchvtsv 3 года назад

    Ожидал увидеть алгоритмическое решение, но увы...

  • @Юрий-р9в8д
    @Юрий-р9в8д 5 лет назад

    ребята помогите решить пожалуйста
    На вход подается фраза на русском языке, содержащая числительное. Например, "Я хочу квартиру за 10.5 миллионов" или "Мне нравится когда моя машина, стоимостью сотку штук баксов, мелькает по телевизору". Необходимо выделить числительное в форме натурального числа и вернуть.

  • @Ликелов
    @Ликелов 4 года назад

    Получается Олег

  • @sergekim
    @sergekim 5 лет назад +9

    Можно докапаюсь?)
    Я бы написал строгое сравнение, чтоб в случае проблем с типами, там можно было отловить ошибку)

    • @данилкононов-э3в
      @данилкононов-э3в 5 лет назад +2

      проблем с типами?)) приведите пример)
      любой из типов, кроме строки выкинет исключение в консоль)) ни цифры, ни объекты, ни тем более, symbol не может быть .туЛоуверкейс().. про налы и андефайнды я вообще молчу)

    • @sergekim
      @sergekim 5 лет назад +2

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

    • @agentsmith9708
      @agentsmith9708 5 лет назад

      да, лучше сразу привыкать

  • @ДенисБельский-й9г
    @ДенисБельский-й9г 3 года назад

    Для собеседование неплохо, т.к. показываем знание методов строк и массивов, НО! - задача сводится к простому перебору строки и создание массива, реверс и перевод в строку - это лишние телодвижения для движка. Ни в коем случае не критика.
    function palindrom(str) {
    let max_ind = str.length - 1;
    let center = Math.trunc(max_ind / 2);
    for (let i = 0; i

  • @ihatetoys1528
    @ihatetoys1528 3 года назад

    Спасибо

  • @ignativanopulo7037
    @ignativanopulo7037 2 года назад

    Да не согласен я. Если бы я проводил собеседование то меня бы устроил первый ответ где много строк и комментарии. Я хочу видеть понимает ли испытуемый суть. А решение в одну строку выглядит как зазубривание. Просто человек предполагал что может быть такая задача и зазубрил "крутое" решение. А что касается стрелочных функций, я бы убивал на месте за такие решения. Я хочу видеть знает ли испытуемый что делает, а не знает ли месье толк в извращениях. :-)

  • @ArtinoBear
    @ArtinoBear 3 года назад

    решил по своему
    function palindrom(str) {
    str.toLowerCase();
    let validatePal = [...str].reverse().join('');
    if(str === validatePal) return true;
    else return false;
    }

  • @MaksimGolitsyn
    @MaksimGolitsyn 4 года назад

    А имя функции не должно означать действие?

  • @j7sx
    @j7sx 5 лет назад +1

    А строку разве нельзя развернуть не переводя в массив?

    • @j7sx
      @j7sx 5 лет назад

      @@sleepstream9433 ну как бы нах заморачиваться с массивом, если можно строку развернуть и сравнить

    • @j7sx
      @j7sx 5 лет назад

      @@sleepstream9433 странное конечно решение, особенно если знаком с python

    • @j7sx
      @j7sx 5 лет назад

      @@sleepstream9433 ну ну..

  • @prsion1925
    @prsion1925 5 лет назад +1

    сделайте Пожалуйста видео как настраивать гугл карты подробно

    • @itgid
      @itgid  5 лет назад

      Есть в курсе html.itgid.info

    • @jorgenUA
      @jorgenUA 5 лет назад

      www.w3schools.com/graphics/google_maps_intro.asp ... куда уж подробнее )

  • @СерёгаСокольский
    @СерёгаСокольский 5 лет назад +1

    Я как-то решал задачу на собеседовании - создать класс расчёта з / п сотруднику, исходя из ставки, премии и стажа работы. Применять только ES6 синтаксис. Можете записать видео с решением?

    • @данилкононов-э3в
      @данилкононов-э3в 5 лет назад +1

      а в чем проблема?) вот, держите) написано на коленке за 5 минут
      class Salary {
      constructor() {
      this.rate = 0; // $/час
      this.experience = 0; // годы работы
      this.premium = 0; // премия
      this.spendHours = 0; // потрачено часов
      this.totalSalary = 0; // зп
      /*привязываем контекст (ES6 же... в es7 есть стрелочные методы, которым не надо байндить контекст:
      setRate = ( rate ) => {
      this.rate = rate;
      }
      }
      )*/
      this.setRate = this.setRate.bind( this );
      this.setExperience = this.setExperience.bind( this );
      this.setPremium = this.setPremium.bind( this );
      this.setSpendHours = this.setSpendHours.bind( this );
      this.calcTotalSalary = this.calcTotalSalary.bind( this );
      this.getTotalSalary = this.getTotalSalary.bind( this );
      }
      setRate ( rate ) {
      this.rate = rate;
      }
      setExperience ( experience ) {
      this.experience = experience;
      }
      setPremium ( premium ) {
      this.premium = premium;
      }
      setSpendHours ( spendHours ) {
      this.spendHours = spendHours;
      }
      calcTotalSalary () {
      const salary = this.rate * this.spendHours + this.premium; // основная зп
      const factor = this.experience / 2; // множитель опыта работы (взял из головы)
      this.totalSalary = salary + salary * factor; // итоговая зп = основная зп + зп за стаж.
      }
      getTotalSalary () {
      return this.totalSalary;
      }
      }
      const wage = new Salary;
      wage.setRate( 3 );
      wage.setExperience( 1 );
      wage.setPremium( 250 );
      wage.setSpendHours( 100 );
      wage.calcTotalSalary()
      console.log( wage.getTotalSalary() );

    • @СерёгаСокольский
      @СерёгаСокольский 5 лет назад

      @@данилкононов-э3в Стрелочные методы идут с ES6 и выше, а не только начиная с ES7. А так да. Спасибо!

    • @данилкононов-э3в
      @данилкононов-э3в 5 лет назад

      @@СерёгаСокольский стрелочные функции в ES6 появились, стрелочные методы в es7
      метод - это функция экземпляра класса

    • @MrRagday
      @MrRagday 5 лет назад

      На какую позицию собеседование?

    • @СерёгаСокольский
      @СерёгаСокольский 5 лет назад

      @@MrRagday junior front-end

  • @MrRagday
    @MrRagday 5 лет назад +11

    "5 типовых задач" - задача одна.
    "Одно маленькое но - эмодзи" - Попробуй потестить этот код с таким палиндромом: "Аргентина манит негра".
    Ужасно.

    • @EgorMem
      @EgorMem 5 лет назад

      строго говоря это не палиндром, тк пробелы не симметричны. Тут зависит от того, какой палиндром ищется - машинного представления или человеческого

    • @MrRagday
      @MrRagday 5 лет назад +1

      @@EgorMem ПАЛИНДРО́М
      Мужской родСПЕЦИАЛЬНОЕ
      Слово или фраза, которые одинаково читаются слева направо и справа налево.
      "П. «Я иду с мечем судия»"

    • @MrRagday
      @MrRagday 5 лет назад

      @@EgorMem *Иногда* палиндромом называют любой симметричный относительно своей середины набор символов[4][5].

    • @N5O1
      @N5O1 4 года назад

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

    • @zhenshuang
      @zhenshuang 4 года назад

      Перед переводом в нижний регистр нужно удалять лишние символы и оставлять только буквы и цифры. Что сложного? Это настолько очевидно...
      Я хз как там на жабоскрипте, на питоне это одна строчка, которая ещё и пробелы чекает с твоей ебаной аргентиной, на жавоскрипте то же самое сделать можно даже ребёнку 8 лет, а не задавать тупые вопросы.
      str1 = input("text: ")
      print(str1.lower().replace(" ","") == str1.lower().replace(" ", "")[::-1])

  • @ДмитрийБеляев-ъ1з
    @ДмитрийБеляев-ъ1з 5 лет назад +1

    Вы завалили собеседование... Вместо нормального решения со сложностью O(n/2) представлено решение с O(3*n); так же не учтено, что строки в памяти у js хранятся в utf16, любой символ представленный суррогатной парой (а не только емоджи) приведет к неверному результату; ну и в конце концов, здесь банально ожидается от кандидата знание, что строики индексируются...

    • @MrRagday
      @MrRagday 5 лет назад

      Ну почему же? Собеседование на бесплатные курсы по JS (даже на те, где гарантируется трудоустройство джуниором для закончивших) создатель видео пройдет и пройдет хорошо ;)

  • @halyapin
    @halyapin 2 года назад

    Этот способ не оптимальный по сложности. Лучше итерироваться по массиву и сравнивать буквы с начала и конца. При первом несовпадении возвращать false.

  • @lemran5033
    @lemran5033 5 лет назад

    Такая функция раз в 8 быстрее:
    function isPalindrom(str) {
    str = str.toLowerCase();
    return str === str.split('').reverse().join('');
    }
    function isPalindrom2(str) {
    var strLength = str.length;
    str = str.toLowerCase();

    for (var i = 0; i < strLength/2; i++) {
    if (str[i] !== str[strLength - i - 1]) {
    return false;
    }
    }

    return true;
    }
    function bench(f, str) {
    var time = performance.now()
    for (var i = 0; i < 1000000; i++) f(str);
    return performance.now() - time;
    }
    console.log('isPalindrom, строка "hello": ' + bench(isPalindrom, 'hello') + 'мс');
    console.log('isPalindrom, строка "abba": ' + bench(isPalindrom, 'abba') + 'мс');
    console.log('isPalindrom2, строка "hello": ' + bench(isPalindrom2, 'hello') + 'мс');
    console.log('isPalindrom2, строка "abba": ' + bench(isPalindrom2, 'abba') + 'мс');

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад

      В 8 раз? У меня на FF 58.0.2 (32-біт) такие результаты:
      isPalindrom, строка "hello": 1165.22мс
      isPalindrom, строка "abba": 1061.0600000000002мс
      isPalindrom2, строка "hello": 19.11999999999989мс
      isPalindrom2, строка "abba": 31.240000000000236мс
      Кстати, после var time = performance.now() не хватает ;
      Но этот тест не полный, нужно взять строку подлиннее (допилил код, чтобы результат выводил, палиндром или нет):
      isPalindrom, строка "hello world, i`am best JS developer ewer!": 3837.4мс false
      isPalindrom, строка "abcdefghijklmnopqrstuutsrqponmlkjihgfedcba": 3959.18мс true
      isPalindrom2, строка "hello world, i`am best JS developer ewer!": 19.859999999999673мс false
      isPalindrom2, строка "abcdefghijklmnopqrstuutsrqponmlkjihgfedcba": 317.8199999999997мс true
      Как видим, если строка длинее, то всё ещё хуже. Особенно, если исходная строка не палиндром, второй код отваливается гораздо быстрее, в данном случае на первом же симовле.

    • @lemran5033
      @lemran5033 5 лет назад

      @@simplewebdev1098 У меня на опере, хроме и ff результаты примерно такие:
      isPalindrom, строка "hello": 283.04500004742295мс
      isPalindrom, строка "abba": 251.47000001743436мс
      isPalindrom2, строка "hello": 28.61999999731779мс
      isPalindrom2, строка "abba": 36.019999999552965мс

    • @simplewebdev1098
      @simplewebdev1098 5 лет назад

      @@lemran5033 моё "В 8 раз?" это не претензия. Это значит скорее "на разных системах и в разных браузерах по разному".

  • @MegaDedrus
    @MegaDedrus 5 лет назад

    Я только начал изучать JS, пока на всяких рекурсиях сижу, абстракциях (ребятам с hexlet'а привет =)), и вот совершенно не понимаю прикола в этом слабом сравнении, слабая типизация js ведь только и позволяет, что превращать ошибки разработчиков в НЕошибки, кому нужно это слабое сравнение по типу 4 == '04' // true, как по мне, такой подход может лишь добавить проблем в будущем, и опытные разработчики его не используют. При строгом сравнении никаких вопросов нет, даже '\0' не упустит и уже задача разработчика не упустить подобный момент, как раз что-то рядом с этими эмодзи.

    • @MrRagday
      @MrRagday 5 лет назад

      Это не баг, это фича.

  • @grantruss5238
    @grantruss5238 5 лет назад +1

    Мне конечно очень интересно, но такие задачи по-видимо только логику улучшают ?
    На практике дела обстоят намного хуже ? Те же задачи про ООП на собеседовании никто не спрашивает, а если примут и человек не сможет выполнить реальную задачу ?

    • @marktsoy805
      @marktsoy805 5 лет назад

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

    • @grantruss5238
      @grantruss5238 5 лет назад

      А как же всякие там конструкторы и классы в объектно-ориентированном программировании ?

    • @marktsoy805
      @marktsoy805 5 лет назад

      ​@@grantruss5238Чтобы не было недопонимания в JS объекты и "классы" работают не так как в классическом ООП. По сути конструктор это просто функция возвращающая this. Что касается классов объявляя класс через относительно недавнюю фитчу class Name{} на самом вы объявляете функцию Name и добавляете на объект prototype методы это все не особо вяжется с классическим ООП.
      Хотя я понял наверно про что вы, когда говорили о практике. разрабу нужно понимать именно как работает js в нем очень много подводных камней один this и зоны видимости не мало нервных клеток убили наверно)) это довольно тяжело объяснить в рамках таких видео, ну и это не базовые вещи. Если вам интересно и есть какие то базовые знания в языке, можете найти серию книг "You Don't Know JS" (Кайл Симпсон) там довольно интересно и понятно все написано, по поводу объектов это "this & Object Prototypes"

    • @grantruss5238
      @grantruss5238 5 лет назад +1

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

    • @MrRagday
      @MrRagday 5 лет назад

      Там, где знания джунов проверяются такими задачами, ооп еще не скоро придется применять.

  • @ЭдуардВершинин-я5я

    Как массив char рассмотреть строку вариант?

  • @truegotha
    @truegotha 3 года назад

    А потом опытный программист спросит "а как вы решите задачу с эмозди"

  • @Инкогнито-у7ф
    @Инкогнито-у7ф 5 лет назад

    А нового видоса нету или просто не найду?