„Záróvizsga kvíz - Sznikák” változatai közötti eltérés

kérdések hozzáadása
kérdések hozzáadása
119. sor: 119. sor:
# A Proxy tervezési minta lehetővé teszi objektumok fastruktúrába szervezését.
# A Proxy tervezési minta lehetővé teszi objektumok fastruktúrába szervezését.


== Adottak az alábbi állítások különböző tervezési mintákkal kapcsolatban! Jelölje meg, mely állítások igazak. FIGYELEM, akárhány helyes válasz létezhet! (2023 jan) ==
{{Kvízkérdés|típus=több|válasz=2,4}}
# Az Adapter tervezési mintában az Adapter osztály a Target osztályból származik (vagy a Target interfészt implementálja).
# Az Adapter tervezési mintában (legalábbis annak object adapter változatában) az Adaptee (adaptálandó) osztály - amennyibe lehetősége van rá - továbbítja (delegálja) a kéréseket az Adapter (adapter) osztálynak.
# Az Adapter tervezési mintában a Client osztálynak van egy Target típusú mutatója vagy hivatkozása az Adapter osztály egy példányára.
# Az Adapter minta Object Adapter változatában a Target osztály az Adaptee osztályból származik
== A feladat fájlrendszerbeli mappák és bennük levő fájlok nyilvántartása egy adott objektumstrukturában. Az egyes fájlokról a nevüket és a méretüket, valamint a mappákra a nevüket kell nyilvántartani (memóriában). (2023 jan)==
Elegáns megoldást szeretnénk a következőre:
* Mappa tartalmának listázásakor a mappában levő fájlok és a közvetlen benne levő mappák nevét és méretét kell kiírni a konzolra.
* Az előző pontban, amikor egy mappa méretét írjuk ki a konzolra, akkor a mappa összméretét kell kiírni, melybe valamennyi - a hierarchiában tetszőlegesen mélységben levő - almappájában levő fájlok mérete is beleszámolódik.
Mely tervezési minta biztosít a fentiekre elegáns megoldást?
{{Kvízkérdés|típus=egy|válasz=9}}
# Aggregate
# Singleton
# Observer
# Memento
# FileSystemWatcher
# Container
# Proxy
# Strategy
# Composite
# Adapter
== Adja meg, mely tervezési mintát valósítja meg az alábbi C# nyelvű kódrészlet! (2023 jan) ==
<pre>
interface IDatabase
{
    Data1 GetData1(int id);
    Data2 GetData2(int id);
}
class Database: IDatabase
{
    public Data1 GetData1(int id) { ... }
    public Data2 GetData2(int id) { ... }
}
class DatabaseWithCache: IDatabase
{
    Database database = new Database();
    Cache cache = new Cache();
    public Data1 GetData1(int id)
    {
        Data1 data = cache.Lookup(id);
        // Ha megtaláltuk a cache-ben, visszatérünk azzal, ha nem, akkor lekérdezzük adatbázisból
        if (data != null) return data;
        else return database.GetData1(id);
    }
    public Data2 GetData2(int id)
    {
        Data2 data = cache.Lookup(id);
        // Ha megtaláltuk a cache-ben, visszatérünk azzal, ha nem, akkor lekérdezzük adatbázisból
        if (data != null) return data;
            else return database.GetData2(id);
    }
    ...
}
class Client
{
    void DoSomething(IDatabase db)
    {
        Data1 d = db.GetData1();
        // ...
    }
}</pre>
{{Kvízkérdés|típus=egy|válasz=8}}
# Adapter
# Abstract factory
# Factory method
# Strategy
# Observer
# Singleton
# Composite
# Proxy
# Memento
== A feladat egy Warrior (harcos) osztály elkészítése C# nyelven, mely egy eseménnyel jelzi, ha a harcost sérülés (injury) érte, és az esemény paramétereiben megadja a sérüléspontok számát (points, egész szám)! Adja meg, mely sorok alkalmazásával oldható meg az esemény megvalósítása és biztonságos elsütése! (2023 jan) ==
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
{{Kvízkérdés|típus=több|válasz=5,7,10,11}}
# public InjuredDelegate Injured;
# public InjuredDelegate Injured(int points);
# event void Injured(int points);
# public delegate InjuredDelegate Injured;
# public event InjuredDelegate Injured;
# public event InjuredDelegate Injured(int points);
# delegate void InjuredDelegate(int points);
# InjuredDelegate(points);
# if (InjuredDelegate != null)
# if (Injured != null)
# Injured(points);
== Jelölje meg, mely állítások igazak .NET környezetben szálkezelés vonatkozásában! FIGYELEM, akárhány helyes válasz létezhet! (2023 jan) ==
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
{{Kvízkérdés|típus=több|válasz=2,3}}
a. Amikor egy AutoResetEvent objektum jelzett állapotba kerül, valamennyi rá várakozó szál tovább futhat.
b. .NET környezetben egy folyamat (processz) akkor áll le, ha az összes előtérszála leáll.
c. Egy változó növelése a ++ operátorral nem szálbiztos (nem thread safe).
== Az alábbi állítások a .NET Framework platformra vonatkoznak! Jelölje meg, mely állítások igazak! FIGYELEM, akárhány helyes válasz létezhet! (2023 jan) ==
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
{{Kvízkérdés|típus=több|válasz=1,3,4}}
a. A JIT compiler feladata, hogy a szerelvények IL kódját jellemzően azok futtatásakor gépi kódra fordítsa
b. Az azonosított .NET szerelvényeket csak egy alkalmazás használhatja
c. Egy alkalmazás több szerelvényből is állhat
d. Amikor egy .NET alapú projektet - speciálisabb beállítások alkalmazása nélkül - lefordítunk, olyan .NET szerelvény (exe, dll) születik, mely IL (Intermediate Language) kódú utasításokat tartalmaz
== Adott az alábbi Pipes and filters (csővezeték) architektúra filter megvalósítás pszeudokód: (2023 jan) ==
<pre>void Run()
{
    Data data;
    while (data = inputPipe.Read())
    {
        Data processedData = ProcessData(data);
        outputPipe.Write(processedData);
    }
}</pre>
Melyik forgatókönyvnek felel meg a fenti kód?
{{Kvízkérdés|típus=egy|válasz=2}}
# Csővezeték által vezérelt
# Aktív szűrő által vezérelt
# Passzív szűrő által vezérelt
# Adatforrás által vezérelt
# Adatnyelő által vezérelt
== Adottak az alábbi állítások a C# property, delegate és attribute vonatkozásában. Jelölje meg, mely állítások igazak. FIGYELEM, akárhány helyes válasz létezhet! (2023 jan) ==
{{Kvízkérdés|típus=több|válasz=1,3}}
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
# Feltéve, hogy adott egy Circle osztály és annak egy int típusú Radius tulajdonsága (property), valamint a Circle osztály egy circle nevű példánya/objektuma, akkor a tulajdonság lekérdezése pl. az int n = circle.Radius; formában lehetséges.
# Egy C# attribútum alkalmazásakor az attribútum neve elé a @ karaktert kell tenni.
# A C# attribútumok segítségével deklaratív módon tudunk információt csatolni többek között tagváltozókhoz, metódusokhoz és osztályokhoz.
# Egy C# property (tulajdonság) bevezetésekor mindig be kell vezetni egy tagváltozót is az osztályban, melyben a property értéke tárolásra kerül.
== Adott az alábbi osztály: (2023 jan) ==
<pre>class Game
{
    object syncRoot = new object(); // *1
    bool hasWon = false; // *2
    public void PrintWinner() // *3
    {
        // ...
        lock (syncRoot) // *4
        {
            if (!hasWon) // *5
            {
                hasWon = true;
                Console.WriteLine("Winner!");
            }
        }
    }
}</pre>
A Game osztályal objektumaival szemben elvárás, hogy objektumonként a "Winner!" szöveget csak egyszer írhatja ki a PrintWinner() művelet, akárhányszor is kerül meghívásra.
Mely állítások igazak? A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl. Csak olyan megoldás fogadható el, mely nem jár az osztály használatakor szükségtelen teljesítményromlással (pl. nagy számú párhuzamos hozzáférés esetén sem).
{{Kvízkérdés|típus=több|válasz=1,2}}
# A Game osztály jelen formájában szálbiztos (thread safe), de nem maradna az, ha a teljesítmény javítása érdekében a *5 sorban a "if (!hasWon)" feltételvizsgálatot a lock blokkon kívülre (az elé) helyeznénk.
# A Game osztály jelen formájában szálbiztos (thread safe).
# A Game osztály jelen formájában nem szálbiztos (thread safe), de azzá tehető, ha *3 sorban a public kulcsszó után kiírjuk a synchronized kulcsszót.
# A Game osztály jelen formájában nem szálbiztos (thread safe), de azzá tehető, ha a *1 sorban a syncRoot és a *2 sorban a hasWon változót statikussá tesszük.
== Adottak az alábbi állítások a Document-View (Dokumentum-Nézet) architektúra vonatkozásában. Jelölje meg, mely állítások igazak! (2023 jan) ==
FIGYELEM, akárhány helyes válasz létezhet!
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
{{Kvízkérdés|típus=több|válasz=1,2}}
# A nézetnek van egy hivatkozása a dokumentumára.
# Amikor egy nézetnek valamilyen adatra van szüksége (pl. a megjelenítéshez), akkor azt lekérdezi a dokumentumától.
# Amikor egy új nézet típust kell bevezetni, akkor szükség van a dokumentum osztály módosítására.
# A nézet ősosztályban van egy UpdateAllViews művelet, mely a többi nézetet is értesíti a változásról.
# A dokumentumnak minden nézet típusra van egy külön listája, melyben az adott típusú nézeteket tárolja.


== Adottak az alábbi állítások a Proxy tervezési minta vonatkozásában! Jelölje meg, mely állítások igazak. FIGYELEM, akárhány helyes válasz létezhet! (2022 jan) ==
== Adottak az alábbi állítások a Proxy tervezési minta vonatkozásában! Jelölje meg, mely állítások igazak. FIGYELEM, akárhány helyes válasz létezhet! (2022 jan) ==