C# Kunskapstest – 80 Frågor

Instruktioner

  • Välj det bästa svaret för varje fråga
  • Varje fråga har fyra alternativ (A, B, C, D)
  • Det rätta svaret är markerat med 
  • Frågorna är uppdelade enligt kursnivåer

Nivå 1: Grundläggande C# (Frågor 1-20)

1. Vad är C#?

A) Ett operativsystem
B) En webbläsare
★ C) Ett programmeringsspråk utvecklat av Microsoft
D) En databas

2. Vilken metod är startpunkten för ett C#-program?

A) Start()
★ B) Main()
C) Begin()
D) Execute()

3. Vilken datatyp används för att lagra heltal i C#?

A) float
★ B) int
C) string
D) char

4. Hur deklarerar du en sträng-variabel med namnet “namn”?

A) string = “namn”;
★ B) string namn;
C) var namn = string;
D) text namn;

5. Vad skriver följande kod ut? Console.WriteLine(5 + 3 * 2);

A) 16
★ B) 11
C) 10
D) 13

6. Vilken operator används för att jämföra om två värden är lika?

A) =
★ B) ==
C) !=
D) <>

7. Vad är resultatet av 10 % 3?

A) 3
B) 0
★ C) 1
D) 33

8. Vilken loop körs minst en gång?

A) for
B) while
★ C) do-while
D) foreach

9. Vad gör break-satsen i en loop?

A) Pausar loopen
★ B) Avslutar loopen
C) Hoppar till nästa iteration
D) Startar om loopen

10. Hur skriver du en if-sats som kontrollerar om x är större än 10?

A) if x > 10
★ B) if (x > 10)
C) if [x > 10]
D) if {x > 10}

11. Vilken datatyp används för sant/falskt-värden?

A) int
B) string
★ C) bool
D) double

12. Vad betyder const i C#?

A) Variabeln kan ändras
★ B) Variabeln är konstant och kan inte ändras
C) Variabeln är privat
D) Variabeln är publik

13. Hur konverterar du en sträng till ett heltal?

A) (int)string
★ B) int.Parse(string)
C) string.ToInt()
D) Convert(string)

14. Vad är standardvärdet för en int-variabel?

★ A) 0
B) null
C) 1
D) -1

15. Vilken metod används för att läsa input från användaren?

A) Console.Write()
B) Console.Input()
★ C) Console.ReadLine()
D) Console.Get()

16. Vad gör continue-satsen i en loop?

A) Avslutar loopen
B) Pausar loopen
★ C) Hoppar till nästa iteration
D) Startar om loopen från början

17. Vilken är korrekt syntax för en for-loop?

A) for (int i = 0; i < 10)
★ B) for (int i = 0; i < 10; i++)
C) for int i = 0 to 10
D) for (i = 0; i < 10; i++)

18. Vad händer om du delar med noll i C#?

A) Programmet crashar
★ B) Ett exception kastas
C) Resultatet blir 0
D) Inget händer

19. Vilken operator används för logisk OCH?

A) &
★ B) &&
C) ||
D) !

20. Hur skapar du en kommentar på en rad i C#?

A) /* kommentar */
★ B) // kommentar
C) # kommentar
D) — kommentar


Nivå 2: Objektorienterad Programmering (Frågor 21-40)

21. Vad är en klass i C#?

A) En variabel
B) En metod
★ C) En mall för att skapa objekt
D) En loop

22. Vad är skillnaden mellan en klass och ett objekt?

A) Ingen skillnad
B) Objekt är större än klasser
★ C) Klass är mallen, objekt är instansen
D) Klasser är snabbare

23. Vad gör en konstruktor?

A) Förstör objekt
★ B) Initialiserar objekt när de skapas
C) Kopierar objekt
D) Räknar objekt

24. Vilken access modifier gör att en medlem endast är tillgänglig inom klassen?

★ A) private
B) public
C) protected
D) internal

25. Vad är en property i C#?

A) En variabel
B) En metod
★ C) En medlem som kombinerar get/set accessors
D) En klass

26. Vad betyder static i C#?

A) Medlemmen tillhör objektet
★ B) Medlemmen tillhör klassen, inte instansen
C) Medlemmen kan inte ändras
D) Medlemmen är privat

27. Vad är arv i objektorienterad programmering?

A) Att kopiera kod
★ B) Att en klass ärver egenskaper från en annan klass
C) Att ta bort kod
D) Att köpa kod

28. Vilken nyckelord används för arv i C#?

A) extends
B) inherits
★ C) : (kolon)
D) derives

29. Vad betyder virtual i en metod?

A) Metoden är falsk
★ B) Metoden kan överridas i härledda klasser
C) Metoden är abstrakt
D) Metoden är privat

30. Vad används override för?

A) Att skapa nya metoder
★ B) Att överrida virtuella metoder från basklassen
C) Att ta bort metoder
D) Att kopiera metoder

31. Vad är polymorfism?

A) Många klasser
★ B) Samma interface, olika implementationer
C) Många variabler
D) Många metoder

32. Vad är ett interface i C#?

A) En klass
B) En variabel
★ C) En kontrakt som definierar vad en klass måste implementera
D) En metod

33. Hur deklarerar du ett interface?

A) class IMyInterface
★ B) interface IMyInterface
C) abstract IMyInterface
D) public IMyInterface

34. Kan en klass implementera flera interface?

★ A) Ja
B) Nej
C) Bara två
D) Bara om de är abstrakta

35. Vad är en abstrakt klass?

A) En vanlig klass
★ B) En klass som inte kan instansieras direkt
C) En klass utan metoder
D) En klass med bara properties

36. Kan du instansiera en abstrakt klass?

A) Ja
★ B) Nej
C) Bara med new
D) Bara med constructor

37. Vad betyder sealed för en klass?

A) Klassen är privat
B) Klassen är abstrakt
★ C) Klassen kan inte ärvas
D) Klassen är statisk

38. Vad är inkapsling?

A) Att gömma all kod
★ B) Att dölja interna detaljer och endast exponera nödvändiga delar
C) Att kopiera kod
D) Att ta bort kod

39. Vad är this nyckelordet?

A) En metod
★ B) En referens till det aktuella objektet
C) En variabel
D) En klass

40. Hur skapar du en auto-implemented property?

A) public string Name;
★ B) public string Name { get; set; }
C) private string Name { get; set; }
D) string Name() { return; }


Nivå 3: Avancerade Koncept (Frågor 41-60)

41. Vad är generics i C#?

A) Allmänna klasser
★ B) Typsäkra klasser och metoder som kan arbeta med olika datatyper
C) Stora klasser
D) Automatiska klasser

42. Hur deklarerar du en generisk klass?

A) class MyClass<generic>
★ B) class MyClass<T>
C) class MyClass[T]
D) generic class MyClass

43. Vad är List<T>?

A) En array
★ B) En dynamisk lista som kan lagra objekt av typ T
C) En string
D) En metod

44. Vilken collection använder key-value par?

A) List<T>
B) Array
★ C) Dictionary<TKey, TValue>
D) Queue<T>

45. Vad står LINQ för?

A) Language Integrated Query Language
★ B) Language Integrated Query
C) Linear Integrated Query
D) Logic Integrated Query

46. Vilken LINQ-metod filtrerar element?

★ A) Where
B) Select
C) OrderBy
D) GroupBy

47. Vad är ett lambda-uttryck?

