Test obsahuje v první části zaškrtávací možnosti, minimálně jedna možnost je vždy správně, za každé špatné zaškrtnutí jeden trestný bod( pokud otázka obsahuje 5 správných možností a žádnou nevyberu mám -5). Poslední příklad je na doplnění kódu (maximálně -4 body).
Hodnocení (# trestných bodů):
0-2 (výborně)
3-5 (velmi dobře)
6-8 (dobře)
9- (neprospěl)
Implicitně:
.NET 3.5
Test:
1) Určete výsledek int i = -8 >> 1; [-4]
2) Nějaká konstrukce, kde je třída C potomkem structu S, což nejle.
3) Velikost intu [4B]
4) Co bude na konzoli [26]
Kód: Vybrat vše
class A {
public static int a = 5;
public A() {
a *= 3;
m();
}
public virtual void m() {
a++;
}
}
class B : A {
public B() {
a *= 2;
}
public override void m() {
a -= 2;
}
}
class Program {
static void Main(string[] args)
{
B b = new B();
Console.WriteLine(A.a);
}
}
6) Co může být T? a
a) Referencční typ
b) Hodnotový typ
c) Číselné typy (int, float, double, ...)
d) Primární typy(bool, char, byte, int, ...)
e) T smí obsahovat jenom bezparametrický konstruktor
[b,c,d]
7) Jaký bude výstup následujícího programu
Kód: Vybrat vše
static void Main() {
try {
Main();
} catch { }
}
b) Program po spuštění skončí bez chyby
c) Program se zacyklí do nekonečna
d) Skončí s chybou
[d - Stack overflow, v 3.5 .NETu je tomu tak]
8) Napište jaké se budou volat metody. [A.m1(), D.I.m2(), D.m3()] Něco v tomto stylu
Kód: Vybrat vše
interface I {
void m1();
void m2();
void m3();
}
class A : I {
public void m1() { Console.WriteLine("A::m1()"); }
public virtual void m2() { Console.WriteLine("A::m2()"); }
public virtual void m3() { Console.WriteLine("A::m3()"); }
}
class D : A, I {
public override void m2() { Console.WriteLine("D::m2()"); }
void I.m2() { Console.WriteLine("D::I.m2()"); }
public new void m3() { Console.WriteLine("D::m3()"); }
}
class Program {
static void Main(string[] args) {
I d = new D();
Console.Write("((A) d).m1() => "); d.m1();
Console.Write("((A) d).m2() => "); d.m2();
Console.Write("((A) d).m3() => "); d.m3();
}
}
a) Uvolnění paměti alokované fs
b) Uvolnění systémových zdrojů
c) Když se nepovede připoj. k souboru v parametrech, pokračuje bez chyby
d) Něco jiného
10) Doplnění do kódu, aby byl vždy v konzistentním stavu (thread safe) a aby se choval správně za všech podmínek, popřípadě vyhodil výjimky !
Kód: Vybrat vše
class Stack<T> {
class Item {
public T value;
public Item next;
public Item(T v, Item n) {
value = v;
next = n;
}
}
Item top;
public void Push(T v) {
top = new Item(v, top);
}
public T Pop() {
T value = top.value;
top = top.next;
return value;
}
}
Kód: Vybrat vše
class Stack<T> {
class Item {
public T value;
public Item next;
public Item(T v, Item n) {
value = v;
next = n;
}
}
Item top;
private object locker = new object();
public void Push(T v) {
lock (locker) {
top = new Item(v, top);
}
}
public T Pop() {
lock (locker) {
if (top == null)
throw new Exception("Empty stack !");
T value = top.value;
top = top.next;
return value;
}
}
}