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.;

Вы должны войти в свой аккаунт чтобы написать комментарий.