A) En klass
B) En variabel
★ C) En anonym funktion
D) En property

48. Hur skriver du ett lambda-uttryck som tar x och returnerar x * 2?

A) x => x * 2
★ B) x => x * 2
C) x -> x * 2
D) lambda x: x * 2

49. Vad gör Select-metoden i LINQ?

A) Filtrerar element
★ B) Transformerar/projicerar element
C) Sorterar element
D) Grupperar element

50. Vad är en exception?

A) En klass
B) En metod
★ C) Ett fel som uppstår under körning
D) En variabel

51. Vilken block används för att hantera exceptions?

A) if-else
★ B) try-catch
C) switch
D) for-loop

52. Vad körs alltid i exception handling, oavsett om fel uppstår?

A) try
B) catch
★ C) finally
D) throw

53. Vad är en delegate i C#?

A) En klass
★ B) En typ som representerar referenser till metoder
C) En variabel
D) En property

54. Vad är skillnaden mellan Action och Func delegates?

A) Ingen skillnad
★ B) Action returnerar void, Func returnerar ett värde
C) Action är snabbare
D) Func är större

55. Vad är ett event i C#?

A) En metod
★ B) En speciell typ av delegate för notifikationer
C) En klass
D) En variabel

56. Hur prenumererar du på ett event?

A) event.Subscribe()
★ B) event += methodName
C) event.Add(methodName)
D) event << methodName

57. Vad är nullable types?

A) Typer som är tomma
★ B) Typer som kan ha värdet null
C) Typer som är stora
D) Typer som är abstrakta

58. Hur deklarerar du en nullable int?

A) int? x
★ B) int? x
C) nullable int x
D) int null x

59. Vad gör null-coalescing operatorn (??) ?

A) Skapar null
★ B) Returnerar höger operand om vänster är null
C) Jämför med null
D) Tar bort null

60. Vad är extension methods?

A) Långa metoder
★ B) Metoder som lägger till funktionalitet till befintliga typer
C) Metoder i subklasser
D) Privata metoder


Nivå 4: Praktiska Tillämpningar (Frågor 61-80)

61. Vad används för att läsa filer i C#?

A) Console.ReadLine()
★ B) File.ReadAllText()
C) Input.Read()
D) Text.Load()

62. Vilken klass används för att skriva till filer rad för rad?

A) FileWriter
★ B) StreamWriter
C) TextWriter
D) LineWriter

63. Vad är JSON?

A) En programmeringsspråk
★ B) Ett textformat för datautbyte
C) En databas
D) Ett bibliotek

64. Vilken namespace innehåller JSON-funktionalitet i .NET?

A) System.Json
★ B) System.Text.Json
C) Newtonsoft.Json
D) Microsoft.Json

65. Vad betyder async nyckelordet?

A) Metoden är snabb
★ B) Metoden är asynkron och kan innehålla await
C) Metoden är automatisk
D) Metoden är abstrakt

66. Vad returnerar en async-metod oftast?

A) void
B) object
★ C) Task eller Task<T>
D) string

67. Vad gör await nyckelordet?

A) Väntar för alltid
★ B) Väntar på att en asynkron operation ska slutföras
C) Stoppar programmet
D) Startar en ny tråd

68. Vad är en Task i C#?

A) En klass
B) En metod
★ C) Representerar en asynkron operation
D) En variabel

69. Vilken metod används för HTTP GET-requests?

A) HttpClient.Get()
★ B) HttpClient.GetAsync()
C) Http.Request()
D) Web.Get()

70. Vad är Entity Framework?

A) En webbläsare
★ B) Ett ORM (Object-Relational Mapping) för databaser
C) Ett operativsystem
D) En IDE

71. Vad betyder ORM?

A) Object Request Model
★ B) Object-Relational Mapping
C) Online Resource Manager
D) Optimized Runtime Memory

72. Vilken metod används för att spara ändringar i Entity Framework?

A) Save()
★ B) SaveChanges()
C) Commit()
D) Update()

73. Vad är DbContext i Entity Framework?

A) En datatyp
★ B) Huvudklassen för databasinteraktion
C) En metod
D) En property

74. Vad är migrations i Entity Framework?

A) Flytt av data
★ B) Versionskontroll för databasschema
C) Backup av databas
D) Import av data

75. Vad används CancellationToken för?

A) Att skapa tokens
★ B) Att avbryta asynkrona operationer
C) Att logga in
D) Att kryptera data

76. Vad är Thread i C#?

A) En klass
B) En metod
★ C) En exekveringstråd
D) En variabel

77. Vad är ConfigureAwait(false) till för?

A) Att konfigurera databas
★ B) Att undvika deadlocks genom att inte återgå till ursprunglig kontext
C) Att stänga av await
D) Att konfigurera fel

78. Vilken collection är thread-safe?

A) List<T>
B) Dictionary<TKey, TValue>
★ C) ConcurrentDictionary<TKey, TValue>
D) Array

79. Vad är en connection string?

A) En vanlig sträng
★ B) Information för att ansluta till en databas
C) En nätverkssträng
D) En URL

80. Vad är dependency injection?

A) Att injicera fel
B) Att injicera kod
★ C) Ett designmönster för att hantera beroenden mellan objekt
D) Att injicera data


FACIT – Sammanfattning av rätta svar

Nivå 1 (1-20): C, B, B, B, B, B, C, C, B, B, C, B, B, A, C, C, B, B, B, B

Nivå 2 (21-40): C, C, B, A, C, B, B, C, B, B, B, C, B, A, B, B, C, B, B, B

Nivå 3 (41-60): B, B, B, C, B, A, C, B, B, C, B, C, B, B, B, B, B, B, B, B

Nivå 4 (61-80): B, B, B, B, B, C, B, C, B, B, B, B, B, B, B, C, B, C, B, C


Bedömning

  • 0-20 rätt: Nybörjarnivå – Fokusera på grunderna
  • 21-40 rätt: Grundläggande – Öva mer på OOP-koncept
  • 41-60 rätt: Medelnivå – Bra grund, utveckla avancerade färdigheter
  • 61-75 rätt: Avancerad – Mycket bra kunskaper
  • 76-80 rätt: Expert – Utmärkta C#-kunskaper!

C# Kodifyllningstest – 80 Frågor

Instruktioner

  • Fyll i den saknade koden där det finns tomma linjer eller _______
  • Svaren ska vara exakt C#-syntax
  • Rätta svar finns i slutet av dokumentet
  • Frågorna är uppdelade enligt kursnivåer

Nivå 1: Grundläggande C# (Frågor 1-20)

1. Skriv en komplett Hello World-applikation

csharpusing System;

_______ Program
{
    static void _______()
    {
        Console._______("Hello World!");
    }
}

2. Deklarera variabler av olika typer

csharp_______ ålder = 25;
_______ namn = "Anna";
_______ längd = 1.75;
_______ ärStudent = true;

3. Skapa en konstant för PI

csharp_______ _______ PI = 3.14159;

4. Använd aritmetiska operatorer

csharpint a = 10;
int b = 3;
int summa = a _______ b;
int rest = a _______ b;
int produkt = a _______ b;

5. Skriv en if-else sats

csharpint ålder = 18;
_______ (ålder >= 18)
{
    Console.WriteLine("Myndig");
}
_______
{
    Console.WriteLine("Omyndig");
}

6. Skapa en for-loop som räknar från 1 till 10

