Pytanie |
Odpowiedź |
Rodzaje błędów i wyjątków rozpocznij naukę
|
|
syntax, logic, runtime, linkowania, semantyczne
|
|
|
paradygmat projektowania obiektowego rozpocznij naukę
|
|
polimorfizm, abstrakcja, hermetyzacja, dziedziczenie
|
|
|
|
rozpocznij naukę
|
|
kreacyjne, strukturalne(łączenie), behawiorystyczne(komunikacja)
|
|
|
Metoda Wytwórcza (Factory Method) rozpocznij naukę
|
|
Definiuje interfejs do tworzenia obiektu, ale pozwala klasom pochodnym zdecydować, jakiej klasy instancję utworzyć
|
|
|
|
rozpocznij naukę
|
|
Gwarantuje, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do niej. Zastosowanie: Logger
|
|
|
|
rozpocznij naukę
|
|
Pozwala na współpracę klasom o niekompatybilnych interfejsach. Działa jak "przejściówka" elektryczna
|
|
|
|
rozpocznij naukę
|
|
Pozwala dynamicznie (w trakcie działania programu) dodawać nowe obowiązki/funkcje do obiektu. Jest alternatywą dla dziedziczenia
|
|
|
|
rozpocznij naukę
|
|
Definiuje zależność "jeden do wielu", tak że zmiana stanu jednego obiektu powoduje automatyczne powiadomienie i odświeżenie innych obiektów.
|
|
|
|
rozpocznij naukę
|
|
Single Responsibility Principle, Klasa powinna mieć tylko jedno zadanie i być odpowiedzialna za jedną część logiki biznesowej.
|
|
|
|
rozpocznij naukę
|
|
Open/clsd - Kod powinien być otwarty na rozszerzenia, co oznacza, że można dodawać nowe funkcjonalności bez modyfikacji istniejących klas
|
|
|
|
rozpocznij naukę
|
|
Liskov Substitution Principle, Klasa pochodna powinna w pełni zastępować klasę bazową bez zmieniania jej zachowania.
|
|
|
|
rozpocznij naukę
|
|
Interface Segregation Principle, Interfejsy powinny być małe i wyspecjalizowane, aby klasy implementowały tylko metody, których rzeczywiście potrzebują.
|
|
|
|
rozpocznij naukę
|
|
Dependency Inversion Principle
|
|
|
Rodzaje i przykłady optymalizacji rozpocznij naukę
|
|
Optymalizacja przez kompilator, Optymalizacja w kodzie, Optymalizacja sprzętowa, Loop Unrolling (Rozwijanie pętli
|
|
|
Główne techniki optymalizacji rozpocznij naukę
|
|
Inlining (Wstawianie funkcji w miejscu wywołania), Dead Code Elimination, RVO (Return Value Optimization):
|
|
|
|
rozpocznij naukę
|
|
Rezerwuje blok pamięci o podanym rozmiarze w bajtach, Zwraca: void* (wskaźnik beztypowy). Trzeba go rzutować (castować) na właściwy typ,śmieci, Błąd: Jeśli brakuje RAMu, zwraca NULL//free usuwa dane z pamięci
|
|
|
|
rozpocznij naukę
|
|
Alokuje pamięć na stercie (jak malloc), Wywołuje konstruktor obiektu, Zwraca wskaźnik właściwego typu, Wywołuje destruktor, Zwalnia pamięć operacyjną.
|
|
|
Rodzaje argumentów w python rozpocznij naukę
|
|
Pozycyjne (Positional): Standardowe, liczy się kolejność, Nazwane (Keyword): klucz=wartość. Kolejność nie ma znaczenia, Domyślne (Default): def func(a=10). Jeśli nie podasz, użyje 10
|
|
|
|
rozpocznij naukę
|
|
(funkcja, kolekcja): Wykonuje funkcję na każdym elemencie. Uwaga: W Pythonie 3 zwraca iterator (leniwy), a nie listę. Aby zobaczyć wynik, trzeba rzutować: list(map(...)).
|
|
|
|
rozpocznij naukę
|
|
Zwraca tylko te elementy, dla których funkcja zwróciła True
|
|
|
reduce(funkcja, kolekcja) rozpocznij naukę
|
|
"Zwija" listę do jednej wartości (np. suma, iloczyn). W Pythonie 3 przeniesione do modułu functools.
|
|
|
|
rozpocznij naukę
|
|
cpp: klasy abstakcyjne, brak dużego interfejsu, polimorfizm. Python: DuckTyping, ISP dla czytelności, dekoratory
|
|
|
Metody specjalne w python rozpocznij naukę
|
|
umożliwiają obiektom integrację z wbdwn mechanizmami języka. Dzięki nim programi może zdefić, jak własne klasy mają reagować na stnrd operacje, takie jak inicjal, konwersja na tekst czy użycie operatorów matemt, co jest mechaniz realiz przecią operatorów
|
|
|
|
rozpocznij naukę
|
|
To najczęściej używana metoda. Odpowiada za ustawienie początkowego stanu obiektu., po wywołaniu obiekt już istnieje i jest wypełniany danymi
|
|
|
|
rozpocznij naukę
|
|
zmienia obiekt na napis ma być czytelna dla użytkownika
|
|
|
|
rozpocznij naukę
|
|
zmeinia obiekt na napis jest wywoływany w debuggerze i ma być jednoznaczny dla programisty np(klient(id=5, imie='Jan'))
|
|
|
Operatory arytmetyczne (__add__, __sub__ rozpocznij naukę
|
|
Definiują w jaki sposób obiekty danej klasy są dodawane, odejmowane
|
|
|
|
rozpocznij naukę
|
|
obiekt może działać jak lista
|
|
|
|
rozpocznij naukę
|
|
Do operacji na liczbach rzeczywistych (float), math. pi, math. e, math. inf, sin, cos, sqrt
|
|
|
|
rozpocznij naukę
|
|
wydajnego przetwarzania kolekcji. product() – Iloczyn kartezjański. Zastępuje zagnieżdżone pętle for, permutations() – Wszystkie możliwe ustawienia elementów, cycle()
|
|
|
|
rozpocznij naukę
|
|
programowanie funkcyjne, reduce() "Zwijanie" listy do jednej wartości, partial() "Zamrażanie" argumentów. Tworzysz funkcję, ma już wypełnione niektóre parametry starej funkcji, lru_cache() Dekorator, który automatycznie dodaje pamięć podręczną do funkcji
|
|
|
|
rozpocznij naukę
|
|
collections daje specjalistyczne struktury danych, Counter – Słownik do zliczania elementów, defaultdict – Słownik, który nigdy nie rzuca błędu KeyError. Jeśli klucza nie ma, sam go tworzy z wartością domyślną
|
|
|
|
rozpocznij naukę
|
|
Jest to klasa (zdefiniowana w nagłówku <thread>), będąca obiektowym wrapperem na identyfikator wątku systemowego
|
|
|
|
rozpocznij naukę
|
|
stan nieokreślony występujący, gdy co najmniej dwa wątki uzyskują dostęp do tego samego obszaru pamięci jednocześnie, przy czym: Przynajmniej jeden z nich wykonuje operację zapisu. Dostęp nie jest synchronizowany brak operacji atomowych lub blokad
|
|
|
|
rozpocznij naukę
|
|
fragment kodu, w którym następuje dostęp do zasobu współdzielonego. Wymaga ona serializacji dostępu – w danej chwili instrukcje z tego bloku mogą być wykonywane tylko przez jeden wątek
|
|
|
|
rozpocznij naukę
|
|
Klasa z nagłówka <mutex>, implementująca koncepcję BasicLockable. Jest to najprostszy prymityw synchronizacyjny w C++. lock(): Blokuje wątek wywołujący do momentu uzyskania dostępu. try_lock()
|
|
|