Pytania z kursu

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

您必须登录才能发表评论。