Wyniki egzaminu

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

Egzamin niezdany

Wynik: 9/40 punktów (22,5%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

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

A. Screens
B. Fragments
C. Activity
D. Windows
W systemach Android do interakcji z użytkownikiem wykorzystywana jest klasa Activity, która reprezentuje pojedynczy ekran aplikacji. Activity zarządza cyklem życia aplikacji i pozwala na obsługę zdarzeń użytkownika, co jest kluczowym elementem w budowie aplikacji mobilnych.

Pytanie 2

Liczba A4 w zapisie heksadecymalnym ma odpowiadający jej zapis binarny

A. 10100010
B. 10100100
C. 1011100
D. 1010100
Liczba A4 w systemie heksadecymalnym to 10100100 w systemie binarnym. Przekształcanie z systemu szesnastkowego na binarny polega na zamianie każdej cyfry na 4-bitowy odpowiednik.

Pytanie 3

Jakie są różnice między dialogiem modalnym a niemodalnym?

A. Dialog modalny umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
B. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
C. Dialog modalny wymaga zamknięcia, aby powrócić do głównego okna aplikacji, natomiast dialog niemodalny tego nie wymaga
D. Dialog modalny działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie
Stwierdzenie, że dialog modalny działa w tle, jest błędne – dialog modalny jest zawsze na pierwszym planie i blokuje interakcję z innymi oknami aplikacji. Niemodalny dialog to ten, który działa w tle i nie wymaga natychmiastowej reakcji użytkownika. Określenie, że dialog modalny pozwala na interakcję z innymi oknami aplikacji, to nieporozumienie – to właśnie dialog niemodalny umożliwia taką interakcję. Stwierdzenie, że dialog modalny jest ograniczony tylko do aplikacji konsolowych, jest błędne – dialogi modalne są powszechnie stosowane w aplikacjach desktopowych i graficznych, a nie w aplikacjach konsolowych, gdzie interakcja odbywa się głównie za pomocą tekstu.

Pytanie 4

Jakie cechy powinien posiadać skuteczny negocjator?

A. intuicja, cierpliwość, asertywność
B. dobra reputacja, przekora, porywczość
C. asertywność, pesymizm, buta
D. lojalność, nieśmiałość, uczciwość
Cechy dobrego negocjatora to intuicja, cierpliwość i asertywność. Negocjator powinien umieć ocenić sytuację, przewidzieć reakcje drugiej strony i stanowczo, lecz spokojnie dążyć do celu. Te cechy pomagają budować relacje, znajdować kompromisy i skutecznie rozwiązywać konflikty, co jest kluczowe w biznesie i codziennych interakcjach.

Pytanie 5

Zaproponowany fragment kodu w języku Java wypełnia tablicę elementami:

Ilustracja do pytania
A. 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
B. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
C. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
D. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Sekwencja od 0 do 9 oznacza zwykłe indeksowanie lub iterację po liczbach całkowitych. Powtarzanie liczby 2 wskazuje na inicjalizację tablicy jedną wartością, co nie jest zgodne z wymaganym wynikiem. Wypełnienie tablicy wartościami od 1 do 10 to iteracja po kolejnych liczbach naturalnych, a nie liczbach parzystych.

Pytanie 6

Wskaż kod, który jest funkcjonalnie równy zaprezentowanemu

Ilustracja do pytania
A. Kod 1
B. Kod 3
C. Kod 2
D. Kod 4
Kod 1 – Może różnić się kluczowymi elementami implementacji, prowadząc do innych wyników. Kod 3 – Zawiera zmiany, które wpływają na działanie algorytmu, co eliminuje jego równorzędność. Kod 4 – Często reprezentuje inną wersję rozwiązania, która nie jest zgodna z logiką bazowego kodu.

Pytanie 7

Jakie jest przeznaczenie dokumentacji wdrożeniowej?

A. Do tworzenia zadań w systemie kontroli wersji
B. Do zarządzania bazą danych aplikacji
C. Do testowania wydajności aplikacji
D. Do opisania procesu instalacji i konfiguracji aplikacji w środowisku produkcyjnym
Zarządzanie bazą danych aplikacji to ważny aspekt administracji systemami, ale dokumentacja wdrożeniowa dotyczy całego procesu przeniesienia aplikacji do środowiska produkcyjnego, a nie tylko jej bazy danych. Testowanie wydajności aplikacji jest częścią procesu jakościowego, ale nie zastępuje dokumentacji wdrożeniowej, która koncentruje się na technicznych aspektach implementacji oprogramowania. Tworzenie zadań w systemie kontroli wersji (np. Git) pomaga śledzić zmiany w kodzie, ale nie jest związane z bezpośrednim wdrażaniem aplikacji w środowisku produkcyjnym.

Pytanie 8

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

A. bool
B. int
C. char
D. struct
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 9

W zestawieniu przedstawiono doświadczenie zawodowe członków zespołu IT. Osobą odpowiedzialną za stworzenie aplikacji front-end powinna być:

Ilustracja do pytania
A. Patryk
B. Ewa
C. Anna
D. Krzysztof
Patryk i Anna mogą mieć doświadczenie w programowaniu, ale ich specjalizacja może dotyczyć innych obszarów, np. back-end lub baz danych. Ewa może być ekspertem w innej dziedzinie, ale brak doświadczenia w front-end może prowadzić do wydłużenia czasu realizacji projektu lub błędów w interfejsie użytkownika.

Pytanie 10

Wskaż fragment kodu, który stanowi realizację przedstawionego algorytmu w języku C++

Ilustracja do pytania
A. kod 1
B. kod 3
C. kod 2
D. kod 4
Jak się przyjrzysz innym opcjom, można zauważyć sporo problemów, które mogą wprowadzać w błąd przy implementacji algorytmu związanym z schematem blokowym. Opcja Kod 2 stosuje instrukcję if-else, co już jest dużym błędem. W związku z tym operacje dodawania i zwiększania zmiennej `i` wykonają się tylko raz, jeśli początkowy warunek jest spełniony. Z tego wynika brak powtarzalności, co ważne w algorytmach, gdzie trzeba coś robić wielokrotnie, aż warunek będzie spełniony. Z kolei Kod 3 używa pętli for, która lepiej nadaje się do przypadków, gdzie liczba powtórzeń jest znana. Ale tutaj zmienna `i` jest źle umiejscowiona i nie pasuje do logiki algorytmu. Dodatkowo, sama konstrukcja pętli for nie pokazuje, że musimy coś zrobić przynajmniej raz, zanim sprawdzimy warunek. Kod 4 chociaż używa pętli while, to i tak nie spełnia warunku, że operacja musi się wykonać przynajmniej raz przed sprawdzeniem tego warunku. Pętla while najpierw weryfikuje warunek, więc jeśli na początku jest nieprawdziwy, to nie wejdzie w żadną iterację, co jest sprzeczne z logiką algorytmu. Dlatego tylko Kod 1 jest naprawdę zgodny z wymaganiami algorytmu i może być traktowany jako poprawna implementacja według tego schematu.

Pytanie 11

Która z wymienionych aplikacji stanowi przykład prostego rozwiązania mobilnego?

A. Aplikacja z rozbudowanym systemem zarządzania projektami
B. Aplikacja do analizy danych finansowych
C. Aplikacja typu zegar
D. Aplikacja do monitorowania użycia pamięci RAM
Aplikacja monitorująca zużycie pamięci RAM to narzędzie wymagające bardziej zaawansowanych algorytmów i dostępu do wewnętrznych zasobów systemowych, co wykracza poza definicję prostej aplikacji mobilnej. Aplikacja do analizy danych finansowych to skomplikowane oprogramowanie, które musi przetwarzać duże ilości informacji i często wymaga integracji z bazami danych, co czyni ją bardziej złożoną niż typowy zegar. Aplikacja z systemem zarządzania projektami jest rozbudowana i zawiera wiele funkcji takich jak kalendarze, harmonogramy czy integracja z chmurą, co również przekracza poziom skomplikowania typowej aplikacji zegara.

Pytanie 12

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

Ilustracja do pytania
A. Deklaracji 4
B. Deklaracji 3
C. Deklaracji 1
D. Deklaracji 2
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 13

Przykład wywołania funkcji zamien w języku C++ może wyglądać w następujący sposób

Ilustracja do pytania
A. zamien(&a, &b); //x,y - zmienne całkowite
B. zamien(*a, *b); //a,b - zmienne całkowite
C. zamien(12, 34)
D. zamien(m,n); //m,n - zmienne całkowite
Wywołanie zamien(12, 34) przekazuje wartości, ale nie umożliwia modyfikacji zmiennych poza funkcją. Użycie zamien(*a, *b) oznacza dereferencję, co prowadzi do błędu, jeśli wskaźniki nie są poprawnie zainicjalizowane. Zamien(m,n) nie używa wskaźników ani referencji, co powoduje brak zmiany oryginalnych wartości zmiennych.

Pytanie 14

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. wypisz
B. ~pracownik
C. pracownik
D. operator==
Metoda wypisz jest często używana do prezentacji danych obiektu użytkownikowi ale nie jest miejscem do umieszczania kodu diagnostycznego dotyczącego usuwania obiektu. Wypisz jest zazwyczaj metodą statyczną lub instancyjną odpowiedzialną za wyświetlanie stanu obiektu i nie zajmuje się zarządzaniem jego cyklem życia. Umieszczenie w niej elementu diagnostycznego dotyczącego destrukcji obiektu mogłoby wprowadzać w błąd użytkownika klasy i utrudniać utrzymanie spójności kodu. Konstruktor klasy pracownik jest odpowiedzialny za inicjalizację obiektu a nie za jego usuwanie. Dodanie elementu cout<<Obiekt został usunięty; w konstruktorze nie miałoby sensu ponieważ ten komunikat dotyczy momentu zniszczenia obiektu a nie jego tworzenia. Konstruktor powinien skoncentrować się na alokacji zasobów i przygotowaniu obiektu do użycia. Operator== jest używany do porównywania dwóch obiektów zazwyczaj w celu sprawdzenia ich równości. Jego użycie do umieszczania komunikatów diagnostycznych związanych z usunięciem obiektu byłoby nieodpowiednie i mylące gdyż jest to operacja logiczna i semantycznie niezwiązana z zarządzaniem cyklem życia obiektów. Rozumienie ról poszczególnych metod w klasach jest kluczowe dla pisania poprawnego i zgodnego z zasadami dobrych praktyk kodu co wpływa na jego czytelność i łatwość utrzymania. Stosowanie odpowiednich metod w odpowiednich kontekstach jest podstawą profesjonalnego programowania obiektowego w C++ i innych językach obiektowych co znacząco zwiększa efektywność i niezawodność oprogramowania.

Pytanie 15

Który z etapów umożliwia zwiększenie efektywności aplikacji przed jej wydaniem?

A. Tworzenie interfejsu graficznego
B. Optymalizacja kodu
C. Testowanie jednostkowe
D. Dodawanie komentarzy do kodu
Testowanie jednostkowe pozwala na wykrycie błędów w poszczególnych komponentach aplikacji, ale samo w sobie nie prowadzi do optymalizacji kodu. Tworzenie interfejsu graficznego (GUI) jest istotne dla atrakcyjności aplikacji, ale nie wpływa bezpośrednio na jej wydajność. Dodawanie komentarzy do kodu poprawia jego dokumentację i czytelność, ale nie ma wpływu na szybkość działania aplikacji.

Pytanie 16

Jakie mogą być konsekwencje długotrwałego narażenia na hałas w pracy?

A. Choroby skórne
B. Uszkodzenie słuchu i zmęczenie
C. Obniżenie ostrości wzroku
D. Wzrost efektywności pracy
Zmniejszenie ostrości widzenia nie jest bezpośrednim skutkiem hałasu – problemy ze wzrokiem mogą być wynikiem złego oświetlenia lub długotrwałej pracy przy komputerze. Choroby skóry są zazwyczaj związane z ekspozycją na chemikalia, promieniowanie UV lub nieodpowiednie warunki higieniczne, a nie hałas. Zwiększenie wydajności pracy w wyniku hałasu jest błędnym założeniem – hałas zazwyczaj obniża efektywność, prowadząc do zmęczenia i dekoncentracji, a nie poprawy produktywności.

Pytanie 17

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

A. boolean
B. char
C. float
D. string
Typ 'string' to struktura lub klasa, która przechowuje sekwencję znaków, a nie pojedynczy znak. 'Boolean' przechowuje wartości logiczne 'true' lub 'false', a nie znaki. 'Float' przechowuje liczby zmiennoprzecinkowe i jest używany w operacjach matematycznych, a nie w przetwarzaniu tekstu czy znaków. Typ 'char' różni się od 'string' tym, że przechowuje dokładnie jeden znak, podczas gdy 'string' może zawierać wiele znaków.

Pytanie 18

Jakie środowisko deweloperskie jest najczęściej używane do programowania w C#?

A. Visual Studio
B. Eclipse
C. PyCharm
D. NetBeans
PyCharm to środowisko dedykowane programowaniu w języku Python, a nie C#. Eclipse jest popularnym środowiskiem do tworzenia aplikacji w językach Java, C i C++, ale nie oferuje pełnego wsparcia dla platformy .NET. NetBeans to IDE stworzone głównie z myślą o Javie, choć wspiera inne języki, jego wsparcie dla C# jest ograniczone, co czyni Visual Studio zdecydowanie lepszym wyborem dla tej technologii.

Pytanie 19

Która metoda w obrębie klasy jest uruchamiana automatycznie podczas tworzenia kopii obiektu?

A. Destruktor
B. Metoda zaprzyjaźniona
C. Metoda statyczna
D. Konstruktor kopiujący
Konstruktor kopiujący to taka specyficzna metoda w klasie, która działa, kiedy robimy nowy obiekt jako kopię już istniejącego. Dzięki temu możemy skopiować wartości pól z jednego obiektu do drugiego. To naprawdę ważne, zwłaszcza gdy mówimy o zarządzaniu pamięcią. Na przykład w C++ może to wyglądać tak: `Samochod(const Samochod &inny) { marka = inny.marka; przebieg = inny.przebieg; }`. Konstruktor kopiujący ma na celu uniknięcie problemów związanych z tzw. płytkim kopiowaniem, co może prowadzić do różnych błędów, jak wielokrotne zwolnienie tej samej pamięci. Generalnie mówiąc, jest to kluczowy mechanizm, który pomaga utrzymać bezpieczeństwo i poprawność działania naszej aplikacji.

Pytanie 20

Wzorzec projektowy "Metoda szablonowa" (Template method) stosuje się do:

A. gromadzenia obiektów w jednorodnej kolekcji
B. centralizacji zarządzania wieloma instancjami obiektów
C. organizowania obiektów w hierarchiczne struktury drzewiaste
D. określenia szkieletu algorytmu i pozostawienia szczegółów implementacji dla podklas
Wzorzec Kompozyt (Composite) umożliwia tworzenie hierarchicznych struktur obiektów i pozwala traktować je jednolicie. Przechowywanie obiektów w jednorodnej kolekcji to domena wzorca Kolekcja (Collection) lub Iterator. Centralizacja zarządzania wieloma instancjami obiektów to charakterystyka wzorca Singleton, który zapewnia globalny punkt dostępu do zasobów systemowych, ale nie definiuje szkieletu algorytmu.

Pytanie 21

Jakie jest rozwiązanie dla dodawania binarnego liczb 1011 oraz 110?

A. 10101
B. 10001
C. 11101
D. 11001
W analizie błędnych odpowiedzi, pierwsza niepoprawna odpowiedź 11001 wynika z błędu w dodawaniu ostatniej kolumny. Osoba, która udzieliła tej odpowiedzi, mogła popełnić pomyłkę, nie uwzględniając przeniesienia z drugiej kolumny. W systemie binarnym nie można uzyskać wyniku 11001, ponieważ suma 0 + 1 w ostatnich kolumnach prowadzi do przeniesienia, a nie do dodania wartości. Druga propozycja, 10101, może być efektem pomylenia wartości i przeniesień w trakcie dodawania. Wartości w odpowiednich kolumnach są zinterpretowane niepoprawnie. Tutaj również brakuje uwzględnienia przeniesienia, co prowadzi do wyniku, który nie odzwierciedla rzeczywistego sumowania w systemie binarnym. Ostatnia niepoprawna odpowiedź, 11101, zawiera błąd związany z dodawaniem wartości bez przeniesienia. Sumowanie 1 + 1 w drugiej kolumnie prowadzi do 0 z przeniesieniem, co zostało pominięte. W każdej z tych odpowiedzi występuje zrozumienie błędów w arytmetyce binarnej, które są fundamentalne dla prawidłowego obliczania w systemach cyfrowych.

Pytanie 22

Jaki jest wymagany sposób do realizacji algorytmu sortowania bąbelkowego na n-elementowej tablicy?

A. dwie pętle funkcjonujące na co najmniej (n+1) elementach każda
B. dwie pętle działające na najwyżej n-elementach każda
C. jedna pętla operująca na 2n elementach oraz warunek
D. n-liczby warunków
Jedna pętla nie jest wystarczająca do zaimplementowania sortowania bąbelkowego, ponieważ proces porównywania i zamiany miejscami elementów wymaga wielokrotnego przechodzenia przez tablicę. Pętle działające na (n+1) elementach są błędnym założeniem – algorytm działa na n-elementowej tablicy, a każda iteracja zmniejsza liczbę elementów do porównania. Liczba warunków nie ma kluczowego znaczenia w sortowaniu bąbelkowym – najważniejsza jest struktura iteracyjna, która umożliwia porównywanie elementów w parach, aż do momentu pełnego posortowania tablicy.

Pytanie 23

Zestaw operatorów, który został przedstawiony, należy do kategorii operatorów

Ilustracja do pytania
A. porównawczymi
B. logicznymi
C. przypisania
D. arytmetycznych
Przedstawiony zbiór operatorów należy do grupy operatorów arytmetycznych, które wykonują podstawowe operacje matematyczne, takie jak dodawanie, odejmowanie, mnożenie i dzielenie. Są one podstawą obliczeń w większości języków programowania.

Pytanie 24

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

A. Zaniedbywanie aktualizacji systemu operacyjnego
B. Korzystanie z mocnych, unikalnych haseł
C. Dzielnie się hasłami z przyjaciółmi
D. Pobieranie plików z niepewnych źródeł
Udostępnianie haseł wśród znajomych osłabia bezpieczeństwo konta, ponieważ zwiększa ryzyko, że hasło dostanie się w niepowołane ręce. Każda osoba, która ma dostęp do hasła, może nieświadomie wprowadzić złośliwe oprogramowanie lub zostać ofiarą phishingu, co naraża dane na wyciek. Unikanie aktualizacji systemu operacyjnego jest kolejnym poważnym błędem w kontekście bezpieczeństwa. Aktualizacje często zawierają łaty dla znanych luk w zabezpieczeniach, które są wykorzystywane przez cyberprzestępców. Ignorowanie ich stwarza łatwe cele dla ataków. Pobieranie plików z niezaufanych źródeł również stwarza poważne zagrożenie, ponieważ może prowadzić do zainstalowania złośliwego oprogramowania, które może przejąć kontrolę nad systemem, wykradać dane lub wprowadzać inne zagrożenia. W każdym z tych przypadków, zamiast wzmacniać bezpieczeństwo, podejmowane działania mogą prowadzić do poważnych konsekwencji, w tym utraty danych, złośliwych ataków oraz usunięcia poufnych informacji.

Pytanie 25

Które z wymienionych stwierdzeń najtrafniej charakteryzuje WPF?

A. Biblioteka do obróbki danych w Pythonie
B. Framework przeznaczony do budowy aplikacji stacjonarnych w systemie Windows
C. Framework przeznaczony do budowy aplikacji internetowych
D. Framework umożliwiający zarządzanie urządzeniami IoT
No i tutaj jest mały błąd. Frameworki do aplikacji webowych, to na przykład Angular czy React, a WPF służy do aplikacji desktopowych. Jak mówimy o przetwarzaniu danych w Pythonie, to raczej wspominamy np. o NumPy czy Pandas, ale one nie mają nic wspólnego z interfejsami. Jeśli chodzi o IoT, to nie używamy WPF, bo on jest bardziej związany z Windows, a do sprzętu raczej sięga się po Arduino IDE czy PlatformIO.

Pytanie 26

Który z poniższych opisów najlepiej definiuje kompilator?

A. Narzędzie przekształcające kod źródłowy na plik wykonywalny
B. Program łączący dynamiczne biblioteki z kodem źródłowym
C. Narzędzie do analizy kodu w czasie rzeczywistym
D. System monitorujący zmiany w kodzie źródłowym
Analiza kodu w czasie rzeczywistym to zadanie debuggera, który umożliwia śledzenie i analizowanie działania programu na bieżąco, a nie kompilatora. Program łączący dynamiczne biblioteki to linker, który działa po skompilowaniu kodu źródłowego i łączy pliki obiektowe oraz biblioteki w jeden program wykonywalny. System śledzący zmiany w kodzie źródłowym to system kontroli wersji, jak Git, który monitoruje zmiany w plikach projektu, ale nie zajmuje się tłumaczeniem kodu na język maszynowy.

Pytanie 27

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. Nie potrzebuje obecności pliku wykonywalnego
D. Jest wczytywana do pamięci podczas działania aplikacji
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 28

W jakich sytuacjach zastosowanie rekurencji może być bardziej korzystne niż użycie iteracji?

A. Gdy kod źródłowy ma być zoptymalizowany dla starszych kompilatorów
B. Kiedy liczba iteracji przewyższa maksymalny zakres zmiennej licznikowej
C. Gdy algorytm wymaga naturalnego podziału na mniejsze podproblemy
D. Kiedy program jest uruchamiany w środowisku wielowątkowym
Przekroczenie zakresu zmiennej licznikowej nie jest powodem, dla którego rekurencja jest bardziej efektywna. Problemy z zakresami zmiennych licznikowych można rozwiązać poprzez odpowiedni dobór typów danych, a nie przez zastosowanie rekurencji. Programowanie wielowątkowe nie jest bezpośrednio związane z rekurencją – chociaż niektóre algorytmy rekurencyjne mogą być implementowane w środowisku wielowątkowym, nie jest to ich główne zastosowanie. Optymalizacja kodu dla starszych kompilatorów nie ma związku z rekurencją, ponieważ starsze kompilatory mogą mieć ograniczoną obsługę rekurencji lub generować mniej efektywny kod rekurencyjny.

Pytanie 29

Zmienna o typie logicznym może mieć następujące wartości:

A. 0 oraz każda liczba całkowita
B. 1, -1
C. true, false
D. trzy dowolne liczby naturalne
Wartości 1 i -1 mogą być interpretowane jako prawda/fałsz w niektórych językach, takich jak C, ale nie są standardowymi wartościami typu boolean. Wartości 0 lub dowolna liczba całkowita mogą być stosowane w kontekście warunków, ale nie są typowymi wartościami logicznymi. Trzy dowolne liczby naturalne nie mają żadnego związku z typem logicznym – typ boolean zawsze przyjmuje dokładnie dwie wartości, co odróżnia go od typów numerycznych.

Pytanie 30

Który z wymienionych elementów UI w aplikacjach mobilnych jest odpowiedzialny za przechodzenie pomiędzy ekranami?

A. Navigation Drawer
B. Pasek narzędziowy
C. Przycisk
D. ListView
Navigation Drawer to jeden z najczęściej stosowanych komponentów interfejsu użytkownika w aplikacjach mobilnych na platformie Android. Pozwala na stworzenie bocznego menu nawigacyjnego, które użytkownik może wysunąć z lewej (lub rzadziej z prawej) krawędzi ekranu. Drawer umożliwia szybki dostęp do różnych sekcji aplikacji, co poprawia nawigację i organizację interfejsu. Navigation Drawer jest szeroko wykorzystywany w aplikacjach mobilnych takich jak Gmail, YouTube czy Google Maps, ponieważ zapewnia przejrzysty i intuicyjny sposób poruszania się po aplikacji, zachowując minimalistyczny wygląd interfejsu. Dzięki niemu użytkownik ma dostęp do wielu opcji bez konieczności zaśmiecania głównego ekranu aplikacji przyciskami nawigacyjnymi. W Android Studio Navigation Drawer można zaimplementować poprzez gotowe szablony lub za pomocą komponentu DrawerLayout.

Pytanie 31

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

A. Git
B. WordPress
C. Photoshop
D. Selenium
Git to system kontroli wersji, który umożliwia śledzenie zmian w kodzie źródłowym i współpracę w zespołach deweloperskich, ale nie służy do automatycznego testowania aplikacji webowych. Photoshop to narzędzie graficzne do edycji zdjęć i tworzenia grafik, nie ma zastosowania w testowaniu oprogramowania. WordPress to system zarządzania treścią (CMS), który pozwala na tworzenie i zarządzanie stronami internetowymi, ale nie pełni funkcji narzędzia do testowania aplikacji webowych.

Pytanie 32

Jakie słowa kluczowe są stosowane w języku C++ do zarządzania wyjątkami?

A. except i finally
B. try i raise
C. throw i handle
D. try i catch
Słowa 'throw' i 'handle' nie są standardową konstrukcją obsługi wyjątków w C++. 'Throw' służy do zgłaszania wyjątków, ale 'handle' nie jest używane w tym kontekście – zamiast tego stosuje się 'catch'. 'Except' i 'finally' są składnią charakterystyczną dla Pythona, a nie dla C++. 'Raise' to również słowo kluczowe używane w Pythonie do zgłaszania wyjątków, ale nie występuje w C++ – tam używa się 'throw'.

Pytanie 33

Jakie jest znaczenie klasy abstrakcyjnej?

A. Klasa, która nie może posiadać żadnych metod
B. Klasa, która może zawierać zarówno metody zdefiniowane, jak i niezdefiniowane (czysto wirtualne)
C. Klasa, która zawsze dziedziczy z klasy bazowej
D. Klasa, która może być dziedziczona, ale nie można jej instancjonować
Klasa, która nie może mieć żadnych metod, jest niepraktyczna i nie spełnia żadnych funkcji w programowaniu obiektowym. Klasa dziedzicząca zawsze dziedziczy po klasie bazowej, a nie po klasie pochodnej – dziedziczenie odbywa się w jednym kierunku. Twierdzenie, że klasa abstrakcyjna zawsze dziedziczy z klasy pochodnej, jest błędne – klasy abstrakcyjne mogą być na szczycie hierarchii dziedziczenia i służą jako punkt wyjścia dla innych klas. Klasa, która nie może być instancjonowana, ale może być dziedziczona, to właśnie klasa abstrakcyjna, co czyni to stwierdzenie poprawnym.

Pytanie 34

Podana deklaracja zmiennych w języku JAVA zawiera

Ilustracja do pytania
A. jedną zmienną typu tekstowego, jedną rzeczywistą, jedną całkowitą, jedną znakową oraz jedną logiczną
B. dwie zmienne typu tekstowego, dwie całkowite oraz jedną logiczną
C. dwie zmienne o typie strukturalnym
D. jedną zmienną typu tekstowego, dwie całkowite, jedną znakową i jedną logiczną
Deklaracja dwóch zmiennych typu napisowego lub strukturalnego nie odpowiada analizowanemu kodowi, ponieważ liczba i typy zmiennych są inne. Pominięcie zmiennej logicznej lub znakowej prowadzi do błędnej interpretacji deklaracji zmiennych w kodzie.

Pytanie 35

Metoda tworzenia algorytmu polegająca na dzieleniu go na dwa lub więcej mniejszych podproblemów, aż do momentu, gdy ich rozwiązanie stanie się proste, jest techniką

A. dziel i zwyciężaj
B. komiwojażera
C. heurystyczną
D. najkrótszej ścieżki
Pierwsza odpowiedź, która nie jest poprawna, odnosi się do problemu najkrótszej ścieżki. To jest trochę inna bajka, bo mówimy tu o optymalizacji ścieżek w grafach. Algorytmy jak Dijkstra czy Bellman-Ford są super do wyznaczania najkrótszej drogi między węzłami, ale nie są oparte na zasadzie dziel i zwyciężaj. Praca z grafami wymaga zrozumienia całości struktury, a to różni się od lokalnego podejścia. Druga odpowiedź dotyczy problemu komiwojażera, który jest znany z tego, że to problem NP-trudny. Chodzi tu o znalezienie najkrótszej trasy, która odwiedza określone punkty, i chociaż można uciekać się do heurystyk, to nie jest to przykład tej strategii. Na końcu mamy odpowiedź związana z heurystyką, która używa różnych metod przybliżania, by szybko znaleźć jakieś sensowne rezultaty. Ale to też nie ma nic wspólnego z dzieleniem problemu na mniejsze kawałki. Generalnie, te podejścia różnią się od 'dziel i zwyciężaj', dlatego nie pasują do danego pytania.

Pytanie 36

Do implementacji w aplikacji jednokierunkowej funkcji skrótu, zwanej funkcją haszującą, można wykorzystać algorytm

A. DES
B. RSA
C. AES
D. MD5
MD5 to popularny algorytm haszujący, który generuje skróty (hash) dla danych wejściowych. Jest stosowany w kryptografii do tworzenia sum kontrolnych i weryfikacji integralności danych, choć obecnie jest uważany za podatny na kolizje.

Pytanie 37

W zaprezentowanym kodzie stworzono abstrakcyjną klasę Figura oraz klasę Prostokąt, która po niej dziedziczy, zawierającą określone pola i konstruktory. Wskaż najprostszą implementację sekcji /* metody klasy */ dla klasy Prostokąt

Ilustracja do pytania
A. Kod 3
B. Kod 4
C. Kod 2
D. Kod 1
Niepoprawne odpowiedzi wynikają z niepełnego zrozumienia koncepcji abstrakcji i dziedziczenia w programowaniu obiektowym Klasa abstrakcyjna w języku Java definiuje metody abstrakcyjne które muszą być zaimplementowane w każdej klasie dziedziczącej Jest to kluczowa zasada która pozwala na tworzenie elastycznych i rozszerzalnych struktur kodu Odpowiedzi które nie implementują wymaganych metod Pole i Obwod w klasie Prostokąt łamią tę zasadę Kod 2 pomija implementację metody Obwod co oznacza że klasa Prostokąt pozostaje niekompletna i nie może być instancjonowana Inne podejścia jak te w Kodzie 3 zmieniają nazwę metod na LiczPole i LiczObwod co nie spełnia kontraktu zdefiniowanego przez klasę Figura ponieważ nie zachowuje integralności interfejsu klasy bazowej Próbując używać abstrakcyjnych metod z implementacją jak w Kodzie 4 łamiemy fundamentalne zasady projektowania obiektowego Zrozumienie tych koncepcji jest kluczowe przy projektowaniu aplikacji które wymagają skalowalności i łatwości utrzymania Praktykując poprawne stosowanie abstrakcji możemy tworzyć kod który jest bardziej modularny elastyczny i odporny na zmiany co prowadzi do bardziej efektywnego procesu rozwoju oprogramowania

Pytanie 38

Który z podanych algorytmów operujących na jednowymiarowej tablicy posiada złożoność obliczeniową O(n<sup>2</sup>)?

A. Sortowanie szybkie
B. Wypisanie elementów
C. Sortowanie bąbelkowe
D. Wyszukiwanie binarne
Sortowanie szybkie, znane jako quicksort, to jeden z najbardziej efektywnych algorytmów sortujących, który w przeciętnych przypadkach ma złożoność O(n log n), a w najgorszym przypadku O(n^2) tylko w przypadku, gdy tablica jest już posortowana w sposób odwrotny. Wyszukiwanie binarne jest algorytmem, który wymaga posortowanej tablicy i działa w czasie O(log n), co czyni go znacznie bardziej wydajnym niż sortowanie bąbelkowe. Wypisanie elementów tablicy to operacja o złożoności O(n), gdzie n oznacza liczbę elementów w tablicy. W tej operacji algorytm przegląda każdy element tablicy tylko raz, co czyni ją bardzo efektywną w porównaniu do algorytmów sortujących. Wszelkie złożoności O(log n) oraz O(n) są bardziej optymalne w kontekście operacji na tablicach jednowymiarowych. W związku z tym, jedynie sortowanie bąbelkowe w tej grupie algorytmów charakteryzuje się złożonością O(n^2), co czyni je jedynym właściwym wyborem w kontekście zadanego pytania.

Pytanie 39

Która z poniższych właściwości odnosi się do sieci bezprzewodowej?

A. Nie potrzebuje zabezpieczeń, ponieważ jest domyślnie chroniona
B. Jest bardziej narażona na zakłócenia w przesyłaniu danych
C. Nie funkcjonuje w obszarach z dużą liczbą urządzeń
D. Wymaga zastosowania przewodów do łączenia urządzeń
Pierwsza odpowiedź sugeruje, że sieci bezprzewodowe wymagają użycia kabli do połączenia urządzeń, co jest nieprawdziwe. W rzeczywistości, sieci bezprzewodowe działają niezależnie od kabli, wykorzystując technologie takie jak Wi-Fi czy Bluetooth do komunikacji między urządzeniami bez fizycznego połączenia. Taka technologia pozwala na większą mobilność oraz elastyczność użytkowników, eliminując ograniczenia związane z kablami. Kolejnym nieprawidłowym stwierdzeniem jest to, że sieci bezprzewodowe nie wymagają zabezpieczeń, ponieważ są automatycznie chronione. W rzeczywistości, sieci bezprzewodowe są bardzo narażone na nieautoryzowany dostęp, co czyni implementację odpowiednich zabezpieczeń, takich jak WPA3, niezbędną do ochrony danych użytkowników. Ostatnia niepoprawna odpowiedź stwierdza, że sieci bezprzewodowe nie działają w miejscach z dużą liczbą urządzeń. W rzeczywistości, nowoczesne sieci bezprzewodowe są projektowane z myślą o dużym natężeniu ruchu i mogą obsługiwać wiele jednoczesnych połączeń dzięki technologiom takim jak MU-MIMO (Multi-User Multiple Input Multiple Output). To pozwala na równoczesną obsługę wielu użytkowników, co jest niezwykle ważne w obszarach o dużym zagęszczeniu, takich jak biura czy kawiarnie.

Pytanie 40

Jakie z następujących skutków może wystąpić w przypadku naruszenia prawa autorskiego?

A. Nałożenie grzywny lub kary więzienia
B. Obowiązek zamieszczenia publicznych przeprosin
C. Zakaz korzystania z oprogramowania open-source
D. Unieważnienie umowy licencyjnej użytkownika końcowego
Obowiązek opublikowania przeprosin w mediach jest rzadko stosowaną sankcją i zazwyczaj dotyczy naruszeń dóbr osobistych, a nie praw autorskich. Zakaz używania oprogramowania open-source nie wynika z naruszenia prawa autorskiego – licencje open-source pozwalają na szerokie korzystanie z oprogramowania, pod warunkiem przestrzegania ich zapisów. Unieważnienie licencji użytkownika końcowego (EULA) może mieć miejsce w przypadku naruszenia warunków licencji, ale nie jest to standardowa kara za naruszenie praw autorskich.