Skip to content

Commit c6b348d

Browse files
authored
Merge pull request #366 from FanManutd/364-revision-of-questions
Доработка вопросов на jun1-3 по frontend
2 parents ba361c3 + 576c901 commit c6b348d

File tree

5 files changed

+59
-67
lines changed

5 files changed

+59
-67
lines changed

frontend/junior-1/react.md

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
* Для чего предназначены хуки `useState`, `useReducer`, `useEffect`? Как с ними работать?
4040
* Что может возвращать колбэк, передаваемый в `useEffect`?
4141
* Что такое массив зависимостей? Рассказать как он влияет на работу хука на примере useEffect (в том числе на возвращаемое колбэком значение).
42+
* Являются ли хуки медленными из-за создания функций на каждом рендере?
4243
* Что такое HOC? Когда хоки могут быть полезны?
4344
* Что такое React Fragment? Для чего он нужен? Как его использовать?
4445
* Performance
@@ -52,20 +53,6 @@
5253
* Что это такое? Как происходит работа с инпутами?
5354
* Как задать дефолтное значение для инпута в uncontrolled компоненте?
5455
* Что такое Context и когда может быть полезен?
55-
* Portals
56-
* Что это такое? Зачем нужны? Как использовать?
57-
* Как будет работать контекст и event bubbling в случае с порталами?
58-
* Что такое Error Boundaries? Зачем они нужны? Как ими пользоваться?
59-
* Будут ли "пойманы" в `catch` блоке ошибки, возникающие при рендере `InnerComponent`? Почему?
60-
```
61-
function OuterComponent() {
62-
try {
63-
return <InnerComponent />;
64-
} catch (error) {
65-
handleError(error);
66-
}
67-
}
68-
```
6956

7057
### Ресурсы
7158

