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: ,


  • Kocka büfé

    Dávid Zoltán Itt a nyár. Ennek ürügyén bemutatom másik kedves helyemet: a Kockát, az MSDNK Kompetencia Központ néhány tagjának kedves helyét. A Kocka az egyetem (BME) mellett található, a Magyar Tudósok Körútján (házszáma szerintem nincs). Alapját egy bádog-bódé alkotja, mely köré az idők folyamán jelentős infrastruktúra épült: kinti sörpadok és asztalok, régi székekből készült padok, mellékhelyiség, saját ültetésű bokrok és virágok, esőtetők. Közvetlen közelében teniszpálya és uszoda van, valamint az Infoparkot átszelő kerékpárút mellé épült. Tovább »
  • ASP.NET MVC Custom Identity SerializationExceptin

    Gincsai Gábor A napokban foglalkoztam egy kicsit azzal, hogy egy MVC-s weboldalt hogyan lehet Facebookkal integrálni. A legfontosabb lépéseket meg is tettem. Készítettem saját Identity-t, ami implementálja az IIdentity és az ISerializable interfészeket, ahogy az javasolják is. 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