WEB Flashcards

1
Q

Какво е асинхронно програмиране?

A

То ни позволява много неща да се случват едновременно, заразлика от синхронното програмиране, където всичко става последователно. Асинхронността попзволява на програмата да продължи да работ след стартиране на някое действие. Когато действието приключи, програмата оплучава резултата. Ппозволява изразяване на сложни функции, но може да усложни някои линейни.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Кога е удачно да използваме асинхронното програмиране?

A

Когато се нуждаем от ефективно урпавление на задачи, които отнемат време, а не искаме програмата да спира, докато изчаква техния резултат.

Пример за такава задача е заявка от мрежата.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какво са callbacks и как се изпълняват?

A

Изпълнява код в отговор на събитие.

Събитията могат да са кликвания на мишката или натискане на клавиш от потребителя.

Изпълнява се, когато друга функция вече е приключила изпълнението си.

Всяка функция, която се подава като аргумент на друга, за да може да бъде изпълнена в нея, се нарича callback function.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какво е Event Loop?

A

Модел за изпълнение, събира и обработва събития и изпълнява опашкови задачи.

Това е постоянно работещ процес, който следи callback queue-то и call stack-а.

Той е ключът към асинхронното програмиране, тъй като изпълнява всички операции на един нишков процес, но създава илюзия за многонишков.

Стекът събира операции, които да се изпълнят и ги ппремахва, когато бъдат завършени.

Опашката изпраща нови функции към стека.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какво са Promises и как ни помагат?

A

Позволява по-лесно справяне с асинхронен код и управление на последователността на операциите.

Представяме бъдещ резултат, който завършва успешно или с грешка.

Promise - ът е като обект, към който прикачаме callback.

Лесно управление на грешки, чрез ‘.catch()’.

Пишем асинхронен код, който прилича на синхронен.

Chaining е важен аспект от promises, който ни опзволява да изпълняваме последователни асинхронни операции по-четими.

Методът ‘.then()’ ни позволява да прикачим callback към promise. Връща нов promise, различен от оригинала. Той представлява завършването на promise-ът и функцията за успешно или неуспешно завършване. АКО към тези две изходни функции има прибавени други асинхронни операции, биват изпълнени след като е завършил първият promise.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Какво са ключовите думи ‘async’ и ‘await’?

A

Улесняват работата с promises.

Async - генератор на promise, създава го при извикване. Решава се или се отхвърля ако има Exception. (error)

Await - означава, че кодът ще изчака завършването на promise-ът, преди да продължи.

Този подход прави асинхронният код да изглежда като синхронен.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как работи ‘async-await’?

A

Когато някоя функция е ‘async’, тя винаги връща promise.

Когато използваме ‘await’ преди promise-ът, се преустановява до момента, в който promise-ът бива решен (resolve) или отхвърлен (rejected).

Когато ‘await’ изчака решението на promise-ът, неговият резултат се връща на ‘await’ оператора и така кодът си ппродължава изпълнението с получения резултат.

В случай, че promise-ът бива отхвърлен, ‘await’ хвърля грешка, която можем да хванем с ‘try-catch’ блок.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Какво е WWW (World Wide Web)?

A

Информационна система, която позволява достъп до документи и други ресурси в интернет.

Информацията се предоставя чрез уеб сървъри и се достъпват чрез уеб браузър.

Идентифицират се и се намират чрез URL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Какво е HTML (Hypertext Markup Language)?

A

Описателен език без логики.

Тип документ, който представлява уеб страница форматирана чрез този език.

Той поддържа текст, снимки, видео, аудио, скриптове, хипервръзки.

Информацията в уеба се ппредава поп интернет чрез HTTP (Hypertext Transfer Protocol)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какво са уеб клиентите и сървърите?

A

Уеб съдържанието се намира на уеб сървър. Те използват HTTP.
Съхраняват данни и ги предоставят при поискване от HTTP клиент.
Клиентите изпращат HTTP заявки към сървърите, те връщат HTTP отговор.

Уеб клиентът - уеб браузър.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Какво е уеб браузърът и с какво е по-различен от Node.js?

A

