NPRG038 11.6.2012

deusex

NPRG038 11.6.2012

Příspěvek od deusex »

  1. Mějme ve WinForms tri elementy:
    • Button
    • Label
    • TextBox
    pri kliku na button vezmete obsah textboxu a zavolejte dotaz:

    Kód: Vybrat vše

    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(*) :))
  2. 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
  3. Klasicky pripad na LINQ

    Kód: Vybrat vše

    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 :

    Kód: Vybrat vše

    1 2 3 g(2)
  4. CIL instrukce ldsfld, otazka byla kam nahraje data (managed GC heap, heap OS, tam kde jsou lokalni, tam kde parametry metod, etc..) // odpoved nevim
  5. 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
  6. Kam si v ASP.NET uklada data VIEWSTATE a Session, moznosti v kazdem radku:
    • v cookie u klienta
    • jinde u klienta
    • na serveru
  7. Co musi splnovat objekt aby byl vzdalene volatelny pres .NET Remoting: dedit od MarshelRefByObject
eldros

NPRG038 11.6.2012

Příspěvek od eldros »

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
Matfyz(ák|ačka) level I
Příspěvky: 13
Registrován: 26. 1. 2011 10:58
Typ studia: Informatika Mgr.

Re: NPRG038 11.6.2012

Příspěvek od cre8or »

4) v zadani otazky bylo napsano "kam se nahraji za behu aplikace". Spravna odpoved tedy byla, ze zalezi na architekture procesoru (zasobnikovy vs. registrovy).
6) VIEWSTATE se posila v hidden field klientovi, odpoved tedy "jinde u klienta". Sessions jsou na serveru.
deusex

Re: NPRG038 11.6.2012

Příspěvek od deusex »

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

Re: NPRG038 11.6.2012

Příspěvek od stateless »

Tak abychom to tu měli komplet:

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

Kód: Vybrat vše

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
Odpovědět

Zpět na „NPRG038 Pokročilé programování pro .NET“