Джун решает алгоритмические задачи: удаление дублей массива, мемоизация, обработка csv

preview_player
Показать описание

Как проходит собеседование для начинающего фронтендера? Как решать на собеседовании алгоритмические задачи на JavaScript? Как пишется на JS функция, которая удаляет дубликаты из массивов, функция мемоизации (memoize) и обработка CSV? Рассказываем в этом видео
____
Публичное собеседование – формат учебного интервью, где джуниор-разработчик пытается пройти собеседование на позицию фронтенд-разработчика. Опытный разработчик задаёт вопросы, которые помогают кандидату продемонстрировать знание технологий и понимание подходов во фронтенде. В конце кандидат получит вердикт с резюме его слабых и сильных сторон.

– Собеседование проходит студент Хекслета Александр Сдобников
____
🔗 Полезные ссылки:

– 00:00:00 - интро
– 00:00:28 - нужно ли ожидать от студентов понимания будущей профессии
– 00:02:17 - из переводчика во фронтендеры
– 00:05:24 - поиск работы в течение 4 месяцев и первые собеседования
– 00:08:33 - изучение типизации
– 00:09:27 - лайвкодинг: функция, которая удаляет дубликаты из массивов
– 00:23:24 - лайвкодинг: функция мемоизации (memoize)
– 00:47:05 - инвалидация кэша
– 00:49:12 - обработка .csv
– 01:09:54 - резюмируем и играем на флейте

#itсобеседование #frontend #собеседование #хекслет
Рекомендации по теме
Комментарии
Автор


А в этом видео:
– 00:00:00 - интро
– 00:00:28 - нужно ли ожидать от студентов понимания будущей профессии
– 00:02:17 - из переводчика во фронтендеры
– 00:05:24 - поиск работы в течение 4 месяцев и первые собеседования
– 00:07:50 - переквалификация в TS и Remix.run
– 00:08:33 - изучение типизации
– 00:09:27 - лайвкодинг: функция, которая удаляет дубликаты из массивов
– 00:23:24 - лайвкодинг: функция мемоизации (memoize)
– 00:47:05 - инвалидация кэша
– 00:49:12 - обработка .csv
– 01:09:54 - резюмируем и играем на флейте

HexletOrg
Автор

1:12:56 Требования к джунам повышаются.
Теперь нужно еще и на флейте уметь играть.

geri_freki
Автор

Про Map - это было нечестно. После того как было сказано что давай без Set, можно было сделать вывод, давай без всяких сложных структур ручками с массивами работать. А тут такая подъебка подъехала

TalkerTube
Автор

Я ещё не досмотрел про мемоизацию, но, имхо, лучше использовать arg как ключ, а результат вычислений как значение.

КириллМемный-ыо
Автор

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

const remImper = arr => {
let res = [];
for (let i = 0; i < arr.length; i++) {
let isDub = false;
for (let j = 1 + i; j < arr.length; j++) {
if (arr[i] === arr[j]) {
isDub = true;
continue;
}
}
if (!isDub) res.push(arr[i]);
}
return res;
}
Второй вариант через filter:
const rem = arr => arr.filter((item, index) => arr.indexOf(item) === index);

С кэшем можно просто проверить if(!cashe[key] ... Зачем заморачиваться с typeof === undefined?:

const mem = fn => {
const cashe = {};
return (...args) => {
const key = args;
if(!cashe[key]){
console.log("Cashing data...");
cashe[key] = fn(...args);
} else{
console.log("fatching data...");
console.log(`fetched data: ${cashe[key]}`);
}
console.log("cashe:", JSON.stringify(cashe));
};
}

const add = (a, b) => a+b;

const memAdd = mem(add)
memAdd(10, 20);
memAdd(10, 20);
memAdd(100, 222);
memAdd(100, 222);
memAdd(10, 20);

Ну а в третьем варианте вообще какой-то монстр получился)) можно намапить и сджоинтить:

const listOfGoods = [{
name: "Samasung",
price: 100
}, {
name: "iPhone",
price: 250
}, {
name: "Nokia",
price: 125
}]

const convertToCSV = goods =>{
const goodsKeys = Object.keys(goods[0])+'\n';
const goodsValues = goods
.map(good => [good.name, good.price]).join('\n');
return goodsKeys + goodsValues;
}

Но в любом случае парнишка молодец, быстро схватывает.

exx-nstt
Автор

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

alexmarch
Автор

Старый добрый костыльный метод решения:
Создаешь второй пустой массив.
Прогоняешь через цикл все элементы первого массива.
Если второй массив не содержит еще данного элемента, то добавляешь, иначе -> перебираешь элементы далее, например, continue;
На выходе просто присваиваешь второй массив значению первого, т бишь firstArray = secondArray.
В итоге у нас появляется отфильтрованный массив элементов

bloodyclient
Автор

12:45 какие проблемы доп массив индекс значение если там если 0 то ++ если 1 то улаляем значение

ivanlebedev
Автор

Да, но есть маленькая проблема, люди не знаю css приходят в web и не знают. Очень тяжело после вас парни переделывать проекты, прям тяжко.

sggames
Автор

если это крепкий джун, то я уже близок к синьору

twogog
Автор

Про удаление дублирующихся элементов - можно было бы использовать дерево бинарного поиска.

А потом обойти составленное дерево.

Никитарепников-жм
Автор

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

sergey.ryabtsev
Автор

есть вопрос, какой такой критический объем данных приходит на обработку на фронт, что мы начали просчитывать сложность алгоритма? И каковы реальные цифры тестов двух подходов к обработке данных через map или через foreach. На каком объёме тестировали? А если это про бек и Node, вы данные обходите прямым перебором?

olegkat
Автор

Задача на мемоизуцию интересная, спасибо)

АлександрГенелев
Автор

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

ksjshskak
Автор

map - тот же самый set в ключах, под капотом.
Что то ты запутал просто парня.

ЕвгенийБулатов-еж
Автор

Надеюсь, реальные собеседования будут похожи на это, а не из разряда "Что будет в консоли при вызове функции из десяти промисов и двадцати таймаутов"

TracktorSpark
Автор

То 2 месяца искал работу, то 4, мы вам перезвоним

МихаилИванов-кй
Автор

Навряд ли примерно так проходят собесы )

Abdullah-cyu
Автор

Человек программирует так же как играет на инструменте ).

NiceGirlNiceMusic