Zkouska 9.2.2011

kopsys at 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

  1. klasicke binarni pocitani, neco jako

    (1024 ^ 6) & (~(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

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

  1. 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)

  1. 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

  1. 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.

Werkov at 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