Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 8 stycznia 2025 21:56
  • Data zakończenia: 8 stycznia 2025 22:08

Egzamin zdany!

Wynik: 22/40 punktów (55,0%)

Wymagane minimum: 20 punktów (50%)

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

W obrębie klasy pracownik zdefiniowano przedstawione metody. Którą z nich można zgodnie z jej funkcją rozszerzyć o element diagnostyczny o treści: cout << "Obiekt został usunięty";

Ilustracja do pytania
A. pracownik
B. wypisz
C. ~pracownik
D. operator==
Destruktor (~pracownik) to metoda wywoływana automatycznie podczas usuwania obiektu. To idealne miejsce na dodanie komunikatu diagnostycznego informującego o usunięciu obiektu. Destruktory są kluczowe w zarządzaniu pamięcią i zasobami, zapewniając zwolnienie zasobów po zakończeniu działania obiektu.

Pytanie 2

Jakie znaczenie ma framework w kontekście programowania?

A. Program do graficznego projektowania interfejsów użytkownika
B. Moduł do zarządzania systemami baz danych
C. System operacyjny, który umożliwia uruchamianie aplikacji
D. Zbiór gotowych bibliotek, narzędzi i zasad ułatwiających tworzenie aplikacji
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 3

Który algorytm sortowania opiera się na metodzie "dziel i zwyciężaj"?

A. Sortowanie szybkie (QuickSort)
B. Sortowanie przez wstawianie
C. Sortowanie przez wybór
D. Sortowanie bąbelkowe
QuickSort to algorytm sortowania wykorzystujący podejście 'dziel i zwyciężaj', co oznacza, że dzieli tablicę na mniejsze części wokół elementu zwanego pivotem, a następnie rekurencyjnie sortuje każdą z tych części. Ta strategia pozwala na efektywne sortowanie dużych zbiorów danych w czasie O(n log n) w większości przypadków. Dziel i zwyciężaj to potężne narzędzie algorytmiczne, które znajduje zastosowanie w wielu innych algorytmach, takich jak Merge Sort i algorytmy wyszukiwania binarnego. QuickSort jest często używany w aplikacjach wymagających szybkiego przetwarzania dużych ilości danych.

Pytanie 4

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

Ilustracja do pytania
A. Jest maksymalnie 7-znakowe, co wynika z wartości zmiennej i
B. Ma co najmniej 8 znaków oraz zawiera małe i wielkie litery oraz cyfry
C. Może zawierać małe i wielkie litery oraz cyfry
D. Może zawierać zarówno małe, jak i wielkie litery, cyfry oraz symbole
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 5

Jakie znaczenie ma poziom dostępności AAA w WCAG 2.0?

A. Najnizszy poziom dostępności
B. Dostosowanie tylko do użytkowników mobilnych
C. Najwyższy poziom dostępności
D. Średni standard dostępności
Niepoprawne odpowiedzi dotyczące poziomu dostępności w WCAG 2.0 wprowadzają w błąd i nie odzwierciedlają rzeczywistego znaczenia poziomów dostępności. Po pierwsze, stwierdzenie o minimalnym poziomie dostępności jest mylące, ponieważ poziom A nie jest jedynie minimalnym standardem, ale również zawiera kluczowe wytyczne. Uznanie poziomu AAA za minimalny standard mogłoby prowadzić do sytuacji, w której użytkownicy niepełnosprawni nie otrzymaliby odpowiedniej pomocy. Kolejnym błędnym podejściem jest określenie poziomu AAA jako średniego poziomu dostępności, co jasno sugeruje błędne zrozumienie hierarchii poziomów w WCAG. W rzeczywistości poziom AAA jest znacznie bardziej wymagający i zawiera dodatkowe kryteria, które są kluczowe dla pełnej dostępności. Ostatnia niepoprawna odpowiedź sugeruje, że poziom AAA dotyczy jedynie użytkowników mobilnych, co jest całkowicie mylne. WCAG 2.0 jest zaprojektowane tak, aby dotyczyło wszystkich platform i urządzeń, nie ograniczając się tylko do mobilnych. Koncentruje się na zapewnieniu dostępności treści dla wszystkich, niezależnie od używanego urządzenia.

Pytanie 6

Prezentowana metoda jest realizacją algorytmu