csharpfor (_______ i = 1; i _______ 10; i_______)
{
    Console.WriteLine(i);
}

7. Skriv en while-loop som körs medan x är mindre än 5

csharpint x = 0;
_______ (x < 5)
{
    Console.WriteLine(x);
    x_______;
}

8. Konvertera en sträng till heltal

csharpstring text = "123";
int nummer = _______._______(text);

9. Använd switch-statement

csharpint dag = 1;
_______ (dag)
{
    _______ 1:
        Console.WriteLine("Måndag");
        _______;
    _______ 2:
        Console.WriteLine("Tisdag");
        _______;
    _______:
        Console.WriteLine("Annan dag");
        _______;
}

10. Läs input från användaren

csharpConsole.WriteLine("Ange ditt namn:");
string namn = Console._______();

11. Hantera null-värden med null-conditional operator

csharpstring text = null;
int? längd = text_______._______;

12. Skapa en array med 5 heltal

csharp_______ numbers = new int[5];
// eller
_______ numbers2 = {1, 2, 3, 4, 5};

13. Iterera genom en array med foreach

csharpint[] numbers = {1, 2, 3, 4, 5};
_______ (_______ num _______ numbers)
{
    Console.WriteLine(num);
}

14. Använd string interpolation

csharpstring namn = "Anna";
int ålder = 25;
Console.WriteLine($"Jag heter _______ och är _______ år gammal");

15. Kontrollera om en sträng är tom

csharpstring text = "";
if (string._______(text))
{
    Console.WriteLine("Strängen är tom");
}

16. Använd logical operators

csharpint ålder = 25;
bool harKörkort = true;
if (ålder >= 18 _______ harKörkort)
{
    Console.WriteLine("Kan köra bil");
}

17. Skapa en do-while loop

csharpint i = 0;
_______
{
    Console.WriteLine(i);
    i++;
} _______ (i < 3);

18. Använd try-catch för grundläggande felhantering

csharp_______
{
    int result = 10 / 0;
}
_______ (DivideByZeroException ex)
{
    Console.WriteLine("Division med noll!");
}

19. Deklarera och använd en bool-variabel

csharp_______ isTrue = true;
if (_______)
{
    Console.WriteLine("Det är sant!");
}

20. Använd increment och decrement operatorer

csharpint x = 5;
x_______; // x blir 6
x_______; // x blir 5 igen

Nivå 2: Objektorienterad Programmering (Frågor 21-40)

21. Skapa en enkel klass

csharp_______ _______ Person
{
    public string Namn;
    public int Ålder;
}

22. Skapa en konstruktor

csharppublic class Person
{
    public string Namn;
    public int Ålder;
    
    public _______(string namn, int ålder)
    {
        _______.Namn = namn;
        _______.Ålder = ålder;
    }
}

23. Skapa properties med get och set

csharppublic class Person
{
    private string namn;
    
    public string Namn
    {
        _______ { return namn; }
        _______ { namn = value; }
    }
}

24. Använd auto-implemented properties

csharppublic class Person
{
    public string Namn { _______; _______; }
    public int Ålder { _______; _______ _______; }
}

25. Skapa och instansiera ett objekt

csharpPerson person = _______ _______("Anna", 25);

26. Implementera arv

csharppublic class Djur
{
    public string Namn { get; set; }
}

public class Hund _______ Djur
{
    public void Skäll()
    {
        Console.WriteLine("Voff!");
    }
}

27. Använd virtual och override

csharppublic class Djur
{
    public _______ void LåtaLjud()
    {
        Console.WriteLine("Djuret låter");
    }
}

public class Hund : Djur
{
    public _______ void LåtaLjud()
    {
        Console.WriteLine("Voff!");
    }
}

28. Skapa en abstrakt klass

csharppublic _______ class Fordon
{
    public _______ void Starta();
    
    public void Stoppa()
    {
        Console.WriteLine("Fordon stannar");
    }
}

29. Implementera ett interface

csharppublic _______ IFlygbar
{
    void Flyga();
}

public class Fågel _______ IFlygbar
{
    public void _______()
    {
        Console.WriteLine("Fågeln flyger");
    }
}

30. Använd static medlemmar

csharppublic class MathHelper
{
    public _______ int Add(int a, int b)
    {
        return a + b;
    }
}

// Användning
int result = MathHelper._______(5, 3);

31. Skapa en sealed klass

csharppublic _______ class FinalClass
{
    public void DoSomething() { }
}

32. Implementera flera interface

csharppublic interface ISwimmable { void Swim(); }
public interface IFlyable { void Fly(); }

public class Duck _______ ISwimmable, IFlyable
{
    public void _______() { Console.WriteLine("Swimming"); }
    public void _______() { Console.WriteLine("Flying"); }
}

33. Använd base-nyckelordet

csharppublic class Animal
{
    public virtual void Eat() { Console.WriteLine("Animal eats"); }
}

public class Dog : Animal
{
    public override void Eat()
    {
        _______.Eat();
        Console.WriteLine("Dog eats bones");
    }
}

34. Skapa en privat field med publik property

csharppublic class Person
{
    private string _namn;
    
    public string Namn
    {
        get { return _______; }
        set { _______ = _______; }
    }
}

35. Använd constructor chaining

csharppublic class Person
{
    public string Namn { get; set; }
    public int Ålder { get; set; }
    
    public Person() _______ this("Okänd", 0) { }
    
    public Person(string namn, int ålder)
    {
        Namn = namn;
        Ålder = ålder;
    }
}

36. Implementera property validation

csharppublic class Person
{
    private int ålder;
    
    public int Ålder
    {
        get { return ålder; }
        set
        {
            if (value < 0)
                _______ new ArgumentException("Ålder kan inte vara negativ");
            ålder = value;
        }
    }
}

37. Skapa en readonly property

csharppublic class Person
{
    public string Namn { get; _______ set; }
    
    public Person(string namn)
    {
        Namn = namn;
    }
}

38. Använd namespaces

csharp_______ MyApplication.Models
{
    public class Person
    {
        public string Namn { get; set; }
    }
}

39. Skapa en partiell klass

csharppublic _______ class Person
{
    public string Förnamn { get; set; }
}

public _______ class Person
{
    public string Efternamn { get; set; }
}

40. Implementera en indexer

csharppublic class StringCollection
{
    private string[] items = new string[10];
    
    public string _______[int index]
    {
        get { return items[index]; }
        set { items[index] = value; }
    }
}

Nivå 3: Avancerade Koncept (Frågor 41-60)

41. Skapa en generisk klass

csharppublic class Container_______
{
    private T item;
    
    public void SetItem(_______ value)
    {
        item = value;
    }
    
    public _______ GetItem()
    {
        return item;
    }
}

42. Använd generic constraints

csharppublic class Repository<T> _______ T : class, new()
{
    public T CreateNew()
    {
        return _______ T();
    }
}

43. Skapa och använd en List<T>

csharp_______ <string> names = new _______<string>();
names._______(Anna");
names._______(Erik");

44. Använd Dictionary<TKey, TValue>

csharp_______<string, int> ages = new _______<string, int>();
ages_______(Anna", 25);
int annaAge = ages_______("Anna");

45. Skriv en enkel LINQ Where-query

csharpList<int> numbers = new List<int> {1, 2, 3, 4, 5};
var evenNumbers = numbers._______(n => n % 2 == 0);

46. Använd LINQ Select för transformation

csharpList<string> names = new List<string> {"anna", "erik"};
var upperNames = names._______(n => n._______());

47. Skriv ett lambda-uttryck för att hitta max värde

csharpList<int> numbers = new List<int> {3, 1, 4, 1, 5};
int max = numbers._______(n => n);

48. Använd LINQ OrderBy

csharpList<string> names = new List<string> {"Erik", "Anna", "Bert"};
var sortedNames = names._______(n => n);

49. Gruppera med LINQ GroupBy

csharpvar people = new[] 
{
    new { Name = "Anna", Age = 25 },
    new { Name = "Erik", Age = 25 },
    new { Name = "Lisa", Age = 30 }
};
var groups = people._______By(p => p.Age);

50. Implementera grundläggande exception handling

csharppublic void DivideNumbers(int a, int b)
{
    _______
    {
        int result = a / b;
        Console.WriteLine(result);
    }
    _______ (DivideByZeroException ex)
    {
        Console.WriteLine($"Fel: {ex._______}");
    }
    _______
    {
        Console.WriteLine("Division slutförd");
    }
}

51. Skapa en custom exception

csharppublic class InvalidAgeException _______ Exception
{
    public InvalidAgeException(string message) _______ _______(message)
    {
    }
}

52. Kasta en exception

csharppublic void SetAge(int age)
{
    if (age < 0)
        _______ new InvalidAgeException("Ålder kan inte vara negativ");
}

53. Deklarera en delegate

csharppublic _______ void MyDelegate(string message);

MyDelegate del = Console.WriteLine;
del_______(Hello");

54. Använd Action delegate

csharp_______ <string> printAction = Console.WriteLine;
printAction("Hello World");

55. Använd Func delegate

csharp_______ <int, int, int> addFunc = (a, b) => a + b;
int result = addFunc(5, 3);

56. Skapa och använd ett event

csharppublic class Publisher
{
    public _______ Action<string> SomethingHappened;
    
    protected virtual void OnSomethingHappened(string message)
    {
        SomethingHappened_______(message);
    }
}

57. Prenumerera på ett event

csharpPublisher pub = new Publisher();
pub.SomethingHappened _______ message => Console.WriteLine(message);

58. Använd nullable types

csharp_______ age = null;
if (age._______(Value))
{
    Console.WriteLine($"Age is {age._______}");
}

59. Använd null-coalescing operator

csharpstring name = null;
string displayName = name _______ "Unknown";

60. Skapa en extension method

csharppublic _______ class StringExtensions
{
    public _______ bool IsValidEmail(_______ string email)
    {
        return email.Contains("@");
    }
}

// Användning
string email = "test@example.com";
bool isValid = email._______();

Nivå 4: Praktiska Tillämpningar (Frågor 61-80)

61. Läs all text från en fil

csharpstring content = _______._______("myfile.txt");

62. Skriv text till en fil

csharpstring text = "Hello World";
File._______("output.txt", text);

63. Använd StreamWriter för att skriva till fil

csharp_______ (StreamWriter writer = new StreamWriter("data.txt"))
{
    writer._______("First line");
    writer._______("Second line");
}

64. Serialisera ett objekt till JSON

csharpusing System.Text.Json;

Person person = new Person { Name = "Anna", Age = 25 };
string json = JsonSerializer._______(person);

65. Deserialisera JSON till objekt

csharpstring json = """{"Name":"Anna","Age":25}""";
Person person = JsonSerializer._______<Person>(json);

66. Skapa en async metod

csharppublic _______ _______ <string> GetDataAsync()
{
    _______ Task.Delay(1000);
    return "Data loaded";
}

67. Anropa en async metod

csharppublic async Task Main()
{
    string data = _______ GetDataAsync();
    Console.WriteLine(data);
}

68. Skapa en Task som returnerar ett värde

csharp_______ <int> task = Task.Run(() =>
{
    Thread.Sleep(1000);
    return 42;
});

int result = _______ task;

69. Använd HttpClient för GET request

csharpusing HttpClient client = new HttpClient();
string response = _______ client._______("https://api.example.com/data");

70. Hantera multiple async operations

csharpTask<string> task1 = GetDataAsync("url1");
Task<string> task2 = GetDataAsync("url2");

string[] results = _______ Task._______([task1, task2]);

71. Skapa en DbContext klass

csharppublic class ApplicationDbContext _______ DbContext
{
    public _______ <Person> Personer { get; set; }
    
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder._______("connection string");
    }
}

72. Lägg till en entity i Entity Framework

csharpusing var context = new ApplicationDbContext();
Person person = new Person { Name = "Anna" };
context.Personer._______(person);
_______ context._______();

73. Hämta data med Entity Framework

csharpusing var context = new ApplicationDbContext();
List<Person> people = _______ context.Personer._______();

74. Använd LINQ med Entity Framework

csharpusing var context = new ApplicationDbContext();
var adults = _______ context.Personer
    .Where(p => p.Age >= 18)
    ._______();

75. Implementera CancellationToken

csharppublic async Task<string> GetDataAsync(_______ cancellationToken)
{
    await Task.Delay(5000, _______);
    return "Data";
}

76. Använd ConfigureAwait

csharppublic async Task ProcessDataAsync()
{
    string data = await GetDataAsync()._______(_______);
    // Process data
}

77. Skapa en thread-safe collection

csharp_______ Dictionary<string, int> safeDict = new _______<string, int>();

78. Använd lock för thread safety

csharpprivate readonly object _lock = new object();
private int counter = 0;

public void Increment()
{
    _______ (_lock)
    {
        counter++;
    }
}

79. Skapa en connection string

csharpstring connectionString = "_______ Source=localhost;Initial Catalog=MyDB;Integrated Security=true";

80. Implementera Dependency Injection container registration

csharppublic void ConfigureServices(IServiceCollection services)
{
    services._______<IMyService, MyService>();
    services._______<MyRepository>();
}

FACIT – Rätta svar

Nivå 1 (1-20):

  1. classMainWriteLine
  2. intstringdoublebool
  3. const double
  4. +%*
  5. ifelse
  6. int<=++
  7. while++
  8. intParse
  9. switchcasebreakcasebreakdefaultbreak
  10. ReadLine
  11. ?Length
  12. int[]int[]
  13. foreachintin
  14. {namn}{ålder}
  15. IsNullOrEmpty
  16. &&
  17. dowhile
  18. trycatch
  19. boolisTrue
  20. ++--

Nivå 2 (21-40):

  1. public class
  2. Personthisthis
  3. getset
  4. getsetgetprivate set
  5. new Person
  6. :
  7. virtualoverride
  8. abstractabstract
  9. interface:Flyga
  10. staticAdd
  11. sealed
  12. :SwimFly
  13. base
  14. _namn_namnvalue
  15. :
  16. throw
  17. private
  18. namespace
  19. partialpartial
  20. this

Nivå 3 (41-60):

  1. <T>TT
  2. wherenew
  3. ListListAddAdd
  4. DictionaryDictionary["Anna"]["Anna"]
  5. Where
  6. SelectToUpper
  7. Max
  8. OrderBy
  9. Group
  10. trycatchMessagefinally
  11. :: base
  12. throw
  13. delegate("Hello")
  14. Action
  15. Func
  16. event?.Invoke
  17. +=
  18. int?HasValue
  19. ??
  20. staticstaticthisIsValidEmail

Nivå 4 (61-80):

  1. FileReadAllText
  2. WriteAllText
  3. usingWriteLine
  4. Serialize
  5. Deserialize
  6. asyncTaskawait
  7. await
  8. Taskawait
  9. awaitGetStringAsync
  10. awaitWhenAll
  11. :DbSetUseSqlServer
  12. AddawaitSaveChangesAsync
  13. awaitToListAsync
  14. awaitToListAsync
  15. CancellationTokencancellationToken
  16. ConfigureAwaitfalse
  17. ConcurrentConcurrentDictionary
  18. lock
  19. Data
  20. AddTransientAddScoped

Bedömning

  • 0-20 rätt: Nybörjarnivå – Öva grundläggande syntax
  • 21-40 rätt: Grundläggande – Fokusera på OOP-koncept
  • 41-60 rätt: Medelnivå – Utveckla avancerade färdigheter
  • 61-75 rätt: Avancerad – Utmärkt kodförståelse
  • 76-80 rätt: Expert – Mästerlig C#-kunskap!

C# Kodifyllningstest – 80 Frågor

Instruktioner

  • Fyll i den saknade koden där det finns tomma linjer eller _______
  • Svaren ska vara exakt C#-syntax
  • Rätta svar finns i slutet av dokumentet
  • Frågorna är uppdelade enligt kursnivåer

Nivå 1: Grundläggande C# (Frågor 1-20)

1. Skriv en komplett Hello World-applikation

csharpusing System;

_______ Program
{
    static void _______()
    {
        Console._______("Hello World!");
    }
}

2. Deklarera variabler av olika typer

csharp_______ ålder = 25;
_______ namn = "Anna";
_______ längd = 1.75;
_______ ärStudent = true;

3. Skapa en konstant för PI

csharp_______ _______ PI = 3.14159;

4. Använd aritmetiska operatorer

csharpint a = 10;
int b = 3;
int summa = a _______ b;
int rest = a _______ b;
int produkt = a _______ b;

5. Skriv en if-else sats

csharpint ålder = 18;
_______ (ålder >= 18)
{
    Console.WriteLine("Myndig");
}
_______
{
    Console.WriteLine("Omyndig");
}

6. Skapa en for-loop som räknar från 1 till 10

csharpfor (_______ i = 1; i _______ 10; i_______)
{
    Console.WriteLine(i);
}

7. Skriv en while-loop som körs medan x är mindre än 5

csharpint x = 0;
_______ (x < 5)
{
    Console.WriteLine(x);
    x_______;
}

8. Konvertera en sträng till heltal

csharpstring text = "123";
int nummer = _______._______(text);

9. Använd switch-statement

csharpint dag = 1;
_______ (dag)
{
    _______ 1:
        Console.WriteLine("Måndag");
        _______;
    _______ 2:
        Console.WriteLine("Tisdag");
        _______;
    _______:
        Console.WriteLine("Annan dag");
        _______;
}

10. Läs input från användaren

csharpConsole.WriteLine("Ange ditt namn:");
string namn = Console._______();

11. Hantera null-värden med null-conditional operator

csharpstring text = null;
int? längd = text_______._______;

12. Skapa en array med 5 heltal

csharp_______ numbers = new int[5];
// eller
_______ numbers2 = {1, 2, 3, 4, 5};

13. Iterera genom en array med foreach

csharpint[] numbers = {1, 2, 3, 4, 5};
_______ (_______ num _______ numbers)
{
    Console.WriteLine(num);
}

14. Använd string interpolation

csharpstring namn = "Anna";
int ålder = 25;
Console.WriteLine($"Jag heter _______ och är _______ år gammal");

15. Kontrollera om en sträng är tom

csharpstring text = "";
if (string._______(text))
{
    Console.WriteLine("Strängen är tom");
}

16. Använd logical operators

csharpint ålder = 25;
bool harKörkort = true;
if (ålder >= 18 _______ harKörkort)
{
    Console.WriteLine("Kan köra bil");
}

17. Skapa en do-while loop

csharpint i = 0;
_______
{
    Console.WriteLine(i);
    i++;
} _______ (i < 3);

18. Använd try-catch för grundläggande felhantering

csharp_______
{
    int result = 10 / 0;
}
_______ (DivideByZeroException ex)
{
    Console.WriteLine("Division med noll!");
}

19. Deklarera och använd en bool-variabel

csharp_______ isTrue = true;
if (_______)
{
    Console.WriteLine("Det är sant!");
}

20. Använd increment och decrement operatorer

csharpint x = 5;
x_______; // x blir 6
x_______; // x blir 5 igen

Nivå 2: Objektorienterad Programmering (Frågor 21-40)

21. Skapa en enkel klass

csharp_______ _______ Person
{
    public string Namn;
    public int Ålder;
}

22. Skapa en konstruktor

csharppublic class Person
{
    public string Namn;
    public int Ålder;
    
    public _______(string namn, int ålder)
    {
        _______.Namn = namn;
        _______.Ålder = ålder;
    }
}

23. Skapa properties med get och set

csharppublic class Person
{
    private string namn;
    
    public string Namn
    {
        _______ { return namn; }
        _______ { namn = value; }
    }
}

24. Använd auto-implemented properties

csharppublic class Person
{
    public string Namn { _______; _______; }
    public int Ålder { _______; _______ _______; }
}

25. Skapa och instansiera ett objekt

csharpPerson person = _______ _______("Anna", 25);

26. Implementera arv

csharppublic class Djur
{
    public string Namn { get; set; }
}

public class Hund _______ Djur
{
    public void Skäll()
    {
        Console.WriteLine("Voff!");
    }
}

27. Använd virtual och override

csharppublic class Djur
{
    public _______ void LåtaLjud()
    {
        Console.WriteLine("Djuret låter");
    }
}

public class Hund : Djur
{
    public _______ void LåtaLjud()
    {
        Console.WriteLine("Voff!");
    }
}

28. Skapa en abstrakt klass

csharppublic _______ class Fordon
{
    public _______ void Starta();
    
    public void Stoppa()
    {
        Console.WriteLine("Fordon stannar");
    }
}

29. Implementera ett interface

csharppublic _______ IFlygbar
{
    void Flyga();
}

public class Fågel _______ IFlygbar
{
    public void _______()
    {
        Console.WriteLine("Fågeln flyger");
    }
}

30. Använd static medlemmar

csharppublic class MathHelper
{
    public _______ int Add(int a, int b)
    {
        return a + b;
    }
}

// Användning
int result = MathHelper._______(5, 3);

31. Skapa en sealed klass

csharppublic _______ class FinalClass
{
    public void DoSomething() { }
}

32. Implementera flera interface

csharppublic interface ISwimmable { void Swim(); }
public interface IFlyable { void Fly(); }

public class Duck _______ ISwimmable, IFlyable
{
    public void _______() { Console.WriteLine("Swimming"); }
    public void _______() { Console.WriteLine("Flying"); }
}

33. Använd base-nyckelordet

csharppublic class Animal
{
    public virtual void Eat() { Console.WriteLine("Animal eats"); }
}

public class Dog : Animal
{
    public override void Eat()
    {
        _______.Eat();
        Console.WriteLine("Dog eats bones");
    }
}

34. Skapa en privat field med publik property

csharppublic class Person
{
    private string _namn;
    
    public string Namn
    {
        get { return _______; }
        set { _______ = _______; }
    }
}

35. Använd constructor chaining

csharppublic class Person
{
    public string Namn { get; set; }
    public int Ålder { get; set; }
    
    public Person() _______ this("Okänd", 0) { }
    
    public Person(string namn, int ålder)
    {
        Namn = namn;
        Ålder = ålder;
    }
}

36. Implementera property validation

csharppublic class Person
{
    private int ålder;
    
    public int Ålder
    {
        get { return ålder; }
        set
        {
            if (value < 0)
                _______ new ArgumentException("Ålder kan inte vara negativ");
            ålder = value;
        }
    }
}

37. Skapa en readonly property

csharppublic class Person
{
    public string Namn { get; _______ set; }
    
    public Person(string namn)
    {
        Namn = namn;
    }
}

38. Använd namespaces

csharp_______ MyApplication.Models
{
    public class Person
    {
        public string Namn { get; set; }
    }
}

39. Skapa en partiell klass

csharppublic _______ class Person
{
    public string Förnamn { get; set; }
}

public _______ class Person
{
    public string Efternamn { get; set; }
}

40. Implementera en indexer

csharppublic class StringCollection
{
    private string[] items = new string[10];
    
    public string _______[int index]
    {
        get { return items[index]; }
        set { items[index] = value; }
    }
}

Nivå 3: Avancerade Koncept (Frågor 41-60)

41. Skapa en generisk klass

csharppublic class Container_______
{
    private T item;
    
    public void SetItem(_______ value)
    {
        item = value;
    }
    
    public _______ GetItem()
    {
        return item;
    }
}

42. Använd generic constraints

csharppublic class Repository<T> _______ T : class, new()
{
    public T CreateNew()
    {
        return _______ T();
    }
}

43. Skapa och använd en List<T>

csharp_______ <string> names = new _______<string>();
names._______(Anna");
names._______(Erik");

44. Använd Dictionary<TKey, TValue>

csharp_______<string, int> ages = new _______<string, int>();
ages_______(Anna", 25);
int annaAge = ages_______("Anna");

45. Skriv en enkel LINQ Where-query

csharpList<int> numbers = new List<int> {1, 2, 3, 4, 5};
var evenNumbers = numbers._______(n => n % 2 == 0);

46. Använd LINQ Select för transformation

csharpList<string> names = new List<string> {"anna", "erik"};
var upperNames = names._______(n => n._______());

47. Skriv ett lambda-uttryck för att hitta max värde

csharpList<int> numbers = new List<int> {3, 1, 4, 1, 5};
int max = numbers._______(n => n);

48. Använd LINQ OrderBy

csharpList<string> names = new List<string> {"Erik", "Anna", "Bert"};
var sortedNames = names._______(n => n);

49. Gruppera med LINQ GroupBy

csharpvar people = new[] 
{
    new { Name = "Anna", Age = 25 },
    new { Name = "Erik", Age = 25 },
    new { Name = "Lisa", Age = 30 }
};
var groups = people._______By(p => p.Age);

50. Implementera grundläggande exception handling

csharppublic void DivideNumbers(int a, int b)
{
    _______
    {
        int result = a / b;
        Console.WriteLine(result);
    }
    _______ (DivideByZeroException ex)
    {
        Console.WriteLine($"Fel: {ex._______}");
    }
    _______
    {
        Console.WriteLine("Division slutförd");
    }
}

51. Skapa en custom exception

csharppublic class InvalidAgeException _______ Exception
{
    public InvalidAgeException(string message) _______ _______(message)
    {
    }
}

52. Kasta en exception

csharppublic void SetAge(int age)
{
    if (age < 0)
        _______ new InvalidAgeException("Ålder kan inte vara negativ");
}

53. Deklarera en delegate

csharppublic _______ void MyDelegate(string message);

MyDelegate del = Console.WriteLine;
del_______(Hello");

54. Använd Action delegate

csharp_______ <string> printAction = Console.WriteLine;
printAction("Hello World");

55. Använd Func delegate

csharp_______ <int, int, int> addFunc = (a, b) => a + b;
int result = addFunc(5, 3);

56. Skapa och använd ett event

csharppublic class Publisher
{
    public _______ Action<string> SomethingHappened;
    
    protected virtual void OnSomethingHappened(string message)
    {
        SomethingHappened_______(message);
    }
}

57. Prenumerera på ett event

csharpPublisher pub = new Publisher();
pub.SomethingHappened _______ message => Console.WriteLine(message);

58. Använd nullable types

csharp_______ age = null;
if (age._______(Value))
{
    Console.WriteLine($"Age is {age._______}");
}

59. Använd null-coalescing operator

csharpstring name = null;
string displayName = name _______ "Unknown";

60. Skapa en extension method

csharppublic _______ class StringExtensions
{
    public _______ bool IsValidEmail(_______ string email)
    {
        return email.Contains("@");
    }
}

// Användning
string email = "test@example.com";
bool isValid = email._______();

Nivå 4: Praktiska Tillämpningar (Frågor 61-80)

61. Läs all text från en fil

csharpstring content = _______._______("myfile.txt");

62. Skriv text till en fil

csharpstring text = "Hello World";
File._______("output.txt", text);

63. Använd StreamWriter för att skriva till fil

csharp_______ (StreamWriter writer = new StreamWriter("data.txt"))
{
    writer._______("First line");
    writer._______("Second line");
}

64. Serialisera ett objekt till JSON

csharpusing System.Text.Json;

Person person = new Person { Name = "Anna", Age = 25 };
string json = JsonSerializer._______(person);

65. Deserialisera JSON till objekt

csharpstring json = """{"Name":"Anna","Age":25}""";
Person person = JsonSerializer._______<Person>(json);

66. Skapa en async metod

csharppublic _______ _______ <string> GetDataAsync()
{
    _______ Task.Delay(1000);
    return "Data loaded";
}

67. Anropa en async metod

csharppublic async Task Main()
{
    string data = _______ GetDataAsync();
    Console.WriteLine(data);
}

68. Skapa en Task som returnerar ett värde

csharp_______ <int> task = Task.Run(() =>
{
    Thread.Sleep(1000);
    return 42;
});

int result = _______ task;

69. Använd HttpClient för GET request

csharpusing HttpClient client = new HttpClient();
string response = _______ client._______("https://api.example.com/data");

70. Hantera multiple async operations

csharpTask<string> task1 = GetDataAsync("url1");
Task<string> task2 = GetDataAsync("url2");

string[] results = _______ Task._______([task1, task2]);

71. Skapa en DbContext klass

csharppublic class ApplicationDbContext _______ DbContext
{
    public _______ <Person> Personer { get; set; }
    
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder._______("connection string");
    }
}

72. Lägg till en entity i Entity Framework

csharpusing var context = new ApplicationDbContext();
Person person = new Person { Name = "Anna" };
context.Personer._______(person);
_______ context._______();

73. Hämta data med Entity Framework

csharpusing var context = new ApplicationDbContext();
List<Person> people = _______ context.Personer._______();

74. Använd LINQ med Entity Framework

csharpusing var context = new ApplicationDbContext();
var adults = _______ context.Personer
    .Where(p => p.Age >= 18)
    ._______();

75. Implementera CancellationToken

csharppublic async Task<string> GetDataAsync(_______ cancellationToken)
{
    await Task.Delay(5000, _______);
    return "Data";
}

76. Använd ConfigureAwait

csharppublic async Task ProcessDataAsync()
{
    string data = await GetDataAsync()._______(_______);
    // Process data
}

77. Skapa en thread-safe collection

csharp_______ Dictionary<string, int> safeDict = new _______<string, int>();

78. Använd lock för thread safety

csharpprivate readonly object _lock = new object();
private int counter = 0;

public void Increment()
{
    _______ (_lock)
    {
        counter++;
    }
}

79. Skapa en connection string

csharpstring connectionString = "_______ Source=localhost;Initial Catalog=MyDB;Integrated Security=true";

80. Implementera Dependency Injection container registration

csharppublic void ConfigureServices(IServiceCollection services)
{
    services._______<IMyService, MyService>();
    services._______<MyRepository>();
}

FACIT – Rätta svar

Nivå 1 (1-20):

  1. classMainWriteLine
  2. intstringdoublebool
  3. const double
  4. +%*
  5. ifelse
  6. int<=++
  7. while++
  8. intParse
  9. switchcasebreakcasebreakdefaultbreak
  10. ReadLine
  11. ?Length
  12. int[]int[]
  13. foreachintin
  14. {namn}{ålder}
  15. IsNullOrEmpty
  16. &&
  17. dowhile
  18. trycatch
  19. boolisTrue
  20. ++--

Nivå 2 (21-40):

  1. public class
  2. Personthisthis
  3. getset
  4. getsetgetprivate set
  5. new Person
  6. :
  7. virtualoverride
  8. abstractabstract
  9. interface:Flyga
  10. staticAdd
  11. sealed
  12. :SwimFly
  13. base
  14. _namn_namnvalue
  15. :
  16. throw
  17. private
  18. namespace
  19. partialpartial
  20. this

Nivå 3 (41-60):

  1. <T>TT
  2. wherenew
  3. ListListAddAdd
  4. DictionaryDictionary["Anna"]["Anna"]
  5. Where
  6. SelectToUpper
  7. Max
  8. OrderBy
  9. Group
  10. trycatchMessagefinally
  11. :: base
  12. throw
  13. delegate("Hello")
  14. Action
  15. Func
  16. event?.Invoke
  17. +=
  18. int?HasValue
  19. ??
  20. staticstaticthisIsValidEmail

Nivå 4 (61-80):

  1. FileReadAllText
  2. WriteAllText
  3. usingWriteLine
  4. Serialize
  5. Deserialize
  6. asyncTaskawait
  7. await
  8. Taskawait
  9. awaitGetStringAsync
  10. awaitWhenAll
  11. :DbSetUseSqlServer
  12. AddawaitSaveChangesAsync
  13. awaitToListAsync
  14. awaitToListAsync
  15. CancellationTokencancellationToken
  16. ConfigureAwaitfalse
  17. ConcurrentConcurrentDictionary
  18. lock
  19. Data
  20. AddTransientAddScoped

Bedömning

  • 0-20 rätt: Nybörjarnivå – Öva grundläggande syntax
  • 21-40 rätt: Grundläggande – Fokusera på OOP-koncept
  • 41-60 rätt: Medelnivå – Utveckla avancerade färdigheter
  • 61-75 rätt: Avancerad – Utmärkt kodförståelse
  • 76-80 rätt: Expert – Mästerlig C#-kunskap!

C# Knowledge Test – 80 Questions

Instructions

  • Choose the best answer for each question
  • Each question has four options (A, B, C, D)
  • The correct answer is marked with
  • Questions are divided according to course levels

Level 1: Basic C# (Questions 1-20)

1. What is C#?

A) An operating system
B) A web browser
★ C) A programming language
D) A database

2. Which method writes text to the screen?

A) Console.Input()
★ B) Console.WriteLine()
C) Screen.Print()
D) Display.Show()

