Na podsumowanie konferencji Code Camp 2009 w Warszawie z mojej perspektywy nadejdzie jeszcze czas. Najpierw chciałbym napisać o konkursie, który udało mi się zorganizować przy tej okazji. W skrócie konkurs składał się z dwóch etapów. Pierwszy etap (tzw. konkurs skojarzeniowy) odbył się w tygodniu poprzedzającym konferencję i polegał na odgadnięciu nazwy miejsca (kraju, miasta, wyspy itd.) na podstawie zdjęć, obrazków czy też opisu słownego. Wszystkie te miejsca miały tą wspólną cechę, że ich nazwy zostały użyte jako nazwy kodowe różnych produktów firmy Microsoft. Drugi etap, konkurs kartkowy, odbył się w czasie konferencji i polegał na odpowiedzeniu na 5 testowych pytań. Odpowiadając na pytanie nie można było korzystać z komputera, Internetu czyli trzeba było liczyć tylko na własną głowę.
Jak wyszło? Mówiąc szczerze nie jest do końca zadowolony. Frekwencja co tu dużo mówić nie dopisała. W konkursie wzięło udział tylko 6 osób. Chociaż z tego co dowiedziałem się od bardziej doświadczonych kolegów to i tak całkiem dobry wynik :)
Jeśli chodzi o konkurs skojarzeniowy to okazał się on dość łatwy i generalnie uczestnicy nie mieli problemów z odpowiedzeniem na pytania. Z konkursem kartkowym było już gorzej, poprawnych odpowiedzi było zdecydowanie mniej. Wydaje mi się, że było to spowodowane dwoma czynnikami. Po pierwsze pytania mogły być zbyt szczegółowe ale ja nie jestem tutaj obiektywny. Po drugie, konkurs był przewidziany na raptem 10 - 15 minut. Najwyraźniej nie udało mi się dostosować poziomu pytań do tak krótkiego czasu. Muszę o tym pamiętać i następnym razem przetestować pytania na znacznie większej grupie ludzi niż to uczyniłem.
Poniżej zamieszczam pytania i odpowiedzi do obu konkursów:
Jak wyszło? Mówiąc szczerze nie jest do końca zadowolony. Frekwencja co tu dużo mówić nie dopisała. W konkursie wzięło udział tylko 6 osób. Chociaż z tego co dowiedziałem się od bardziej doświadczonych kolegów to i tak całkiem dobry wynik :)
Jeśli chodzi o konkurs skojarzeniowy to okazał się on dość łatwy i generalnie uczestnicy nie mieli problemów z odpowiedzeniem na pytania. Z konkursem kartkowym było już gorzej, poprawnych odpowiedzi było zdecydowanie mniej. Wydaje mi się, że było to spowodowane dwoma czynnikami. Po pierwsze pytania mogły być zbyt szczegółowe ale ja nie jestem tutaj obiektywny. Po drugie, konkurs był przewidziany na raptem 10 - 15 minut. Najwyraźniej nie udało mi się dostosować poziomu pytań do tak krótkiego czasu. Muszę o tym pamiętać i następnym razem przetestować pytania na znacznie większej grupie ludzi niż to uczyniłem.
Poniżej zamieszczam pytania i odpowiedzi do obu konkursów:
Konkurs skojarzeniowy
Odpowiedzi
- Dublin - Opis
- Hawaii - Visual Studio
- Astoria - ADO.NET Data Services
- Kilimanjaro - Sql Server 2010/Dynamics CRM 4.0
- Orleans - Opis
- Geneva - Opis
- Paris - Opis
- Ibiza - Sync Framework
- Oslo - Opis
- Quebec - Windows Embeded 2010
Konkurs kartkowy
1. Mamy definicje dwóch klas jak poniżej:class Base { public virtual void Fun(int x) { Console.WriteLine("Base.Fun(int x)"); } } class Derived : Base { public override void Fun(int x) { Console.WriteLine("Derived.Fun(int x)"); } public void Fun(object o) { Console.WriteLine("Derived.Fun(object o)"); } }Co wypisze na ekran podany kod:
Derived d = new Derived(); d.Fun(1);
- Base.Fun(int x)
- Derived.Fun(int x)
- Derived.Fun(object o)
- Wywołanie metody spowoduje wyjątek
Nullable<int> nullable = new Nullable<int>(); Type t = nullable.GetType();Jaki rodzaj wyjątku zostanie rzucony po uruchomieniu tego kodu?
- Żaden
- InvalidOperationException
- NullReferenceExcpetion
- IndexOutOfRangeException
- ArgumentNullException
variable = null; variable.ToString();4. Jaki będzie wynik wykonania poniższego kodu:
string s1 = new String(new char[] { 'a' }); string s2 = new String(new char[] { 'a' }); bool result = Object.ReferenceEquals(s1, s2); Console.Write(result); s1 = new String(new char[0]); s2 = new String(new char[0]); result = Object.ReferenceEquals(s1, s2); Console.Write(result); s1 = "Ala ma kota"; s2 = "Ala ma" + " kota"; result = Object.ReferenceEquals(s1, s2); Console.Write(result); s1 = "Ala ma kota"; string temp = "ma"; s2 = "Ala " + temp + " kota"; result = Object.ReferenceEquals(s1, s2); Console.Write(result);
- True, False, True, Talse
- False, False, True, False
- False, True, True, False
- False, False, False, False
- True, True, True, False
delegate void Printer(); ... Listprinters = new List (); for (int i = 0; i < 4; i++) { if (i % 2 == 0) { printers.Add(delegate { Console.Write(i); }); } else { int j = i; printers.Add(delegate { Console.Write(j); }); } } foreach (Printer printer in printers) printer();
- 0, 1, 2, 3
- 4, 4, 4, 4
- 4, 1, 4, 3
- 3, 2, 1, 0
- Inny
Odpowiedzi
-
C - Derived.Fun(object o);
W przypadku wywołania derived.Fun(1) zostanie wywołana metoda Derived.Foo(object). Metody zdefiniowane bezpośrednio na poziomie klasy wywołującej mają zawsze priorytet nad metodami zdefiniowanymi na poziomie klasy bazowej nawet jeżeli zostały przedefiniowane w klasie pochodnej. Jest tak ponieważ przy szukaniu metody najlepiej pasującej do wywołaniu, spośród wszystkich metod kandydujących odrzucane są metody zdefiniowane poza typem najbardziej wydziedziczonym. W wyniku tego kroku ze zbioru mogą zostać usunięte metody wirtualne.
-
C - NullReferenceException
Uruchomienie tego kod zakończy się rzuceniem wyjątku NullReferenceException w linijce z wywołaniem GetType. Typ Nullable<T> dostarcza własną implementacja ToString oraz GetHashCode ale nie GetType. Wywołanie GetType prowadzi więc do przekształcenia wartości Nullable<int> w referencje do obiektu (opakowywanie), a ponieważ w tym przypadku Nullable.HasValue jest równe false na stos odkładany jest null.
-
Jeśli variable jest typem Nullable<T>
-
C - False, True – bug?, True – optymalizacja kompilatora, False
- C - Domknięcie - Jak to działa?