Frontend
Какие проблемы с архитектурой вы видите в методе addField с проверками типов через if?
Есть код с IIFE, которая возвращает объект с полем value и методом setValue. Что будет выведено в консоли после вызова setValue(2) и обращения к полю value? Что нужно исправить, чтобы вывелась двойка?
/ * У нас есть набор билетов вида: [ { from: 'London', to: 'Moscow' }, { from: 'NY', to: 'London' }, { from: 'Moscow', to: 'Spb' }, ... ] Из этих билетов можно построить единственный, неразрывный маршрут. Петель и повторов в маршруте нет. Нужно написать программу, которая возвращает эти же объекты билетов в порядке следования по маршруту. * / function getRoute(tickets = [], startCity = 'NY') { // your code here }
В чём разница между хранением данных в массиве и в объекте с точки зрения памяти? Какой способ хранения таблицы (двумерный массив или двумерный объект) будет легче для памяти?
Приходилось ли работать с Docker?
В прототипе рекламной сети продажа рекламных мест устроена следующим образом: покупатели заранее называют свою цену, а на каждое рекламное место отвечают, готовы они его купить или нет. Необходимо реализовать функцию, которая перед продажей рекламного места будет ожидать согласия или отказа от покупателей с высокой ценой ставки, а затем продаст рекламное место покупателю с самой высокой ценой среди тех, кто согласился на покупку. Вернуть ответ из функции нужно настолько быстро, насколько это возможно. Нужно вернуть индекс покупателя. Примеры: Покупатели предлагают цену 1, 5, 10 Покупатель с предложением 10 ответил отказом Покупатель с предложением 1 ответил согласием // Всё ещё ждём, поскольку может ответить покупатель с ценой 5 Покупатель с предложением 5 ответил согласием // Выбираем покупателя с предложением 5 ------------ Покупатели предлагают цену 1, 5, 10 Покупатель с предложением 10 ответил отказом Покупатель с предложением 5 ответил согласием // Не ждём ответа от покупателя с предложением 1 - его точно не выберем ------------ Покупатели предлагают цену 1, 2 Покупатель с предложением 1 ответил отказом Покупатель с предложением 2 ответил отказом // Не выбираем ни одного покупателя type Buyer = { price: number, accepts: () => Promise<boolean>, } async function bestBuyer(buyers) { const sorted = buyers.map((buyer, index) => ({buyer, index})) .sort((a, b) => a.buyer.price - b.buyer.price); const promise = sorted.map(({buyer}) => buyer.accepts()); for (let i = 0; i < sorted.length; i++) { const accepted = await promise[i]; if (accepted) { return sorted[i].index; } } if (await buyers[0].accepts()) { return 0; } return -1; }
Объясните, за счёт чего Promise.all дождётся выполнения всех запросов в вашем решении с рекурсией? Почему текущая реализация может вернуть неполный результат?
class Foo { bar = 1; bla = () => console.log(this.bar); baz = function () {console.log(this.bar);}; } new Foo().bla(); new Foo().baz(); Скажи коротко так: `this` — это не область видимости, а контекст вызова функции. Он определяется не там, где функция объявлена, а там, как она вызвана. Можно добавить 3-4 правила: - Обычный вызов функции — this обычно undefined в strict mode. - Метод объекта — this указывает на объект слева от точки. - `call / apply / bind` — позволяют явно задать this. - Стрелочные функции — своего this не имеют, берут его из внешнего контекста.
Можешь объяснить, что такое callback hell?
Расскажи, как у вас была устроена матрица прав и как в коде организовывалось отображение элементов в зависимости от роли пользователя?
Где можно использовать interface, но нельзя использовать type?
Что такое Change Detection в Angular? Какие стратегии существуют?
Как ты балансируешь между свободой принятия решений и ответственностью за них?
/** * Реализовать функцию обертку runOnce, которая принимает * функцию и возвращает новую функцию. Новая функция * может быть вызвана только один раз, все последующие * вызовы возвращают undefined. * * Оборачиваемая функция может принимать аргументы * и возвращать результат. */ function runOnce(fn) { // your code } const logHello = (name) => { console.log(`hello, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'hello, Oleg!' logHelloOnce('Olga'); // undefined
Расскажи о своём опыте работы и текущих задачах на беттинг-платформе
Какими React-хуками пользуешься чаще всего?
9. Списывание Во время контрольной работы профессор Флойд заметил, что некоторые студенты обмениваются записками. Сначала он хотел поставить им всем двойки, но профессор был добрым, а потому решил разделить студентов на две группы: дающих списывать, и поставить двойки только первым. У профессора записаны все пары студентов, обменявшихся записками. Нужно определить, сможет ли он разделить студентов на две группы так, чтобы любой обмен записками осуществлялся от студента одной группы студенту другой группы. Формат ввода В первой строке находятся два числа N и M — количество студентов и количество пар студентов, обменивающихся записками (1 ≤ N ≤ 10^2, 0 ≤ M ≤ N(N-1)/2). Далее в M строках расположены описания пар студентов: два числа, соответствующие номерам студентов, обменивающихся записками (нумерация студентов начинается с 1, каждая пара студентов перечислена не более одного раза). Формат вывода Необходимо вывести ответ на задачу профессора Флойда. Если возможно разделить студентов на две группы - выведите YES; иначе выведите NO.
В каких единицах измерялась оценка задач — в часах? Были ли крупные задачи на несколько дней или больше недели?
Были ли факапы в твоём опыте? Если да, то какие?
Какие подходы к написанию стилей вы использовали (препроцессоры, Tailwind, CSS-модули и т.д.)?