C# programozás állásinterjú kérdések

Tegnap volt szerencsém egy hazánkban is fejlesztőket foglalkoztató multi állásinterjúkon alkalmazott C# tesztsorával egészen közelről megismerkedni. 12 papíron megválaszolandó kérdés, a szintidő 40 perc. Meg tudod oldani?

A teszt eredetileg angol, a fordítás tőlem származik.

1. Mire jó a new kulcsszó?

2. Írjon kódot, amelyben definiál egy eseményt (event), feliratkozik rá egy metódussal, elsüti az eseményt, majd leiratkozik róla!

3. Nevezzen meg négy hozzáférés módosítót (access modifier) és magyarázza meg a jelentésüket! Van-e ötödik?

4. Mi a különbség az absztrakt osztály és az interfész között elsősorban implementáció és öröklés szempontjából?

5. Írjon kódot, amelyben:

  • Definiál egy IDoSomething interfészt egy f() metódussal.
  • Definiál egy IDoSomethingElse interfészt egy f() és egy g() metódussal.
  • Készítsen egy osztályt, amelyikben implementálja az IDoSomething és az IDoSomethingElse interfészeket úgy, hogy mindegyik metódus kiírja a konzolra a az interfész és a metódus nevét.
  • Készítsen egy példányt az osztályból és hívja meg a metódusait.

6. Nevezzen meg legalább négy különbséget az érték típus és a referencia típus között!

7. Mi a reflexió (reflection), mikor használatos, mik az előnyei és a hátrányai?

8. Írja le, hogyan működik a szemétgyűjtő (garbage collector)!

9. Az alábbi egy Windows Forms vezérlő kódjának a részlete. A btnOK_Click metódus a felhasználói felületen található gombhoz rendelt eseménykezelő, az AsyncCallback pedig egy háttérben másik szálon futó művelet végén a rendszer által meghívott callback metódus. Helyes-e így az implementáció és ha nem, akkor hogyan lehet javítani?

    public class MyControl : Control
    {
        //...

        void UpdateTextBox()
        {
            this.txtName.Text = DateTime.Now.ToString();
        }

        void btnOK_Click( object sender, EventArgs e )
        {
            this.UpdateTextBox();
        }

        void AsyncCallback( IAsyncResult result )
        {
            this.UpdateTextBox();
        }
    }

10. A 9. feladatban bemutatott kód alábbiak szerint módosított változatával sikerült-e kijavítani a hibát? Lehetséges-e deadlock a kódban és ha igen, mikor?

        void btnOK_Click( object sender, EventArgs e )
        {
            lock( this )
            {
                this.UpdateTextBox();                
            }
        }

        void AsyncCallback( IAsyncResult result )
        {
            lock( this )
            {
                this.UpdateTextBox();
            }
        }

11. Mit ír ki:

    using System.Threading;

    namespace ThreadSample
    {
        class Program
        {
            public static int i;

            public static void ThreadProc()
            {
                System.Console.WriteLine( i++ );
            }

            static void Main( string[] args )
            {
                for( int i = 0; i < 4; i++ )
                {
                    Thread t = new Thread( new ThreadStart( ThreadProc ) );
                    t.Start();
                }
            }
        }
    }

12. Mit ír ki:

    using System;

    namespace CtorSample
    {
        class Base
        {
            public Base()
            {
                Console.WriteLine( "Base()" );
            }

            static Base()
            {
                Console.WriteLine( "static Base()" );
            }
        }


        class Child : Base
        {
            public Child()
            {
                Console.WriteLine( "Child()" );
            }

            static Child()
            {
                Console.WriteLine( "static Child()" );
            }
        }


        class Program
        {
            static void Main( string[] args )
            {
                Child b = new Child();
            }
        }
    }

És ez csak a teszt volt. Érdekel valakit, hogy miről beszélgettünk még utána például SQL témában?

A Mit ír ki kérdések kódjait mellékeltem, ki lehet próbálni!

 

További interjú kérdések találhatók az alábbi címeken:


zip ThreadSample.zip (21 kB)

zip CtorSample.zip (22 kB)


Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2008.11.14. 16:58:21 | Permalink | Hozzászólások: 0 | Tárgyszavak: ,


  • WCF szolgáltatás IIS-en: 404 Page Not Found

    Balássy György (MS RD, ASP.NET MVP, MCTS) Ebbe elég könnyű belefutni és pofonegyszerű a megoldás, csak nem biztos, hogy elsőre beugrik, ezért inkább leírom. Adott egy prímán megírt WCF szolgáltatás, ám amikor IIS-re telepítjük, nem működik. Böngészőben megnézve az .svc fájlt HTTP Error 404: Not Found fogad, pedig a fájl ott van. Csak szegény IIS nem tud róla. Tovább »
  • Az IIS 7 szkriptelése: appcmd

    Balássy György (MS RD, ASP.NET MVP, MCTS) Webkiszolgálók üzemeltetésénél különösen fontos szempont a rendszergazdai feladatok automatizálhatósága, azaz a programozhatóság, melynek legegyszerűbb változata a parancssori szkriptelés. Az Internet Information Services 7 erre a problémára több megoldást is nyújt: programozottan WMI interfészen, a .NET-es Microsoft.Web.Administration névtéren vagy COM objektumokon keresztül kezelhetjük a kiszolgálót, parancssorból pedig PowerShellből vagy az AppCmd segédprogram segítségével. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások