Мок-интервью для джуна-фронтендера: собеседование с лайвкодингом

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024

ความคิดเห็น • 117

  • @charliebrown5554
    @charliebrown5554 ปีที่แล้ว +11

    Круто, спасибо Никите и Виталию за такую увлекательную вьюху! 😊 Кстати, Виталий не раз помогал мне в чате Хекслета, крутой парень, надеюсь он в ближайшее время сможет устроиться) Желаю успехов! 🎉

  • @GMAIREPMaire
    @GMAIREPMaire ปีที่แล้ว +3

    Супер! Спасибо за это мок-интервью! Очень ценно. Аплодисменты и интервьюируемому и интервьюеру! Удачи в поиске и получению работы мечты!

  • @daniyarzhanakhmetov7741
    @daniyarzhanakhmetov7741 ปีที่แล้ว +5

    Виталий пройдет еще 10 таких собесов и на 11 будет топовое собеседование!

  • @СергейЦыбульский-ч3е
    @СергейЦыбульский-ч3е ปีที่แล้ว +11

    Немного удивило, что никто не упомянул, что алгоритм решения задачи с get НЕверен. Там не нужно делать перебор по ключам, так как алгоритм будет отдавать значения по несуществующим путям. Например:
    get({ b: { b: 5 } }, 'a.b') вернёт 5
    Решение: удалить цикл и взять token как первый элемент tokens
    function get(obj, path) {
    const tokens = path.split('.');
    if (tokens.length === 1) {
    return obj[path]
    }
    const token = tokens[0]
    if(typeof obj[token] === 'object'){
    return get(obj[token], tokens.slice(1).join('.'))
    }
    }

    • @СергейЦыбульский-ч3е
      @СергейЦыбульский-ч3е ปีที่แล้ว +3

      Не душнила, просто факт ) А так крутой формат, собеседующий - профессионал. Спокойно, чётко выполняет свою роль.

    • @m-fusion
      @m-fusion ปีที่แล้ว +1

      Да ее можно еще проще решить, даже без рекурсии. На самом Хекслет же есть эта задачка.

    • @Script696
      @Script696 ปีที่แล้ว +2

      Можно так решить
      const paths = path.split(“.”)
      return paths.reduce((acc,path)=> acc[path], obj)

    • @antonmas3451
      @antonmas3451 ปีที่แล้ว

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

  • @Sigrun-er8jn
    @Sigrun-er8jn 8 หลายเดือนก่อน

    Спасибо за лайвкодинг, не часто такое видел в записанных интервью

  • @pyxorel
    @pyxorel 3 หลายเดือนก่อน

    задача с get
    const get = (obj, path) => {
    var list = (function* gen() {
    yield* path.split(".");
    })();
    const f = (obj) => {
    for (var i of list) return obj[i] ? f(obj[i]) : undefined;
    return obj;
    };
    return f(obj);
    };

  • @inqvisitor3722
    @inqvisitor3722 ปีที่แล้ว +7

    гуглить - это конечно круто. Я бы время поиска бы учитывал. Бывает просто синтаксис подзабыл, а бывает что полностью не знаешь/не понимаешь. На собесе как-то задачку с расчетом фибаначи не решил. Ну забыл как решается, хотя помнил принцип самой последовательности. Зашквар? Терпеть не могу такие задачи на алгоритмы. При решении реальных задач ни разу не пригодились. Было бы классно, найти весь список таких задачек, чтобы сразу разобраться и запомнить, чтобы не позорится на собеседованиях

  • @radist126
    @radist126 ปีที่แล้ว

    Афигенски интересно. Спасибо❤

  • @HurtFeelings-no
    @HurtFeelings-no 27 วันที่ผ่านมา

    класс! собес супер! я бы прошел)

  • @kirillsundaen8810
    @kirillsundaen8810 ปีที่แล้ว +13

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

  • @dionusios05
    @dionusios05 ปีที่แล้ว +4

    25:27, А так можно написать?
    function get(obj, path) {
    const keys = path.split('.');
    let current = obj;

    for(let key of keys) {
    if(!current[key]) {
    return undefined;
    }
    current = current[key];
    }

    return current;
    }

    • @eugenemolotov1782
      @eugenemolotov1782 ปีที่แล้ว

      Да, рабочее решение. Можно еще докрутить и будет:
      const get = (obj, path) => path.split('.').reduce((result, node) => result ? result[node] : undefined, obj)

    • @evgenstepanov6319
      @evgenstepanov6319 ปีที่แล้ว +1

      А в чем смысл присваивания объекта в current? Если вы хотели добиться копии, то это у вас не получилось

    • @eugenemolotov1782
      @eugenemolotov1782 ปีที่แล้ว +1

      @@evgenstepanov6319 Допустим есть исходный объект var obj = {a: {b: {c: true}}}.
      В цикле идет перебор ключей (например для пути 'a.b.c' будут последовательно перебирать a, b, c), и чтобы эти ключи обращались к нужным объектам и сделано присвоение current'у. Без присвоения, после первой итерации будет обращение current['b'], но при таком обращении вернется undefined, т.к. в исходном объекте (оbj), на который сейчас ссылается current нет ключа b.
      Здесь не нужна глубокая копия объекта, так что решение рабочие.

    • @evgenstepanov6319
      @evgenstepanov6319 ปีที่แล้ว

      @@eugenemolotov1782 да, увидел. Тригернулся на присваивание объекта. Невнимательность наше всё)

    • @arslan5919
      @arslan5919 ปีที่แล้ว

      ​@@evgenstepanov6319 У вас тоже видимо кое что не получилось)

  • @topsy_kreds
    @topsy_kreds ปีที่แล้ว +2

    В современных реалиях это не джун, разве что стажер и то с вопросом...

  • @Sergo4672
    @Sergo4672 ปีที่แล้ว

    Функция, создающая случайный цвет в hex формате:
    const randomColor = () => {
    let resColor = "#";
    for (let i = 0; i < 3; i++) {
    const hex = Math.floor(Math.random() * 256).toString(16)
    if (hex.length === 1) {
    resColor += 0;
    }
    resColor += hex;
    }
    return resColor;
    }

    • @Sergo4672
      @Sergo4672 ปีที่แล้ว

      Вот ещё есть такой вариант:
      const randomColor = () => {
      let hex = Math.floor(Math.random() * 16777216).toString(16);
      const len = 6 - hex.length;
      for (let i = 0; i < len; i++) {
      hex = 0 + hex;
      }
      hex = "#" + hex;
      return hex;
      }

    • @chikenmacnugget
      @chikenmacnugget ปีที่แล้ว +2

      @@Sergo4672 чел, это все в строку можно написать чейнингом без странных, магических цифр

    • @Demon59901
      @Demon59901 6 หลายเดือนก่อน

      Вместо if можно дописать .padStart(2, 0)

  • @antonnevskiy3027
    @antonnevskiy3027 ปีที่แล้ว +1

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

  • @moonchild5769
    @moonchild5769 ปีที่แล้ว

    мое решение функции get
    function get(obj, path) {
    let arr = path.split(".");
    if (obj === undefined) {
    return undefined;
    }
    if (arr.length === 1) {
    return obj[arr[0]];
    }
    obj = obj[arr[0]];
    return get(obj, arr.splice(1).join("."));
    }

  • @ramblercriw7469
    @ramblercriw7469 ปีที่แล้ว

    хорошее интервью.

  • @TheLevius
    @TheLevius ปีที่แล้ว +7

    Никита крутой собеседующий. Дает классные советы (особенно хорош с оптимизацией рандомного цвета), правда в конце задушнил с lch и Ситником (это ж каттинг эдж). Вопросы не от балды из интернетов, а с концепцией, выявляют глубину познаний.
    А малютке не мешало бы поверстать побольше (кто придумал эту отмазку про гриды, мол они не подходят или редко нужны, когда весь веб дизайн и css-фреймворки реализуют 12-колочный грид). Хотя понимание сетки это на стыке дизайна и верстки, нельзя так пренебрегать гридами.
    Короче, хорошо получилось!

    • @mmorpglasg
      @mmorpglasg ปีที่แล้ว

      Не совсем понял, какие UI-киты используют grid? В Bootstrap и MUI сетка использует flex.

    • @TheLevius
      @TheLevius ปีที่แล้ว

      @@mmorpglasg они реализуют грид/сетку (как концепцию) с помощью flex. Получается своего рода костыль, хотя существует специальная одноименная технология для этого. Вероятно для большей обратной совместимости

  • @B_G_V
    @B_G_V ปีที่แล้ว +4

    Изичный собес. Если бы все собесы были такие :)

  • @wickedtorpedo75
    @wickedtorpedo75 8 หลายเดือนก่อน

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

  • @savchenkoilliya9131
    @savchenkoilliya9131 ปีที่แล้ว +1

    Это уровень trainee, не джуна

  • @Илья-ж8ч8о
    @Илья-ж8ч8о ปีที่แล้ว

    Функцую при проверке typeof вернёт function оба оговорились, думаю уровень программирования достаточный , надо вёрстку подучить получше , сверстать пару сайтиков, про тестирование курсы на юдеми , фронт тяжко тестить вообще , но чёт пишут )))

  • @AlexiCult
    @AlexiCult ปีที่แล้ว +2

    Не уверен что генерация цвета через HEX будет проще чем это:
    function randomColor() {
    return `rgb(${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)}, ${Math.floor(Math.random()*256)})`
    }

    • @spllit9212
      @spllit9212 ปีที่แล้ว +2

      принцип DRY изобрели в 1970 году
      люди до 1970:

    • @AlexiCult
      @AlexiCult ปีที่แล้ว

      @@spllit9212 а как в данном случае не повторяться? Заключить повторяющееся выражение в функцию где-то снаружи и вызывать её там где сейчас выражения? По-моему, это только создаст излишний код, который будет чуть сложнее прочитать. Да и вызывать также придётся три раза подряд одну и ту же функцию, тоже наверное DRY не будет соблюдаться. Как здесь переписать соблюдая DRY?

    • @spllit9212
      @spllit9212 ปีที่แล้ว

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

    • @AlexiCult
      @AlexiCult ปีที่แล้ว

      @@spllit9212 так как надо данный код переписать то? Я пока не понял аргументов.

    • @spllit9212
      @spllit9212 ปีที่แล้ว

      @@AlexiCult например так:
      function randomColor() {
      const random = () => Math.floor(Math.random()*256)
      return `rgb(${random()}, ${random()}, ${random()})`
      }

  • @sEnigmus
    @sEnigmus ปีที่แล้ว +1

    насколько плохо такое решение?
    function get(obj, path){
    if (path === '')
    return obj;
    const ar = path.split('.');
    for(let i = 0; i < ar.length; i++){
    obj = obj[ar[i]];
    if(!obj) return obj;
    }
    return obj;
    }

    • @artishoo
      @artishoo ปีที่แล้ว

      Не считая нейминга - один кейс не обработал. Если длина пути будет больше чем количество вложенных объектов. В остальном хорошо.

  • @alexmarch
    @alexmarch ปีที่แล้ว

    в целом не плохо

  • @fazliddinalimov6993
    @fazliddinalimov6993 ปีที่แล้ว

    function get(obj, path) {
    const paths = path.split('.')
    let ci = 0
    let resValue = obj;
    while (ci < paths.length){
    resValue = resValue?.[paths[ci]]
    ci++
    }
    return resValue
    }
    Легко же ?!

  • @CamperFAQ
    @CamperFAQ ปีที่แล้ว +5

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

  • @pkorneev5226
    @pkorneev5226 ปีที่แล้ว

    про css модули оочень не согласен, css in js сильно сильнее имхо, но да ладно

  • @DH-yv8um
    @DH-yv8um ปีที่แล้ว +2

    Микрофон кушать не надо

  • @Sergo4672
    @Sergo4672 ปีที่แล้ว

    const get = (obj, path) => {
    if (!obj || !path) {
    return obj;
    }
    const keys = path.split(".");
    for (const key of keys) {
    if (typeof obj[key] === "object" && key !== keys[keys.length - 1]) {
    obj = obj[key];
    }
    else {
    return obj[key];
    }
    }
    }

    • @Sergo4672
      @Sergo4672 ปีที่แล้ว

      Вот решение после рекомендаций рекрутёра:
      const get = (obj, path) => {
      if (!obj || !path) {
      return obj;
      }
      const keys = path.split(".");
      for (const key of keys) {
      if (obj[key] !== undefined) { //тут ещё можно вот такое извращение написать if (!!obj[key]) { или if (obj[key]||false) {
      obj = obj[key];
      }
      else{
      return undefined;
      }
      }
      return obj;
      }
      Если будет массив, и если ключ будет в виде числа то выведется элемент массива под индексом, равным этому числу.

  • @arthurm2423
    @arthurm2423 ปีที่แล้ว

    А что если Random от 0 до 16777215 как макс hex и приводить его к hex формату. Тогда random будет только один раз вызван

  • @baileysli6235
    @baileysli6235 ปีที่แล้ว

    А как поучаствовать в таком?

    • @HexletOrg
      @HexletOrg  ปีที่แล้ว

      Напишите нам на саппорт или в комьюнити в ТГ

  • @kaifaty
    @kaifaty ปีที่แล้ว

    как раз с Math.floor мы сделаем вероятность более НЕправильной, потому что будем получать 254 на всем промежутке от 254 < 255.

    • @КууларАйлан-э8е
      @КууларАйлан-э8е ปีที่แล้ว

      Можно просто написать 256

    • @kaifaty
      @kaifaty ปีที่แล้ว

      @@КууларАйлан-э8е в этом случае вероятность при floor 255 будет чаще

  • @ooblako212
    @ooblako212 ปีที่แล้ว +3

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

    • @seosspro9686
      @seosspro9686 ปีที่แล้ว +8

      написано ведь - мок-интервью...

    • @daniyarzhanakhmetov7741
      @daniyarzhanakhmetov7741 ปีที่แล้ว

      а зачем так заморачиваться?)

    • @DK-creator97
      @DK-creator97 ปีที่แล้ว

      согласен. интерн-джун попросту не знает что такое мок и не найдёт это видео.

    • @true227
      @true227 ปีที่แล้ว

      @@DK-creator97 интерн джун сейчас должен знать на уровне мидла, по крайней мере так заявляют в вакансиях, так что найти видео труда не составит:)

  • @the_inalienable_dreamless
    @the_inalienable_dreamless 11 หลายเดือนก่อน

    "аксесебилити" "это что-то из ооп?" я ненавижу это интервью

  • @user-uniq-id
    @user-uniq-id ปีที่แล้ว +1

    Для чего джуну знать как работает браузер?

    • @artishoo
      @artishoo ปีที่แล้ว

      Он пишет программы для браузера

    • @user-uniq-id
      @user-uniq-id ปีที่แล้ว +1

      @@artishoo нет. Джуну это не нужно. Ты никуда не воткнешь эти знания о браузере.

    • @artishoo
      @artishoo ปีที่แล้ว

      @@user-uniq-id ясно, опять полодим кодеров, которые как макаки клепают код со стековерфлоу, без малейшего понимая контекста исполнения их кода. Сам то давно перестал быть джуном, с таким то отношением?

    • @user-uniq-id
      @user-uniq-id ปีที่แล้ว +1

      @@artishoo скажи, как я могу использовать информацию о том, как работает браузер?

    • @artishoo
      @artishoo ปีที่แล้ว

      @@user-uniq-id какую? Как работает отправка запроса? Или как работает рендер?
      Если ты н когда не сталкивался с проблемами оптимизации чего-то, зависимого от платформы, то это твой промах, а не человека, который повышает экспертизу в своем деле.

  • @chikenmacnugget
    @chikenmacnugget ปีที่แล้ว

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

    • @flowder73
      @flowder73 ปีที่แล้ว

      Смысле как заученный синтаксис?

    • @АндрейБочарников-х5ъ
      @АндрейБочарников-х5ъ ปีที่แล้ว

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

    • @chikenmacnugget
      @chikenmacnugget ปีที่แล้ว

      @@АндрейБочарников-х5ъ плохому танцору и пол мешает. Если ты думаешь, что за тебя подумают и в рот тебе разжеванное положат, то увы и ах.

    • @АндрейБочарников-х5ъ
      @АндрейБочарников-х5ъ ปีที่แล้ว

      @@chikenmacnugget а когда о структурах данных тебе дают лишь то что есть массив и есть обьект, разница между ними в названии (условно), а ты потом сиди и сам бери инфу из разных источников, но не из учебного заведения. Ты умничаешь, но не понимаешь, что универы у всех разные и большинство годовых курсов будут полезнее чем нынешнее профильное IT образование, но главное про ебучее прожовывание сказать и поговорку про яйца

    • @chikenmacnugget
      @chikenmacnugget ปีที่แล้ว

      @@АндрейБочарников-х5ъ ну что и требовалось доказать. Самому почитать - трагедия. После прочтения подойти и спросить у препода уточнения и т.д. - неаозможно. Рот ведь нитками зашит. Должны дать все и сразу и желательно разжевать. Ничего удивительного в том что у людей плохое образование и не понимании сути происходящего, когда они как чайки сидят «дай дай дай дай должен должен должен дай дай дай». Я тебе секрет наверное открою, но такая модель образования практически везде, особенно в западных странах она очень развита. Если ты сам не интересуешься и к преподавателю не подходишь с вопросами и т.д., то и ждать от других нечего. Никто бегать за вами и в попку целовать не обязан. А вот вы проявить интерес к своей профессии и собственному развитию, если не обязаны, то хотя бы от вас это ожидается в ВУЗах. ВУЗ в первую очередь это доступ к возможности взаимодействия с человеком квалификация которого больше твоей. А когда ты этого не делаешь, потом прибегаешь в комментарии с пеной у рта доказывать: «все говно, все пропало». Если ты для себя и вокруг себя мир построить не можешь, то почему кто-то должен его строить за тебя и для тебя. Поговорка есть такая: «под лежачий камень вода не течет». Вот помозгуй её и вывод сделай.

  • @xotamxudoyberganov5847
    @xotamxudoyberganov5847 ปีที่แล้ว

    //get([{a:{b:2}}], '$0.a.b')
    function get(obj, path) {
    if (!obj || !path) {
    return obj;
    }
    const fields = path.split('.');
    const tok = fields.shift();
    let tmp;
    if (tok.startsWith('$') && Array.isArray(obj)) {
    const index = tok.slice(1);
    tmp = obj[index];
    } else {
    tmp = obj[tok];
    }
    for (const field of fields) {
    if (tmp == undefined) {
    return tmp;
    }
    if (field.startsWith('$') && Array.isArray(tmp)) {
    const index = field.slice(1);
    tmp = tmp[index];
    } else {
    tmp = tmp[field];
    }
    }
    return tmp;
    }

    • @zerodoubler
      @zerodoubler ปีที่แล้ว +1

      Похоже тут do { } while () цикл зайдет чтобы не копипастить блок if (tok.startsWith('$') ... два раза

    • @xotamxudoyberganov5847
      @xotamxudoyberganov5847 ปีที่แล้ว

      @@zerodoubler тут пример кода его надо оптимизировать

    • @whalecoding
      @whalecoding ปีที่แล้ว

      Нах такое решение ?

    • @xotamxudoyberganov5847
      @xotamxudoyberganov5847 ปีที่แล้ว

      @@whalecoding подумай

    • @whalecoding
      @whalecoding ปีที่แล้ว

      @@xotamxudoyberganov5847 оно ужасное

  • @xotamxudoyberganov5847
    @xotamxudoyberganov5847 ปีที่แล้ว

    function randomRgba(alpha = 1.0) {
    if (alpha < 0.1 || alpha > 1.0) {
    alpha = 1.0;
    }
    const rndRgb = Array(3)
    .fill(0)
    .map(() => Math.round(Math.random() * 255));
    return `rgba(${rndRgb.join(',')},${alpha})`;
    }

    • @zerodoubler
      @zerodoubler ปีที่แล้ว +1

      И пусть все кому попадет такой код на поддержку в команде охренеют.
      Осознают как ловко автор использует возможности языка.
      Телочки текут, быдло уважает 🎉

    • @xotamxudoyberganov5847
      @xotamxudoyberganov5847 ปีที่แล้ว

      @@zerodoubler это был сарказм?🤔

    • @zerodoubler
      @zerodoubler ปีที่แล้ว +1

      ​@@xotamxudoyberganov5847 это от команды зависит на самом деле. Если там все молодые и шутливые, включая тимлида, и хотят показать удаль молодецкую, то не сарказм.
      А если мемберы уже столько кода отсмотрели, что их не прет от разбора этих конструкций то думаю им лучше зайдет что то типа как написал чел в видео
      return 'rgb('+randColor()+','+randColor()+','+randColor()+')';

    • @xotamxudoyberganov5847
      @xotamxudoyberganov5847 ปีที่แล้ว

      @@zerodoubler Ну такое решение зачем это надо когда можно попроще это сделать?

  • @sergeykhairulin
    @sergeykhairulin ปีที่แล้ว +1

    const get = (o, p) => p.split('.').reduce((a,e)=>a?a[e]:a,o)

    • @evgenykoval3056
      @evgenykoval3056 ปีที่แล้ว +1

      Классно и читаемо, в лучших традициях ниндзя-кода😅

    • @РустамХудайбергенов-ы1и
      @РустамХудайбергенов-ы1и 9 หลายเดือนก่อน

      если в o не будет части из p, то будет ошибка, а должен быть undefined

    • @РустамХудайбергенов-ы1и
      @РустамХудайбергенов-ы1и 9 หลายเดือนก่อน

      const getValue = (obj, path) =>
      path.split('.')
      .reduce((acc, i) =>
      acc && Object.keys(acc).includes(i)
      ? acc[i]
      : undefined
      , obj)

    • @sergeykhairulin
      @sergeykhairulin 9 หลายเดือนก่อน

      @@РустамХудайбергенов-ы1и почему будет ошибка? Если обратится хотя бы раз по несуществующему пути, то все время будет возвращать undefined

    • @sergeykhairulin
      @sergeykhairulin 9 หลายเดือนก่อน

      @@РустамХудайбергенов-ы1и если у acc нет i, то acc[i] и так вернёт undefined

  • @АнтонПашев-ъ5ы
    @АнтонПашев-ъ5ы ปีที่แล้ว +4

    Небольшой совет погромче, а то плоховато слышно, а в целом круто!

  • @annieleonhart-f3x
    @annieleonhart-f3x 11 หลายเดือนก่อน

    очень классно что можно гуглить, я напрогал уже несколько сайтов, vue, js, ts, а лайвкодинг просто нулёвый, я просто гуглю каждый момент который только можно нагуглить и просто копирую код построчно -_-

  • @CoppaChoppa
    @CoppaChoppa 9 หลายเดือนก่อน

    неужели я такой же позорник...

  • @Ramosok
    @Ramosok 7 หลายเดือนก่อน

    const get = (obj: any, key: string): string => {
    const keyList = key.split('.');
    if (!keyList.length) {
    return '';
    }
    return keyList.reduce((acc, cur) => {
    if (obj[cur]) {
    return obj[cur];
    }
    return acc[cur];
    }, '');
    };

  • @SP-hb6dd
    @SP-hb6dd ปีที่แล้ว

    return '#' + Math.floor(0x1000000*Math.random()).toString(16).padStart(6, 0)

    • @Demon59901
      @Demon59901 6 หลายเดือนก่อน

      0x1000000 - это FFFFFF? Прикольно

    • @SP-hb6dd
      @SP-hb6dd 6 หลายเดือนก่อน +1

      @@Demon59901 на единицу больше, чем FFFFFF, но мы умножаем на случайное число от 0 до 1, которое всегда меньше чем 1