Da li ste ikada imali iskustvo rada bez analitičara, kada ste morali sami da shvatite zadatak?
Frontend
Šta je WeakMap?
Kako shvatiš šta je render u React-u? Zbog čega može doći do toga?
import React, { useState, useEffect, useRef, useContext, useReducer, useMemo } from 'react'; export default Effects = () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("сваки рендер 1")); console.log("сваки рендер 2"); useEffect(() => console.log("сваки рендер 3")); return ( <> <button onClick={() => setCount((prevProps) => ++prevProps)}> Увеличи </button> </> ) }
Koje postavke imaju kolačići (httpOnly, secure, expires, domain, path)?
const { foo: bar, bar: foo } = { foo: 1, bar: 2 } console.log(bar) // console.log(foo) //
const obj = [{ value: 1, elems: [ { value: 2, elems: [ { value: 3 }, { value: 6 }, ... ] }, { value: 4, elems: [ { value: 5, elems: [ { value: 6 }, ... ]} ] } ] }] ------------- setTimeout(() => { console.log(1); }, 0); const p = new Promise(resolve => { console.log(2); resolve(); }); p.then(() => { console.log(3) }).then(() => { console.log(4); }); console.log(5);
const createCounter = () => {
Ispričaj mi o Event Loop-u: kako radi, šta su mikro zadaci i makro zadaci?
const { foo: bar, bar: foo } = { foo: 1, bar: 2 }; //foo //bar setTimeout(() => { console.log("timeOut"); }, 0); console.log(1); new Promise((resolve) => { console.log("Promise"); setTimeout(() => { console.log("timeOut2"); resolve(); }, 0); }) .then(() => { console.log("then1"); }) .then(() => { console.log("then2"); }); console.log(4); setTimeout(() => { console.log("timeOut3"); }, 0);
Kako React poredi props? Kako funkcioniše površinsko poređenje?
import { useState, useRef, useEffect } from "react"; const useDebugRender = ({props}) => { const prevProp = useRef(props) useEffect(() => { }, []) } const ParentComponent = () => { const [random, setRandom] = useState(0); // Se transmite como Prop al componente hijo const [text, setText] = useState(""); // Se transmite como Prop al componente hijo const createRandom = () => setRandom(Math.floor(Math.random() * 100)); const onTextChange = (e) => setText(e.target.value); const [count, setCount] = useState(0); const incrementCount = () => setCount((prev) => prev + 1); // Esta función se transmite como Prop al componente hijo return ( <> <Count: {count} /> <input type="text" onChange={onTextChange} /> <button onClick={createRandom}>Generar aleatorio</button> <div> <ChildComponent random={random} text={text} incrementCount={incrementCount} /> </div> </> ); }; export default ParentComponent;
Зашто debounce, а не throttle за претрагу?
Чему служи useRef? Које су његове примене?
Ako roditeljski komponent prosledi novi niz kao props, da li ćeš videti nove podatke na ekranu ili stare? Zašto?
Tipiziraj funkciju getParam tako da TypeScript sam istakne prisustvo svojstava u objektu. Napravi tipizaciju tako da ne bude moguće prosleđivati nizove.
const submit = useCallback((el) => () => { log(el); }, []); arr.map(el => <button onClick={submit(el)} />) arr.map(el => <SomeComp key={} onClick={() => submit(el)} />) const param = useMemo(() => ({c: a + b}), [a,b]) return <Child value={param} /> Child = React.memo(() => {})
Koja je razlika između await p1, await p2 i Promise.all([p1, p2])?
const Effects = () => { const [count, setCount] = useState(0); useLayoutEffect(() => console.log("svaki render 1")); console.log("svaki render 2"); useEffect(() => console.log("svaki render 3")); return ( <> {count} <button onClick={() => setCount((prevProps) => ++prevProps)}> Povečaj </button> </> ); }; export default Effects; // 1 render: // Po kliku: const Effects = () => { const [count, setCount] = useState(0); const [number, setNumber] = useState(0); useEffect(() => { console.log(count); return () => { console.log(count); }; }); return ( <> {count} <button onClick={() => setCount((prevProps) => ++prevProps)}> Povečaj </button> </> ); }; export default Effects; // 1 render: // 2 1 3 // Po kliku: // 2 1 3 // null: // 2 1 3 // // 1: 1, 0 // +: 1, 2 // ++: 2, 2
let obj = { a: 1 }; let array = [obj]; obj = null; console.log(obj); // console.log(array); //