Blog Dla Młodszych Programistów C#/.NET

Jeżeli chcesz zostać programistą .NET, to na pewno musisz wziąć udział w przynajmniej kilku rozmowach kwalifikacyjnych. Takie rozmowy w każdej firmie mogą wyglądać trochę inaczej, nie mniej jednak, zawsze na takiej rozmowie będziesz miał sporo pytań technicznych. W najbliższych artykułach przedstawię Ci 100 pytań wraz z odpowiedziami z rozmów kwalifikacyjnych dla młodszych programistów C#. Podzielimy tę serię na 10 artykułów po 10 pytań wraz z odpowiedziami na każdy artykuł.

100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 1/10)

Na wszystkie pytania, będę starał się odpowiedzieć w miarę krótko i konkretnie. Niektóre odpowiedzi można bardziej rozwinąć, ale w takich przypadkach będę też odsyłał Cię do odpowiednich źródeł.


1) Czym jest C#?


C# jest to pierwotnie opracowany przez Microsoft język z rodziny .NET. Powstał na bazie języków C++ oraz C. Początkowo C# był bardzo podobny do Javy, ale z biegiem czasu, podobieństwo staje się coraz mniejsze. C# jest popularnym, wysokopoziomowym językiem programowania, jest językiem ogólnego przeznaczenia, to znaczy, że można pisać w nim różne aplikacje, to jest aplikacje webowe, desktopowe, mobilne, a nawet gry. Program napisany w języku C# jest kompilowany do języka Intermediate Language (IL), czyli kodu pośredniego, wykonywanego w środowisku uruchomieniowym .NET.


2) Czym jest .NET Framework?


.NET Framework jest to platforma programistyczna opracowana przez Microsoft, wydana w roku 2002. Obejmuje CLR, czyli środowisko uruchomieniowe, na którym działają napisane programy, a także biblioteki klas, które implementują typowe funkcjonalności, wykorzystywane w aplikacjach .NET. Wspomniane biblioteki to zbiór funkcjonalności i metod, które ułatwiają pracę programistów. Dzięki którym możesz użyć gotowych już implementacji. Zadaniem platformy .NET jest między innymi zarządzanie kodem aplikacji, pamięcią i zabezpieczeniami. Programy na platformę .NET mogą być pisane w różnych językach, takich jak C#, F#, Delphi 8, Visual Basic .NET, COBOL, Eiffel, Fortran, Lisp, Perl.


3) Jakie są różnice pomiędzy .NET, .NET Core, a .NET Framework?


.NET Framework powstał w 2002 i jest to platforma programistyczna, na której można tworzyć tylko aplikacje na windows. Natomiast .NET Core jest takim jakby następnikiem, został wydany w roku 2016. Jest to otwarte oprogramowanie, dzięki któremu, możesz tworzyć i uruchamiać swoje aplikacje napisane między innymi w C# na platformach Windows, Linux i macOS. Ponadto w .NET corze zostały zoptymalizowane biblioteki i środowisko uruchomieniowe, także aplikacje tworzone w .NET corze są jeszcze bardziej wydajne. Kod źródłowy .NET corea jest otwarty i udostępniony na githubie. W roku 2020 został wydany .NET 5, który można powiedzieć, połączył .NET Framework z .NET Core'em. Teraz co roku ma być wypuszczana nowe wersja, czyli w tym roku .NET 6, w przyszłym .NET 7 itd.. Także na pewno wprowadzi to trochę porządku, ponieważ różne wersje .NET Frameworka i .NET Core'a wprowadzały trochę zamieszania w ostatnich latach.


4) Czym są namespace'y w C#?


Dzięki namespace, czyli przestrzeni nazw w C# może lepiej poukładać kod w C# i wprowadzić separację kodu. Przestrzenie nazw można traktować jako takie pudełko, które składa się z innych przestrzeni nazw, klas, metod, właściwości itd. W celu zdefiniowania przestrzeni nazw używamy słowa kluczowego namespace: Przykład:

namespace App
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine();
        }
    }
}

Czyli nasza klasa Program jest dostępna wewnątrz przestrzeni nazw App. Jeżeli natomiast chcielibyśmy użyć tej klasy w innym namespace'ie, to musimy podać pełną nazwę klasy wraz z przestrzenią nazw, lub dodać odwołanie za pomocą słowa kluczowego using.

using app;


5) Jakie są typy komentarzy w C#?


W C# mamy 3 typy komentarzy. Są to komentarzy pojedynczej linii:

//Single line comments

Komentarze dla wielu linii:

/*
Multi line comments
…
Multi line comments
*/

Oraz komentarze do dokumentacji

/// <summary>
/// Method return sum of 2 parameters
/// </summary>
/// <param name="number1">Number 1</param>
/// <param name="number2">Number 2</param>
/// <returns>Sum</returns>
public int Sum(int number1, int number2)
{
    return 1;
}

Można z nich utworzyć dokumentacje w XML, a także są wyświetlane jako podpowiedzi w IntelliSense.


6) Jakie są rodzaje pętli w C#?


W C# mamy 4 rodzaje pętli. Są to pętle for, while, do while oraz foreach.