3. How do you end each line of code in C#?

A) with a period (.)
★ B) with a semicolon (;)
C) with a comma (,)
D) with nothing special

4. Which data type is used to store whole numbers?

A) text
★ B) int
C) decimal
D) word

5. How do you write the text “Hello” to the screen?

A) print(“Hello”)
★ B) Console.WriteLine(“Hello”)
C) show(“Hello”)
D) display(“Hello”)

6. What is a variable?

A) A program
★ B) A place in memory where you can store data
C) A file
D) A screen

7. How do you create a variable that stores your name?

A) name = “Anna”
★ B) string name = “Anna”
C) text name = Anna
D) var name Anna

8. What does = (one equals sign) mean in programming?

A) Compares two values
★ B) Assigns a value to a variable
C) Adds two numbers
D) Subtracts two numbers

9. What does this output? Console.WriteLine(3 + 5);

A) 3 + 5
★ B) 8
C) 35
D) An error

10. Which data type is used for text?

A) int
★ B) string
C) number
D) text

11. What is true about variables in C#?

A) They can never change
★ B) They can store different types of data
C) They are always numbers
D) They are always text

12. How do you read input from the user?

A) Console.WriteLine()
★ B) Console.ReadLine()
C) Console.Input()
D) User.Read()

13. What does this code do? int age = 25;

