# Zkouska 9.2.2011

<{ForumPost(poster="kopsys", timestamp=2011-02-09 20:43:39)}>
Ahoj, az kdyz jsem to sepisoval, tak jsem zjistoval, jak moc si zadani nepamatuju :? . Ale tak aspon orientacne. Pisemka mi prisla jako jedna z tezsich, aspon co jsem videl tady na foru.  
Nektere casti si bohuzel nepamatuju vubec, takze spoleham, ze me mi spoluzkouseni doplni :wink:   
  
1.nemuzu si vzpomenout  
  
2.  
klasicke binarni pocitani, neco jako 

    (1024 ^ 6) & (~(3))
    

3.

    A:
    
    var x = "string";
    x = x.Length;
    
    B:
    
    System.Object x = "string";
    x = x.Length;
    

* A se neprelozi
* B se neprelozi
* A a B se prelozi, NEJSOU ekvivalentni
* A a B se prelozi, JSOU ekvivalentni

4.

    interface I<in T> {void M<U>();
    }
    
    class C<T> {void M<U>() where U:T {}
    }
    class Zvire {}
    class Savec : Zvire {}
    class Kocka : Savec {}
    Class Vrabec: Zvire {}
    
    class Program {
     public static void Main(string [] args) {I<Zvire> izvire = new C<Zvire>();I<Kocka> ikocka = new C<Kocka>();
    ...
     }
    }
    

Ktera moznost pasuje misto "..." tak, aby se kod v poradku zkompiloval a probehl bez chyby?  

* A)   
izvire = ikocka;  
izvire.M<Zvire>;
* B)  
izvire = ikocka;  
izvire.M<Savec>;
* C)  
izvire = ikocka;  
izvire.M<Kocka>;
* D)  
izvire = ikocka;  
izvire.M<Vrabec>();
* E)   
ikocka = izvire;  
ikocka.M<Zvire>();
* F)  
ikocka = izvire;  
ikocka.M<Savec>();
* G)  
ikocka = izvire;  
ikocka.M<kocka>();
* H)  
ikocka = izvire;  
ikocka.M<Vrabec>();
* I)  
I<Savec> = ikocka; ... a nejake variace na tohle, to si presne nevybavuju, pomozte nekdo

  
5.  
Implemntaci ceho si muze vynutit interface I, ktery trida C implementuje?

* abstraktni metodu
* public metodu
* internal metodu
* staticke pole
* datovou polozku
* property
* opereator\[] (indexer)
* implementaci jineho interface
* copy konstruktor

(nebo neco takove, tahle otazka je dost klasicka)  
  
6.  
Mame program a.exe, zkompilovany pro AnyCPU, psany v managed C#, dal mame b.dll kompilovanou pro x86, taky v managed C# a potom mame c.dll psany unmanaged C++. a.exe pouziva metody z b.dll a b.dll pres DllImport pouziva c.dll. S jakym nastavenim musime zkompilovat c.dll, abychom mohli a.exe spustit na Windows 7 64-bit na architekture Intel64/AMD64?  

* A) x86
* B) x64
* C) AnyCPU
* D) s zadnym nastavenim to nebude fungovat

  
7.nemuzu si vzpomenout  
  
  
8.  
Namisto "..." muzete, ale nemusite neco dopsat. Nikam jinam nic pripisovat nesmite. Upravte kod tak, aby fungoval bez chyby a na stdout vypsal

    A x
    B y

    class ArrayComparer<T> ...
    {
    private int index;
    public ArrayComparer<T>(int index) {this.index = index;
    }
    public CompareTo(T[] x, T[] y) {return x[index].CompareTo(y[index]);
    }
    }
    
    class Program {
    static string[][] table = {{ "B", " y" }, { "A", " x" }
    };
    public static void Main(string[] args) {Array.Sort(... table, ... new ArrayComparer ... ( 0) );	
    Array.ForEach(table, (x) => Console.WriteLine(x[0] + x[1]) );
    }
    }
    
    

Je dost pravdepodobne, ze jsem se alespon v necem zmylil, takze prosim, pokud vite o me chybe a nebo si vzpomenete na to, co ja jsem zapomnel, pro budouci generace to sem doplnte.
<{/ForumPost}>

<{ForumPost(poster="Werkov", timestamp=2011-02-09 22:59:42)}>
ad 4) Tuším, že ta třída to rozhraní implementovala explicitně.  
  
ad 7) Něco tu chybí, tak to mohlo být tohle:

    string s1 = "a", s2 = "b", s3 = "ab";
    s1 += s2;
    bool a, b;
    
    a = s1 == s3;
    b = (object)s1 == (object)s3;
    

Co bude v a, b:

* Nejde to přeložit
*  false, false
*  false, true
*  true, false
*  true, true

<{/ForumPost}>

