Встречается на собеседованиях • сегодня

Приведи пример выполнения сложной задачи

Для выполнения сложной задачи важно разбить её на подзадачи. Например, реализация drag-and-drop с сохранением состояния в localStorage:

javascript
// 1. Подготовка
const draggableItems = document.querySelectorAll('.draggable');
const container = document.querySelector('.container');
let draggedItem = null;

// 2. Обработчики событий
draggableItems.forEach(item => {
  item.addEventListener('dragstart', () => {
    draggedItem = item;
    setTimeout(() => item.classList.add('hidden'), 0);
  });
  
  item.addEventListener('dragend', () => {
    item.classList.remove('hidden');
  });
});

// 3. Логика перетаскивания
container.addEventListener('dragover', e => {
e.preventDefault();
const afterElement = getDragAfterElement(container, e.clientY);
if (afterElement) {
container.insertBefore(draggedItem, afterElement);
} else {
container.appendChild(draggedItem);
}
});

// 4. Сохранение состояния
container.addEventListener('drop', () => {
const items = [...container.querySelectorAll('.draggable')];
const ids = items.map(item => item.id);
localStorage.setItem('itemsOrder', JSON.stringify(ids));
});

// 5. Восстановление при загрузке
window.addEventListener('load', () => {
const savedOrder = JSON.parse(localStorage.getItem('itemsOrder'));
if (savedOrder) {
savedOrder.forEach(id => {
const item = document.getElementById(id);
container.appendChild(item);
});
}
});

text

Ключевые моменты:
- Разделение на логические блоки
- Обработка всех этапов drag-and-drop
- Сохранение и восстановление состояния
- Оптимизация (setTimeout для hidden)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы