Pytania z kursu

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

Lai ievietotu komentāru, jums jāpiesakās.