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 letölthetővé tettem (ThreadSample, CtorSample), ki lehet próbálni!

 

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

 

Technorati Tags: ,,

23 thoughts on “C# programozás állásinterjú kérdések

  1. aurum

    > Érdekel valakit, hogy miről beszélgettünk még utána például SQL témában?Persze, hogy érdekel🙂 Szerinted mennyire jó egy ilyen kérdéssor? Szerinted nem nagy a szórás a kérdések nehézsége között? Értem ez alatt pl., hogy az első kérdés még a new kulcsszót kéri megmagyarzáni, ez elég alap, majd később már a szálbiztos programozással folytat. A statikus konstruktor meghívási sorrendje sem biztos, hogy mindenkinek sikerül elsőre, nekem ez volt, aminek utána kellett néznem🙂

  2. Miklós

    A statikus konstruktoron még lehet egyet csavarni hogy szórakoztatóbb és egyben világosabb legyen.
     
    A Base class-ba írd bele, hogy:

    public static string s="Base.s";
    A Main-be legelső utasításként, hogy:
    Console.WriteLine("Main s = {0}", Child.s);
    És tada, most már először a Base statikus konstruktora hívódik meg elsőnek, mivel először az ő statikus tagját használtuk. Még akkor is, ha Child-ot írtunk le!

  3. Tamás

    Szia,
     
    2 kérdésem lenne:
    1) tényleg munkát keresel, vagy teszteled a cégeket?
    2) nem irattak alá veled semmit, hogy ne adhasd ki a kérdéssort?
     
    megköszönöm, ha válaszolsz.
     
    Üdv, Tamás

  4. Molnar

    Nem tudom mi a jó válasz, de én is így nagyvnalakban azt válaszolnám, hogy a new kulsszót használjuk operátorként, módosítóként és megkötésként is. Operátorként ahogy mondtad objektum, tömb, delegate példányosítására szolgál, módosítóként az ős osztály tag elrejtése esetén üzen a fordítónak, hogy az elrejtés tudatos, és megkötésként használva generikus típusok és metódusok esetén azt mondja ki, hogy a <T> típus nem lehet absztrakt és rendelkeznie kell egy paraméter nélküli, publikus konstruktorral.

  5. György

    Szerintem Zsoltnak igaza van, én is ezt a három használatát tudom: operator, modifier, constraint. A kérdés egyébként szemmel láthatóan arra ment ki, hogy a generikus típusokról hallott-e már az alany.
     
    Csaba: mi lett az eredmény, felvettek?

  6. Molnar

    Bevallom őszintén nekem az a kérdés tetszik, ahol szálakat indítunk és növelünk, majd kiírjuk a statikus változó értékét.🙂 Aki keveset programozott több szálon, például azért mert "egyszerű" ASP.NET fejlesztő az például egy ilyen kérdés előtt lehet elgondolkodik egy sort. Vagy rosszul gondolom?
    Az 5. kérdés esetében ugye jól gondolom, hogy az explicit interface megvalósítás a lényeg?

  7. Csaba

    Nem mentem ahhoz céghez (ennek örülök is🙂 ); az 5. interjú alkalom után meguntam az egészet és, hogy nem látom a dolgok végét.

  8. Csaba

    Bevallom, nem tudom, hogy a new constraintet említettem-e akkoriban, most sem ugrott be hirtelen, pedig heti rendszerességgel használom.🙂

  9. aurum

    Hmm, 3 interjúnk szokott lenni lateralok számára, Technical skills, Manager interview, HR interview, az utolsó akkor, ha már ajánlatot kap. Esetleg olyankor lehet két tech int. ha a CV-je alapján elsőre rosszul pozícionáljuk be, pl. valaki ír Java éc C# ismeretet, interjúztatjuk Java pozícióra-ra, ott kiderül, hogy nem az igazi, de a C# kereszt kérdések után úgy látszik, abból viszont jó lesz. Ilyenkor szokták javasolni az interjúztatók egy másik pozícióra, amire természetesen másik interjú kell, más kérdések és más területről jövő interjúztató. De ilyen esetekben is igyekszünk olyan interjúztatókat küldeni, akik lefedik a CV-ben felsorolt fő területeket. Hidd el, nekünk sem szórakoztató, ha többször be kell hívni valakit és mindig rászánni 2 interjúer + adminsztráció idejét. priv.: Az EPAM-al sem jártál rosszul🙂

  10. Petike bácsi

    Kipróbáltam a 12-est, és mind a négy szöveget kiírja… csak azt nem értem, hogy miért?A sima Child() -re tippeltem volna….

  11. Petike bácsi

    static child – mert hozzáértünk a Child classhozstatic base – mert hozzáértünk a Base classhozBase – mert a szülő konstruktora is meghívódik … értem…

  12. Visszajelzés: .NET architect állásinterjú kérdések « Balássy György szakmai blogja

  13. Visszajelzés: .NET architect állásinterjú kérdések - Balássy György szakmai blogja - devPortal

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s