iwanttobealight

Tagged “programming”

это я

Дарья Морено

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

Меня можно найти в твиттере и в инстаграме

Санкт-Петербург, Россия => Измир, Турция => Берлин, Германия

    задачки по js

    programming interviews

    Список задачек, которые у меня спрашивали на фронтендерских собеседованиях в 2023 году

    1. Классическое расплющивание массива

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


    const arr = [1, [2, [3, [4, 5]]]]; // => [1, 2, 3, 4, 5]

    export function flat(arr) {
    const result = [];

    function helper(a) {
    for (let i of a) {
    if (Array.isArray(i)) {
    helper(i);
    } else {
    result.push(i);
    }
    }
    }

    helper(arr);
    return result;
    }

    1. Каррирование с последующим вызовом без аргумента

    Если у нас есть второй аргумент, возвращаем функцию, куда передаем сумму. Если его нет, возвращаем сумму

    // sum(1)(2)(3)() => 6

    function sum(a) {
    return function (b) {
    if (!b) {
    return a;
    }

    return sum(a + b);
    };
    }

    1. Проверить правильность скобок

    Записываем скобки в словарик, итерируемся по массиву. Если попадается открывающая скобка, добавляем в стек такую же закрывающую. Если попадается закрывающая, сравниваем ее с последней скобкой в стеке. Если они не равны, возвращаем false. В конце функции длина стека должна быть равна нулю

    const brackets = {
    "(": ")",
    "{": "}",
    "[": "]",
    };

    function isValid(string) {
    const stack = [];

    for (let i of string) {
    if (brackets[i]) {
    stack.push(brackets[i]);
    } else {
    if (i !== stack.pop()) return false;
    }
    }

    return stack.length === 0;
    }

остальные посты почитать можно тут

See all tags.