Zkouška 21.1.2009 (13:00)

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: Zkouška 21.1.2009 (13:00)

Re: Zkouška 21.1.2009 (13:00)

od 1.John » 13. 6. 2011 01:20

protože v kódu to není přetypované
viz

Kód: Vybrat vše

Console.Write("((A) d).m1() => "); ((A)d).m1();
Console.Write("((A) d).m2() => "); ((A)d).m2();
Console.Write("((A) d).m3() => "); ((A)d).m3();

Re: Zkouška 21.1.2009 (13:00)

od flavius_ » 27. 1. 2010 21:35

Ad ta 8) - jaktože to napotřetí vypíše D.m3? Vzhledem k tomu, že je ta m3 new, tak by snad neměla být z pohledu A vidět, i když v A je m3 virtuální... Viz příklad s Beagly ve slidech.

Re: Zkouška 21.1.2009 (13:00)

od svick » 11. 6. 2009 21:13

Návštěvník píše:
cermi píše:
dargor píše:9) 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ého

Tak ze spravna odpoved je b) ?
Jo
Povedal by som, ze skor a)

podla http://msdn.microsoft.com/en-us/library ... S.80).aspx

"Defines a scope, outside of which an object or objects will be disposed."
Jenže "dispose" znamená zavolat metodu IDisposable.Dispose(), u které je napsané
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
Takže správně je opravdu b). Samozřejmě takový objekt pak (nejspíš) není dosažitelný, takže podléhá GC, ale to není podstatou using.

Re: Zkouška 21.1.2009 (13:00)

od Návštěvník » 11. 6. 2009 18:10

cermi píše:
dargor píše:9) 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ého

Tak ze spravna odpoved je b) ?
Jo
Povedal by som, ze skor a)

podla http://msdn.microsoft.com/en-us/library ... S.80).aspx

"Defines a scope, outside of which an object or objects will be disposed."

Re: Zkouška 21.1.2009 (13:00)

od cermi » 5. 2. 2009 01:33

dargor píše:9) 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ého

Tak ze spravna odpoved je b) ?
Jo

Re: Zkouška 21.1.2009 (13:00)

od dargor » 30. 1. 2009 23:49

9) 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ého

Tak ze spravna odpoved je b) ?

Re: Zkouška 21.1.2009 (13:00)

od cermi » 21. 1. 2009 21:41

Přesně tak, jde spíš o detaily v .netu runtimu než o reálné věci (na to byl zas test zápočtový). Já kdybych od někoho dostal kód podobný tomu s tím voláním virtuální overridlé fce v konstruktoru (bezparametrickém navíc) předka, tak mu asi urazím pařátky. Ale zas na druhou stranu je asi dobré o nich aspoň vědět, chyby, kdy jsme si naprosto jistí, že je to takhle, a ono to tak není, se občas špatně hledají. Já jsem dostal těsně za jedna naštěstí, i když třeba u toho usingu jsem si nebyl jistý, přeci jen, v té metodě Dispose můžu uvolňovat i unmanaged paměť (obecně teda, FileStream si nic takového nealokuje, takže jsem nakonec zvolil dobře).

Re: Zkouška 21.1.2009 (13:00)

od Šlupka » 21. 1. 2009 21:19

Donarus píše:Nemate nahodou nekdo nejake poznamky z c# - nejake ty nonslide veci ? .. Prochazel jsem si ted svoje ale popravde receno tam toho moc nenachazim ...
Stáhni si zdrojáky jak je naimplementován .NET a pořádně si prostuduj jak se .NET kompiluje... To jak se v C# programuje do zkoušky potřebovat takřka nebudeš...

Já jsem se C# učil z knížky "Pro C# 2008 and the .NET 3.5 Platform" a musím říct, že takové chujoviny co byly v testu v ní nejsou... A to je to opravdu hodně obsáhlá knížka...

Re: Zkouška 21.1.2009 (13:00)

od Him » 21. 1. 2009 21:14

Donaurus: Ne, ale zkus si opatrit tistenou (mozna je i nekde ke stahnuti) verzi knizky Programujeme profesionalne v C# .. tam je opravdu vsechno, co potrebujes.. staci precist to, kde mas mezery. Navic je to psano jak pro lidi trpici vypadky pameti, neustale autor opakuje a ujistuje se, ze tomu rozumis, takze se to da cist rychle.

Re: Zkouška 21.1.2009 (13:00)

od Donarus » 21. 1. 2009 21:04

Nemate nahodou nekdo nejake poznamky z c# - nejake ty nonslide veci ? .. Prochazel jsem si ted svoje ale popravde receno tam toho moc nenachazim ...

Re: Zkouška 21.1.2009 (13:00)

od R.U.R. » 21. 1. 2009 18:55

Dával jsem pozor na přednáškách a dopoledne před zkouškou jsem si pečlivě prošel slajdy a poznámky z přednášky - a nebylo tam úplně vše co jsem potřeboval vědět, ale na trojku to stačilo.

Re: Zkouška 21.1.2009 (13:00)

od Him » 21. 1. 2009 18:20

Pisemka byla přesně ve stylu pana profesora Ježka: "Proč dávat známku zadarmo, jen ať si ji zaslouží". Nicméně, kdo dával pozor na přednáškách a poctivě si prošel slidy, tak to musel na nějakou známku dát. Já si přečetl asi 200 stránek z knížky, kterou p. Ježek doporučoval a bylo tam vše, co je potřeba vědět na test. Nicméně i tak jsem měl v testu čtyři chyby, tj. výsledná 2.

Re: Zkouška 21.1.2009 (13:00)

od Návštěvník » 21. 1. 2009 15:11

marxin píše: ...
Explicitně:
.NET 3.5
...
snad implicitne, nie?

Zkouška 21.1.2009 (13:00)

od marxin » 21. 1. 2009 14:52

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:
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);

        }
    }
5) Zaškrtněte hodnotové typy: int, Interface I {}, enum A {}, System.Int64, bool[] [1,3,4]
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 { }
        }
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

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();

        }
    }
9) 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é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;
        }
    }
Moje řešení:

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;
            }
        }
    }

Nahoru