NPRG038 11.6.2012

deusex at 2012-06-11 16:25:41
  1. Mějme ve WinForms tri elementy:

    • Button

    • Label

    • TextBox

pri kliku na button vezmete obsah textboxu a zavolejte dotaz:

SELECT COUNT(*) FROM Employees WHERE City = "Obsah textboxu"

takze jen vedet jak pripravit statement (nesmite dosazovat primo, kvuli SQL injenction), spustit (hodi se metoda ExecuteScalar u IDbCommand, vrati prvni pole prvniho radku, coz je presne obsah COUNT(*) :))

  1. Nejaka c++ x86 knihovna a c# x86 assembly, u c++ byly funkce definovany s Ckovou volaci konvenci (ja netusim co to je, tak jen pro informaci)
    Otazky typu:

    • Zavisi beh programu na Is64BitOperatingSystem (jeden radek ano, druhy ne)

    • program selze protoze je vychozi volaci konvence v C# stdcall/fastcall/ceckova

    • a neco s platnosti delegatu nastavenho do c++ dllka po tom, co c# sleepuje vterinu

  2. Klasicky pripad na LINQ

    using System; using System.Collections.Generic; using System.Collections; using System.Linq; class Program { static void Main(string[] args) { Numbers n = new Numbers(); var list = from x in n [b]order by x[/b] where x > 1 select x; foreach (var i in list) { Console.Write( "g(" + i.ToString() + ") " ); break; } } } class Numbers : IEnumerable<int> { public IEnumerator<int> GetEnumerator() { Console.Write("1 "); yield return 1; Console.Write("2 "); yield return 2; Console.Write("3 "); yield return 3; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }

Pozor na order by v LINQu, podle me musi projit cely enumerator (cimz zavola vsechny tri Console Write) a pak vypise ten prvni vetsi nez 1, takze vysledne :

1 2 3 g(2)
  1. CIL instrukce ldsfld, otazka byla kam nahraje data (managed GC heap, heap OS, tam kde jsou lokalni, tam kde parametry metod, etc..) // odpoved nevim

  2. Pro odlehceni pripad z ukazkove zkousky letosni: http://d3s.mff.cuni.cz/~jezek/UkazkovaZ ... 010-11.pdf (cerveny ctverecek) - tentokrat byl porad zeleny - lokalni promenna prebyla Trigger a Style

  3. Kam si v ASP.NET uklada data VIEWSTATE a Session, moznosti v kazdem radku:

    • v cookie u klienta

    • jinde u klienta

    • na serveru

  4. Co musi splnovat objekt aby byl vzdalene volatelny pres .NET Remoting: dedit od MarshelRefByObject{: style="list-style-type:decimal"}

eldros at 2012-06-11 16:30:50

Doplnim dvojku, jedna se o http://www.codeproject.com/Articles/116 ... tions-in-C (skoda ze se na to clovek nepripravil)
A u ldstf to za behu zavisi na architekture.

cre8or at 2012-06-11 16:46:39
  1. v zadani otazky bylo napsano "kam se nahraji za behu aplikace". Spravna odpoved tedy byla, ze zalezi na architekture procesoru (zasobnikovy vs. registrovy).

  2. VIEWSTATE se posila v hidden field klientovi, odpoved tedy "jinde u klienta". Sessions jsou na serveru.

deusex at 2012-06-11 17:11:48

u session jsem navic zaskrtl v cookie, protoze bez ni nejdou identifikovat

stateless at 2012-06-11 18:31:01

Tak abychom to tu měli komplet:

  1. Správně bylo

  • program selže protože výchozí volací konvence v C# je stdcall (céčková je cdecl)

  • delegát nemusí být platný, protože mohl být během pauzy zgarbagecollectován (protože jediná C#-ová reference na něj vznikla uvnitř té metody, co ho nastavovala)

  • nezávisí to na Is64BitOperatingSystem, protože je to prostě všecko zkompilováno pro x86 a není co řešit

  1. Netušil jsem, jak se pracuje s databázema, tak jsem napsal zhruba:

    var table = dbConnection.GetTable("Employee"); // to jsem si vymyslel string city = textBox1.Text; var q = from x in table where x.City == city select x; int count = q.Count(); label1.Text = count.ToString();

A strhnul mi jenom jeden bod ze tří za ten začátek.

Jinak ještě pro potvrzení (zdroj - vyhodnocovací session):
3, 5, 7 jak píše deusex, 4 a 6 jak píše cre8or