Ilustracja do pytania
A. sprawdzającego, czy dany ciąg jest palindromem
B. wyszukującego literę w ciągu
C. sortującego ciąg od znaku o najniższym kodzie ASCII do znaku o najwyższym kodzie
D. odwracającego ciąg
Fajnie, że zajmujesz się algorytmami! W tym przypadku chodzi o odwracanie napisu, czyli taki myk, żeby ostatni znak stał się pierwszym, a pierwszy ostatnim. To jedna z tych podstawowych rzeczy, które są przydatne w programowaniu. Wiesz, takie operacje na tekstach są przydatne w różnych sytuacjach, jak szyfrowanie czy nawet analiza danych. Trochę jak układanie puzzli, tylko z literami!

Pytanie 7

Jakie jest oznaczenie normy międzynarodowej?

A. PN
B. CE
C. ISO
D. EN
ISO (International Organization for Standardization) to międzynarodowa organizacja zajmująca się opracowywaniem i wdrażaniem standardów technicznych. Oznaczenie ISO wskazuje, że produkt lub usługa spełnia międzynarodowe normy jakości i bezpieczeństwa, co ułatwia handel oraz współpracę na arenie międzynarodowej. Normy ISO obejmują szeroki zakres dziedzin, takich jak zarządzanie jakością (ISO 9001), zarządzanie środowiskowe (ISO 14001) czy bezpieczeństwo informacji (ISO 27001). Certyfikacja ISO buduje zaufanie klientów i zwiększa konkurencyjność firmy na rynku globalnym.

Pytanie 8

Jednym z rodzajów testów funkcjonalnych, które można przeprowadzić na aplikacji webowej, jest ocena

A. poprawności wyświetlanych elementów aplikacji
B. bezpieczeństwa aplikacji
C. wydajności aplikacji
D. poziomu optymalizacji kodu aplikacji
Bezpieczeństwo aplikacji to sprawa testów penetracyjnych, a nie funkcjonalnych. Wiesz, to trochę jak sprawdzenie, czy można się włamać do systemu, a nie sprawdzanie, czy przyciski działają. Co do optymalizacji kodu, to tam są testy wydajnościowe, ale nie związane bezpośrednio z tym, co testujemy w funkcjonalności. Zresztą, wydajność aplikacji to z kolei obszar testów obciążeniowych i stresowych. W skrócie, chodzi o to, jak system działa pod dużym obciążeniem, a nie jakie ma funkcje.

Pytanie 9

Jaką cechą odznacza się framework w porównaniu do biblioteki?

A. Framework stanowi zbiór funkcji, które programista ma możliwość wykorzystania
B. Framework zapewnia API do szerszego zestawu funkcji
C. Framework określa strukturę aplikacji i zapewnia jej fundament
D. Framework oferuje funkcje użyteczne w konkretnej dziedzinie problemu
Framework dostarcza gotowy szkielet aplikacji i narzuca architekturę, zgodnie z którą programista musi budować swoją aplikację. Oferuje zestaw narzędzi i komponentów, które upraszczają rozwój oprogramowania, przy jednoczesnym ograniczeniu swobody działania. Dzięki frameworkowi, programista nie musi tworzyć aplikacji od podstaw – dostaje narzędzia, które integrują się ze sobą, co przyspiesza proces developmentu i zapewnia spójność aplikacji.

Pytanie 10

Który z wymienionych typów stanowi przykład typu znakowego?

A. boolean
B. char
C. string
D. float
Typ 'char' to przykład typu znakowego, który przechowuje pojedynczy znak (litera, cyfra, symbol). W językach takich jak C++, Java czy C, typ 'char' zajmuje jeden bajt pamięci i jest podstawą do obsługi operacji tekstowych oraz przetwarzania danych wejściowych. Typy znakowe są często wykorzystywane do manipulacji łańcuchami tekstowymi, przechowywania kodów ASCII i pracy z danymi wejściowymi. Znaki są podstawowym elementem budowy tekstów i mogą być łączone w tablice (ciągi znaków) lub przetwarzane indywidualnie.

Pytanie 11

Który fragment kodu ilustruje zastosowanie rekurencji?

Ilustracja do pytania
A. Blok 4
B. Blok 3
C. Blok 2
D. Blok 1
Blok 2, 3 i 4 mogą zawierać iteracyjne pętle lub inne struktury sterujące, ale nie posiadają wywołań funkcji wewnątrz własnej definicji. Iteracja różni się od rekurencji, ponieważ nie korzysta z wywołań zwrotnych funkcji, co stanowi główną cechę rekurencji.

Pytanie 12

Tworząc aplikację opartą na obiektach, należy założyć, że program będzie zarządzany przez

A. moduły zawierające funkcje oraz zmienne globalne
B. definicję warunków końcowego rozwiązania
C. pętlę dyspozytora, która w zależności od zdarzenia wywoła właściwą funkcję
D. zbiór instancji klas współpracujących ze sobą
Moduły z funkcjami i zmiennymi globalnymi to podejście proceduralne, a nie obiektowe. Pętla dyspozytora odpowiada za sterowanie w aplikacjach event-driven, ale nie definiuje obiektów i klas. Warunki końcowe odnoszą się do programowania deklaratywnego, a nie obiektowego.

Pytanie 13

Który z języków programowania jest powszechnie stosowany do tworzenia interfejsów użytkownika przy użyciu XAML?

A. Java
B. Objective-C
C. C++
D. C#
C++ jest często używany do tworzenia aplikacji desktopowych, ale w przypadku interfejsów użytkownika XAML jest bardziej związany z C#. Java jest językiem wykorzystywanym głównie do tworzenia aplikacji na Androida oraz aplikacji webowych i backendowych, ale nie jest typowo używany do programowania interfejsów w XAML. Objective-C to starszy język programowania dla systemów Apple i nie jest związany z XAML, który jest specyficzny dla technologii Microsoftu.

Pytanie 14

Jakie są kluczowe korzyści z wykorzystania frameworków podczas programowania aplikacji desktopowych?

A. Gwarantują dostęp do niskopoziomowego kodu systemowego
B. Ułatwiają kontrolę nad wersjami systemu operacyjnego
C. Redukują zapotrzebowanie na pamięć operacyjną aplikacji
D. Skracają czas tworzenia aplikacji dzięki gotowym komponentom i narzędziom
Jedną z głównych zalet stosowania frameworków w programowaniu aplikacji desktopowych jest znaczne skrócenie czasu tworzenia oprogramowania dzięki gotowym komponentom i narzędziom. Frameworki dostarczają struktury, która standaryzuje rozwój aplikacji i minimalizuje konieczność pisania kodu od podstaw. Frameworki takie jak WPF, Qt czy Electron umożliwiają szybkie tworzenie interfejsów użytkownika, obsługę zdarzeń oraz integrację z bazami danych i API. Ponadto frameworki wspierają modularność i umożliwiają łatwe zarządzanie dużymi projektami, co przekłada się na lepszą organizację kodu i wyższą jakość oprogramowania.

Pytanie 15

Zaznaczone elementy w przedstawionych obramowaniach mają na celu

Ilustracja do pytania
A. uzyskanie nazwy obiektu obrazującego okno aplikacji
B. ustawienie tytułu okna na "Tekst"
C. zapisanie tytułu okna do obiektu Tekst
D. przypisanie nazwy obiektu obrazującego okno aplikacji
Elementy w ramkach ustawiają tytuł okna na 'Tekst'. Jest to operacja zmiany właściwości okna, która pozwala użytkownikowi na dostosowanie tytułu wyświetlanego na pasku aplikacji.

Pytanie 16

W standardzie dokumentacji testów oprogramowania IEEE 829-1998 opisany jest dokument, który zawiera dane o tym, jakie przypadki testowe były wykorzystane, przez kogo i czy zakończyły się sukcesem. Co to jest?

A. Plan Testów
B. Raport Podsumowujący Testy
C. Specyfikacja Procedury Testowej
D. Dziennik Testów
Test Plan to dokument opisujący strategię i zakres testów, ale nie zawiera bieżących logów z wykonania testów. Test Procedure Specification definiuje kroki wykonania testów, ale nie przechowuje informacji o ich wynikach. Test Summary Report to podsumowanie testów, ale powstaje po ich zakończeniu, a nie w trakcie wykonywania.

Pytanie 17

Jakie jest podstawowe użycie metod wirtualnych?