A) Prints 25
★ B) Creates a variable called age and gives it the value 25
C) Compares age with 25
D) Adds age and 25

14. Which operator is used for addition?

A) –
★ B) +
C) *
D) /

15. What’s the difference between Console.Write() and Console.WriteLine()?

A) No difference
★ B) WriteLine() jumps to the next line, Write() doesn’t
C) Write() is faster
D) WriteLine() only writes numbers

16. How do you create a comment in C#?

A) # This is a comment
★ B) // This is a comment
C) — This is a comment
D) ‘ This is a comment

17. What happens when you run a C# program?

A) The computer shuts down
★ B) The code runs line by line from the Main() method
C) Nothing happens
D) A file is created

18. Which data type is used for decimal numbers?

A) int
B) string
★ C) double
D) text

19. What does this output? Console.WriteLine("Hello " + "Anna");

A) Hello + Anna
★ B) Hello Anna
C) HelloAnna
D) An error

20. What is the Main() method?

A) A variable
★ B) The starting point of the program
C) A data type
D) A file


Level 2: Object-Oriented Programming (Questions 21-40)

21. What happens after an if-statement if the condition is false?

A) Nothing happens
★ B) The else part runs (if it exists)
C) The program crashes
D) The if-statement runs again

22. What does a while loop do?

