Задание 1 (код с Promise):
let counter = 0;
const increment = new Promise(resolve => {
counter++;
resolve(0);
});
await increment;
await increment;
console.log(counter);
Вопрос: Чему будет равен
counter?Задание 2 (React-компонент с Counter A и Counter B):
import React, { useState } from "react";
import "./styles.css";
console.log = (...args) => {
const node = document.createElement("div");
node.innerHTML = args.join(" ");
document.getElementById("log").appendChild(node);
};
const Counter = (props) => {
console.log(`Counter ${props.name} rendered`);
return (
<div>
Counter {props.name} : {props.count}
</div>
);
};
export default function App() {
const [countB] = useState(0);
const [countA, setCountA] = useState(0);
const handleCountA = () => {
setCountA(countA + 1);
};
return (
<div className="App">
<Counter name="A" count={countA} />
<Counter name="B" count={countB} />
<button onClick={handleCountA}>Count A</button>
</div>
);
}Задача: Counter A и Counter B рендерятся вместе, нужно чтобы Counter B не ре-рендерился при клике на Counter A. Оптимизировать компонент.
Задание 3 (сравнение функций):
const test = 0 => test()
const test1 = async 0 => await test1()
const test2 = async 0 => await Promise.resolve(0).then(test2)
const test3 = 0 => setTimeout(test3, 1)
Вопрос (по контексту собеса): С чем можно столкнуться (например, переполнение стека, бесконечный цикл, таймаут и т.д.)? Вопрос про переполнение стека вызовов и разницу между синхронной/асинхронной рекурсией.