A. Zapewnienie, że metoda działa wyłącznie na danych statycznych
B. Umożliwienie dynamicznego wiązania metod w czasie wykonania
C. Umożliwienie wielokrotnego dziedziczenia
D. Umożliwienie korzystania z metod bezpośrednio z klasy bazowej
Metody wirtualne umożliwiają dynamiczne wiązanie metod w czasie wykonywania programu (ang. runtime). Oznacza to, że wywołanie metody zależy od rzeczywistego typu obiektu, a nie od typu wskaźnika lub referencji, za pomocą której został on wywołany. Mechanizm ten pozwala na implementację polimorfizmu, który jest jednym z kluczowych filarów programowania obiektowego. Dzięki metodom wirtualnym można uzyskać elastyczność i rozszerzalność kodu, umożliwiając klasom pochodnym dostarczanie własnych wersji metod zdefiniowanych w klasie bazowej. To prowadzi do bardziej zorganizowanego i skalowalnego kodu, ponieważ nowe funkcjonalności można dodawać, rozszerzając istniejące klasy, zamiast modyfikować kod bazowy.

Pytanie 18

Który z wymienionych typów danych należy do typu logicznego?

A. float
B. bool
C. int
D. char
Typ danych 'bool' (boolean) jest typem logicznym, który przechowuje jedną z dwóch wartości: 'true' lub 'false'. Typy logiczne są nieodłącznym elementem programowania, ponieważ umożliwiają implementację warunków i pętli sterujących przepływem programu. Typ 'bool' znajduje zastosowanie w praktycznie każdym języku programowania, w tym C++, Java, Python i C#. Operacje logiczne, takie jak 'AND', 'OR' i 'NOT', opierają się na wartościach typu 'bool', co czyni je podstawą dla algorytmów decyzyjnych i strukturalnych. Zastosowanie typów logicznych zwiększa czytelność kodu i pozwala na efektywne zarządzanie warunkami logicznymi.

Pytanie 19

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

int zm1;
float zm2;
char zm3;
boolean zm4;

A. zm2
B. zm1
C. zm3
D. zm4
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 20

Która z wymienionych zasad jest istotna dla bezpiecznego użytkowania portali społecznościowych?

A. Zgłaszanie treści, które naruszają regulamin
B. Udostępnianie jak największej ilości informacji osobowych
C. Unikanie stosowania silnych haseł do konta
D. Regularne kontrolowanie ustawień prywatności
Regularne sprawdzanie ustawień prywatności jest kluczowym aspektem bezpiecznego korzystania z portali społecznościowych, ponieważ to właśnie te ustawienia decydują o tym, jakie informacje udostępniamy innym użytkownikom. Użytkownicy powinni być świadomi, że domyślne ustawienia prywatności często są skonfigurowane w sposób, który umożliwia szeroką dostępność ich danych osobowych. Przykładowo, wiele platform społecznościowych domyślnie ustawia profile jako publiczne, co oznacza, że każdy może zobaczyć ich zawartość. Zmieniając te ustawienia, użytkownicy mogą ograniczyć widoczność swoich postów, zdjęć, a także informacji osobistych tylko do wybranej grupy osób, co znacząco zwiększa ich bezpieczeństwo. Warto także regularnie aktualizować te ustawienia, ponieważ platformy często wprowadzają nowe funkcje, które mogą zmieniać domyślne zasady dotyczące prywatności. Zgodnie z wytycznymi RODO oraz innymi standardami ochrony danych osobowych, użytkownicy mają prawo do kontrolowania swoich informacji, co czyni regularne sprawdzanie ustawień prywatności nie tylko zaleceniem, ale również obowiązkiem każdego świadomego użytkownika internetu.

Pytanie 21

Który z wymienionych algorytmów jest algorytmem opartym na iteracji?

A. BubbleSort
B. QuickSort
C. Fibonacci (rekurencyjnie)
D. DFS (przeszukiwanie w głąb)
QuickSort to algorytm rekurencyjny wykorzystujący podejście 'dziel i zwyciężaj' i działa znacznie szybciej niż Bubble Sort. Rekurencyjna wersja algorytmu obliczania Fibonacciego jest klasycznym przykładem rekurencji, a nie iteracji. DFS (Depth First Search) to algorytm przeszukiwania grafów, który może być zarówno rekurencyjny, jak i iteracyjny, ale nie jest algorytmem sortowania, co odróżnia go od Bubble Sort.