Уеб браузърът ни позволява да сърфираме в уеба, а node - не.
Node-а е среда за изпълнение на JS.

Браузърът ни рендерира уеб страницата, а node изпълнява JS.
Браузърът има ‘window’ обект, а node - не.
Node поддържа модулна система.
Node обработва сървърни заявки и връща отговор, а браузърът изпраща заявки към сървър и обработва отговора.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Какво е семантичният HTML и как да го постигнем?

A

Отнася се до използването на HTML елементи, които имат смислово значение и опписват структура на уеб страницата. Тук се пподчертава смисъла на съдържанието, а не само визуализацията.

Помага на браузъра да интерпретира страницата по-ефективно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Какво е CSS и какво проблеми разрешава?

A

Cascading Style Sheet е език за оформление на HTML документи. Определя как елементите в уеб страницата да се визуализират.

Разрешава няколко проблема:
-осигурява визуален стил, който лесно може да се променя;
-с помоща на класове, могат да се правят промени върху много елементи наведнъж;
-съвместим с браузърите;
-позволява респонсив дизайн, според големината на екрана на потребителя;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Кои са 3-те начина за добавяне на CSS в кода?

A
  1. Inline - чрез кл. дума ‘style’ в HTML елемента. Използваме го за прилагане на уникален стил към единичен елемент.
  2. Internal - чрез изпозлване на елемента ‘<style>' в секцията '<head>', може да го използваме за стил на единична страница.</style>
  3. External - в отделен ‘.css’ файл си пишем стиловете и чрез елемента ‘<link></link>’ в секцията ‘<head>’ свързваме външния файл с HTML-а.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Каква е разликата между ID и класовете? Кое кога да използваме в CSS?

A

Това са селектори, използват се за дизайн в CSS файла.

ID - уникално.

Class - много елементи, ако ще ползваме същият селектор много пъти.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какви са типовете селектори, които можем да ползваме в CSS?

A

Типове, класови и идентификаторни селектори, които насичват HTML елемент - <h1>

Атрибутни селектори - избираме елемент в зависимост от наличието на определен атрибут върху него - a[title] {}

Псевдо-класове и елементи - според състоянието - a:hover {}

Комбинатори - комбинира селекторите и избираме всички селектори в конкретен елемент - article > p {}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Каква е йерархията на приоритета на селекторите в CSS?

A

Селекторите имат опрпеделен приоритет срямо вида и наличието на ID, CLASS, TYPE.