frontend/junior-2/css.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,8 @@
33
* Что такое web-safe шрифты?
44
* Что такое autoprefixer и зачем он нужен?
55
* Что такое спрайты и зачем они нужны? Какие проблемы адаптивности с ними связаны?
6+
* Что делают медиа свойства `hover`, `pointer`, `any-hover`, `any-pointer`?
7+
8+
#### Ресурсы
9+
10+
* [Выявление устройств с сенсорными экранами на чистом CSS](https://habr.com/ru/company/ruvds/blog/556156/)

frontend/junior-2/react.md

Lines changed: 50 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,59 @@
11
# React
22

3-
* Что такое React?
4-
* Что такое React Element? Как его можно создать? Из чего он состоит?
5-
* Что будет, если передать булевые, `null` или `undefined` значения в children?
6-
* Что такое React Component?
7-
* Что делают конструкторы в родительских классах реакт компонент? Когда надо вызывать `super`, а когда нет?
8-
* Что такое JSX и зачем он нужен?
9-
* Почему атрибуты в JSX пишутся, используя camelCase (например, `tabIndex`, а не `tabindex`)? Почему `className`, а не `class`?
10-
* Почему название компоненты, которая используется в JSX, нужно писать с большой буквы?
11-
* В чём проблема следующего кода `<p>{items.length && <El items={items} />}</p>`?
12-
* Написать аналог с `React.createElement`:
3+
* useEffect
4+
* Нужно ли указывать функции в виде зависимостей эффектов?
5+
* Что выведется в консоли для следующего кода, если быстро нажать 5 раз на кнопку, и почему?
136
```javascript
14-
<OuterComponent color="black" disabled>
15-
<InnerComponent hidden={false} />
16-
<div>
17-
Div text content
18-
</div>
19-
</OuterComponent>
7+
function Counter() {
8+
const [count, setCount] = useState(0);
9+
10+
useEffect(() => {
11+
setTimeout(() => {
12+
console.log(`You clicked ${count} times`);
13+
}, 3000);
14+
});
15+
16+
return (
17+
<div>
18+
<p>You clicked {count} times</p>
19+
<button onClick={() => setCount(count + 1)}>
20+
Click me
21+
</button>
22+
</div>
23+
);
24+
}
2025
```
21-
* Что такое Virtual DOM и зачем он нужен?
22-
* Что такое `state` и `props` у компонента?
23-
* Как обновить `state`? Почему не стоит это делать через прямую запись в `this.state`?
24-
* Если передать в `setState` не все свойства, которые до этого уже были в стейте, то будут ли удалены те, что не переданы?
25-
* В каких случаях стоит хранить значения в стейте компоненты, а в каких случаях в инстансе?
26-
* Как правильно обновлять `state` на основе предыдущего значения `state`? Какие могут при этом возникнуть проблемы?
27-
* Что такое top-down data flow? Что является основным механизмом синхронизации нескольких компонент?
28-
* `props.children`
29-
* Что это такое?
30-
* Когда может быть полезным?
31-
* Что позволяет делать `React.Children` API?
32-
* Component Lifecycle
33-
* Что это такое?
34-
* Когда какие методы вызываются? В каком порядке?
35-
* Как и в каких случаях использовать те или иные методы жизненного цикла?
36-
* Что должен делать метод `render`? Почему необходимо держать этот метод чистым?
37-
* Hooks
38-
* Какие существуют правила при работе с хуками?
39-
* Для чего предназначены хуки `useState`, `useReducer`, `useEffect`? Как с ними работать?
40-
* Что может возвращать колбэк, передаваемый в `useEffect`?
41-
* Что такое массив зависимостей? Рассказать как он влияет на работу хука на примере useEffect (в том числе на возвращаемое колбэком значение).
42-
* Что такое HOC? Когда хоки могут быть полезны?
43-
* Что такое React Fragment? Для чего он нужен? Как его использовать?
44-
* Performance
45-
* Когда передача инлайн-коллбека ухудшает производительность и почему? Пример: `<LoginButton onClick={(e) => this.handleClick(e, user)}>`
46-
* refs
47-
* Что это такое? Зачем нужны? Как их использовать?
48-
* Как и для чего использовать хук `useRef`?
49-
* Что делает и зачем нужен метод `React.forwardRef`?
50-
* Почему refs стоит использовать умеренно?
51-
* Controlled и uncontrolled компоненты
52-
* Что это такое? Как происходит работа с инпутами?
53-
* Как задать дефолтное значение для инпута в uncontrolled компоненте?
54-
* Что такое Context и когда может быть полезен?
26+
* Как сделать так, что бы все 5 раз вывелось последнее значение, то есть цифра 5?
27+
* Что выведется в консоли для следующего кода, если несколько раз быстро нажать на кнопку?
28+
```javascript
29+
function Example() {
30+
const [count, setCount] = useState(0);
31+
32+
useEffect(() => {
33+
console.log(count);
34+
if (count % 2 === 0) {
35+
return () => setTimeout(() => console.log("It was even render"), 1000);
36+
} else {
37+
return () => setTimeout(() => console.log("It was odd render"), 1000);
38+
}
39+
});
40+
41+
return (
42+
<div>
43+
<p>You clicked {count} times</p>
44+
<button onClick={() => setCount(count + 1)}>Click me</button>
45+
</div>
46+
);
47+
}
48+
```
49+
* Как и для чего использовать хуки `useMemo` и `useCallback`?
50+
* Всегда ли следует оборачивать код в `useMemo`/`useCallback`?
5551
* Portals
5652
* Что это такое? Зачем нужны? Как использовать?
5753
* Как будет работать контекст и event bubbling в случае с порталами?
5854
* Что такое Error Boundaries? Зачем они нужны? Как ими пользоваться?
5955
* Будут ли "пойманы" в `catch` блоке ошибки, возникающие при рендере `InnerComponent`? Почему?
60-
```
56+
```javascript
6157
function OuterComponent() {
6258
try {
6359
return <InnerComponent />;
@@ -70,4 +66,6 @@
7066
### Ресурсы
7167

7268
* [React Documentation](https://reactJS.org/docs/getting-started.html)
73-
* [Why Do We Write super(props)?](https://overreacted.io/why-do-we-write-super-props/)
69+
* [Полное руководство по useEffect](https://habr.com/ru/company/ruvds/blog/445276/) - объёмная, но очень классная статья по useEffect, которая поможет раскрыть глаза на многие вещи. Возможно придётся осилить в 2 подхода.
70+
* [Все ли вы знаете о useCallback](https://habr.com/ru/post/529950/)
71+
* [Интересная ветка обсуждения в комментариях статьи выше](https://habr.com/ru/post/529950/comments/#comment_22380330)

frontend/junior-3/js.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@
6767
resolve(2);
6868
});
6969
```
70+
* Что такое async/await?
71+
* Где можно применять ключевое слово `await`?
72+
* Как обрабатывать ошибки для async/await?
7073

7174
## Set, Map
7275

frontend/junior-3/react.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
}
5050
}
5151
```
52-
* Как и для чего использовать хуки `useMemo` и `useCallback`?
5352
* Performance
5453
* Что такое windowing или virtualizing списков?
5554
* Всегда ли происходит перерисовка DOM-элемента, если `shouldComponentUpdate` вернул `true`?

0 commit comments

Comments
 (0)