Pytanie 22

Jakie metody można wykorzystać do przechowywania informacji o użytkownikach w aplikacji mobilnej na systemie Android?

A. Wyłącznie w zewnętrznych bazach danych
B. W rejestrze systemu
C. Tylko w pamięci RAM
D. Za pomocą plików SharedPreferences
Przechowywanie danych w rejestrze systemu jest typowe dla aplikacji desktopowych działających na systemach Windows i nie znajduje zastosowania w środowisku Android. Zewnętrzne bazy danych są używane do przechowywania dużych ilości danych, ale nie są optymalnym rozwiązaniem dla prostych preferencji użytkownika, ponieważ wymagają bardziej skomplikowanej konfiguracji. Przechowywanie danych wyłącznie w pamięci RAM jest rozwiązaniem tymczasowym – dane te są tracone po zamknięciu aplikacji lub ponownym uruchomieniu urządzenia, co czyni je niepraktycznymi do przechowywania trwałych ustawień użytkownika.

Pytanie 23

Kod zaprezentowany w filmie w języku C++ nie przechodzi kompilacji. Co należy zmodyfikować w tym kodzie, aby kompilacja odbyła się bez błędów?

A. zadeklarować zmienną sprawdz przed jej wykorzystaniem w linii 11
B. dodać deklarację funkcji sprawdz przed funkcją main
C. naprawić błąd w funkcji sprawdz, który polega na braku nawiasów {} w pętli for
D. poprawnie zapisać warunek w instrukcji if w linii 11, np. sprawdz(x)==true
Błąd kompilacji wynika z braku deklaracji funkcji przed jej użyciem. Dodanie deklaracji funkcji 'sprawdz' przed funkcją main eliminuje ten problem i umożliwia prawidłowe skompilowanie programu.

Pytanie 24

Algorytm przedstawiony powyżej może zostać zaimplementowany w języku Java z wykorzystaniem instrukcji:

Ilustracja do pytania
A. while
B. if
C. switch
D. try
Instrukcja 'while' w Javie działa tak, że powtarza blok kodu, aż warunek, który podasz, będzie prawdziwy. To jedna z podstawowych rzeczy w programowaniu i super przydaje się, kiedy nie wiesz z góry, ile razy coś ma się powtórzyć. Na przykład, możesz to wykorzystać, gdy szukasz czegoś w danych albo gdy chcesz, żeby coś wydarzyło się wielokrotnie, jak obsługa kliknięć na stronie.

Pytanie 25

Na ilustracji pokazano fragment emulacji iOS z elementem kontrolnym. Który fragment kodu XAML opisuje ten element?

Ilustracja do pytania
A.
B.
C.
D.
Kontrolkaw XAML to taki przełącznik. Ma dwa stany: włączony (true) i wyłączony (false). Można to porównać do zwykłego włącznika, tylko że w aplikacjach. Fajnie się z tego korzysta, bo pozwala szybko zmieniać ustawienia, nie trzeba nic więcej wpisywać. To jest dosyć intuicyjne dla użytkowników, więc można nim łatwo zarządzać funkcjami aplikacji.

Pytanie 26

Kod funkcji "wykonaj()" przedstawiony powyżej weryfikuje, czy

Ilustracja do pytania
A. konkretny element (argument) jest obecny w tablicy liczb całkowitych
B. konkretny element (argument) przypada w zakresie od 0 do 4
C. wszystkie elementy w tablicy odpowiadają wartości konkretnego elementu (argument)
D. w tablicy liczb całkowitych znajdują się jedynie wartości 4, 15, -2, 9, 202
Funkcja 'wykonaj()' sprawdza, czy określony element (argument) znajduje się w tablicy zawierającej liczby całkowite. Algorytm przeszukuje tablicę iteracyjnie, porównując element wejściowy z każdym elementem tablicy, co pozwala na efektywne odnalezienie wartości, jeśli istnieje.

Pytanie 27

Definicja konstruktora dla zaprezentowanej klasy w języku C++ może być sformułowana jak w

Ilustracja do pytania
A. Deklaracji 3
B. Deklaracji 1
C. Deklaracji 2
D. Deklaracji 4
Deklaracja 2 może zawierać błędną składnię lub brak odpowiedniej definicji, co prowadzi do błędów kompilacji. Deklaracja 3 może używać nieprawidłowych modyfikatorów dostępu. Deklaracja 4 może zawierać błędne parametry lub brak wymaganej inicjalizacji zmiennych, co czyni ją niepoprawną jako konstruktor.