A) Runs once
★ B) Runs as long as the condition is true
C) Always runs 10 times
D) Never runs

23. How do you write a condition that checks if x equals 5?

A) if x = 5
★ B) if (x == 5)
C) if x equals 5
D) if (x = 5)

24. What is a for loop good for?

A) Reading text
★ B) Repeating code a specific number of times
C) Writing text
D) Closing the program

25. What does this code output?

csharpfor (int i = 1; i <= 3; i++)
{
    Console.WriteLine(i);
}

A) 1
B) 3
★ C) 1, 2, 3 (on separate lines)
D) 123

26. What is a class in simple terms?

A) A variable
★ B) A template for creating objects
C) A loop
D) A method

27. What is an object?

A) A class
★ B) An instance of a class
C) A variable
D) A method

28. How do you create an object of the class “Car”?

A) Car myCar;
★ B) Car myCar = new Car();
C) new Car myCar;
D) create Car myCar;

29. What is a method in a class?

A) A variable
★ B) A function that the object can perform
C) Another class
D) A number

30. What does “public” mean in front of a method?

A) The method is secret
★ B) The method can be used from other classes
C) The method is fast
D) The method is important

31. What does “private” mean in front of a variable?

A) The variable is important
★ B) The variable can only be used within the same class
C) The variable is fast
D) The variable is large

