„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) == |
A lap 2023. december 11., 15:26-kori változata
Az alábbiak közül mely állítások igazak? (2023 jun)
- Az érettség a szoftvertermékre vonatozó nemfunkcionális követelmény
- A Model-View-Controller interaktív rendszerek tervezésekor használható architektúra stílus
- Az ekvivalencia particionálás fehérdoboz tesztelési technika
- A SPICE lépcsős érettségi modell
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 jun)
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
- C# nyelven nincs lehetőség arra, hogy egy delegate objektumot függvényeknek paraméterként adjunk át.
- Egy C# property (tulajdonság) bevezetésekor a beállító szakasz megírása során a set kulcsszót kell használni, és a set kulcsszót követően "(" ")" zárójelek között be kell vezetni egy paramétert, melyben a tulajdonság új értékét megkapjuk.
- C# nyelven a readonly kulcsszó alkalmazásával van lehetőségünk csak olvasható tulajdonságok (property-k) bevezetésére.
- A C# eseményekről leiratkozás a -= operátorral lehetséges.
A feladat egy DocumentRepository (dokumentum tár) osztály elkészítése C# nyelven, mely egy eseménnyel jelzi, ha egy dokumentumot töröltek belőle, és az esemény paramétereiben megadja a törölt dokumentum nevét (docName, string típusú)! Adja meg, mely sorok alkalmazásával oldható meg az esemény megvalósítása és biztonságos elsütése! (2023 jun)
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
- public DocumentDeletedHandler DocumentDeleted;
- DocumentDeleted(docName);
- public DocumentDeletedHandler DocumentDeleted(string docName);
- event void DocumentDeleted(string docName);
- delegate void DocumentDeletedHandler(string docName);
- if (DocumentDeleted != null)
- DocumentDeletedHandler(docName);
- public event DocumentDeletedHandler DocumentDeleted(string docName);
- public event DocumentDeletedHandler DocumentDeleted;
- public delegate DocumentDeletedHandler DocumentDeleted;
- if (DocumentDeletedHandler != null)
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 jun)
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
- Amikor egy .NET alapú projektet - speciálisabb beállítások alkalmazása nélkül - lefordítunk (pl. Visual Studioban), olyan .NET szerelvény (exe, dll) születik, mely natív utasításokat tartalmaz
- .NET környezetben az objektumok azonnal felszabadulnak, amint az utolsó hivatkozás is megszűnik rájuk
- A C# JIT compiler feladata, hogy a C# kódot köztes kódra fordítsa le
- A .NET futtatókörnyezet rövid neve: CLR (Common Language Runtime)
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 jun)
(A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.)
- A .NET szál létrehozásakor egy szálfüggvényt kell a Thread osztály konstruktorának megadni (egy delegate formájában).
- A Thread osztály Join műveletével lehet egy szál futásának a végét bevárni.
- Amikor egy .NET AutoResetEvent objektum jelzett állapotba kerül, minden rá várakozó szál tovább futhat.
Adottak az alábbi állítások a Factory Method tervezési mintával kapcsolatban! Jelölje meg, mely állítások igazak. FIGYELEM, akárhány helyes válasz létezhet! (2023 jun)
- A Factory Method tervezési minta megvalósításában egy osztály a leszármazott osztályára bízza egy másik osztály egy objektumának létrehozását.
- A Factory Method tervezési minta segítségével egy osztály akkor is létre tudja hozni egy másik osztály egy példányát, ha annak típusát nem ismeri.
Jelölje meg, mely állítások igazak! (A feladat csak akkor ér pontot, ha minden helyes választ -- és csakis ezeket -- megjelöl.) (2023 jun)
- A háromrétegű architektúra egyik rétege az üzleti logikai réteg (Business Logic Layer).
- A Document-View architektúra az Observer tervezési minta elveire épül.
A Composite tervezési minta fontosabb osztályai a következők: Client, Component, Composite (összetett) és Leaf (levél). Jelölje meg a helyes választ! (2023 jun)
- A Component osztálynak van egy közös gyűjteménye Composite és Leaf objektumokból.
- A Composite osztálynak van egy művelete, mely egy ciklusban meghívja a tartalmazott objektumok ugyanolyan nevű műveletetét.
- A Composite osztálynak van egy gyűjteménye Component, valamint egy másik gyűjteménye Leaf objektumokból.
- A Client osztálynak van egy gyűjteménye Composite, valamint egy másik gyűjteménye Leaf objektumokból.
- A Component osztálynak van egy gyűjteménye Composite, valamint egy másik gyűjteménye Leaf objektumokból.
Adott az alábbi osztály: (2023 jun)
class DataProcessor { static object syncRoot = new object(); // *1 bool exit = false; // *2 List<int> data = new List<int>(); // *3 public void AddData(int n) { data.Add(n); // *4 } public void SignalExit() { lock (syncRoot) { exit = true; // *5 } } public void ProcessData() { while (!exit) { lock (syncRoot) // *6 { if (data.Count > 0) // *7 { int n = data[0]; data.RemoveAt(0); Console.WriteLine(n); } } Thread.Sleep(10); } } }
Jelölje meg mely állítások igazak a kódrészlet vonatkozásában többszálú környezetben! Célunk, hogy a DataProcessor osztály szálbiztos (thread-safe) legyen. FIGYELEM, akárhány helyes válasz létezhet!
- A SignalExit() függvényben a *5 sor körüli lock utasítás eltávolítható.
- A *1 sor elejéről a static kulcsszó eltávolítható, és célszerű is eltávolítani.
- A helyes működés érdekében a *4 sor köré egy lock blokkot kell tenni.
- A DataProcessor osztály jelen formájában szálbiztos (thread safe).
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! (2023 jun)
- A Proxy mintában van egy interfész/ősosztály, mely elrejti a kliens számára, hogy nem az eredeti, hanem egy proxy objektummal kommunikál.
- A Proxy tervezési minta lehetővé teheti, hogy egy objektumhoz más objektumok szabályozott módon férhessenek hozzá.
- A Proxy mintában a kliens objektum kéréseit az alkalmazás futása közben egy proxy objektum fogadja (vagyis a kliens egy proxy objektummal van közvetlen kapcsolatban).
- 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)
- 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?
- 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)
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(); // ... } }
- 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.)
- 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.)
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.)
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)
void Run() { Data data; while (data = inputPipe.Read()) { Data processedData = ProcessData(data); outputPipe.Write(processedData); } }
Melyik forgatókönyvnek felel meg a fenti kód?
- 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)
(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)
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!"); } } } }
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).
- 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.)
- 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)
- A Proxy mintában van egy interfész/ősosztály, mely elrejti a kliens számára, hogy nem az eredeti, hanem egy proxy objektummal kommunikál.
- A Proxy tervezési minta lehetővé teszi objektumok fastruktúrába szervezését.
- A Proxy mintában a kliens objektum kéréseit az alkalmazás futása közben egy proxy objektum fogadja (vagyis a kliens egy proxy objektummal van közvetlen kapcsolatban).
- A Proxy tervezési minta lehetővé teszi elemi és összetett objektumok egységes kezelését
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! (2022 jan)
- Egy C# attribútum alkalmazásakor az attribútum neve elé a @ karaktert kell tenni.
- Egy C# delegate objektumot át lehet adni függvényparaméterként is.
- 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.
- Feltéve, hogy adott egy Rectangle osztály és annak egy Width tulajdonsága (property), valamint a Rectangle osztály egy rect nevű példánya/objektuma, akkor a tulajdonság beállítása a rect.SetWidth(10) formában lehetséges.
Adottak az alábbi állítások a .NET AutoResetEvent osztályával kapcsolatban. Jelölje meg mely állítások igazak! FIGYELEM, akárhány helyes válasz létezhet! (2022 jan)
- Eseményére feliratkozni a += operátorral lehet.
- Alapvetően a többszálú környezetben történő hatékony jelzés és jelzésre várakozás probléma megoldásának egy eszköze.
- Egy objektuma automatikusan jelzett állapotba kerül, amikor egy szál várakozni kezd rá.
- Amikor több szál is várakozik egy objektumára, és az objektum jelzett állapotba kerül, csak egy szál futhat tovább.
Egy alkalmazásban egy osztályt működését minél egyszerűbben bővíthetővé, kiterjeszthetővé szeretnénk tenni, akár a működésének/viselkedésének különböző aspektusai (szempontjai) szerint is. Mely tervezési mintát választaná ehhez? (2022 jan)
- Singleton
- Factory method
- Abstract factory
- Adapter
- Memento
- Proxy
- Template Method
- Composite
- Strategy
- Observer
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! (2022 jan)
- C# kódot a JIT compiler fordítja köztes (IL) kódra
- A .NET IL kód processzor és architektúra független
- .NET környezetben az objektumok azonnal felszabadulnak, amint az utolsó hivatkozás is megszűnik rájuk
- Egy alkalmazás több szerelvényből is állhat
Adott az alábbi Pipes and filters (csővezeték) architektúra filter megvalósítás pszeudokód: (2022 jan)
Data Read() { Data data = prevFilter.Read(); Data processedData = ProcessData(data); return processedData; }
Melyik forgatókönyvnek felel meg a fenti kód?
- Passzív szűrő által vezérelt
- Csővezeték által vezérelt
- Adatforrás által vezérelt
- Adatnyelő által vezérelt
- Aktív szűrő által vezérelt
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! (2022 jan)
- A szálbizosság (thread safety) fogalma azt jelenti, hogy az adott osztály többszálú környezetben is biztonságosan használható.
- A .NET Framework List osztálya szálbiztos (thread safe).
- Szálak kiléptetésére a Thread osztály Abort művelete javasolt.
- A Thread osztály Join műveletével lehet egy szál futásának a végét bevárni.
A feladat egy Collection (gyűjtemény) osztály elkészítése C# nyelven, mely egy eseménnyel jelzi, ha az elemszáma megváltozott, és az esemény paramétereiben megadja a régi és az új elemszámot! Adja meg, mely sorok alkalmazásával oldható meg az esemény megvalósítása és biztonságos elsütése! (2022 jan)
- public LengthChangedDelegate LengthChanged;
- event void LengthChanged(int oldValue, int newValue);
- delegate void LengthChangedDelegate(int oldValue, int newValue);
- public delegate LengthChangedDelegate LengthChanged;
- public event LengthChangedDelegate LengthChanged(int oldValue, int newValue);
- public LengthChangedDelegate LengthChanged(int oldValue, int newValue);
- public event LengthChangedDelegate LengthChanged;
- if (LengthChangedDelegate != null)
- if (LengthChanged != null)
- LengthChangedDelegate(oldValue, newValue);
- LengthChanged(oldValue, newValue);
Adott egy osztály. Az objektumainak állapotát úgy szeretnénk elmenteni és visszaállítani egy másik osztályból, hogy nem tesszük publikussá a tagváltozóit. Mely tervezési mintát célszerű használni a megoldás során? (2022 jan)
- Memento
- Strategy
- Observer
- Proxy
- Singleton
- Composite
- Adapter
- Factory method
- Snapshot
- UndoStore
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! (2021 jan)
FIGYELEM, akárhány helyes válasz létezhet!
- A Document-View architektúrában a Controller osztály feladata a felhasználói interakciók kezelése.
- A Document-View architektúrában a dokumentumban külön tagváltozót vezetünk be minden egyes nézetre.
- A Document-View architektúrában a dokumentumnak van egy vagy több olyan művelete, mellyel az állapotát a nézetek bármikor le tudják kérdezni.
- A Document-View architektúrában a nézetnek van egy hivatkozása a dokumentumára.
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! (2021 jan)
- .NET platformra lehet C++nyelven is fejleszteni
- .NET környezetben az objektumok azonnal felszabadulnak, amint az utolsó hivatkozás is megszűnik rájuk
- A .NET futtatókörnyezet rövid neve: CLR
Adott az alábbi C# nyelvű .NET alkalmazás kódrészlet. (2021 jan)
class Counter { int counter = 0; // *1 object syncRoot = new object(); // *2 public int GetValue() // *3 { lock (syncRoot) { return counter; } } public void IncreaseCounter(int delta) // *4 { lock (syncRoot) { counter += delta; } } }
Jelölje meg mely állítások igazak a kódrészlet vonatkozásában többszálú környezetben! FIGYELEM, akárhány helyes válasz létezhet!
- A *2 sor elejére nem kell plusszban beírni a static kulcsszót, anélkül is helyes a működés
- A kód nem működne megfelelően, ha a *2 sorban a syncRoot típusát int-re cserélnénk
- A *3 GetValue() függvényben a lock utasítás eltávolítható (ha legalább 32 bites környezetről van szó)
- A *4 IncreaseCounter() függvényben a lock utasítás eltávolítható
- A *4 IncreaseCounter() függvényben a lock utasítás eltávolítható, de akkor ki kell írni a függvény elé a synchronized kulcsszót.
A feladat egy Car osztály elkészítése C# nyelven, mely egy eseménnyel jelzi, ha az autó sebessége meghalad egy adott sebességkorlátot! (2021 jan)
Adja meg, mely sorok alkalmazására van szükség a megoldásban, ha nem használhatja a ?. operátort!
- event void SpeedLimitExceededDelegate(int speed, double percent);
- delegate void SpeedLimitExceededDelegate(int speed, double percent);
- public SpeedLimitExceededDelegate SpeedLimitExceeded;
- public event SpeedLimitExceededDelegate SpeedLimitExceeded;
- public delegate SpeedLimitExceededDelegate SpeedLimitExceeded;
- public event SpeedLimitExceededDelegate SpeedLimitExceeded(int speed, double percent);
- public SpeedLimitExceededDelegate SpeedLimitExceeded(int speed, double percent);
- public delegate SpeedLimitExceededDelegate SpeedLimitExceeded(int speed, double percent);
- if (SpeedLimitExceeded != null)
- if (SpeedLimitExceededDelegate != null)
- SpeedLimitExceededDelegate(speed, percent);
- SpeedLimitExceeded(speed, percent);
Adott egy Car nevű C# nyelven megírt osztály, mely már rendelkezik egy int típusú speed nevű tagváltozóval. Ezt kell egy olyan tulajdonsággal (property) kiegészíteni, mellyel a jármű sebessége lekérdezhető, beállítható, de a beállításra csak az osztályon belül van lehetőség. Melyik a helyes és legcélravezetőbb megoldás? (2021 jan)
public int Speed { get { return speed; }; set { speed = value; } }
public int Speed { get { return length; }; set { } }
public int Speed { get { return speed; }; }
public int Speed { get { return speed; }; private set { speed = value; } }
public int Speed { get { return speed; }; set; }
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! (2021 jan)
- 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 tervezési mintában az Adapter osztály a Target osztályból származik (vagy a Target interfészt implementálja).
- Az Adapter minta Object Adapter változatában a Adaptee implementálja a Target interfészt (vagy a Target osztályból származik).
- Az Adapter tervezési mintában (legalábbis annak object adapter változatában) az Adapter (adaptáló) osztály - amennyibe lehetősége van rá - továbbítja (delegálja) a kéréseket az Adaptee (adaptálandó) osztálynak.
Egy online bolt alkalmazásban a feladata egy a bevásárlókosár lezárását (szállítási cím kezelése, megerősítés, fizetés) kezelő osztály megvalósítása. Az osztálynak több fizetési módot (pl. bankkártya, átutalás) kell támogatnia, és könnyen kiterjeszthetőnek kell lennie újabb fizetési módokkal. Mely tervezési mintát alkalmazná a megvalósítás során? (2021 jan)
- Composite
- Memento
- Observer
- Strategy
- Singleton
- Proxy
- Factory method
- Adapter
- Abstract factory
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! (2021 jan)
- A C# kódot a JIT compiler fordítja gépi (IL) kódra
- A dinamikusan lefoglalt memória felszabadítása nem a fejlesztő feladata
- Az elterjedtebb processzorok képesek a köztes (IL) kódot közvetlenül futtatni
- A C# kódot a JIT compiler fordítja köztes (IL) kódra
Ön egy alkalmazást fejleszt .NET platformra. Az alkalmazást a felhasználók a saját gépeiken több példányban is mepróbálhatják elindítani (akár teljesen egyidőben). Az ön feladata annak megoldása, hogy az alkalmazás csak egy példányban fusson: vagyis, ha az alkalmazásból úgy indít új példányt a felhasználó, hogy már fut, akkor az újabb példány ezt detektálja, és azonnal lépjen ki (fejezze be a futását). Mit használna az alábbiak közül ennek megvalósításához? (2021 jan)
- lock
- synchronized
- StartCoordinator
- AutoResetEvent
- Mutex
- Singleton
- ThreadPool
Adja meg, mely tervezési mintát valósítja meg az alábbi C# nyelvű kódrészlet! (2021 jan)
interface Item { void Method1(); } class SimpleItem: Item { public void Method1() { … } } class SeveralItems: Item { Item[] items; … public void Method1() { foreach (var item in items) item.Method1(); } } class Client { Item[] items; … void PorcessAllItems() // [sic.] { … foreach (var item in items) item.Method1(); … } }
- Composite
- Adapter
- Memento
- Observer
- Proxy
- Abstract factory
- Singleton
- Strategy
- Factory method