2008. 06. 04-ei szoftvertechnikák vizsga
A VIK Wikiből
(SzoftTechVizsga080604 szócikkből átirányítva)
1. Milyen fajta biztonsági megoldások vannak a .NET keretrendszerben? (12p)
- Szerep alapú biztonság (Role based security): A felhasználó rendszerben betöltött szerepén és jogain alapuló biztonsági mechanizmus.
- Kóderedet alapú biztonság (Code access security): Képes meghatározni, hogy a kód mit tehet, a meghívott kód mit tehet, valamint képes egyértelműen azonosítani a kódot.
2. C# Event + példaprogram (12p)
Lásd: 2007. május 30-ai vizsga 2. feladata
3. Eseményvezérelt programozás (15p)
Lásd: 2007. május 30-ai vizsga 3. feladata
4. Szálkezelés (12p)
a.) Miért könnyebb az egy folyamaton belüli szálak kommunikációja? (3p)
Röviden: * folyamatok elszigeteltek, a folyamatok közötti kommunikáció nehéz * A szálak egy adott folyamaton belül egy címtartományban vannak, így "könnyen" kommunikálnak A folyamatok egymástól elszigeteltek: * Védettek egymástól (minden folyamat saját kb. 2 GB virtuális címtartományt kap (32 bites OS esetén); a virtuális címeket a memóriamenedzser fizikai címekre képezi le (RAM) * Az OS védett a felhasználói folyamatoktól * Egy folyamat megszűntetésének nincs hatása a többire/OS-re
b.) Szálbiztos osztály fogalma egy-két mondatban (6p)
Szálbiztos: A kölcsönös kizárás problémája:<br/> * Környezet: megosztott erforráshoz több szál fér hozzá * Megosztott erőforrás: memória (változók, objektumok), fájl, stb. * Meg kell őrizni a konzisztenciát. Egy CPU esetén sem tudjuk, mikor veszi el az ütemez a szál futási jogát! Megoldás: biztosítanunk kell, hogy a megosztott erőforráshoz egyidőben csak egy szál férjen hozzá. (oszthatatlan test_and_set) Szálbiztos osztály: Egy osztály szálbiztos, ha úgy lett megírva, hogy többszálú környezetben is biztonságosan használható. * Maga garantálja a konzisztenciát * A felhasználás során már nem kell zárolni... public class Stack<T>{ readonly int size; int current = 0; T[] items; object syncObject = new object(); public void Push(T item){ lock(syncObject){ items[current++] = item; } } public T Pop(){ lock(syncObject){ return items[current--]; } } }
c.) Lock, Mutex, ReaderWriterLock konstrukciók összehasonlítása (12p) <br
Név | Cél | Folyamatok | Sebesség |
lock C# utasítás (Monitor.Enter/Monit or.Leave) | Biztosítja, hogy egy adott erőforráshoz/kódrészlethez egyidőben csak egy szál férhet hozzá. | nem | gyors |
Mutex | Mint a lock, de folyamatok között is. Pl. annak megoldására, hogy egy alkalmazásból csak egy példány indulhasson. | igen | közepes |
Semaphore | Mint a Mutex, de nem egy, hanem max. N hozzáférést engedélyez. | igen | közepes |
ReaderWriterLock | Sok olvasóra optimalizált megoldás. Egyszerre több olvasó is hozzáférhet az erforráshoz, de íróból csak egy (illetve az író kizárja az olvasókat is). Pl. ritkán módosított cache megvalósítása. | nem | közepes |
Pelda lockra: class ThreadSafeClass{ static bool flag; // Közös erforrás static object syncObject = new object(); static void Main(){ new Thread(Run).Start(); new Thread(Run).Start(); } static void Run(){ lock (syncObject){ while(flag){ flag = 1; // EF. használata flag = 0; } } } }
5. Rajzolj fel példát 1:1, 1:n, m:n relációkra, és írd fel, milyen táblákba képeznéd le őket! (12p)
Lásd: 2007. május 30-ai vizsga 5. feladata
6. Tervezési minták (13p)
a.) Mik azok, mire valók? (3p)
b.) Singleton kód c++ ||| Java || C# nyelven (10p)
Lásd: 2007. június 6-ai vizsga 6. feladata
7. Model-View-Controller és Document-View jellemzés, leírás + példa az egyikre (13p)
Lásd: 2007. június 6-ai vizsga 7. feladata
8. Mi a szerver oldali vezérlők szerepe? Milyen típusok vannak? (13p)
a.) HTML Controls
- System.Web.UI.htmlControls névtérben
- Egy-egy HTML taget tesz elérhetővé
- Szorosan burkolja az eredeti HTML elemeket, minimális funkcionalitást ad hozzá -> gyrosabb, mint a WebControl
b.) Web Controls
- System.Web.UI.WebControls névtérben bonyolultabb funkcionalitású osztályok
- Összetettebb HTML kódot generál
c.) Mobile Controls
- Mobil web alkalmazások készítéséhet
- Figylembe veszi az adott mobil kliens képességeit