32. What is a constructor?

A) A regular method
★ B) A special method that runs when an object is created
C) A variable
D) A loop

33. What is inheritance between classes?

A) Copying code
★ B) A class getting properties from another class
C) Deleting code
D) Buying code

34. If class B inherits from class A, what does B have?

A) Nothing from A
★ B) All public members from A
C) Only the name from A
D) Only the methods from A

35. What is a property?

A) A method
★ B) A way to access and change data in a class
C) A loop
D) A variable

36. What does “get” do in a property?

A) Removes data
★ B) Retrieves the value from the property
C) Creates data
D) Copies data

37. What does “set” do in a property?

A) Gets the value
★ B) Sets/changes the value in the property
C) Removes the value
D) Copies the value

38. What is encapsulation?

A) Writing long code
★ B) Hiding internal details in a class
C) Copying classes
D) Deleting classes

39. Why use private variables?

A) They are faster
★ B) To protect data from being changed directly from outside
C) They take less space
D) They are free

40. What’s the difference between a class and an object?

A) No difference
★ B) Class is the template, object is what’s created from the template
C) Classes are bigger
D) Objects are faster


Level 3: Advanced Concepts (Questions 41-60)

41. What are generics in C#?

A) General classes
★ B) Type-safe classes and methods that can work with different data types
C) Large classes
D) Automatic classes

42. How do you declare a generic class?

A) class MyClass<generic>
★ B) class MyClass<T>
C) class MyClass[T]
D) generic class MyClass

43. What is List<T>?

A) An array
★ B) A dynamic list that can store objects of type T
C) A string
D) A method

44. Which collection uses key-value pairs?

A) List<T>
B) Array
★ C) Dictionary<TKey, TValue>
D) Queue<T>

45. What does LINQ stand for?

A) Language Integrated Query Language
★ B) Language Integrated Query
C) Linear Integrated Query
D) Logic Integrated Query

46. Which LINQ method filters elements?

★ A) Where
B) Select
C) OrderBy
D) GroupBy

47. What is a lambda expression?

A) A class
B) A variable
★ C) An anonymous function
D) A property

48. How do you write a lambda expression that takes x and returns x * 2?

A) x => x * 2
★ B) x => x * 2
C) x -> x * 2
D) lambda x: x * 2

49. What does the Select method do in LINQ?

A) Filters elements
★ B) Transforms/projects elements
C) Sorts elements
D) Groups elements

50. What is an exception?

A) A class
B) A method
★ C) An error that occurs during runtime
D) A variable

51. Which block is used to handle exceptions?

A) if-else
★ B) try-catch
C) switch
D) for-loop

52. What always runs in exception handling, whether an error occurs or not?

A) try
B) catch
★ C) finally
D) throw

53. What is a delegate in C#?

A) A class
★ B) A type that represents references to methods
C) A variable
D) A property

54. What’s the difference between Action and Func delegates?

A) No difference
★ B) Action returns void, Func returns a value
C) Action is faster
D) Func is larger

55. What is an event in C#?

A) A method
★ B) A special type of delegate for notifications
C) A class
D) A variable

56. How do you subscribe to an event?

A) event.Subscribe()
★ B) event += methodName
C) event.Add(methodName)
D) event << methodName

57. What are nullable types?

A) Types that are empty
★ B) Types that can have the value null
C) Types that are large
D) Types that are abstract

58. How do you declare a nullable int?

A) int? x
★ B) int? x
C) nullable int x
D) int null x

59. What does the null-coalescing operator (??) do?

A) Creates null
★ B) Returns the right operand if the left is null
C) Compares with null
D) Removes null

60. What are extension methods?

A) Long methods
★ B) Methods that add functionality to existing types
C) Methods in subclasses
D) Private methods


Level 4: Practical Applications (Questions 61-80)

61. What is used to read files in C#?

A) Console.ReadLine()
★ B) File.ReadAllText()
C) Input.Read()
D) Text.Load()

62. Which class is used to write to files line by line?

A) FileWriter
★ B) StreamWriter
C) TextWriter
D) LineWriter

63. What is JSON?

A) A programming language
★ B) A text format for data exchange
C) A database
D) A library

64. Which namespace contains JSON functionality in .NET?

A) System.Json
★ B) System.Text.Json
C) Newtonsoft.Json
D) Microsoft.Json

65. What does the async keyword mean?

A) The method is fast
★ B) The method is asynchronous and can contain await
C) The method is automatic
D) The method is abstract

66. What does an async method usually return?

A) void
B) object
★ C) Task or Task<T>
D) string

67. What does the await keyword do?

A) Waits forever
★ B) Waits for an asynchronous operation to complete
C) Stops the program
D) Starts a new thread

68. What is a Task in C#?

A) A class
B) A method
★ C) Represents an asynchronous operation
D) A variable

69. Which method is used for HTTP GET requests?

A) HttpClient.Get()
★ B) HttpClient.GetAsync()
C) Http.Request()
D) Web.Get()

70. What is Entity Framework?

A) A web browser
★ B) An ORM (Object-Relational Mapping) for databases
C) An operating system
D) An IDE

71. What does ORM mean?

A) Object Request Model
★ B) Object-Relational Mapping
C) Online Resource Manager
D) Optimized Runtime Memory

72. Which method is used to save changes in Entity Framework?

A) Save()
★ B) SaveChanges()
C) Commit()
D) Update()

73. What is DbContext in Entity Framework?

A) A data type
★ B) The main class for database interaction
C) A method
D) A property

74. What are migrations in Entity Framework?

A) Moving data
★ B) Version control for database schema
C) Database backup
D) Data import

75. What is CancellationToken used for?

A) Creating tokens
★ B) Canceling asynchronous operations
C) Logging in
D) Encrypting data

76. What is a Thread in C#?

A) A class
B) A method
★ C) An execution thread
D) A variable

77. What is ConfigureAwait(false) for?

A) Configuring database
★ B) Avoiding deadlocks by not returning to original context
C) Turning off await
D) Configuring errors

78. Which collection is thread-safe?

A) List<T>
B) Dictionary<TKey, TValue>
★ C) ConcurrentDictionary<TKey, TValue>
D) Array

79. What is a connection string?

A) A regular string
★ B) Information for connecting to a database
C) A network string
D) A URL

80. What is dependency injection?

A) Injecting errors
B) Injecting code
★ C) A design pattern for managing dependencies between objects
D) Injecting data


ANSWER KEY – Summary of Correct Answers

Level 1 (1-20): C, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, C, B, B

Level 2 (21-40): B, B, B, B, C, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B

Level 3 (41-60): B, B, B, C, B, A, C, B, B, C, B, C, B, B, B, B, B, B, B, B

Level 4 (61-80): B, B, B, B, B, C, B, C, B, B, B, B, B, B, B, C, B, C, B, C


Assessment

  • 0-20 correct: Beginner level – Focus on the basics
  • 21-40 correct: Basic – Practice more on OOP concepts
  • 41-60 correct: Intermediate – Good foundation, develop advanced skills
  • 61-75 correct: Advanced – Very good knowledge
  • 76-80 correct: Expert – Excellent C# knowledge!