Первый этап в Яндекс на должность Разработчика Интерфейсов(фронтенд), 2024 год. Этап посвящен знанию языка, в моем случае это JavaScript. Таймкоды: 00:00 Первая задача 15:10 Вторая задача 32:57 Третья задача 44:26 Четвертая задача
Пікірлер: 16
@siberian-crystall2 күн бұрын
привет! посмотрел с интересом, в процессе накидывал решения :) 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Күн бұрын
Ваше решение второй задачи вызывает вопросы, сложно написать такую регулярку на собесе и не ошибиться. Также мне кажется, что столь короткая запись может быть непонятна интервьюверу и это в минус пойдет.
@user-jf2ui2qy1y15 күн бұрын
Первая задача. Можно в одну строчку сделать или наоборот подробнее разложить. Ненавижу читать рекурсию + я могу ошибаться, но у тебя !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); }
@user-rn5cl2fr8b15 күн бұрын
В задаче про массив забавные условия на 7-8 строках (присвоение вместо сравнения) ) Понятно, что это просто опечатка, но собеседующая добрая (или не обратила внимание).
@user-gz5ky9rq6yКүн бұрын
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; }
@user-jx9rw3ip6w15 күн бұрын
задачи простые. сложно походу только на собес попасть. не.. ну понятно, что простые для тех кто задрачивал leetcode.
@alexandrkazakov72315 күн бұрын
Там ещё второй алгоритмический этап, две задачи были, также не сложные, но из-за волнения всякое может случиться…
@enoughfornow731023 күн бұрын
ага ага ага ага ага ага угу угу угу угу угу угу ага ага ага ага
ваше решение вернёт false для массива [1, 1, 2, 3], потому что определяет направление монотонности только по паре первых значений
@MyNameIsEd2d225 күн бұрын
Братец, а остальные этапы писать будешь? Я про алгосекцию и платформу?
@alexandrkazakov72325 күн бұрын
Привет, второй этап я также успешно прошел, там было две алгоритм задачки, но его к сожалению я его не записал, можешь в тг моем увидеть что за задачи там были. Третий этап полностью разговорный, там не сильно интересно, вопросы про опыт и на софт скиллы
@user-rn5cl2fr8b15 күн бұрын
@@alexandrkazakov723у меня было 4 финала и на одном из них так же были задачки. на 3-х других только разговоры. Так-что от команды все-таки зависит.
@user-ei5ve3zl7k14 күн бұрын
@@alexandrkazakov723 Тебе предложили офер в итоге? И какая вилка была если не секрет