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




Í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