Pytanie 28

Dlaczego w wyniku działania tego kodu w języku C++ na ekranie pojawiła się wartość O zamiast 50?

Ilustracja do pytania
A. Funkcja zwraca wartość, chociaż nie powinna jej zwracać
B. Zmienna x powinna być inicjowana wartością równą 1, a nie O
C. Niepoprawnie zdefiniowano działanie wewnątrz funkcji
D. Argument funkcji został przekazany przez wartość, a nie przez referencję
Błąd związany z przekazywaniem argumentu przez wartość, a nie przez referencję, to klasyka w C++. W tym kodzie zmienna x idzie jako kopia, więc zmiany w oblicz nie wpływają na oryginał w main. Może popełniłeś błąd, bo nie do końca rozumiesz różnicę między tymi dwoma metodami. Te inne odpowiedzi wskazują na różne problemy, jak źle zainicjowana zmienna czy błędy w zwracaniu wartości. Ale w oblicz wszystko powinno działać poprawnie, bo zwraca wartość typu int, a problem leży w tym, że przekazujesz kopię argumentu. Warto pamiętać, że poprawny kod wymaga sensownego przepływu wartości między funkcjami i zrozumienia, że x w main nie zmienia się, bo modyfikujesz kopię. Często mylimy to i myślimy, że zmiany w funkcji wpływają na oryginały, a w C++ musisz użyć referencji albo wskaźników, żeby to zadziałało. Zrozumienie tego jest kluczowe, żeby dobrze ogarniać funkcje w C++ i unikać takich problemów w przyszłości.

Pytanie 29

Zasada programowania obiektowego, która polega na ukrywaniu elementów klasy tak, aby były one dostępne wyłącznie dla metod tej klasy lub funkcji zaprzyjaźnionych, to

A. dziedziczenie
B. polimorfizm
C. wyjątki
D. hermetyzacja
Polimorfizm umożliwia definiowanie metod o tej samej nazwie w różnych klasach, dziedziczenie pozwala na przekazywanie cech klasy bazowej do klas pochodnych, a wyjątki dotyczą obsługi błędów, nie ukrywania składowych klasy.

Pytanie 30

Jakie sformułowanie najlepiej oddaje złożoność obliczeniową algorytmu quicksort?

A. jest różna w zależności od wyboru elementu dzielącego
B. jest zawsze mniejsza niż złożoność jakiegokolwiek innego algorytmu sortowania
C. jest większa niż złożoność sortowania bąbelkowego
D. jest większa niż O(n2)
Quicksort to jeden z najszybszych i najczęściej stosowanych algorytmów sortowania, ale jego złożoność obliczeniowa nie jest stała i zależy od wyboru elementu rozdzielającego (pivot). W najgorszym przypadku, gdy pivot wybierany jest niefortunnie (np. największy lub najmniejszy element), złożoność quicksort wynosi O(n²). W przypadku optymalnym (pivot dzieli zbiór na dwie równe części), złożoność to O(n log n). Algorytm ten działa w sposób rekurencyjny, dzieląc tablicę na mniejsze podzbiory, co czyni go bardzo efektywnym dla dużych zbiorów danych. W praktyce quicksort jest często szybszy niż sortowanie przez scalanie (merge sort) ze względu na mniejszą liczbę operacji przesuwania danych, mimo że oba algorytmy mają podobną średnią złożoność obliczeniową.

Pytanie 31

Jaką liczbę warstw zawiera model TCP/IP?

