Zadání:
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:
Určete výsledek int i = -8 >> 1; [-4]
Nějaká konstrukce, kde je třída C potomkem structu S, což nejle.
Velikost intu [4B]
Co bude na konzoli [26]
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); } }Zaškrtněte hodnotové typy: int, Interface I {}, enum A {}, System.Int64, bool[] [1,3,4]
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]Jaký bude výstup následujícího programu
static void Main() { try { Main(); } catch { } }
a) Nepůjde zkompilovat
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
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();
}
}
Použití using(blok obsahující FileStream f = new FileStream(...) { blok kódu}), k čemu blok using
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éhoDoplně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 !
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; } }
Moje řešení:
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;
}
}
}