pytania od włodka Flashcards
(151 cards)
Czym jest transakcja i czym sie różni od procedury (Maciej Sławinski)
Transakcja to zbiór operacji SQL wykonujących się jako całość, muszą spełniać założenia ACID (atomowość, spójność, izolacja, trwałość).
Procedura składowana to zapisany w bazie danych zbiór instrukcji SQL, który można wielokrotnie wywoływać. Procedura może zawierać logikę sterującą (np. pętle, instrukcje warunkowe), przyjmować parametry i zwracać wyniki. Nie musi być transakcją.
Metody modelowania procesów biznesowych (AD)
- BPMN - tworzenie map procesów, projektowanie systemów workflow.
- UML
- DFD (data flow diagram) - analiza systemów informacyjnych, projektowanie baz danych.
Metody badania złożoności algorytmów (WD): metoda O i o
Metoda dużego O opisuje górne ograniczenie wzrostu funkcji (to jest funkcja która opisuje najgorszy przypadek złożoności). Duże O zakłada że f(n) <= c*g(n) gdzie c jest dowolną stałą c > 0.
Małe o ma podobne założenie lecz różnica jest w tym że wymaga by WSZYSTKIE c > 0 spełniają warunek f(n) < c*g(n)
Co to sa obiekty pozorne (mock object) i do czego mogą być zastosowane (DO) - Java
Obiekty pozorne to specjalne obiekty używane w testowaniu jednostkowym (unit testing), które symulują zachowanie prawdziwych obiektów w kontrolowany sposób. Nie zawierają one rzeczywistej logiki biznesowej — zamiast tego „udają”, że są komponentami aplikacji, by test mógł się wykonać bez ich realnego udziału.
Omówić paradygmat programowania obiektowego i jego założenia (KH)
Programowanie obiektowe to jeden z najważniejszych paradygmatów programowania, który skupia się na modelowaniu programów jako zbioru współdziałających obiektów. Każdy obiekt jest instancją klasy, która definiuje jego strukturę (dane) i zachowanie (metody). Paradygmat ten ułatwia odwzorowanie rzeczywistego świata w kodzie oraz zwiększa modularność i ponowność kodu.
Założenia: Abstrakcja, Enkapsulacja, Dziedziczenie, Polimorfizm
Omówić pojęcie i zastosowania sieci neuronowych (AD, SS)
Sieci neuronowe (ang. neural networks) to modele matematyczne inspirowane działaniem biologicznego mózgu, wykorzystywane głównie w dziedzinie sztucznej inteligencji (AI) i uczenia maszynowego (machine learning). Składają się z warstw sztucznych neuronów, które przetwarzają dane wejściowe i uczą się na podstawie przykładów.
Każdy neuron:
otrzymuje sygnały wejściowe (np. liczby),
przetwarza je przy użyciu wag i funkcji aktywacji,
przekazuje wynik dalej — do kolejnej warstwy.
Sieć „uczy się” przez dostosowywanie wag na podstawie danych treningowych i błędów w przewidywaniu (np. za pomocą algorytmu wstecznej propagacji błędu – backpropagation).
Sieci neuronowe mają wiele różnych zastosowań takich jak rozpoznawnanie obrazów, algorytmy rekomendacji, rozpoznawanie języka naturalnego, gry wideo.
Omówić postaci normalne relacji (KH)
I postać normalna - opisuje jeden obiekt, każda kolumna jest wartością atomową, skalarną
II postać normalna - żaden z potencjalnych kluczy nie jest zależny od jakiejkolwiek innej kolumny niekluczowej
III postać normalna - II postać + żaden z atrybutów niekluczowych nie jest zależny od jakiegokolwiek innego atrybutu
Na czym polega klasteryzacja (grupowanie) danych
Klasteryzacja (ang. clustering) to technika eksploracji danych, która polega na automatycznym grupowaniu obiektów (np. punktów danych) w taki sposób, aby:
obiekty w tej samej grupie (klastrze) były jak najbardziej podobne do siebie,
obiekty z różnych grup były jak najbardziej różne od siebie.
W przeciwieństwie do klasyfikacji, klasteryzacja jest metodą nienadzorowaną – oznacza to, że nie mamy z góry znanych etykiet (klas), a algorytm sam odkrywa strukturę danych.
Przedstawić klasyfikacje języków programowania (obiektowe, strukturalne, funkcyjne, logiczne, imperatywne, deklaratywne, etc.)
imperatywne - programy opisują jak komputer ma wykonać zadanie krok po kroku
deklaratywne - brak instrukcji sterujących, skupienie na wyniku
strukturalne - dzienie programu na funkcje/procedury
obiektowe - modelowanie rzeczywistosci za pomocy obiektów
funkcyjne - Programowanie jako kompozycja funkcji, bez zmiennych i efektów ubocznych.
logiczne - Programowanie przez zadeklarowanie faktów i reguł oraz stawianie zapytań.
Wyjaśnić pojęcie złożoności obliczeniowej algorytmu (RŁO, KMK, KH)
Złożoność obliczeniowa to pojęcie określające, ile zasobów (najczęściej czasu i pamięci) potrzebuje algorytm do rozwiązania problemu w zależności od wielkości danych wejściowych (oznaczanej zwykle jako n).
Przedstawić numeryczna metodę wyznaczania całki oznaczonej (DS)
Polegają one na oszacowaniu pola pod wykresem funkcji za pomocą prostych figur geometrycznych.
Przykładem jest metoda prostokątów gdzie dzielimy przedział na równe części i liczymy pola pod wykresem jako suma pól prostokątów
Jak możemy rozumieć termin inteligentne techniki obliczeniowe
Inteligentne techniki obliczeniowe (ang. Computational Intelligence, CI) to zbiór metod i narzędzi informatycznych, które naśladują naturalne mechanizmy uczenia się, adaptacji i podejmowania decyzji, aby rozwiązywać złożone problemy obliczeniowe w sposób przybliżony, elastyczny i efektywny.
Podać warunki dla których relacja jest w trzeciej postaci normalnej
III postać normalna - II postać + żaden z atrybutów niekluczowych nie jest zależny od jakiegokolwiek innego atrybutu
Co to jest klasa
Klasa to podstawowy element w programowaniu obiektowym, który definiuje strukturę i zachowanie obiektów w programie. Klasy umożliwiają organizowanie kodu w sposób modularny, zwiększając jego czytelność, wielokrotnego użycia oraz łatwość utrzymania. Klasa jest szablonem lub modelem, na podstawie którego tworzy się obiekty, czyli instancje klasy.
Przedstawić działanie transakcji w systemach współbieżnych (poziomy izolacji, protokół dwufazowy)
Izolacja to zdolność systemu do takiego zarządzania współbieżnymi transakcjami, aby ich wykonanie dawało efekt równoważny wykonaniu sekwencyjnemu (jedna po drugiej). Standard SQL definiuje 4 poziomy izolacji, różniące się odpornością na problemy współbieżności:
READ UNCOMMITTED – możliwy brudny odczyt, odczyt nie dający się powtórzyć i odczyt widmo.
READ COMMITTED – niemożliwy brudny odczyt, możliwy odczyt niedający się powtórzyć i odczyt widmo.
REPEATABLE READ – niemożliwy brudny odczyt i odczyt niedający się powtórzyć, możliwy odczyt widmo.
SERIALIZABLE – żaden z niepożądanych odczytów nie jest możliwy. W praktyce oznacza to zablokowanie dostępu do całej tabeli.
2PL - blokady S (shared) i X (exclusive). S dopuszcza tylko odczyt, X blokuje zapis i odczyt
Omówić mechanizm dziedziczenia w programowaniu obiektowym
Dziedziczenie to jeden z podstawowych filarów programowania obiektowego (OOP). Pozwala na tworzenie nowych klas (zwanych klasami pochodnymi lub podklasami) na bazie istniejących klas (klas bazowych lub superklas), dzięki czemu nowa klasa dziedziczy właściwości (pola) i zachowania (metody) klasy bazowej.
Na czym polega proces uczenia sieci neuronowej
Proces uczenia sieci neuronowej to dostosowywanie parametrów (wag i biasów) sieci tak, aby mogła poprawnie przetwarzać dane wejściowe i generować oczekiwane wyjścia. Uczenie pozwala sieci „wpoić” sobie wzorce i zależności zawarte w danych.
Główne etapy uczenia:
Inicjalizacja sieci
Wagi i biasy są losowo inicjalizowane.
Przekazywanie danych (propagacja w przód)
Dane wejściowe przechodzą przez kolejne warstwy sieci, a na wyjściu powstaje prognoza (wynik).
Obliczanie błędu
Porównuje się wyjście sieci z rzeczywistą wartością (etykietą) za pomocą funkcji kosztu (np. błąd średniokwadratowy).
Propagacja błędu wstecz (backpropagation)
Na podstawie błędu sieć wylicza, jak bardzo każda waga wpłynęła na wynik, czyli oblicza gradienty funkcji kosztu względem wag.
Aktualizacja wag
Wagi są modyfikowane w kierunku zmniejszenia błędu, zwykle za pomocą algorytmu optymalizacji gradientowej (np. metoda gradientu prostego, Adam).
Powtarzanie procesu
Etapy 2–5 są powtarzane dla wielu danych uczących (próbek) i wielu iteracji (epok), aż sieć osiągnie zadowalający poziom dokładności.
Przedstawić algorytm tyrana wyboru nowego koordynatora procesów. (Konrad Markowski)
Algorytm tyrana — zasada działania
Założenia:
Każdy proces ma unikalny numer identyfikacyjny (ID), gdzie wyższy numer oznacza wyższy priorytet.
Procesy mogą komunikować się ze sobą bezpośrednio.
Proces o najwyższym ID spośród żywych powinien zostać koordynatorem.
Przebieg algorytmu:
Wykrycie awarii koordynatora:
Proces zauważa, że obecny koordynator nie odpowiada.
Rozpoczęcie wyborów:
Proces, który wykrył awarię, wysyła komunikat election do wszystkich procesów o wyższym ID.
Odpowiedź od procesów o wyższym ID:
Jeśli któryś z procesów o wyższym ID odpowie, to oznacza, że ten proces przejmie inicjatywę i rozpocznie własny proces wyboru (przejście do punktu 2 z perspektywy tego procesu).
Jeśli brak odpowiedzi, to proces uznaje siebie za nowego koordynatora.
Ogłoszenie nowego koordynatora:
Proces, który wygrał wybory (najwyższy żywy ID), wysyła komunikat coordinator do wszystkich procesów, informując o swoim statusie.
Zakończenie:
Wszystkie procesy aktualizują informacje o nowym koordynatorze.
Przedstawić mechanizm działania wskaźnika w programowaniu
Wskaźnik to zmienna, która przechowuje adres pamięci innej zmiennej lub obiektu, zamiast bezpośrednio jej wartości. Dzięki temu umożliwia bezpośrednią manipulację pamięcią i dynamiczne zarządzanie danymi.
Co to jest problem np- zupełny
Jest to klasa problemowa spełniająca następujące warunki:
Problem należy do klasy NP
Oznacza to, że jeśli ktoś poda rozwiązanie problemu, to można je zweryfikować (sprawdzić poprawność) w czasie wielomianowym przez algorytm deterministyczny.
Każdy problem z klasy NP można zredukować do tego problemu w czasie wielomianowym
To znaczy, problem NP-zupełny jest co do trudności przynajmniej tak trudny jak każdy inny problem z NP — jest „najtrudniejszy” w tej klasie.
Omówić pojęcie i budowę systemu operacyjnego
System operacyjny (SO) to podstawowe oprogramowanie systemowe, które zarządza zasobami sprzętowymi komputera oraz udostępnia interfejs umożliwiający użytkownikom i aplikacjom korzystanie z tych zasobów. Można go określić jako pośrednika między sprzętem a użytkownikiem.
Jądro systemu (kernel)
To centralna część systemu operacyjnego, która ma pełny dostęp do sprzętu i zarządza wszystkimi podstawowymi funkcjami takimi jak zarządzanie procesami i wątkami, zarządzanie pamięcią, obsługa przerwań i wyjątków i komunikacja międzyprocesowa.
System plików
Odpowiada za organizację, przechowywanie i dostęp do danych na nośnikach pamięci.
Sterowniki urządzeń (device drivers)
Zapewniają interakcję z różnymi urządzeniami sprzętowymi, tłumacząc polecenia systemu na sygnały zrozumiałe dla sprzętu.
System zarządzania zasobami
Moduły do alokacji i optymalizacji wykorzystania pamięci, CPU, urządzeń wejścia/wyjścia.
Powłoka (shell)
Interfejs użytkownika, który interpretuje polecenia i uruchamia programy. Może mieć formę tekstową (np. bash) lub graficzną (GUI).
Omówić pojęcie odległości i podać przykłady odległości
Odległość (zwane też metryką) to funkcja matematyczna, która dla każdej pary elementów w danym zbiorze przypisuje nieujemną liczbę, określającą „jak daleko” te elementy od siebie są.
Przykłady: odległość euklidesowa (pierwiastek sumy różnic punktów podniesionych do kwadratu)
Odległość Manhattan (Suma wartości bezwzględnych różnic współrzędnych)
Odległość Czebyszewa (Maksymalna różnica między współrzędnymi)
Co to jest graf, ścieżka, cykl i droga w grafie (WD, WM)
Graf to struktura danych służąca do modelowania relacji pomiędzy obiektami. Graf definiuje się przez wierzchołki i krawędzie
Ścieżka w grafie to ciąg kolejnych wierzchołków połączonych krawędziami, gdzie każdy jest połączony z poprzednim
Droga to ścieżka w której wszystkie wierzchołki są różne
Cylk to ścieżka co zaczyna i kończy się na tym samym wierzchołku
Wyjaśnij pojęcie klasy równoważności (WM)
Klasy równoważności to podzbiory zbioru, które zawierają wszystkie elementy, które są ze sobą równoważne w odniesieniu do danej relacji równoważności. Elementy w tej samej klasie równoważności są traktowane jako “jednakowe” przez tę relację.
Przykład: relacja “jest parzyste” to klasą równoważności są wszystkie liczby parzyste (chyba?)