A. 5
B. 7
C. 2
D. 4
Odpowiedzi wskazujące na 2, 5 i 7 warstw w modelu TCP/IP są niepoprawne z kilku powodów. Pierwsza z nich sugeruje, że model TCP/IP miałby jedynie dwie warstwy, co znacznie upraszczałoby jego złożoność i nie oddawałoby rzeczywistego podziału funkcji. W rzeczywistości, połączenie krótkometrażowych protokołów z różnych obszarów komunikacji wymaga bardziej rozbudowanego systemu, który może obsłużyć różnorodne aplikacje oraz środowiska sieciowe. Drugie podejście, zakładające pięć warstw, mogłoby sugerować dodatkową warstwę, taką jak warstwa sesji, znana z modelu OSI. Jednak model TCP/IP nie definiuje wyraźnie tej warstwy, zatem dodawanie jej do struktury modelu TCP/IP wprowadzałoby zamieszanie. Natomiast odpowiedź, która wskazuje na siedem warstw, jest jeszcze bardziej nieadekwatna, ponieważ nie ma takiego uznawania w kontekście standardów TCP/IP. Taki podział może wynikać z pomylenia z modelem OSI, który rzeczywiście posiada siedem warstw, ale jego złożoność nie znajduje odzwierciedlenia w prostocie modelu TCP/IP. Zrozumienie różnic między tymi modelami jest kluczowe dla osób pracujących w dziedzinie technologii informacyjnej oraz telekomunikacji.

Pytanie 32

Który z języków programowania jest powszechnie wykorzystywany do tworzenia aplikacji na komputery stacjonarne?

A. C++
B. JavaScript
C. PHP
D. HTML
HTML to język znaczników używany do tworzenia stron internetowych, a nie aplikacji desktopowych. Choć HTML może być wykorzystany do budowy interfejsów w aplikacjach webowych, nie oferuje bezpośredniego wsparcia dla budowy natywnych aplikacji desktopowych. PHP jest językiem skryptowym, który działa po stronie serwera i jest głównie stosowany w aplikacjach webowych – jego zastosowanie w aplikacjach desktopowych jest ograniczone. JavaScript jest językiem programowania używanym głównie w przeglądarkach internetowych i rzadko stosowanym w budowie tradycyjnych aplikacji desktopowych, z wyjątkiem technologii takich jak Electron, które pozwalają na tworzenie aplikacji wieloplatformowych w oparciu o webowe technologie.

Pytanie 33

Użycie modyfikatora abstract w definicji metody w klasie wskazuje, że

A. dziedziczenie po tej klasie jest niedozwolone
B. trzeba zaimplementować tę metodę w tej klasie
C. klasy pochodne nie mogą implementować tej metody
D. klasa ta stanowi podstawę dla innych klas
Modyfikator 'abstract' nie wymusza implementacji metod w tej samej klasie, lecz przenosi to wymaganie na klasy dziedziczące. Dziedziczenie po klasie abstrakcyjnej jest możliwe, co pozwala na rozszerzanie jej funkcjonalności. Klasy dziedziczące muszą implementować metody abstrakcyjne, co jest ich obowiązkiem, a nie zakazem.

Pytanie 34

Jakie polecenie w Gicie jest używane do zapisywania zmian w lokalnym repozytorium?

A. git push
B. git clone
C. git commit
D. git pull
Polecenie 'git push' przesyła zapisane lokalnie commity do zdalnego repozytorium, ale samo w sobie nie zapisuje zmian lokalnie. 'git clone' kopiuje istniejące repozytorium zdalne na komputer lokalny, co jest pierwszym krokiem do pracy z kodem, ale nie służy do zapisywania zmian. 'git pull' pobiera najnowsze zmiany z repozytorium zdalnego i scala je z lokalnym repozytorium, co umożliwia aktualizację kodu, ale nie zapisuje nowych zmian lokalnie jak 'git commit'.

Pytanie 35

Które z wymienionych działań stanowi zagrożenie dla emocjonalnego dobrostanu człowieka w sieci?

A. Nadmierne korzystanie z mediów społecznościowych
B. Cyberstalking
C. Zła postawa podczas pracy przy komputerze
D. Przesyłanie niezaszyfrowanych plików
Cyberstalking to groźne zjawisko polegające na uporczywym prześladowaniu, nękaniu lub groźbach w przestrzeni internetowej. Może prowadzić do poważnych problemów emocjonalnych, takich jak lęki, depresja, a nawet zespół stresu pourazowego (PTSD). Cyberstalking narusza prywatność ofiary, wywołując poczucie zagrożenia i bezradności. Walka z tym zjawiskiem obejmuje zgłaszanie przypadków organom ścigania, blokowanie prześladowców i korzystanie z narzędzi ochrony prywatności.

Pytanie 36

Aplikacje funkcjonujące w systemach Android do komunikacji z użytkownikiem wykorzystują klasę

