Собеседование в Яндекс Фронтенд 2024

Sdílet
Vložit
  • čas přidán 28. 07. 2024
  • Первый этап в Яндекс на должность Разработчика Интерфейсов(фронтенд), 2024 год. Этап посвящен знанию языка, в моем случае это JavaScript.
    Таймкоды:
    00:00 Первая задача
    15:10 Вторая задача
    32:57 Третья задача
    44:26 Четвертая задача
  • Věda a technologie

Komentáře • 35

  • @maaahaave6536
    @maaahaave6536 Před 14 dny +2

    28:41 "Ну давай оценю сложность алгоритма🥺🥺🥺" Боже, как он ее упрашивал)) Ведь готовился

  • @user-jf2ui2qy1y
    @user-jf2ui2qy1y Před měsícem +3

    Первая задача. Можно в одну строчку сделать или наоборот подробнее разложить. Ненавижу читать рекурсию + я могу ошибаться, но у тебя !object[array[i]] вернет undefined для null
    function get(initialObject, path) {
    return path.split('.').reduce((currentObject, currentKey) => {
    if (!(currentKey in currentObject)) {
    return undefined;
    }
    return currentObject[currentKey];
    }, initialObject);
    }

  • @siberian-crystall
    @siberian-crystall Před měsícem +1

    привет! посмотрел с интересом, в процессе накидывал решения :)
    1 задачу сделал бы так:
    function get(obj, chain) {
    return chain?.split('.').reduce((acc, key) => acc?.[key], obj);
    }
    2 можно тоже в одну строку, гораздо быстрее (для достаточно длинных строк - на порядок) будет регуляркой:
    function rle(input) {
    return input.match(/(\w)\1*/g).reduce((acc, v) => acc += v[0] + (v.length > 1 ? v.length : ''), '');
    }
    3 ваше решение нерабочее по нескольким причинам: интерпретатор ругнётся на return throw (уже писали в комментах) + если после неудачной попытки будет успешная - первый Promise из call stack всё равно не будет заресолвлен. я бы реализовал так:
    function get(url) {
    return new Promise(async (resolve, reject) => {
    let retries = 5;
    while (retries) {
    await fetch(url)
    .then((res) => {
    if (!res.ok) throw new Error(); // сюда попадёт, например, ошибка 500
    resolve(res);
    retries = 0;
    })
    .catch((e) => (retries--));
    }
    reject('Retry count exceeded');
    });
    }
    4
    function isMonotonic(array) {
    return array.reduce((acc, value, index) => {
    if (acc.result && index) {
    const delta = Math.sign(value - array[index - 1]);
    if (acc.sign && delta && delta != acc.sign) acc.result = false;
    acc.sign = delta;
    }
    return acc;
    }, { sign: 0, result: true }).result;
    }

    • @alexandrkazakov723
      @alexandrkazakov723  Před měsícem

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

    • @EgorMoscowNeverSleep
      @EgorMoscowNeverSleep Před 22 dny +2

      @siberian-crystall Ваши решения конечно же гораздо лучше и самое главное - рабочие (в отличие от например, решения задачи 3 на видео).
      Однако в ваших решениях 1 и 4 есть недостаток: отсутствует предварительный выход из-за использования непрерываемых массивных методов. Т.е., алгоритм в любом случае переберёт весь массив, даже если мы уже можем сделать однозначный вывод, что результат undefined или false. В задаче 4 лучше всего воспользоваться циклом с предварительным return false, а в задаче 1 - рекурсивной функцией или циклом с предварительным return void 0.
      А задача 2 может быть решена ещё проще и оптимизированее:
      function rle(input) {
      return input.replace(/(\w)\1{1,}/g, (str, char) => char + str.length);
      }
      Однако отмечу, что попытка решить сложные задачи используя минимальное количество строк кода - не лучшая привычка. Код должен быть очевиден для того, кто его будет читать и пусть код будет многословен - минификаторы за вас его сожмут на этапе билда проекта.

    • @siberian-crystall
      @siberian-crystall Před 21 dnem +1

      @@EgorMoscowNeverSleep Отличное дополнение, благодарю! Всё по делу)

  • @user-rn5cl2fr8b
    @user-rn5cl2fr8b Před měsícem +2

    В задаче про массив забавные условия на 7-8 строках (присвоение вместо сравнения) )
    Понятно, что это просто опечатка, но собеседующая добрая (или не обратила внимание).

  • @user-jx9rw3ip6w
    @user-jx9rw3ip6w Před měsícem +6

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

    • @alexandrkazakov723
      @alexandrkazakov723  Před měsícem +3

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

    • @topsy_kreds
      @topsy_kreds Před 13 dny

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

    • @user-jx9rw3ip6w
      @user-jx9rw3ip6w Před 13 dny

      @@topsy_kreds ты уже работаешь в яндексе?

  • @psevdonim257
    @psevdonim257 Před 8 dny

    так оффер предложили по итогу?

  • @enoughfornow7310
    @enoughfornow7310 Před měsícem +7

    ага ага ага ага ага ага угу угу угу угу угу угу ага ага ага ага

  • @MyNameIsEd2d2
    @MyNameIsEd2d2 Před měsícem +2

    Братец, а остальные этапы писать будешь? Я про алгосекцию и платформу?

    • @alexandrkazakov723
      @alexandrkazakov723  Před měsícem +2

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

    • @user-rn5cl2fr8b
      @user-rn5cl2fr8b Před měsícem +1

      ​@@alexandrkazakov723у меня было 4 финала и на одном из них так же были задачки. на 3-х других только разговоры. Так-что от команды все-таки зависит.

    • @user-ei5ve3zl7k
      @user-ei5ve3zl7k Před měsícem +1

      @@alexandrkazakov723 Тебе предложили офер в итоге? И какая вилка была если не секрет

    • @user-kj9mm2gc3r
      @user-kj9mm2gc3r Před měsícem

      @@alexandrkazakov723 как найти ваш тг?

  • @SergiyAntonyuk_PhD
    @SergiyAntonyuk_PhD Před měsícem

    Третья задача:
    if(counter === 5) {
    throw new Error("3aдданный URL недоступен") ;
    } else { ...}
    return при выбрасывании ошибки не нужен (его наличие вызовет ошибку)
    Четвертая задача:
    function isMonotonic(numbers) {
    if (numbers.length 0 && numbers[i] < numbers[i - 1]) ||
    (type < 0 && numbers[i] > numbers[i - 1]) ||
    (type == 0 && numbers[i] !== numbers[i - 1])
    ) {
    return false;
    }
    }
    return true;
    }

    • @siberian-crystall
      @siberian-crystall Před měsícem +1

      ваше решение вернёт false для массива [1, 1, 2, 3], потому что определяет направление монотонности только по паре первых значений

  • @IT_psychopath
    @IT_psychopath Před 25 dny

    первая банальная задача.. но очень хорошо показывает опыт программиста и его харды. у вам хеш таблица и путь это ключи! какая нафиг рекурсия..😂 задача на знание js и структур данных. читайте ребят книги! они очень полезные.. кто знает как распаковать объект? вот вам и ответ на задачу. учите структуры данных!..

  • @user-gz5ky9rq6y
    @user-gz5ky9rq6y Před měsícem

    4 задача как вариант.
    function isMonotonic(num) {
    const mono1 = [...num].sort((a, b) => a - b);
    const mono2 = [...num].sort((a, b) => b - a);
    if (mono1.join('') === num.join('') || mono2.join('') === num.join('')) {
    return true;
    }
    return false;
    }

    • @EgorMoscowNeverSleep
      @EgorMoscowNeverSleep Před 22 dny +1

      Вы 8 раз пробежались по массиву. Спасибо, но нам в программировании такого не нужно.

    • @user-gz5ky9rq6y
      @user-gz5ky9rq6y Před 22 dny

      @@EgorMoscowNeverSleep Да ладно, мне не жалко

  • @yagamilite6613
    @yagamilite6613 Před 27 dny +1

    Слишком кипишной как будто ,очень много лишних вопросов задавал ,которые не нужны ,особенно в моменте «да давай я оценю сложность алгоритма ?»😃

    • @alexandrkazakov723
      @alexandrkazakov723  Před 26 dny

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

  • @renat7797
    @renat7797 Před 11 dny

    4)
    function mon(nums) {
    let isMon = true
    let monType = 0
    if(nums.length < 3) {
    return true
    }
    for (let i = 1, prevNum = nums[0]; i < nums.length; i++) {
    const currNum = nums[i]
    if (currNum !== prevNum) {
    diffSign = Math.sign(currNum - prevNum)
    if (monType === 0) {
    monType = diffSign
    } else if (monType !== diffSign) {
    isMon = false
    break
    }
    }
    prevNum = currNum
    }
    return isMon
    }

  • @psevdonim257
    @psevdonim257 Před 8 dny

    все это хорошо, но КАК попасть на собеседования? КААААК?

    • @alexandrkazakov723
      @alexandrkazakov723  Před 8 dny

      @@psevdonim257 ищи на линкедин разрабов которые работают в нужных тебе компаниях , пиши им и проси рефералку. В большинстве топ компаний есть рекомендательная реферальная система.

    • @psevdonim257
      @psevdonim257 Před 8 dny

      @@alexandrkazakov723 вариант, спасибо, сначала надо хороший впн чтоб все завелось

  • @topsy_kreds
    @topsy_kreds Před 12 dny +2

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

    • @alexandrkazakov723
      @alexandrkazakov723  Před 12 dny

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

    • @topsy_kreds
      @topsy_kreds Před 12 dny

      @@alexandrkazakov723 я так понимаю собесы были на стажировку?

    • @alexandrkazakov723
      @alexandrkazakov723  Před 12 dny

      @@topsy_kreds нет конечно, какая стажировка.

  • @OmonOmon-tr4du
    @OmonOmon-tr4du Před měsícem +1

    Типатиптатптаитипатипатипатипатипа