ID - най-висок приоритет 1-0-0 (#example)

CLASS - +атрибути и псевдо класове са второстепенни 0-1-0 (.myClass, :hover)

TYPE - +псевдо елементи са с най-нисък приоритет 0-0-1 (p, h1, ::before)

Селекторите, които не се броят са с приоритет 0-0-0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Каква е разликата между блок елементите и линейните елеменети в CSS?

A

Block elements:
-винаги започват на нов ред и заемат цялото налично пространство по широчина;
-автоматично си добавят марджин преди и след себе си;
-примери: <p> и <div>

Inline elements:
-не започват на нов ред, заемат колкото ширина им е нужна;
-не добавят марджин;
-не могат да съдържат блокове;
-примери: <a> <span></span></a>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Какво е Grid Layout в CSS?

A

Метод за организиране на HTML елементите в решетка, като се разополагат на колони и редове.

Parent element - grid container;
Child el. - grid items;

Родителският трябва да има стиловете: `display: grid/inline-grid’

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Какво е DOM дървото?

A

Програмен интерфейс, представя уеб документи като дърво от нодове и обекти. Това позволява на други програми да променят структурата, стила и съдържанието на уеб страницата.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Какво са document и window обектите?

A

Document Object - заредена уеб страница в браузъра, ако го достъпим, можем да манипулираме елементите в HTML-а. Добавяме динамично съдържание към уеб страницата.

Window Object - най-горният обект в йерархията на DOM-а. Това са прозорците в браузъра, който показва съдържанието на страницата.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Какво са Events в DOM?

A

Сигнали за натиснат клавиш или натиснат бутон на мишка.
Мишката: click, contextmenu(десен бутон), mouseover / mouseout, mousedown/ mouseup, mousemove;
Клавиатура: keydown / keyup, submit, focus
Документ: DOMContentLoaded
CSS: transitionend

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Каква е разликата между event bubbling и event capturing?

A
  • когато настъпи event, заппочва от най-вложения ел., върху който се случва event-а. (event.target);
  • следва засичане и възходящо разпространение (bubbling);
  • повреме на засичането, евента се движи от root-a към event.target-a
  • повреме на разпространението върви от event.target-a към root-a

event capturing - рядко, обратно

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Какво е DOM API? Защо да го използваме?

A

DOM Application Programming Interface - дава инструменти, с които можем да контролираме уеб страниците и създаваме по-интерактвини и динамични уеб пприложения.

  • позволява динамични промени в съдържанието;
  • създаване на интерактивни уеб приложения чрез реагиране на евенти;
  • дава достъп за манипулация на данни в страницата;
  • създаване на съдържание динамично по време на изпълнение на JS
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Какво е URL?

A

Uniform Resource Locator е местоположението на ресурс в компютърна мрежа и начин за достъпване на този ресурс. Показва местоположението на уеб страници, файлове и др. Това е път към КОНКРЕТЕН и уникален ресурс в мрежата.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Какво е network protocol?

A

Мрежовият протокол е набор от правила и конвенции, които определят как данните се изпращат и обменят в мрежата.

  • Протокол за комуникация - установяват, поддържат и прекратяват сесии. TCP/IP, HTTP
  • Протокол за управление - наблюдение и контрол на ресурсите на мрежата. ICMP - за диагностика; SNMP - за управление на рутери
  • Протокол за сигурност - поверителност HTTPS, SFTP, SSL

HTTP - основа на мрежата

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Какво е HTTP? Как работи?

A

Hyper Transfer Protocol - позволява обмен на данни в мрежата. Протокол за заявки и отговори. Как работи?
1. Заявка от потребител (GET, POST);
2. Обработка на завката;
3. Отговор от сървър (статус код)
4. Рендериране

28
Q

Кои са HTTP методите?

A

Методите са начин, по които клиентите изпращат заявки към сървъра.

GET, POST (създаване), PUT (ъпдейт), DELETE, PATCH (частичен ъпдейт)

Статус кодове:
1xx - informational;
2хх - success;
3xx - redirect;
4xx - client error;
5xx - server error;

29
Q

Какво е request body?

A

Данни от клиента към нашето API.

Response body - отговор от API-то към клиента.

GET/HEAD нямат body и връщат null

30
Q

Какво е AJAX? Защо да го ползваме?

A

Asynchronous JavaScript and XML - добавя динамична структура, като следи кои неща искат обновления в реално време, докато потребителя е в сайта.

По това време XML, транспортира данните между клиента и сървъра.

Ползването на AJAX, позволява сайта да се ъпдейтва постоянно без да се презарежда.

Това е комбинация от:
XMLHttpRequest - обект, асинхронен обмен на данни;
JavaScript/DOM - показване и работа с инфото;
CSS - стил;
XML - форматира данни;

31
Q

Какво е Fetch API?

A

Позволява на браузъра да прави HTTP заявки към сървър.

За заявка и респонс ползваме fetch(), приема като аргумент URL към ресурса, връща Promise, който се разрешава с РЕСПОНС на заявката. Връща статус код.

fetch() стартира извличане на ресурс от сървър и връща ПРОМИС, който се разрешава до РЕСПОНС обект.

32
Q

Какво е SPA Model и защо да го ползваме?

A

Уеб страница, която работи на една HTML страница. Всички необходими ресурси се зареждат първо и динамично обновява съдържанието.

+
- бързи;
- респонсив;

-
- лошо SEO;
- проблеми със сигурността;
- ако има повече инфо на сайта, се натоварва;
- няма история;

33
Q

Какво е React.js?

A

Библиотека, създава динамични потребителски интерфейси. Могат да променят данни без да зареждат страницата. Комбинира се с други библиотеки или фреймуърци.

  • разделяме всичко на компоненти;
  • пишем логиката на JS;
  • по-лесно писане на респонсив интерфейси;
  • декларативен метод на писане;
34
Q

Как вкарваме React в нашия проект?

A
  1. Тагове - включваме РЕАКТ директно в HTML-а;
  2. Създаване на React App - настройва нов проект:
    npx create-react-app my-app
  3. Vite + React App
    npm create vite@latest
35
Q

Какво са елементите и компонентите в React?

A

Елемент - най-малкият строителен блок, може да е HTML таг (span, div…) има props (данни, които го конфигурират - стил, текст) и деца на елемент, които са вложени в текущия.

Компонентът - разделяме интерфейса на независими и лесни за преизползване части. Пишат се като функции, приемат “props” и връщат REACT ELEMENT.

Има функционални и класови компоненти.

36
Q

Какво е JSX?

A

JavaScript XML е разширение базирано на ES6.

JSX създава React елементи, като можем да пишем експрешъни в { }.

Babel превежда JSX -> JS.

37
Q

Какво е Virtual DOM?

A

Концепция в РЕАКТ, подобрява ефективността при обновяване на уеб интерфейса.

Всеки път като променяме състоянието на приложението, виртуални ДОМ се актуализира вместо реалния ДОМ. Виртуалния изчислява как да изпрати промените към реалния по най-бързия начин и така се намалява времето при актуализация.

ReactDOM ще актуализира само променените части на DOM чрез РЕКОНСИЛАЦИЯ.

промяна -> компонентите се изчисляват и се рендерира на ново -> старото дърво се сравнява с новото -> актуализация на реалния DOM.

38
Q

Какво са “props”?

A

“props” входни параметри, които родителският компонент предава на детския, предават се към компонент, “state” се управлява ВЪВ компонента.

И двете съдържат информация, която влияе на изхода от рендерирането.

Типове:
- Stateless - имат само “props”, нямат “state”, лесни за проследяване, dumb components;

  • Stateful - “props” + “state”, грижат се за комуникация между клиент и сървър, обработка на данни и реагиране на събития.
39
Q

Какво е “props.children”?

A

Проп, който се предава автоматично на всеки компонент в РЕАКТ. Изобразява съдържанието между отварящ и затварящ таг при извикване на компонент.

40
Q

Как си гарантираме “prop types”?

A

Външен механизъм за валидация на пропс, трябва да го изтеглим.
npm install prop-types

41
Q

Какво е “state” в React?

A

Вътрешна променлива, когато се актуализира, променя изгледа на компонента.

42
Q

Какво е HOOK?

A

Функция, към която закачаме други функции.

  • useState - добавяме РЕАКТ състояние към функция.
43
Q

Как да рендерираме компонент в зависимист от стейта?

A

Съхраняваме ги в променливи и ги преизползваме.

44
Q

Как функцията ‘Map’ помага за преобразуване на списъци?

A

Преобразува данните в списъци и генерира нов списък с преобразуваните данни.

45
Q

Защо са необходими ключове в списъците?

A

Това е уникална стойност, която помага да се идентифицира елементи.

Не е добре да използваме индекс на масив за ключ, защото ако се модифицира масива, индексът се променя.

46
Q

Всички ключове ли са уникални за апликацията?

A

Трябва да са уникални само за частта на компонента, която рендерира колекцията от елементи.

Не се изисква за цялото приложение.

47
Q

Може ли да имаме callback функция чрез props?

A

Да, евентите да са написани в camelCase.

48
Q

Каква е ползата от писане на компоненти, вместо наследяване от тях?

A

Можем да преизползваме кода между компонентите и прави coupling-а по-слаб.

49
Q

Как се пише React HOC?

A

React Higher-Order Component е функция, която приема компонент и връща нов с допълнителна функционалност.

50
Q

Каква е разликата между ‘smart’ и ‘dumb’ компонент?

A

Smart - грижат се за това как работят нещата;
държат общото състояние между компонентите;

Dumb - нямат състояние, само рендерират.

51
Q

Каква е целта на useEffect? Как функционира? Защо се извиква вътре в компонент? Изпълнява ли се след всеки рендър?

A

Позволява ни да правим странични ефекти вътре във функционални компоненти.

Чрез използването му, казваме на РЕАКТ, че този компонент трябва да прави нещо след рендериране. РЕАКТ помни подадената функция и я извиква след рендерирането.

Извикваме го вътре в компонента, защото ни позволява да достъпим променливи на състоянието директно от ефекта.

Изпълнява се след всеки рендър.

52
Q

Каква е целта на зависимия масив на useEffect?

A

UseEffect ще стартира само когато един от елементите в масива се е променил. Ако не му се подадат елементи, ще се стартира всеки път.

53
Q

Как да създадем персонален Hook?

A

Това са функции, които могат да се използват повторо. Персоналния хук се пише на JS и името му започва с ‘use’ и може да извиква други хукове.

54
Q

Как работи useState hook, какво му подаваме като аргумент, какво ни връща?

A

Добавя състояние към функция.

  1. Декларираме променлива за състоянието и тя ще съдържа стойността на състоянието, което искаме.
  2. Подаваме начална стойност като аргумент.
  3. Ще ни върне масив с два елемента, текуща стойност и функция, с която да актуализираме състоянието.
  4. Когато използваме тази новодошла функция, РЕАКТ ще рендерира наново компонента и ще отрази състоянието.
54
Q

Какви са правилата за работа с хукове?

A

Да се използват само в горния слой на компонента.

Да се извикват само в РЕАКТ функции.

Да не се ползват с цикли и if-statements.

55
Q

Каква е разликата между клиентския и сървърния рутинг?

A

Начина по който се управляват адресите на уеб страниците.

При сървърния рутинг, като кликнем на линк, браузърът прави заявка към сървъра и той връща нова страница.

При клиентския, първоначално се зарежда цялото приложение от сървъра и всичко се зарежда без нуждата от заявки към сървъра.

56
Q

Как да използваме ХУК, който достъпва URL?

A

Чрез ‘useParams’ хукът, можем да изпращаме допълнителни параметри по пътя и заявки към маршрута. Той връща обект с ключ/стойност.

Чрез ‘useNavigate’ хукът, можем да му подаваме път и да навигираме.

57
Q

Какво е автентикация?

A

Процес на определяне дали някой или нещо е наистина това, за което се представя.

Има няколко типа:
потребител - user ID, нуждае се от парола;
Еднофакторна автентикация (SFA)

58
Q

Какво е JWT?

A

JSON Web Token е отворен стандарт, чрез който споделяме инфо за сигурност между клиент и сървър. Например да си останем в профила, след като сме излезнали от страницата.
Съхранява се локално.

59
Q

Как се споделя състояние между компонентите?

Може ли всеки компонент автоматично да използва контекст?

Кой хук предоставя контекст?

A

С помоща на Context API, той ни позволява да предаваме състояние в цялото приложение без props.

За да се използва автоматично, ще трябва да обгърнем контекста в ‘AuthContet.Provider’.

useContext - предоставя контекст.

60
Q

Какви примери има за автентикация?

A
  1. С парола
  2. MFA - многоразов:
    - код за достъп;
    - CAPTCHA;
  3. Цифров сертификат;
  4. Биометрични:
    - лицево разпознаване;
    - отпечатък;
    - гласово;
    - скенер на очи;
  5. Токен с JWT;
  6. OAuth
61
Q

Каква е разликата между клиентска и сървърна валидация?

A

Клиентската - ивършва се в браузъра - форми и данни.
Сървърна - след като данните са изпратени от клиента.

62
Q

Какво са контролираните компоненти в РЕАКТ?

A

Контролираният компонент в React е такъв, който използва React’s state (състояние) за да управлява стойностите на входните елементи, като например текстови полета.

63
Q

Какво е формулярното състояние и защо да го използваме?

A

Обект, съдържащ информация за цялото състояние на формуляра. Запазва, нулиране и валидиране на полета.

64
Q

Защо да извикваме event.preventDefault() в събмита на формата?

A

За да се предотврати презареждането на страницата.

65
Q

Как се валидират различни форми?

A

Управление на състоянието за валидация.
Добавяне на състояние за валидност на целия формуляр.
Деактивиране на начините за изпращане на невалидни данни.