A. Windows
B. Screens
C. Activity
D. Fragments
Klasa Screens to ogólne określenie ekranów aplikacji, ale nie jest to faktyczna klasa w Androidzie. Fragments są komponentami interfejsu, które mogą być częścią Activity, ale same nie zarządzają cyklem życia aplikacji. Klasa Windows jest związana z aplikacjami desktopowymi i nie występuje w systemie Android w kontekście budowy interfejsu użytkownika.

Pytanie 37

Jakie z wymienionych działań jest fundamentalne w modelu kaskadowym?

A. Iteracyjne wprowadzanie modyfikacji na każdym poziomie
B. Przeprowadzanie testów systemu po zakończeniu każdej fazy
C. Równoległe prowadzenie wielu etapów projektu
D. Zakończenie jednej fazy przed rozpoczęciem następnej
Kończenie jednej fazy przed rozpoczęciem kolejnej to kluczowa cecha modelu kaskadowego (Waterfall). W tym podejściu projekt jest realizowany etapami – analiza, projektowanie, implementacja, testowanie i wdrożenie – bez możliwości powrotu do poprzednich faz. Dzięki temu model Waterfall jest przejrzysty i łatwy do zarządzania, szczególnie w projektach o stabilnych wymaganiach. Jednak jego ograniczeniem jest brak elastyczności, co może prowadzić do problemów, jeśli wymagania zmienią się w trakcie trwania projektu.

Pytanie 38

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

A. 500 Mbps
B. 40 Mbps
C. 400 Mbps
D. 50 Mbps
Przepustowość sieci to tak naprawdę miara, jak dobrze potrafimy przesyłać dane w określonym czasie, najczęściej podawana w bitach na sekundę (bps). Jeśli mamy 500 MB danych do przesłania w ciągu 10 sekund, to najpierw musimy zamienić megabajty na megabity. Pamiętaj, że 1 bajt to 8 bitów, więc 500 MB to 4000 Mb (500 MB * 8 = 4000 Mb). Jak już to zrobimy, dzielimy 4000 Mb przez 10 sekund i wychodzi nam 400 Mb/s. Ale warto też wspomnieć, że generalnie przepustowość mierzona jest w megabitach na sekundę. Tak więc 500 Mbps to w zasadzie to samo co 500 Mb/s w kontekście przesyłania danych. Podsumowując, obliczając 4000 Mb dzielone przez 10 sekund, dostajemy przepustowość 400 Mbps. Wiesz, to pokazuje, że przy takim transferze danych potrzeba sporego pasma, żeby wszystko działało jak należy. W dzisiejszych czasach, szybkość transferu danych to kluczowy element, żeby sieć była wydajna.

Pytanie 39

Jakie są typowe frameworki/biblioteki używane w aplikacjach webowych?

A. ASP.NET Core, jQuery, Joomla!, Wordpress, Angular
B. jquery, Joomla!, Wordpress, android Studio, Xamarin
C. Visual Studio, Eclipse, angular, React.js, Node.js
D. ASP.NET Core, Django, Angular, React.js, Node.js
Joomla! i WordPress – To systemy zarządzania treścią (CMS), a nie frameworki. Android Studio i Xamarin – Służą do tworzenia aplikacji mobilnych, a nie webowych. Eclipse – To środowisko programistyczne, nie framework typowy dla web developmentu.

Pytanie 40

Które z poniższych stwierdzeń najlepiej charakteryzuje tablicę asocjacyjną?

A. Tablica, która przechowuje wyłącznie dane tekstowe
B. Tablica przechowująca dane w formie par klucz-wartość
C. Tablica, która przechowuje wartości, do których można uzyskać dostęp tylko za pomocą indeksów numerycznych
D. Tablica, która zmienia swoje wymiary w trakcie działania programu
A więc zwykła tablica działa na zasadzie numerów, nie ma kluczy tekstowych, więc nie ma mowy o parach klucz-wartość. Co prawda, tablice dynamiczne potrafią zmieniać rozmiar, ale mimo to, nie dadzą rady zorganizować danych w taki sposób. Tekst czy inne typy danych w tablicach są po prostu przechowywane jak inne. Kluczowa różnica jest taka, że tablice asocjacyjne pozwalają na użycie kluczy, co czyni je bardziej elastycznymi. Trochę się zgubiłeś w tym wszystkim.