término |
definición |
Jakie są paradygmaty programowania obiektowego? Klasa `Samochód` dziedziczy po `Pojazd`, ukrywa pola i ma różne zachowania metod. empezar lección
|
|
Enkapsulacja, dziedziczenie, polimorfizm, abstrakcja.
|
|
|
S (Single Responsibility) z SOLID `InvoicePrinter` tylko drukuje faktury. empezar lección
|
|
Klasa powinna mieć tylko jedno zadanie.
|
|
|
Dodanie nowego typu płatności bez zmiany istniejącego kodu. empezar lección
|
|
Klasa powinna być otwarta na rozszerzanie, zamknięta na modyfikacje.
|
|
|
L (Liskov Substitution) z SOLID `Kwadrat` nie powinien dziedziczyć po `Prostokąt`, jeśli zmienia logikę wymiarów. empezar lección
|
|
Klasa pochodna musi poprawnie zastępować bazową.
|
|
|
I (Interface Segregation) z SOLID `IPrinter` i `IScanner` zamiast `IMultifunctionDevice`. empezar lección
|
|
Lepiej mieć wiele małych interfejsów niż jeden duży.
|
|
|
D (Dependency Inversion) z SOLID Klasa używa `ILogger`, nie `ConsoleLogger`. empezar lección
|
|
Moduły powinny zależeć od abstrakcji, nie konkretów.
|
|
|
Nieusunięta subskrypcja eventu. empezar lección
|
|
Pamięć zajęta przez obiekty, do których nie ma już referencji.
|
|
|
Wydziel wspólną logikę do metody. empezar lección
|
|
|
|
|
Nie twórz skomplikowanego wzorca tam, gdzie wystarczy zwykła metoda. empezar lección
|
|
Utrzymuj rozwiązania proste.
|
|
|
Nie pisz kodu „na zapas”. empezar lección
|
|
Nie implementuj funkcji, dopóki nie jest potrzebna.
|
|
|
Czym jest klasa, a czym obiekt? `class Samochód` → `new Samochód()`. empezar lección
|
|
Klasa to szablon, obiekt to jej instancja.
|
|
|
Czym różni się JSON od XML? JSON: `{"imie": "Jan"}` / XML: `<imie>Jan</imie>`. empezar lección
|
|
JSON jest lżejszy, oparty na klucz–wartość; XML jest rozbudowany i tagowy.
|
|
|
`JsonConvert. SerializeObject(obj)`. empezar lección
|
|
Zamiana obiektu na format tekstowy lub bajtowy do zapisu lub przesłania.
|
|
|
Czym są wzorce projektowe? Singleton, Fabryka, Strategia. empezar lección
|
|
Gotowe schematy rozwiązywania typowych problemów.
|
|
|
Jak działa wzorzec Singleton? empezar lección
|
|
Gwarantuje jedną instancję klasy w systemie.
|
|
|
Jak działa wzorzec Fabryka? `ShapeFactory. Create("Circle")`. empezar lección
|
|
Tworzy obiekty bez ujawniania logiki tworzenia.
|
|
|
Jaki jest cel wzorca Strategia? `ISortStrategy` → `QuickSort`, `MergeSort`. empezar lección
|
|
Pozwala dynamicznie zmieniać algorytm w czasie działania.
|
|
|
Jakie modyfikatory dostępu istnieją w C#? empezar lección
|
|
public, private, protected, internal, protected internal, private protected.
|
|
|
`public void Start()` można wywołać z dowolnego miejsca. empezar lección
|
|
|
|
|
Prywatne pole `_age` dostępne tylko wewnątrz klasy. empezar lección
|
|
Dostępny tylko w tej samej klasie.
|
|
|
Metoda `protected void Init()` dostępna w klasach dziedziczących. empezar lección
|
|
Dostępny w klasie i klasach pochodnych.
|
|
|
Klasa `internal Helper` widoczna tylko w tym projekcie. empezar lección
|
|
Dostępny w obrębie tego samego zestawu (assembly).
|
|
|
Klasa dziedzicząca z innego projektu może mieć dostęp. empezar lección
|
|
Dostępny w tym samym zestawie lub w klasach pochodnych.
|
|
|
Klasa bazowa i dziedzicząca w jednym projekcie mają dostęp. empezar lección
|
|
Dostępny tylko w tej samej klasie i klasach pochodnych w tym samym zestawie.
|
|
|
Jakie metody posiada każdy obiekt? empezar lección
|
|
`ToString()`, `Equals()`, `GetHashCode()`, `GetType()`.
|
|
|
Po czym można dziedziczyć w C#? `class Car: Vehicle, IDrivable`. empezar lección
|
|
Po jednej klasie i wielu interfejsach.
|
|
|
`int x` → stos, `new Car()` → sterta. empezar lección
|
|
Stos – dane lokalne; sterta – obiekty dynamiczne.
|
|
|
Różnica między przesłanianiem a nadpisywaniem metod? `public new void Print()` / `public override void Print()`. empezar lección
|
|
`new` ukrywa metodę bazową, `override` ją nadpisuje.
|
|
|
Czym są słowa kluczowe ref i out? empezar lección
|
|
`ref` przekazuje przez referencję (musi być zainicjowany), `out` – inicjalizowany w metodzie.
|
|
|
`typeof(Car). GetProperties()`. empezar lección
|
|
Mechanizm odczytu metadanych typów w czasie działania.
|
|
|
empezar lección
|
|
Klasy/metody działające z różnymi typami.
|
|
|
Czym są generyczne ograniczenia? empezar lección
|
|
Warunki na typy generyczne.
|
|
|
Czym są generyczne delegaty? empezar lección
|
|
Delegaty z parametrami typów.
|
|
|
Jak działa wyrażenie using? `using(var fs = new FileStream(...))`. empezar lección
|
|
Automatycznie zwalnia zasoby po użyciu (`IDisposable`).
|
|
|
`await Task. Delay(1000)`. empezar lección
|
|
Umożliwia asynchroniczne operacje bez blokowania wątku.
|
|
|
Jak wykonać akcję równolegle? `Parallel. ForEach(list, x => DoWork(x))`. empezar lección
|
|
`Parallel. ForEach` lub `Task. WhenAll()`.
|
|
|
Czy z metody asynchronicznej można złapać wyjątek? `try {await Save();} catch {}`. empezar lección
|
|
Tak, przez `try/catch` wokół `await`.
|
|
|
`[Obsolete("Nie używaj")]`. empezar lección
|
|
Metadane opisujące elementy kodu.
|
|
|
`object o = 5; int i = (int)o;`. empezar lección
|
|
Boxing – pakowanie typu wartościowego w obiekt; unboxing – odwrotnie.
|
|
|
Czym są słowa kluczowe const i readonly? `const int X=5; readonly int Y;`. empezar lección
|
|
`const` – stała w czasie kompilacji, `readonly` – tylko do odczytu po inicjalizacji.
|
|
|
Jak działa słowo kluczowe yield? empezar lección
|
|
Zwraca kolejne elementy sekwencji (leniwe iterowanie).
|
|
|
Różnica między First a Single (LINQ)? empezar lección
|
|
`First()` – pierwszy element; `Single()` – dokładnie jeden element.
|
|
|
Różnica między First a FirstOrDefault (LINQ)? empezar lección
|
|
`FirstOrDefault()` zwraca `null`/`default`, jeśli brak elementu.
|
|
|
Różnica między interfejsem a klasą abstrakcyjną? `interface IRun {}` / `abstract class Animal {}`. empezar lección
|
|
Interfejs – definicja bez implementacji; klasa abstrakcyjna – może mieć implementację.
|
|
|
Czym jest metoda rozszerzająca? `public static bool IsEmpty(this string s)`. empezar lección
|
|
Statyczna metoda dodająca nowe zachowanie do istniejącego typu.
|
|
|
`if(x is Car)` / `var c = x as Car`. empezar lección
|
|
`is` sprawdza typ, `as` rzutuje bez wyjątku.
|
|
|
Jak działa protokół HTTP? `GET /index. html → 200 OK`. empezar lección
|
|
Protokół żądań i odpowiedzi klient–serwer, bezstanowy.
|
|
|
Jakie są kategorie kodów HTTP? empezar lección
|
|
1xx – info, 2xx – sukces, 3xx – przekierowanie, 4xx – błąd klienta, 5xx – błąd serwera.
|
|
|
Czym różni się uwierzytelnianie od autoryzacji? Login vs dostęp do panelu admina. empezar lección
|
|
Uwierzytelnianie – kim jesteś, autoryzacja – co możesz.
|
|
|
Middleware logujący żądania. empezar lección
|
|
Komponent przetwarzający żądanie w potoku HTTP.
|
|
|
Jak działa wbudowany kontener DI? `services. AddScoped<IRepo, Repo>();` empezar lección
|
|
Zarządza zależnościami przez wstrzykiwanie instancji (`AddScoped`, `AddSingleton`).
|
|
|
Każde żądanie HTTP ma własną instancję repozytorium. empezar lección
|
|
tworzony raz na cały request (żądanie). Oznacza to, że w trakcie obsługi jednego zapytania HTTP wszystkie klasy, które potrzebują tego serwisu, dostaną tę samą instancję. Ale gdy przyjdzie kolejne żądanie HTTP, powstanie nowa instancja.
|
|
|
Logger lub konfiguracja aplikacji. empezar lección
|
|
Rejestruje zależność tworzoną tylko raz na cały czas działania aplikacji.
|
|
|
Serwis krótkotrwały np. generator tokenów. empezar lección
|
|
Jeśli w jednym żądaniu HTTP serwis A wstrzykuje B, a B wstrzykuje C, to każda z tych instancji dostanie nowy obiekt Transient. Czyli możesz mieć kilka różnych instancji tego samego serwisu w ramach jednego requesta.
|
|
|
Enkapsulacja (paradygmat OOP); Prywatne pola + publiczne metody/ właściwości walidujące dane. empezar lección
|
|
Ukrywanie stanu obiektu i udostępnianie go przez kontrolowany interfejs
|
|
|
Dziedziczenie (paradygmat OOP) `class Car: Vehicle` dziedziczy metody i pola. empezar lección
|
|
Tworzenie nowych typów na bazie istniejących, współdzielenie i rozszerzanie zachowania.
|
|
|
Polimorfizm (paradygmat OOP); `virtual`/`override` lub implementacja różnych `IInterface` w klasach pochodnych. empezar lección
|
|
Jedno wywołanie — różne zachowania zależnie od typu.;`virtual`/`override`
|
|
|
Abstrakcja (paradygmat OOP); abstract class Shape` z metodą `Area()` bez konkretnej implementacji empezar lección
|
|
Eksponowanie tylko tego, co istotne, ukrywanie szczegółów implementacyjnych.;
|
|
|