Lv.3 Prep Flashcards
Jaký je rozdíl mezi imperativním a deklarativním kódem?
Imperativní programování říká “jak to dělat”, deklarativní “co dělat”.
Jednoduchý příklad deklarativního programování jsou xml definice, či html (pouze specifikuji, co chci vidět), případně klientské skripty, které pouze zobrazují či schovávají informace na obrazovce apod.
Příklad imperativního programování jsou custom konektory (jak a čeho dosáhnu). Nebo například klientský skript součtu používáný k součtu n prvků v arrayi.
Co je to swagger?
Je to open-source framework sloužící k popisu a dokumentaci RESTful webových služeb psaný v YAML nebo JSON.
Jaký je rozdíl mezi synchronní a asyncrhonní metodou?
Syn - Čeká na odpověď než program může pokračovat dále. Většinou jednoduchá logika, které by neměla výrazně zpomalovat chod programu.
Async - Program nečeká na odpověď programu (pokud není nucen awaitováním). Vrací takzvané promises. Může obsahovat komplexnější logiku a přesto nezpomalovat program. Je potřeba dávat si pozor, které funkce awaitujeme a jaký to má vliv na chod programu.
Co je to SOLID?
Je to zkratka pro 5 návrhových principů objektově orientovaného programování.
Single Responsibility - Každá třída (class) by měla mít pouze jednu odpovědnost, tedy pouze jeden důvod k případné změně.
Open/Closed - Software by měl být otevřen k rožříření, ale uzavřen pro úpravy. Tzn. kód by mělo být možné rozšiřovat bez přímých změn existujícího kódu.
Liskov Substitution - Objekty odvozené od určité clasy by měly být schopny nahradit instance této classy bez narušení správnosti programu.
Interface Segregation - Měly by být definovány specifické rozhraní pro každý konkrétní scénář.
př. Definuji scénáře pro tiskárny. Navrchu mám typ IPrinter s metodami tisk, scan, kopírování, 3D tisk. Starší modely ale neumí skenovat ani kopírovat. Vytvořím tedy subclass OldPrinter, kde funkce scan ani copy nebudou povoleny. Založím i subclassy 3DPrinter a ModernPrinter.
Dependency Inversion - Moduly vyšší úrovně by neměli být závislé na modulech nižší úrovně. Oba by měli záviset na abstrakcích.
př. Mám třídu ReportGenerator (který generuje reporty), který potřebuje data source, aby měl z čeho generovat. Vytvořím si tedy třídu DataSource s funkcí get_data. Pokud si v instanci ReportGenerator vytvořím instanci třídy DataSource, poruším tím toto pravidlo, jelikož by se tyto dvě třídy staly přímo závislé na sobě. Místo toho si vytvořím interface IDataSource, kde specifikuji funkci get_data vracející objekt. Třída DataSource bude implementovat tento interface. Třída DataReport nyní může použít jakoukoliv třídu implementující interface IDataSource.
Co je to Platform as a Service? (PaaS)
Model tzv. cloud computingu. Poskytuje platformu a prostředí, pro vývoj, testování a nasazení softwarových aplikací. Uživatelé nemusejí spravovat infrastrukturu a hardwarové stroje pod touto platformou.
Poskytuje: Vývojové nástroje (vývoj, testování a nasazování, může být low code, ale i chyb v programu či správu verzí), automatická škálovatelnost aplikací, databáze.
Je to např. Microsoft Azure App Service, ale může být třeba i Google App Engine.
Co je to Infrastructure as a Service? (IaaS)
Poskytuje virtuální infrastrukturu jako službu. Uživatelé mají přístup k virtuálním strojům, úložištím a síťovým zdrojům. Typicky Azure Virtual Machine nebo Google Compute Engine.
Jako uživatel nemusím řešit hardware (servery).
Co je to Software as a Service? (SaaS)
Poskytuje software jako službu (aplikaci/program) na internetu. Aplikace není třeba instalovat nebo spravovat. Typicky například Miscrosoft 365.
Co je to Function as a Service? (FaaS)
FaaS umožňuje nahrávat a spouštět kód (program) bez nutnosti spravovat infrastrukturu. Typickým příkladem jsou Azure Functions často využívané v custom konektorech.
Co je to DNS - Domain Name System?
Je to systém doménových jmen, který překladá lidsky čitelná jména (url) na IP adresy, které jsou používány pro identifikaci a lokalizaci na internetu.
Co jsou DNS záznamy a jaké typy znáš?
Záznamy obsahují informace o doméně sloužící ke specifickým účelům.
A - Address record: Překládá jména na odpovídající IPv4 adresu (AAAA to samé ale na IPv6 adresu) a PTR překládá zpět na jména
CNAME - Vytváří alias pro existující doménové jméno. (přesměrovává requesty). Například www.fb.com je aliasem pro www.facebook.com
MX (mail exchange) - Určuje mailové servery, které jsou odpovědné za doručování e-mailů.
TXT - Může ukládat různé textové informace, např. ověření vlastnictví domény
Co je to Table storage a co je to blob storage v azure?
Obě jsou služby databáze součástí Azure Storage Services.
Table Storage je úložiště ulkádající jednoduše struktoravaná data do tabulek v podobě obvykle velkého množství záznamů. Každý záznam (řádek) je označen unikátním primárním klíčem, který se skládá z Parittion Key a Row Key. Partition key slouží k rozdělení dat v tabulce (jako složka v počítači) a row key je unikátní identifikátor záznamu (může, ale nemusí být random guid, lepší když nemusí)
Blob Storage dovoluje ukládat a spravovat velké množství nestrukturovaných dat, jako jsou obrázky videa a další binární a textové data. Podporuje verze.
3 základní typy:
Block Blobs - rozděluje data do bloků, každý je uložen nezávisle
Page Blobs - Data jsou organizována do indexovaných stránek
Append Blobs - Postupné přidávání dat na konec souboru, usnadňuje zápisy do logů či žurnálů.
Jaký je rozdíl mezi FetchXML a OData?
FetchXML je specifický pro Microsoft Dynamics CRM, zatímco OData je univerzálnější a používá se v různých kontextech a na různých platformách. Ve fetchXml se tedy v rámci Microsoftu dají poskládat více specifikované query.
Co je to Azure Function?
Azure Functions je služba v rámci cloudové platformy Microsoft Azure, která umožňuje vytvářet a nasazovat funkce (kódy) bez nutnosti spravovat infrastrukturu.
Co je to Azure Storage Account?
Je to služba bezpečného a velice škálovatelného cloudového úložiště.
Typy jsou Blob Storage, Table Storage, Queue Storage a File Storage.
Co je to OAuth?
OAuth je standardní autorizační protokol. Klient se ověří pomocí client id a client secret a díky těmto údajům obdržuje od vlastníka služby dočasné tokeny, které mu dovolují služby využívat.