for (int i = 0; i < length; i++)
{

}

while (true)
{

}

do
{

} while (true);

foreach (var item in collection)
{

}


7) Jaka jest różnica pomiędzy pętlą while, a do while?


Podstawowa różnica pomiędzy pętlą while, a do while, jest taka, że pętla do while zawsze wykona się przynajmniej 1 raz, ponieważ najpierw jest wykonywana logika, a dopiero później jest sprawdzany warunek. Natomiast pętla while, może nie zostać wykonana ani 1 raz, jeżeli już na starcie warunek nie jest spełniony.

while (1 < 0)
{
    Console.WriteLine("x");
}

//Wynik:
do
{
    Console.WriteLine("x");
} while (1 < 0);

//Wynik: "x"


8) Jaka jest różnica pomiędzy słowem kluczowym continue, a break?


Oba słowa kluczowe możemy użyć wewnątrz iteracji pętli. Jeżeli w iteracji wykona się continue, to zostanie pominięta obecna iteracja i przejdziemy do kolejnej. W przypadku break zostanie zakończona nie tylko obecna iteracja, ale cała pętla.

for (int i = 0; i < 10; i++)
{
    if (i == 5)
        continue;

    Console.WriteLine(i);
}

//Wynik: 0, 1, 2, 3, 4, 6, 7, 8, 9
for (int i = 0; i < 10; i++)
{
    if (i == 5)
        break;

    Console.WriteLine(i);
}

//Wynik: 0, 1, 2, 3, 4


9) Jaka jest różnica pomiędzy klasą a obiektem?


Klasa jest to definicja obiektu, opisuje stany oraz zachowania obiektu. Obiekt jest to instancja klasy, jego zachowanie zostały zdefiniowane w klasie. Jeżeli tworzymy nowy obiekt, czyli instancje klasy, to tworzymy konkretny egzemplarz, którego zachowania, czyli metody i stany, czyli właściwości i pola zostały zdefiniowane w klasie. Czyli klasa jest to taki szablon, na podstawie którego możemy tworzyć nowe obiekty. Gdy już mamy klasę, to na jej podstawie możemy tworzyć wiele obiektów.

public class Student
{
    public string Name { get; set; }

    public void DisplayName()
    {
        Console.WriteLine(Name);
    }
}

public class Program
{
    static void Main(string[] args)
    {
        var student = new Student();
        student.Name = "Jan";
        student.DisplayName();
    }
}


10) Jaka jest różnica pomiędzy deklaracją a inicjalizacją?


Sama deklaracja to tylko stworzenie miejsca w pamięci gdzie będzie przechowywana wartość danej zmiennej.

int a;

Natomiast inicjalizacja, to przypisanie jakiejś wartości do wcześniej już zadeklarowanej na przykład zmiennej.

a = 1;

Nic nie stoi na przeszkodzie, aby jednocześnie zrobić deklarację, wraz z inicjalizacją.

int b = 2;


ZAKOŃCZENIE


To tyle pytań w tym artykule. Kolejne przeanalizujemy już w kolejnym artykule. Jeżeli taki materiał Ci się spodobał, to koniecznie dołącz do mojej społeczności – darmowe zapisy, gdzie będziesz również miał dostęp do dodatkowych materiałów.

To wszystko na dzisiaj, do zobaczenia w kolejnym artykule.

Poprzedni artykuł - Kursy Online a Programowanie. Czy Warto Kupować Kursy Programowania?.
Następny artykuł - 100 Pytań (i Odpowiedzi!) z Rozmów Kwalifikacyjnych Dla Młodszych Programistów C#/.NET (Część 2/10).
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
Programista C#/.NET. Specjalizuje się w ASP.NET Core, ASP.NET MVC, ASP.NET Web API, Blazor, WPF oraz Windows Forms.
Autor bloga ModestProgrammer.pl
Komentarze (4)
Slawomir
SLAWOMIR, wtorek, 28 grudnia 2021 12:55
Autor dotrzymał słowa, odpowiedzi są krótkie i konkretne a tym samym łatwe w zapamiętaniu :-)
Kazimierz Szpin
KAZIMIERZ SZPIN, środa, 29 grudnia 2021 08:46
@SLAWOMIR, dokładnie o to chodziło :)
Szymon
SZYMON, czwartek, 30 grudnia 2021 01:24
Super. Zaczałem 2 dni temu przygode z C# i rozumiem wiecej niz po godzinach spedzonych w ksiazkach itd.
Kazimierz Szpin
KAZIMIERZ SZPIN, czwartek, 30 grudnia 2021 09:26
@SZYMON, staram się skupiać na najważniejszych rzeczach i tłumaczyć na konkretnych przykładach :) Cieszę się, że znalazłeś wartościowe materiały i zapraszam do pozostałych artykułów na blogu, znajdziesz tutaj mnóstwo wiedzy dla osób, które zaczynają naukę programowania w C#.
Dodaj komentarz
© Copyright 2024 modestprogrammer.pl. Wszelkie prawa zastrzeżone. Regulamin. Polityka prywatności. Design by Kazimierz Szpin