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):
class
,Main
,WriteLine
int
,string
,double
,bool
const double
+
,%
,*
if
,else
int
,<=
,++
while
,++
int
,Parse
switch
,case
,break
,case
,break
,default
,break
ReadLine
?
,Length
int[]
,int[]
foreach
,int
,in
{namn}
,{ålder}
IsNullOrEmpty
&&
do
,while
try
,catch
bool
,isTrue
++
,--
Nivå 2 (21-40):
public class
Person
,this
,this
get
,set
get
,set
,get
,private set
new Person
:
virtual
,override
abstract
,abstract
interface
,:
,Flyga
static
,Add
sealed
:
,Swim
,Fly
base
_namn
,_namn
,value
:
throw
private
namespace
partial
,partial
this
Nivå 3 (41-60):
<T>
,T
,T
where
,new
List
,List
,Add
,Add
Dictionary
,Dictionary
,["Anna"]
,["Anna"]
Where
Select
,ToUpper
Max
OrderBy
Group
try
,catch
,Message
,finally
:
,: base
throw
delegate
,("Hello")
Action
Func
event
,?.Invoke
+=
int?
,Has
,Value
??
static
,static
,this
,IsValidEmail
Nivå 4 (61-80):
File
,ReadAllText
WriteAllText
using
,WriteLine
Serialize
Deserialize
async
,Task
,await
await
Task
,await
await
,GetStringAsync
await
,WhenAll
:
,DbSet
,UseSqlServer
Add
,await
,SaveChangesAsync
await
,ToListAsync
await
,ToListAsync
CancellationToken
,cancellationToken
ConfigureAwait
,false
Concurrent
,ConcurrentDictionary
lock
Data
AddTransient
,AddScoped
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):
class
,Main
,WriteLine
int
,string
,double
,bool
const double
+
,%
,*
if
,else
int
,<=
,++
while
,++
int
,Parse
switch
,case
,break
,case
,break
,default
,break
ReadLine
?
,Length
int[]
,int[]
foreach
,int
,in
{namn}
,{ålder}
IsNullOrEmpty
&&
do
,while
try
,catch
bool
,isTrue
++
,--
Nivå 2 (21-40):
public class
Person
,this
,this
get
,set
get
,set
,get
,private set
new Person
:
virtual
,override
abstract
,abstract
interface
,:
,Flyga
static
,Add
sealed
:
,Swim
,Fly
base
_namn
,_namn
,value
:
throw
private
namespace
partial
,partial
this
Nivå 3 (41-60):
<T>
,T
,T
where
,new
List
,List
,Add
,Add
Dictionary
,Dictionary
,["Anna"]
,["Anna"]
Where
Select
,ToUpper
Max
OrderBy
Group
try
,catch
,Message
,finally
:
,: base
throw
delegate
,("Hello")
Action
Func
event
,?.Invoke
+=
int?
,Has
,Value
??
static
,static
,this
,IsValidEmail
Nivå 4 (61-80):
File
,ReadAllText
WriteAllText
using
,WriteLine
Serialize
Deserialize
async
,Task
,await
await
Task
,await
await
,GetStringAsync
await
,WhenAll
:
,DbSet
,UseSqlServer
Add
,await
,SaveChangesAsync
await
,ToListAsync
await
,ToListAsync
CancellationToken
,cancellationToken
ConfigureAwait
,false
Concurrent
,ConcurrentDictionary
lock
Data
AddTransient
,AddScoped
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!