Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 9 stycznia 2025 19:18
  • Data zakończenia: 9 stycznia 2025 19:29

Egzamin zdany!

Wynik: 39/40 punktów (97,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Jaki modyfikator dostępu umożliwia dostęp do pól klasy tylko za pomocą jej metod?

A. Private
B. Public
C. Static
D. Protected
Modyfikator `private` w językach takich jak C++, Java i C# pozwala na ograniczenie dostępu do pól i metod klasy, umożliwiając ich wykorzystanie wyłącznie w obrębie tej samej klasy. Pola `private` są ukryte przed innymi klasami i mogą być modyfikowane lub odczytywane jedynie poprzez metody publiczne (gettery i settery). Przykład w C++: `class Konto { private: double saldo; public: void ustawSaldo(double s) { saldo = s; } }`. Dzięki temu mechanizmowi dane są chronione przed nieautoryzowanymi zmianami, co zwiększa bezpieczeństwo aplikacji i minimalizuje ryzyko błędów.

Pytanie 2

Które z wymienionych sformułowań najlepiej definiuje oprogramowanie typu ransomware?

A. Programy zbierające prywatne dane bez zgody użytkownika
B. Złośliwe aplikacje wyświetlające reklamy
C. Oprogramowanie stosowane do realizacji ataków DDoS
D. Oprogramowanie uniemożliwiające dostęp do danych w celu wymuszenia zapłaty
Oprogramowanie typu ransomware to rodzaj złośliwego oprogramowania, które ma na celu zablokowanie dostępu do danych użytkownika, a następnie wymuszenie okupu w zamian za ich przywrócenie. Ransomware działa na zasadzie szyfrowania plików na zainfekowanym urządzeniu, co uniemożliwia użytkownikowi korzystanie z danych. Po dokonaniu szyfrowania, ofiara otrzymuje wiadomość z żądaniem okupu, zazwyczaj w kryptowalutach, które mają na celu anonimowość transakcji. Przykłady ransomware to oprogramowanie takie jak WannaCry oraz Petya, które spowodowały globalne ataki, skutkując znacznymi stratami finansowymi dla wielu organizacji. Zgodnie z definicjami i standardami, takimi jak NIST (National Institute of Standards and Technology), ransomware jest klasyfikowane jako jedno z najpoważniejszych zagrożeń dla bezpieczeństwa informacji. Warto również zauważyć, że ransomware rozwija się, a jego twórcy stosują różne techniki, aby zwiększyć skuteczność ataków, takie jak wykorzystywanie luk w oprogramowaniu oraz phishing, aby zainfekować systemy użytkowników.

Pytanie 3

Zapis w języku C# przedstawia definicję klasy Car, która:

Ilustracja do pytania
A. jest klasą podstawową (nie dziedziczy po innej klasie)
B. odziedzicza po Vehicle
C. używa pól prywatnych klasy Vehicle
D. jest zaprzyjaźniona z klasą Vehicle
Klasa Car dziedziczy po klasie Vehicle w języku C#. Dziedziczenie pozwala na wykorzystanie funkcji i właściwości klasy bazowej (Vehicle) w klasie pochodnej (Car). Umożliwia to wielokrotne użycie kodu i rozszerzanie funkcjonalności bez konieczności powielania kodu. Jest to fundamentalny mechanizm programowania obiektowego.

Pytanie 4

W językach C++ bądź C# termin virtual można wykorzystywać w kontekście

A. metod klasy
B. destruktorów
C. funkcji zaprzyjaźnionych
D. atrybutów klasy
W językach C++ i C# słowo kluczowe 'virtual' można stosować do metod klasy, co umożliwia ich nadpisanie w klasach pochodnych. Pozwala to na implementację polimorfizmu, co jest kluczowym elementem programowania obiektowego.

Pytanie 5

Który z wymienionych poniżej wzorców projektowych można zakwalifikować jako wzorzec strukturalny?

A. Fabryka abstrakcyjna (Abstract Factory)
B. Metoda szablonowa (Template method)
C. Fasada (Facade)
D. Obserwator (Observer)
Fasada (Facade) to wzorzec projektowy, który jest przykładem wzorca strukturalnego. Umożliwia on tworzenie uproszczonego interfejsu dla bardziej złożonego systemu, integrując wiele podsystemów i dostarczając jednolity punkt dostępu. Strukturalne wzorce projektowe skupiają się na organizacji klas i obiektów, a Fasada doskonale wpisuje się w tę kategorię, redukując złożoność i zwiększając czytelność kodu. Wzorzec ten jest szeroko stosowany w architekturze aplikacji, gdzie występuje potrzeba uproszczenia dostępu do skomplikowanych bibliotek lub systemów wewnętrznych.

Pytanie 6

Metoda przeszukiwania w uporządkowanych tablicach, która polega na podzieleniu tablicy na kilka części i wykonywaniu wyszukiwania liniowego tylko w tej części, gdzie może znajdować się poszukiwany element, w języku angielskim jest określana jako

A. Jump search
B. Binary search
C. Ternary search
D. Exponential search
Jump Search to metoda wyszukiwania w posortowanych tablicach, polegająca na przeskakiwaniu o określoną liczbę elementów. Jeśli przeskok prowadzi do wartości większej niż szukana, wyszukiwanie kontynuowane jest liniowo od poprzedniego przeskoku. Jest to bardziej efektywne niż liniowe przeszukiwanie, ale mniej efektywne niż wyszukiwanie binarne.

Pytanie 7

Jaki numer telefonu należy wybrać, aby skontaktować się z pogotowiem ratunkowym w Polsce?

A. 113
B. 997
C. 112
D. 998
Numer 112 to europejski numer alarmowy, który działa we wszystkich krajach Unii Europejskiej, w tym w Polsce. Jego wybór pozwala na natychmiastowe połączenie się z dyspozytorem służb ratunkowych (pogotowie ratunkowe, straż pożarna, policja). Jest to uniwersalny numer, który można wybrać z dowolnego telefonu komórkowego lub stacjonarnego, nawet jeśli urządzenie nie ma karty SIM. Dzięki tej uniwersalności jest to najczęściej rekomendowany numer w nagłych wypadkach.

Pytanie 8

Jakie znaczenie ma framework w kontekście programowania?

A. Zbiór gotowych bibliotek, narzędzi i zasad ułatwiających tworzenie aplikacji
B. Program do graficznego projektowania interfejsów użytkownika
C. System operacyjny, który umożliwia uruchamianie aplikacji
D. Moduł do zarządzania systemami baz danych
Framework to zbiór gotowych bibliotek, narzędzi i reguł, które wspierają tworzenie aplikacji poprzez dostarczanie struktury ułatwiającej pracę programistów. Frameworki definiują standardowe komponenty aplikacji, umożliwiając programistom skoncentrowanie się na logice biznesowej zamiast na podstawowej architekturze aplikacji. Przykłady popularnych frameworków to .NET, Angular, Django i Spring. Frameworki przyspieszają proces programowania, poprawiają jakość kodu i wspierają skalowalność aplikacji, co czyni je nieodłącznym elementem nowoczesnego programowania.

Pytanie 9

Programista może wykorzystać framework Angular do realizacji aplikacji:

A. rodzaju back-end
B. na komputerze
C. rodzaju front-end
D. mobilnej
Angular to świetne narzędzie do tworzenia aplikacji front-endowych. Chodzi o to, że odpowiada za to, co widzi użytkownik i jak może z tym interagować. Dzięki Angular możemy budować dynamiczne i responsywne aplikacje webowe. Z tego co widzę, używamy tam komponentów, modułów i rzeczy typu dwukierunkowe wiązanie danych, co naprawdę ułatwia życie. Bez wątpienia, Angular jest jednym z najpopularniejszych frameworków do robienia interfejsów użytkownika, co tylko potwierdza jego efektywność.

Pytanie 10

Jedną z dolegliwości, która pojawia się u programistów w wyniku długotrwałego korzystania z myszki komputerowej lub klawiatury, objawiającą się bólem, drętwieniem oraz zaburzeniami czucia w rejonie 1-3 palca ręki jest

A. zespół suchego oka
B. zespół cieśni kanału nadgarstka
C. kifoza
D. dyskopatia
Zespół cieśni kanału nadgarstka to schorzenie występujące często u programistów i innych osób pracujących przy komputerze. Objawia się bólem, mrowieniem i drętwieniem palców, co wynika z ucisku nerwu pośrodkowego w nadgarstku. Długotrwałe korzystanie z klawiatury i myszy bez ergonomicznych przerw może prowadzić do tego schorzenia. Profilaktyka obejmuje ćwiczenia rozciągające, stosowanie ergonomicznych urządzeń oraz regularne przerwy w pracy.

Pytanie 11

Zaprezentowany fragment kodu w języku C# tworzy hasło. Wskaż zdanie PRAWDZIWE dotyczące charakterystyki tego hasła:

Ilustracja do pytania
A. Może zawierać małe i wielkie litery oraz cyfry
B. Ma co najmniej 8 znaków oraz zawiera małe i wielkie litery oraz cyfry
C. Może zawierać zarówno małe, jak i wielkie litery, cyfry oraz symbole
D. Jest maksymalnie 7-znakowe, co wynika z wartości zmiennej i
Algorytm generowania hasła w języku C# może zawierać małe i wielkie litery oraz cyfry, co zapewnia większe bezpieczeństwo hasła. Tworzenie haseł w taki sposób zwiększa ich odporność na ataki brute-force i umożliwia spełnienie wymagań dotyczących złożoności. Dobrze skonstruowane hasło powinno zawierać różne typy znaków, by maksymalnie utrudnić jego złamanie.

Pytanie 12

Która z operacji logicznych zwróci wartość "true", gdy obie zmienne są sobie równe?

A. x != y
B. x || y
C. x == y
D. x && y
Operator `==` w języku C++ i wielu innych językach programowania (np. Python, Java, JavaScript) służy do porównywania dwóch wartości. Zwraca `true`, jeśli obie wartości są sobie równe, oraz `false`, jeśli są różne. Przykład: `if (x == y)` sprawdza, czy zmienna `x` jest równa zmiennej `y`. Operator ten jest kluczowy w instrukcjach warunkowych oraz pętlach, gdzie konieczne jest porównywanie wartości w celu podejmowania decyzji na podstawie wyniku tego porównania.

Pytanie 13

Podaj wspólną cechę wszystkich kontrolek umieszczonych w ramce

Ilustracja do pytania
A. są w nich ustawione te same wartości domyślne
B. wszystkie są widoczne
C. mają tło w tym samym kolorze
D. mają identyczny kolor czcionki
Wszystkie kontrolki w ramce mają tło tego samego koloru. Jest to kluczowy aspekt projektowania interfejsu użytkownika, który zapewnia spójność wizualną i ułatwia nawigację.

Pytanie 14

Jakie z wymienionych narzędzi służy do testowania aplikacji?

A. WordPress
B. Git
C. Selenium
D. Photoshop
Selenium to potężne narzędzie do automatycznego testowania aplikacji webowych. Umożliwia ono symulowanie działań użytkownika na stronie internetowej, takich jak klikanie przycisków, wypełnianie formularzy czy nawigowanie po witrynie. Dzięki Selenium programiści mogą automatyzować testy funkcjonalne i regresyjne, co pozwala na szybkie wykrywanie błędów i sprawdzanie zgodności aplikacji z wymaganiami. Selenium obsługuje wiele języków programowania, takich jak Python, Java, C# czy JavaScript, co czyni je wszechstronnym narzędziem do testowania aplikacji webowych na różnych platformach i przeglądarkach. Jest to jedno z najważniejszych narzędzi w arsenale testerów oprogramowania i deweloperów dbających o jakość swoich produktów.

Pytanie 15

Który z protokołów w modelu TCP/IP odpowiada za pewne przesyłanie danych?

A. TCP
B. IP
C. HTTP
D. UDP
Protokół TCP (Transmission Control Protocol) jest kluczowym elementem modelu TCP/IP, odpowiedzialnym za zapewnienie niezawodnego i uporządkowanego przesyłania danych między urządzeniami w sieci. TCP działa na poziomie transportu i gwarantuje, że dane są dostarczane w odpowiedniej kolejności oraz bez błędów. Protokół ten wykorzystuje mechanizmy takie jak kontrola przepływu, retransmisja utraconych pakietów oraz potwierdzenia odbioru, co czyni go idealnym do aplikacji wymagających wysokiej niezawodności, takich jak przesyłanie plików czy komunikacja w sieciach WWW. Na przykład, gdy przeglądarka internetowa pobiera stronę, TCP segmentuje dane na mniejsze pakiety, które są następnie przesyłane do użytkownika, a każdy z nich jest potwierdzany przez odbiorcę. Jeśli pakiet nie zostanie potwierdzony w określonym czasie, TCP automatycznie go retransmituje. Protokół ten jest zgodny z standardami RFC 793 oraz RFC 1122, które definiują jego działanie oraz zasady dotyczące niezawodnego przesyłania danych w sieciach komputerowych.

Pytanie 16

Jaką funkcję pełnią mechanizmy ciasteczek w aplikacjach internetowych?

A. Do przechowywania informacji w bazie danych
B. Do generowania dynamicznych interfejsów dla użytkowników
C. Do zapisywania danych użytkownika na serwerze
D. Do zapisywania danych użytkownika w przeglądarce
Mechanizm ciasteczek (cookies) w aplikacjach webowych służy do przechowywania danych użytkownika bezpośrednio w przeglądarce. Ciasteczka mogą przechowywać różnego rodzaju informacje, takie jak preferencje językowe, identyfikatory sesji czy dane logowania, co pozwala na personalizację doświadczenia użytkownika oraz śledzenie jego aktywności na stronie. Dzięki ciasteczkom aplikacje webowe mogą zapamiętać użytkownika i dostosować treści do jego potrzeb przy kolejnych wizytach. Cookies są nieodłącznym elementem zarządzania stanem w aplikacjach stateless, takich jak te oparte na protokole HTTP. Mogą być one również wykorzystywane w systemach reklamowych i analitycznych do monitorowania zachowań użytkowników. Prawidłowe zarządzanie ciasteczkami i stosowanie odpowiednich polityk prywatności są kluczowe dla zgodności z przepisami RODO oraz regulacjami dotyczącymi ochrony danych osobowych.

Pytanie 17

Który z wymienionych elementów stanowi przykład złożonego typu danych?

A. bool
B. struct
C. int
D. char
Typ 'struct' w C++ to super sprawa, bo pozwala na trzymanie różnych danych pod jedną nazwą. Dzięki temu można łatwo zorganizować zmienne, które różnią się typami. Wyobraź sobie, że możesz stworzyć strukturę, która będzie reprezentować na przykład samochód z jego marką, rocznikiem i ceną. To naprawdę ułatwia pracę z danymi! Każde pole w strukturze może mieć inny typ, co czyni 'struct' bardzo uniwersalnym narzędziem do modelowania różnych obiektów, jak ludzie czy produkty. W zasadzie, to takie logiczne pudełko, do którego wrzucasz różne informacje i masz do nich szybki dostęp.

Pytanie 18

Jakie znaczenie ma termin "hierarchia dziedziczenia" w kontekście programowania obiektowego?

A. Układ klas, który ogranicza występowanie dziedziczenia wielokrotnego
B. Układ klas w strukturę, w której klasy pochodne dziedziczą cechy od klas bazowych
C. Zbiór klas, które nie mają wspólnych powiązań
D. Zespół metod i pól posiadających ten sam modyfikator dostępu
Hierarchia dziedziczenia to fundamentalna koncepcja programowania obiektowego, polegająca na organizacji klas w strukturę, w której klasy pochodne dziedziczą właściwości (pola i metody) od klas bazowych. Pozwala to na wielokrotne wykorzystanie kodu, co zwiększa jego modularność i zmniejsza redundancję. Klasa bazowa dostarcza ogólne cechy i metody, podczas gdy klasy pochodne rozszerzają lub modyfikują tę funkcjonalność, dostosowując ją do bardziej specyficznych wymagań. Przykładem jest klasa 'Pojazd', po której mogą dziedziczyć klasy 'Samochód' i 'Motocykl', zachowując wspólne atrybuty, takie jak 'maksymalna prędkość' czy 'masa'.

Pytanie 19

Jaką złożoność obliczeniową posiada podany algorytm?

Ilustracja do pytania
A. O(n2)
B. O(1)
C. O(n)
D. O(n log n)
Złożoność obliczeniowa tego algorytmu to O(n). To znaczy, że jak dodajemy więcej elementów, to czas działania algorytmu rośnie w liniowy sposób. To jest całkiem fajne, bo sprawdza się w wielu praktycznych sytuacjach.

Pytanie 20

Jaki z wymienionych komponentów jest kluczowy do inicjalizacji pola klasy podczas tworzenia instancji obiektu?

A. Funkcja zaprzyjaźniona
B. Konstruktor
C. Metoda statyczna
D. Instrukcja warunkowa
Konstruktor jest niezbędny do inicjalizacji pól klasy podczas tworzenia nowego obiektu. Bez konstruktora obiekt mógłby zostać utworzony w stanie nieokreślonym, co może prowadzić do błędów w działaniu programu. Konstruktor automatycznie przypisuje wartości do pól lub wykonuje inne niezbędne operacje przygotowawcze. Przykład w C++: `class Samochod { public: Samochod() { marka = "Nieznana"; } }`. W tym przypadku konstruktor ustawia domyślną wartość dla pola `marka`, co eliminuje konieczność ręcznego przypisywania wartości po utworzeniu obiektu.

Pytanie 21

Jaki typ testów ocenia funkcjonalność aplikacji z punktu widzenia użytkownika końcowego?

A. Testy obciążeniowe
B. Testy zgodności
C. Testy funkcjonalne
D. Testy użyteczności
Testy użyteczności to kluczowy element w procesie tworzenia aplikacji, który koncentruje się na analizie i ocenie interakcji użytkownika z produktem. Celem testów użyteczności jest sprawdzenie, jak łatwa i intuicyjna w obsłudze jest aplikacja, czy użytkownik jest w stanie efektywnie osiągnąć swoje cele oraz jakie są potencjalne bariery w korzystaniu z aplikacji. Testy te dostarczają cennych informacji na temat UX (User Experience) i pozwalają na wczesne wykrycie problemów związanych z designem oraz funkcjonalnością.

Pytanie 22

W podanym fragmencie kodu Java wskaż, która zmienna może pomieścić wartość "T"

Ilustracja do pytania
A. zm3
B. zm1
C. zm2
D. zm4
Zmienna o nazwie zm3 została zadeklarowana jako typu char co oznacza że może przechowywać pojedynczy znak w tym przypadku wartość T. Typ char w języku Java jest używany do przechowywania znaków Unicode co czyni go idealnym do obsługi liter jako danych. Każdy znak jest przechowywany jako 16-bitowa wartość liczby całkowitej co umożliwia reprezentację szerokiego zakresu symboli w tym litery cyfry i inne znaki specjalne. Przykładowymi zastosowaniami typu char są przypadki gdzie konieczne jest przechowywanie i przetwarzanie liter np. w sytuacjach gdy aplikacja wymaga manipulacji pojedyńczymi znakami w tekście czy analizą ich wartości w kontekście porównywania danych. Dobre praktyki przy pracy z typem char obejmują świadome zarządzanie pamięcią i unikanie niepotrzebnych konwersji do innych typów danych co może prowadzić do strat precyzji lub nieoczekiwanych rezultatów. Ważne jest także zrozumienie jak znaki są kodowane i dekodowane szczególnie w kontekście międzynarodowym gdzie prawidłowa obsługa znaków Unicode jest kluczowa dla zapewnienia kompatybilności i poprawnego działania aplikacji w różnych językach.

Pytanie 23

Która zasada zwiększa bezpieczeństwo w sieci?

A. Korzystanie z mocnych, unikalnych haseł
B. Pobieranie plików z niepewnych źródeł
C. Zaniedbywanie aktualizacji systemu operacyjnego
D. Dzielnie się hasłami z przyjaciółmi
Używanie silnych, unikalnych haseł jest fundamentalną zasadą poprawiającą bezpieczeństwo w sieci. Silne hasło to takie, które składa się z co najmniej 12 znaków, zawiera wielkie i małe litery, cyfry oraz znaki specjalne. Takie hasła są trudne do złamania przez ataki brute force, które wykorzystują algorytmy do próbowania różnych kombinacji znaków. Przykładem silnego hasła może być 'P@ssw0rd!2023', które łączy różnorodne typy znaków. Używanie unikalnych haseł dla różnych kont jest równie ważne, ponieważ w przypadku naruszenia bezpieczeństwa jednego konta, inne pozostają zabezpieczone. Standardy takie jak NIST (National Institute of Standards and Technology) zalecają tworzenie haseł w sposób, który ogranicza ich przewidywalność. Narzędzia do zarządzania hasłami, takie jak LastPass czy 1Password, mogą pomóc w generowaniu i przechowywaniu silnych haseł, co dodatkowo redukuje ryzyko. Stosowanie tej zasady jest kluczowe w kontekście ochrony danych osobowych oraz zapobiegania kradzieży tożsamości.

Pytanie 24

Jakie są kluczowe różnice pomiędzy strukturą (struct) a unią (union) w języku C?

A. Unia nie jest obsługiwana przez kompilatory współczesnych języków
B. Struktura przechowuje wiele wartości równocześnie, unia tylko jedną
C. Unia umożliwia dynamiczne przypisywanie typów danych, struktura natomiast nie
D. Struktura wymaga więcej miejsca w pamięci niż unia
Główna różnica między strukturą ('struct') a unią ('union') w języku C polega na sposobie przechowywania danych. Struktura przechowuje wszystkie pola jednocześnie, przydzielając każdemu z nich osobne miejsce w pamięci, natomiast unia używa wspólnej przestrzeni pamięci dla wszystkich swoich pól – w danym momencie można przechowywać tylko jedną wartość. Unia jest bardziej efektywna pod względem pamięci, ale mniej wszechstronna, ponieważ zmiana wartości jednego pola nadpisuje pozostałe. Struktury są powszechnie wykorzystywane w aplikacjach, gdzie konieczne jest przechowywanie wielu niezależnych danych, podczas gdy unie są używane do oszczędzania pamięci.

Pytanie 25

Szablon MojaTablica oferuje funkcjonalność tablicy z indeksami oraz elementami różnych typów. W oparciu o pokazany kod, który wykorzystuje ten szablon do tworzenia tablicy asocjacyjnej, wskaż definicję, która posługuje się szablonem do zainicjowania tablicy, gdzie indeksami są liczby całkowite, a elementami są napisy?

Ilustracja do pytania
A. MojaTablica tab2 = new MojaTablica()
B. MojaTablica tab2 = MOjaTablica()
C. int tab2[] = new MojaTablica()
D. int tab2 = new MojaTablica()
Aby utworzyć tablicę asocjacyjną w oparciu o szablon, należy zainicjalizować ją przy użyciu właściwej składni: MojaTablica tab2 = new MojaTablica();. Tego typu deklaracja tworzy obiekt tablicy, gdzie klucze są liczbami całkowitymi, a wartości przechowywane w tablicy to napisy. Tablice asocjacyjne to potężne narzędzie pozwalające na szybkie wyszukiwanie i przechowywanie danych, bazujące na unikalnych kluczach, co umożliwia efektywne zarządzanie złożonymi strukturami danych.

Pytanie 26

Jakie są cechy biblioteki statycznej w zestawieniu z dynamiczną?

A. Może być zmieniana w czasie działania programu
B. Zostaje dodana do pliku wykonywalnego w trakcie kompilacji
C. Jest wczytywana do pamięci podczas działania aplikacji
D. Nie potrzebuje obecności pliku wykonywalnego
Biblioteka statyczna jest dołączana do pliku wykonywalnego podczas procesu kompilacji. Oznacza to, że jej kod staje się integralną częścią aplikacji, co eliminuje konieczność ładowania jej w czasie wykonywania programu. Tego typu biblioteki charakteryzują się większym rozmiarem pliku wynikowego, ale oferują wyższą wydajność, ponieważ wszystkie funkcje są dostępne lokalnie, bez dodatkowych operacji ładowania. Przykładami bibliotek statycznych są pliki .lib w C/C++.

Pytanie 27

W jakiej topologii sieciowe wszystkie urządzenia są bezpośrednio powiązane z każdym innym?

A. Topologia magistrali
B. Topologia gwiazdy
C. Topologia pierścienia
D. Topologia siatki
Topologia siatki to jedna z najbardziej wydajnych i wszechstronnych struktur sieciowych, w której każde urządzenie (węzeł) jest połączone bezpośrednio z każdym innym węzłem. Tego typu topologia zapewnia wysoką dostępność i odporność na awarie, ponieważ awaria jednego połączenia nie wpływa na komunikację pozostałych węzłów. W praktyce ma to zastosowanie w dużych, zaawansowanych sieciach komputerowych, takich jak sieci miejskie (MAN) czy sieci szerokopasmowe. Istnieją dwie główne formy topologii siatki: siatka pełna, gdzie każde urządzenie ma bezpośrednie połączenia z wszystkimi innymi, oraz siatka częściowa, gdzie nie wszystkie węzły są ze sobą bezpośrednio połączone, ale komunikacja jest możliwa przez inne węzły. Topologia siatki, z uwagi na swoje zalety, jest często wykorzystywana w standardach sieciowych, takich jak Ethernet, oraz w systemach rozproszonych, gdzie kluczowe są niezawodność i efektywność przesyłania danych. Dodatkowo, w kontekście Internetu rzeczy (IoT), topologia siatki umożliwia efektywne zarządzanie dużą liczbą urządzeń, co jest kluczowe w inteligentnych miastach i automatyzacji domowej.

Pytanie 28

Jakie jest poprawne określenie interfejsu (szablonu klasy) w języku Java?

Ilustracja do pytania
A. Definicja 3
B. Definicja 4
C. Definicja 2
D. Definicja 1
W języku Java interfejs określa zbiór abstrakcyjnych metod, które klasa implementująca musi zaimplementować. Poprawna definicja interfejsu nie zawiera zmiennych instancji ani konstruktorów, co jest błędem w pierwszej definicji. Interfejsy służą do deklarowania metod, które są automatycznie publiczne i abstrakcyjne. W czwartej definicji, interfejs IMyInterface zawiera dwie metody mth1 i mth2 bez implementacji, co jest zgodne z zasadami Javy. Metody w interfejsie nie mają ciał, co wskazuje, że są przeznaczone do implementacji w klasie, która zadeklaruje się jako implementująca ten interfejs. Interfejsy są kluczowe dla polimorfizmu w Javie, pozwalając na tworzenie kodu, który może pracować z obiektami różnych klas w jednolity sposób, o ile klasy te implementują wspólny interfejs. Zastosowanie interfejsów zwiększa spójność i elastyczność kodu, umożliwiając łatwe dodawanie nowych funkcjonalności bez ingerencji w istniejącą strukturę kodu. Interfejsy są także wykorzystywane do tworzenia klasycznych wzorców projektowych jak Adapter, Strategia czy Obserwator, co jest dobrą praktyką w programowaniu obiektowym.

Pytanie 29

Jaką wydajność posiada sieć, która przesyła 500 MB danych w czasie 10 sekund?

A. 500 Mbps
B. 400 Mbps
C. 50 Mbps
D. 40 Mbps
Pierwsza odpowiedź, czyli 50 Mbps, jest znacznie za niska. Przy obliczeniach 500 MB w ciągu 10 sekund, ta wartość sugeruje, że tylko niewielka część danych zostałaby przesłana, co nie ma sensu w kontekście technicznym. Z tak małą przepustowością sieć byłaby totalnie nieefektywna, a transfer zająłby o wiele więcej czasu. Z kolei odpowiedź 400 Mbps jest wprawdzie blisko, ale też nie do końca poprawna, bo prawidłowy wynik to 500 Mbps. Chodzi o to, że nie liczy to całkowitej ilości danych w megabitach oraz czasu przesyłu. A na końcu, odpowiedź 40 Mbps to już totalna pomyłka, bo sugeruje ekstremalnie wolny transfer, co na pewno nie wystarczyłoby do przesłania 500 MB w takim krótkim czasie. Taka przepustowość nie spełnia wymagań nowoczesnych aplikacji jak strumieniowe przesyłanie wideo czy komunikacja na żywo, gdzie transfery na poziomie setek megabitów na sekundę to standard.

Pytanie 30

Reguła zaangażowania i konsekwencji jako jedna z zasad wpływania na innych odnosi się

A. do doprowadzania spraw do końca
B. do odwzajemniania się osobie, która nam pomogła
C. do kierowania się zdaniem danej grupy
D. do uległości wobec autorytetów
Reguła zaangażowania i konsekwencji odnosi się do potrzeby doprowadzenia spraw do końca. Kiedy ktoś podejmie decyzję lub działanie, jest bardziej skłonny kontynuować, aby zachować spójność wewnętrzną i unikać dysonansu poznawczego.

Pytanie 31

W metodach klasy GoldCustomer dostępne są tylko pola

Ilustracja do pytania
A. GoldPoints, Name
B. GoldPoints, Name, Id
C. GoldPoints, Name, Id, Age
D. GoldPoints
W metodach klasy GoldCustomer widoczne są pola GoldPoints, Name i Id, co oznacza, że są one dziedziczone lub publiczne i mogą być bezpośrednio dostępne w obrębie tej klasy.

Pytanie 32

W jakim celu wykorzystuje się diagram Gantta?

A. do przedstawiania funkcjonalności systemu
B. do dokładnej analizy czasowo-kosztowej projektu
C. do wizualizacji powiązań między elementami systemów
D. do planowania i zarządzania projektem
Diagram Gantta służy do planowania i zarządzania projektami. Umożliwia wizualizację harmonogramu i postępów prac, co jest kluczowe w efektywnym zarządzaniu czasem i zasobami.

Pytanie 33

Które z wymienionych oznaczeń wskazuje na liniową złożoność algorytmu?

A. O(n)
B. O(log n)
C. O(1)
D. O(n<sup>2</sup>)
Złożoność O(n) oznacza liniową zależność czasu wykonania algorytmu od rozmiaru danych wejściowych. Oznacza to, że dla każdego dodatkowego elementu algorytm wykonuje jedną dodatkową operację. Algorytmy liniowe są jednymi z najczęściej stosowanych w praktyce, ponieważ oferują dobrą równowagę między szybkością a złożonością implementacji. Przykłady algorytmów o złożoności O(n) to przeszukiwanie liniowe (Linear Search), sumowanie elementów tablicy oraz niektóre algorytmy sortowania, takie jak Counting Sort dla określonych warunków. Liniowa złożoność czyni te algorytmy bardzo efektywnymi przy przetwarzaniu dużych zbiorów danych.

Pytanie 34

W zamieszczonym fragmencie kodu Java wskaż nazwę zmiennej, która może przechować wartość 'T'

Ilustracja do pytania
A. zm3
B. zm2
C. zm4
D. zm1
W przedstawionym kodzie zmienna 'zm3' jest zdolna przechowywać wartość 'T', co sugeruje, że jest to typ znakowy (char) lub string o odpowiedniej długości. To standardowa praktyka przy przechowywaniu pojedynczych znaków w języku Java.

Pytanie 35

W jakiej fazie cyklu życia projektu informatycznego następuje integracja oraz testowanie wszystkich modułów systemu?

A. Etap implementacji
B. Etap planowania
C. Faza wdrożenia
D. Faza analizy
Faza implementacji to etap cyklu życia projektu informatycznego, w którym następuje integracja i testowanie wszystkich modułów systemu. Po zakończeniu fazy projektowania i programowania, elementy aplikacji są łączone w jeden spójny system. Integracja polega na połączeniu komponentów, co umożliwia sprawdzenie ich współpracy oraz poprawności przepływu danych. Następnie przeprowadzane są testy integracyjne i systemowe, których celem jest wykrycie błędów w interakcji między modułami. Proces ten jest niezbędny, aby zapewnić stabilność aplikacji przed wdrożeniem do środowiska produkcyjnego. Skuteczna integracja minimalizuje ryzyko awarii i zwiększa niezawodność systemu.

Pytanie 36

Jakie narzędzie jest najbardziej odpowiednie do identyfikacji błędów w trakcie działania programu?

A. Linker
B. Interpreter
C. Debugger
D. Kompilator
Debugger to narzędzie przeznaczone do wyszukiwania błędów w czasie wykonywania programu. Pozwala na zatrzymywanie aplikacji w wybranych miejscach, analizowanie wartości zmiennych i śledzenie przepływu sterowania, co umożliwia szybkie wykrywanie błędów logicznych i błędów czasu wykonania. Debugger jest niezbędny w procesie rozwoju oprogramowania, ponieważ pomaga programistom w zrozumieniu, jak ich kod działa w rzeczywistości i jak różne warunki wpływają na jego funkcjonowanie.

Pytanie 37

Która z wymienionych kart graficznych oferuje lepszą wydajność w grach komputerowych?

A. Intel UHD Graphics 630 - zintegrowana
B. AMD Radeon R7 240 - 2GB GDDR5, 64-bit
C. AMD Radeon RX 580 - 8GB GDDR5, 256-bit
D. NVIDIA GeForce GTX 1050 Ti - 4GB GDDR5, 128-bit
AMD Radeon RX 580 to karta graficzna, która zapewnia wyższą wydajność w grach komputerowych w porównaniu do innych wymienionych opcji. Wyposażona w 8GB pamięci GDDR5 oraz 256-bitową szynę danych, karta ta jest w stanie obsługiwać bardziej złożone tekstury oraz większe rozdzielczości. Jej architektura Polaris pozwala na lepsze zarządzanie energią oraz wydajność w grach, co czyni ją idealnym wyborem dla graczy. Dzięki obsłudze technologii DirectX 12 i Vulkan, RX 580 jest w stanie wykorzystać najnowsze osiągnięcia w dziedzinie grafiki, co przekłada się na wyższą jakość obrazu oraz płynność animacji. Przykłady gier, w których RX 580 sprawdza się najlepiej to 'Far Cry 5' czy 'Shadow of the Tomb Raider', gdzie karta umożliwia granie w wysokich ustawieniach graficznych z zachowaniem wysokiej liczby klatek na sekundę. Standardy, takie jak PCIe 3.0, zapewniają pełną kompatybilność z nowoczesnymi płytami głównymi, co czyni tę kartę doskonałym wyborem dla entuzjastów gier komputerowych.

Pytanie 38

W klasie pracownik zdefiniowano opisane metody. Która z nich jest odpowiednia do dodania elementu diagnostycznego o treści: cout << "Obiekt został usunięty";

Ilustracja do pytania
A. operator==
B. ~pracownik
C. wypisz
D. pracownik
Destruktor to specjalna metoda w języku C++ oznaczona tyldą przed nazwą klasy która jest wywoływana automatycznie w momencie usuwania obiektu danego typu z pamięci. Dlatego dodanie elementu diagnostycznego cout<<Obiekt został usunięty; jest najbardziej sensowne w destruktorze ponieważ pozwala na śledzenie momentu w którym obiekt przestaje istnieć. Takie podejście jest zgodne z dobrymi praktykami programistycznymi ponieważ pomaga w debugowaniu i zarządzaniu zasobami w programie. Warto zauważyć że destruktory są kluczowe w kontekście zarządzania pamięcią szczególnie gdy klasa dynamicznie alokuje zasoby. Wówczas destruktor powinien zawierać kod zwalniający te zasoby aby uniknąć wycieków pamięci. Dodawanie diagnostycznych komunikatów może pomóc programistom w identyfikacji potencjalnych błędów związanych z zarządzaniem cyklem życia obiektów i poprawić ogólną stabilność i czytelność kodu. Praktyka ta jest szczególnie ważna w dużych projektach gdzie ręczne śledzenie wszystkich obiektów byłoby trudne i czasochłonne. Warto stosować taką diagnostykę w połączeniu z nowoczesnymi narzędziami do profilowania i analizy pamięci co zwiększa efektywność procesu programistycznego.

Pytanie 39

Która metoda wyszukiwania potrzebuje posortowanej listy do prawidłowego działania?

A. Wyszukiwanie liniowe
B. Wyszukiwanie sekwencyjne
C. Wyszukiwanie binarne
D. Wyszukiwanie z hashem
Wyszukiwanie binarne wymaga posortowanej tablicy do działania, co pozwala na dzielenie tablicy na pół przy każdym kroku, redukując liczbę operacji do O(log n). Algorytm ten działa poprzez porównanie poszukiwanego elementu ze środkowym elementem tablicy – jeśli element jest mniejszy, wyszukiwanie kontynuuje w lewej części tablicy, a jeśli większy, w prawej. Dzięki tej efektywności, wyszukiwanie binarne jest szeroko stosowane w bazach danych, systemach plików oraz aplikacjach, które operują na dużych zbiorach danych. Wyszukiwanie binarne jest prostym, ale potężnym algorytmem, który znacząco skraca czas przeszukiwania dużych zbiorów.

Pytanie 40

Podejście obiektowe w rozwiązywaniu problemów obejmuje między innymi:

A. pola, metody, rekurencję oraz kwerendy
B. zmienne, procedury oraz funkcje
C. wyzwalacze i polimorfizm
D. klasy, obiekty oraz hermetyzację
Obiektowe podejście obejmuje klasy, obiekty i hermetyzację. Te trzy elementy stanowią podstawę programowania obiektowego, umożliwiając organizację kodu i ochronę danych przed nieautoryzowanym dostępem.