Wyniki egzaminu

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

Egzamin zdany!

Wynik: 35/40 punktów (87,5%)

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

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); //a,b - zmienne całkowite
B. zamien(12, 34)
C. zamien(&a, &b); //x,y - zmienne całkowite
D. zamien(m,n); //m,n - zmienne całkowite
Wywołanie funkcji 'zamien' w formie zamien(&a, &b) jest poprawne, ponieważ przekazuje adresy zmiennych jako argumenty, co pozwala na modyfikację ich wartości w funkcji. Jest to standardowa technika używana w języku C++ do przekazywania parametrów przez wskaźniki lub referencje.

Pytanie 3

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

A. centralizacji zarządzania wieloma instancjami obiektów
B. określenia szkieletu algorytmu i pozostawienia szczegółów implementacji dla podklas
C. gromadzenia obiektów w jednorodnej kolekcji
D. organizowania obiektów w hierarchiczne struktury drzewiaste
Wzorzec Metoda Szablonowa (Template Method) umożliwia zdefiniowanie szkieletu algorytmu w klasie bazowej, natomiast szczegółowa implementacja poszczególnych kroków jest pozostawiona podklasom. Dzięki temu wzorzec promuje zasadę ponownego użycia kodu i zapewnia spójność w strukturze algorytmów. Template Method jest często stosowany w przypadku procesów, które mają stałą strukturę, ale mogą wymagać różnej implementacji w zależności od specyficznych potrzeb. Przykładem może być klasa obsługująca różne formaty dokumentów, gdzie metody parsowania lub walidacji są różne, ale ogólny proces ich przetwarzania pozostaje taki sam.

Pytanie 4

Jakie znaczenie ma termin "przesłanianie metody" w kontekście programowania obiektowego?

A. Zmiana metody prywatnej na metodę publiczną
B. Tworzenie nowej metody w klasie bazowej
C. Przenoszenie metod z jednej klasy do drugiej
D. Zastosowanie tej samej nazwy metody w klasie bazowej i pochodnej, ale z inną implementacją w klasie pochodnej
Przesłanianie metody to mechanizm, w którym metoda w klasie pochodnej ma taką samą nazwę, typ zwracany i listę parametrów jak metoda w klasie bazowej, ale zawiera inną implementację. To kluczowy element polimorfizmu, umożliwiający dostosowanie zachowania klasy pochodnej do jej specyficznych potrzeb, przy zachowaniu spójnego interfejsu. Przesłanianie metod pozwala na elastyczne projektowanie kodu i jest szeroko stosowane w dużych projektach, aby umożliwić rozszerzalność oraz ponowne wykorzystanie istniejącej logiki. W C++ przesłanianie osiąga się za pomocą słowa kluczowego 'virtual' w klasie bazowej, a następnie redefinicji metody w klasie pochodnej.

Pytanie 5

Jakie są różnice między testami funkcjonalnymi a niefunkcjonalnymi?

A. Testy funkcjonalne oceniają zgodność działania aplikacji z założeniami, a niefunkcjonalne analizują aspekty wydajności, bezpieczeństwa i użyteczności
B. Testy funkcjonalne koncentrują się na interfejsie, a niefunkcjonalne na backendzie aplikacji
C. Testy funkcjonalne oceniają wydajność aplikacji, podczas gdy niefunkcjonalne weryfikują poprawność kodu
D. Testy funkcjonalne są realizowane tylko przez końcowych użytkowników, natomiast niefunkcjonalne przez programistów
Testy funkcjonalne sprawdzają, czy aplikacja działa zgodnie z założeniami i spełnia określone wymagania użytkownika. Obejmują one testowanie interfejsu, przepływu pracy oraz funkcji kluczowych dla działania oprogramowania. Testy niefunkcjonalne koncentrują się na aspektach takich jak wydajność, skalowalność, bezpieczeństwo i użyteczność. Różnica polega na tym, że testy funkcjonalne oceniają 'co' robi aplikacja, podczas gdy testy niefunkcjonalne oceniają 'jak dobrze' aplikacja działa w różnych warunkach. Testy niefunkcjonalne obejmują testy obciążeniowe (load testing), testy penetracyjne oraz analizy UX. Oba typy testów są niezbędne dla zapewnienia wysokiej jakości oprogramowania i jego niezawodności w środowisku produkcyjnym.

Pytanie 6

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

A. char
B. string
C. float
D. boolean
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 7

Który z poniższych procesów jest wyłącznie związany z kompilowaniem kodu?

A. Generating an executable file
B. Real-time translation of instructions
C. Detection of logical errors during program execution
D. Executing code step by step
Tłumaczenie instrukcji w czasie rzeczywistym to coś, co robi interpreter, a nie kompilator. Jeśli chodzi o błędy logiczne, to są one wykrywane podczas debugowania albo testów – nie podczas samego wykonywania kodu. Debugger zajmuje się wykonywaniem kodu krok po kroku, a kompilacja to coś zupełnie innego, bo nie dzieje się na żywo. Kompilacja przetwarza kod przed jego uruchomieniem, co różni ją od interpretacji. Takie podejście ma swoje plusy i minusy, ale na pewno warto je znać.

Pytanie 8

Jak określa się proces transferu danych z lokalnego komputera na serwer?

A. Pobieranie danych
B. Streaming
C. Wysyłanie danych
D. Przesyłanie danych
Proces przesyłania danych z komputera lokalnego na serwer nazywany jest wysyłaniem danych. To kluczowy element komunikacji w sieciach komputerowych, który wskazuje na transfer informacji z jednego punktu do drugiego. Wysyłanie danych odbywa się za pomocą różnych protokołów, takich jak FTP (File Transfer Protocol), HTTP (Hypertext Transfer Protocol) czy SFTP (Secure File Transfer Protocol). Przykładem może być przesyłanie plików z komputera na zdalny serwer, co jest powszechnie wykorzystywane w przypadku tworzenia stron internetowych. W kontekście aplikacji, wysyłanie danych może dotyczyć również przesyłania formularzy do bazy danych. Ważne jest, aby dane były odpowiednio pakowane i kodowane w celu zapewnienia ich integralności oraz bezpieczeństwa. Stosowanie protokołów szyfrowania, takich jak SSL/TLS, dodatkowo zabezpiecza proces, co jest istotne w dobie rosnących zagrożeń cybernetycznych. Zbierając wszystkie te elementy, wysyłanie danych jest fundamentalnym procesem w architekturze nowoczesnych systemów informatycznych.

Pytanie 9

Które z wymienionych narzędzi najlepiej chroni dane na urządzeniach mobilnych?

A. Hasło ustawione na urządzeniu
B. Zainstalowanie aplikacji rozrywkowych
C. Szyfrowanie danych na urządzeniu
D. Nieaktualne oprogramowanie
Szyfrowanie danych na urządzeniu przenośnym to jedna z najskuteczniejszych metod zabezpieczania poufnych informacji. Szyfrowanie przekształca dane w formę, która jest nieczytelna dla osób nieposiadających odpowiedniego klucza deszyfrującego. Dzięki temu, nawet jeśli urządzenie zostanie zgubione lub skradzione, dane pozostają zabezpieczone przed nieautoryzowanym dostępem. Szyfrowanie to standardowa praktyka stosowana przez największe firmy technologiczne i jest zalecana we wszystkich urządzeniach przenośnych, takich jak laptopy i smartfony.

Pytanie 10

Jakie ma znaczenie operator "==" w języku C++?

A. Zwiększenie wartości zmiennej o 1
B. Przypisanie wartości do zmiennej
C. Porównanie dwóch wartości
D. Negacja logiczna
Operator `==` w języku C++ oraz w wielu innych językach programowania, takich jak Java, Python czy JavaScript, jest używany do porównywania dwóch wartości. Jeśli wartości są równe, zwracana jest wartość logiczna `true`, w przeciwnym razie `false`. Operator ten jest niezbędny w instrukcjach warunkowych i pętlach, umożliwiając programowi podejmowanie decyzji na podstawie porównań. Przykładem użycia jest `if (a == b)`, co oznacza: jeśli zmienna `a` jest równa zmiennej `b`, wykonaj określony blok kodu.

Pytanie 11

Który z poniższych kodów realizuje przedstawiony fragment algorytmu?

Ilustracja do pytania
A. Kod 3
B. Kod 4
C. Kod 1
D. Kod 2
Kod 3 jest poprawną implementacją przedstawionego algorytmu. Jego struktura i sposób działania odpowiadają założeniom algorytmu, co prowadzi do uzyskania prawidłowego wyniku.

Pytanie 12

Jakie oprogramowanie służy do monitorowania błędów oraz zarządzania projektami?

A. Jasmine
B. Git
C. Bugzilla
D. Jira
Jira to zaawansowane oprogramowanie do zarządzania projektami oraz śledzenia błędów, stworzone przez firmę Atlassian. Jest powszechnie stosowane w zespołach zajmujących się rozwijaniem oprogramowania, ale również znajduje zastosowanie w różnych dziedzinach, takich jak zarządzanie projektami, wsparcie techniczne oraz śledzenie zadań. Jira oferuje bogaty zestaw funkcji, które umożliwiają planowanie sprintów, monitorowanie postępów prac, zarządzanie backlogiem oraz raportowanie wydajności zespołu. Użytkownicy mogą tworzyć niestandardowe workflow, co pozwala dostosować procesy pracy do specyficznych potrzeb organizacji. Dzięki integracji z innymi narzędziami Atlassian, takimi jak Confluence czy Bitbucket, Jira jest elementem ekosystemu, który wspiera współpracę w zespołach. Przykładem zastosowania Jira może być zarządzanie cyklem życia produktu, gdzie zespół deweloperski wykorzystuje to narzędzie do śledzenia błędów, zarządzania wymaganiami oraz planowania wydań. Korzystanie z Jira wspiera podejście Agile, co jest zgodne z nowoczesnymi standardami zarządzania projektami.

Pytanie 13

Jakie jest podstawowe użycie metod wirtualnych?

A. Umożliwienie wielokrotnego dziedziczenia
B. Umożliwienie korzystania z metod bezpośrednio z klasy bazowej
C. Zapewnienie, że metoda działa wyłącznie na danych statycznych
D. Umożliwienie dynamicznego wiązania metod w czasie wykonania
Umożliwienie korzystania z metod bezpośrednio z klasy bazowej nie jest funkcją metod wirtualnych – to raczej standardowa cecha metod publicznych. Metody działające wyłącznie na danych statycznych nie mogą być wirtualne, ponieważ ich działanie nie jest zależne od instancji klasy. Umożliwienie wielokrotnego dziedziczenia jest funkcją konstrukcji dziedziczenia w językach takich jak C++, ale samo w sobie nie wymaga metod wirtualnych, chociaż mogą one być używane w kontekście wielokrotnego dziedziczenia.

Pytanie 14

Która z wymienionych reguł należy do netykiety?

A. Stosowanie nieformalnego języka w każdej rozmowie
B. Udostępnianie treści bez zgody właścicieli
C. Unikanie używania dużych liter w komunikacji
D. Zaniechanie odpowiadania na wiadomości od innych użytkowników
Unikanie pisania wielkimi literami w wiadomościach jest kluczowym elementem netykiety, ponieważ tekst pisany dużymi literami w internecie jest powszechnie interpretowany jako krzyk. To zasada, która ma na celu utrzymanie kultury komunikacji online oraz zapewnienie komfortu odbiorcy. Gdy użytkownik korzysta z wielkich liter, może to być odbierane jako agresywne lub dominujące, co może prowadzić do nieporozumień oraz negatywnych reakcji. Przykładem może być sytuacja, w której osoba, pisząc do grupy na forum internetowym, używa wyłącznie wielkich liter, co może zniechęcić innych do interakcji. Dobrą praktyką jest pisanie w sposób przystępny i zrozumiały, co sprzyja pozytywnej atmosferze w komunikacji. Standardy netykiety, takie jak te przedstawione w dokumentach związanych z etyką w internecie, podkreślają znaczenie szacunku i zrozumienia w interakcjach online, co obejmuje również sposób formułowania wiadomości. Warto także pamiętać o tym, że różne platformy społecznościowe mają swoje zasady, które podkreślają unikanie pisania krzykiem, co potwierdza ogólne podejście do netykiety.

Pytanie 15

Jakie będzie działanie przedstawionych dwóch równoważnych fragmentów kodu źródłowego?

Ilustracja do pytania
A. nadany tytuł każdego elementu HTML: "Egzamin zawodowy"
B. wyświetlony na stronie tekst w nagłówku: "Egzamin zawodowy"
C. nadany tytuł strony: "Egzamin zawodowy"
D. wyświetlony na stronie tekst w akapicie: "Egzamin zawodowy"
Twój kod rzeczywiście sprawia, że w nagłówku strony pojawia się tekst 'Egzamin zawodowy' (tak jak w <h1>). To ważne, bo nagłówki HTML są kluczowe dla struktury strony i pomagają w lepszym pozycjonowaniu treści w wyszukiwarkach. Z mojego doświadczenia, dobrze zrobiony nagłówek może znacznie poprawić czytelność strony.

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. Specyfikacja Procedury Testowej
B. Plan Testów
C. Raport Podsumowujący Testy
D. Dziennik Testów
Test Log to dokument, który rejestruje wszystkie przeprowadzone przypadki testowe, informacje o ich wykonaniu oraz wyniki. Umożliwia śledzenie przebiegu testów i analizę ich efektywności. Jest to kluczowy element dokumentacji testowej, który pozwala zidentyfikować powtarzające się błędy oraz ocenę jakości kodu na podstawie przeszłych wyników.

Pytanie 17

Która z wymienionych właściwości odnosi się do klasy pochodnej?

A. Nie może być zastosowana w strukturze dziedziczenia
B. Jest automatycznie usuwana po zakończeniu działania programu
C. Nie ma możliwości dodawania nowych metod
D. Dziedziczy atrybuty i metody z klasy bazowej
Cechą klasy pochodnej jest dziedziczenie pól i metod z klasy bazowej, co oznacza, że klasa pochodna automatycznie uzyskuje dostęp do wszystkich publicznych i chronionych składowych klasy nadrzędnej. Dzięki temu programista może rozwijać i modyfikować funkcjonalność istniejących klas, tworząc bardziej wyspecjalizowane obiekty. Dziedziczenie to kluczowy mechanizm umożliwiający wielokrotne użycie kodu, co prowadzi do zmniejszenia duplikacji i zwiększenia efektywności w zarządzaniu projektem. Klasa pochodna może również nadpisywać metody klasy bazowej, dostosowując ich działanie do swoich specyficznych potrzeb.

Pytanie 18

Jakie oprogramowanie służy jako przykład programu do komunikacji audio-wideo?

A. Google Drive
B. Slack
C. Microsoft Teams
D. Notion
Microsoft Teams to naprawdę fajne narzędzie do komunikacji. Łączy w sobie czat, wideo i audio, więc wszystko masz w jednym miejscu. Zostało stworzone przez Microsoft, żeby ułatwić współpracę w zespołach. To idealne, gdy trzeba prowadzić spotkania online z kilkoma osobami. Myślę, że to super rozwiązanie dla firm, które pracują zdalnie. Dzięki WebRTC jakość transmisji audio i wideo jest naprawdę wysoka. Można w nim organizować spotkania, webinary, a nawet stworzyć przestrzeń dla zespołów projektowych, gdzie można dzielić się plikami i prowadzić dyskusje. A jak jeszcze połączysz go z innymi aplikacjami Microsoft 365, jak OneNote czy SharePoint, to masz pełny zestaw do zarządzania projektami. Dobrze też, że Microsoft Teams dba o ochronę danych osobowych, więc jest bezpieczny dla różnych organizacji.

Pytanie 19

Jakie jest podstawowe działanie w ochronie miejsca zdarzenia?

A. Usunięcie niebezpiecznych przedmiotów z otoczenia
B. Zagwarantowanie odpowiedniego oświetlenia
C. Zastosowanie sterylnych materiałów opatrunkowych
D. Zagwarantowanie stabilności ciała rannego
Z mojego doświadczenia, usunięcie niebezpiecznych rzeczy z miejsca, gdzie doszło do wypadku, to naprawdę kluczowa sprawa. Dzięki temu zmniejszamy szanse na dodatkowe obrażenia i możemy lepiej pomóc poszkodowanemu, nie narażając siebie na ryzyko. Na przykład, warto odsunąć ostre narzędzia, wyłączyć działające maszyny czy podnieść ciężkie przedmioty, które mogłyby kogoś zranić. Takie działania są istotne w każdej sytuacji, czy to wypadek na drodze, czy w pracy.

Pytanie 20

Jaką funkcję pełni operator "|" w języku C++?

A. Operację przesunięcia bitów w prawo
B. Bitowe "xor"
C. Logiczne "lub"
D. Bitowe "lub"
Operator `|` w języku C++ jest operatorem bitowym `OR`, który porównuje bity dwóch liczb i zwraca `1` w pozycji bitu, jeśli przynajmniej jeden z odpowiadających sobie bitów jest `1`. Przykład: `5 | 3` (w notacji binarnej `0101 | 0011`) zwróci `0111`, co odpowiada liczbie `7`. Operatory bitowe są często używane w programowaniu systemowym, kryptografii oraz manipulacji danymi na poziomie bitowym.

Pytanie 21

Jakie są kluczowe różnice między typami stałoprzecinkowymi a zmiennoprzecinkowymi?

A. Typy stałoprzecinkowe wymagają większej ilości pamięci niż typy zmiennoprzecinkowe
B. Typy stałoprzecinkowe obsługują liczby ujemne, natomiast typy zmiennoprzecinkowe tylko dodatnie
C. Typy zmiennoprzecinkowe przechowują wyłącznie liczby ujemne
D. Typy stałoprzecinkowe przechowują liczby całkowite, a typy zmiennoprzecinkowe przechowują liczby z ułamkami dziesiętnymi
Główna różnica między typami stałoprzecinkowymi a zmiennoprzecinkowymi polega na tym, że stałoprzecinkowe przechowują liczby całkowite, podczas gdy zmiennoprzecinkowe przechowują liczby z częściami dziesiętnymi. Stałoprzecinkowe typy, takie jak 'int', są bardziej efektywne pod względem wydajności i zajmują mniej pamięci, co czyni je idealnym rozwiązaniem w przypadkach, gdzie precyzja dziesiętna nie jest wymagana. Z kolei typy zmiennoprzecinkowe, takie jak 'float' i 'double', umożliwiają dokładne reprezentowanie wartości niecałkowitych, co jest niezbędne w aplikacjach matematycznych i graficznych. Każdy z tych typów ma swoje zastosowanie w zależności od wymagań projektu.

Pytanie 22

Jaką rolę odgrywa program Jira?

A. Zarządzanie edycjami systemu operacyjnego
B. Planowanie, śledzenie oraz raportowanie zadań projektowych
C. Produkcja grafik 3D
D. Modyfikowanie arkuszy kalkulacyjnych
Jira to jedno z najpopularniejszych narzędzi do zarządzania projektami, wykorzystywane głównie w metodykach Agile i Scrum. Umożliwia planowanie, monitorowanie i raportowanie zadań projektowych na różnych etapach ich realizacji. Dzięki elastycznym tablicom kanban i sprintom, Jira pozwala zespołom programistycznym śledzić postępy, zarządzać backlogiem oraz efektywnie przydzielać zasoby. Funkcjonalności takie jak automatyzacja procesów, śledzenie błędów (bug tracking) i integracja z innymi narzędziami (np. GitHub, Bitbucket) sprawiają, że Jira jest wszechstronnym rozwiązaniem do zarządzania nawet najbardziej złożonymi projektami. Dzięki generowanym raportom i wykresom burndown, menedżerowie mogą dokładnie analizować tempo pracy i podejmować decyzje w oparciu o dane.

Pytanie 23

Który z poniższych składników NIE jest konieczny do stworzenia klasy w C++?

A. Deklaracja atrybutów klasy
B. Zastosowanie słowa kluczowego class
C. Definicja destruktora
D. Definicja funkcji członkowskich klasy
Do utworzenia klasy w C++ nie jest wymagana definicja destruktora. Destruktor to specjalna metoda klasy, która jest wywoływana automatycznie w momencie zniszczenia obiektu, ale jego obecność jest opcjonalna. Klasy, które nie operują bezpośrednio na zasobach zewnętrznych, takich jak dynamiczna pamięć lub pliki, często nie potrzebują destruktora, ponieważ domyślny destruktor generowany przez kompilator jest wystarczający. Aby utworzyć klasę, wystarczy deklaracja pól i metod oraz użycie słowa kluczowego 'class'. To sprawia, że C++ pozwala na szybkie definiowanie prostych klas, które można później rozwijać w miarę potrzeby.

Pytanie 24

Jaką strukturę danych stosuje się w algorytmie BFS (przeszukiwanie wszerz)?

A. Kolejka
B. Graf
C. Zbiór
D. Tablica
Stos jest używany w algorytmie DFS (przeszukiwanie w głąb), a nie w BFS, ponieważ DFS eksploruje możliwie najgłębiej dany graf, zanim wróci do poprzedniego poziomu. Lista jest używana jako struktura ogólnego przeznaczenia, ale nie jest podstawowym narzędziem w algorytmie BFS. Drzewa są strukturą danych, którą BFS może przeszukiwać, ale sama struktura drzewa nie jest narzędziem używanym w algorytmie BFS – to kolejka pełni tę funkcję, przechowując wierzchołki do odwiedzenia.

Pytanie 25

Który z poniższych elementów UI umożliwia graficzną nawigację pomiędzy różnymi sekcjami aplikacji?

A. Obszar tekstowy
B. Przycisk opcji
C. Menu
D. Rozwijana lista
Pasek menu to kluczowy element interfejsu użytkownika, który umożliwia wizualną nawigację pomiędzy różnymi sekcjami aplikacji. Paski menu są powszechnie stosowane w aplikacjach desktopowych i mobilnych, ponieważ pozwalają na szybki dostęp do różnych funkcji oraz ustawień. Dzięki ich hierarchicznej strukturze użytkownicy mogą łatwo odnaleźć potrzebne narzędzia i opcje, co zwiększa intuicyjność i wygodę korzystania z aplikacji.

Pytanie 26

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 większa niż złożoność sortowania bąbelkowego
C. jest zawsze mniejsza niż złożoność jakiegokolwiek innego algorytmu sortowania
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 27

W środowisku do tworzenia aplikacji, gdzie przedstawiono menu, aby usunąć wszystkie pliki tymczasowe oraz wyniki projektu, należy wybrać opcję

Ilustracja do pytania
A. Batch Build
B. Run Code Analysis on Solution
C. Clean Solution
D. Build Solution
Opcja Clean Solution usuwa wszystkie pliki pośrednie i wyjściowe projektu, pozostawiając czysty kod źródłowy. Jest to przydatne przed ponownym kompilowaniem, aby uniknąć konfliktów i błędów wynikających z nieaktualnych plików.

Pytanie 28

Wynikiem wykonania poniższego fragmentu kodu jest wyświetlenie liczb z zakresu od 2 do 20, które są

Ilustracja do pytania
A. podzielne przez wartość zmiennej check.
B. parzyste.
C. podzielne przez wartość zmiennej test.
D. pierwsze.
Kod wypisuje liczby pierwsze, czyli takie, które mają dokładnie dwa dzielniki: 1 i samą siebie. Liczby pierwsze są podstawą w wielu dziedzinach matematyki i informatyki, szczególnie w kryptografii i algorytmach. Wyszukiwanie liczb pierwszych w danym przedziale to popularne zadanie, które pozwala na lepsze zrozumienie iteracji, pętli i warunków logicznych w programowaniu. Algorytm ten jest również wykorzystywany w optymalizacji algorytmów szyfrowania i generowania kluczy.

Pytanie 29

Wskaż programowanie, w którym możliwe jest stworzenie aplikacji mobilnej dla systemu Android?

A. C++
B. Java
C. Obiective-C
D. Swift
Java jest jednym z najważniejszych języków programowania wykorzystywanych do tworzenia aplikacji mobilnych na platformę Android. Został stworzony przez firmę Sun Microsystems i obecnie jest rozwijany przez Oracle. Java jest językiem obiektowym, co oznacza, że umożliwia programistom tworzenie aplikacji w sposób modularny i zorganizowany. W kontekście Androida, Java jest podstawowym językiem, w którym bazowe API (Application Programming Interface) zostało opracowane. Wysoka wydajność, bogata biblioteka klas oraz wsparcie dla programowania wielowątkowego sprawiają, że Java jest idealnym wyborem dla deweloperów aplikacji mobilnych. Przykładowo, do stworzenia prostego interfejsu użytkownika w aplikacji Android, programista może wykorzystać takie elementy jak TextView czy Button, które są częścią frameworka Android SDK. Współczesne praktyki wskazują również na wykorzystanie Java w połączeniu z Kotlinem, co pozwala na osiągnięcie lepszych rezultatów i zwiększa efektywność w pracy nad projektami mobilnymi.

Pytanie 30

Jakie są różnice między kompilatorem a interpretem?

A. Kompilator przetwarza kod na język maszynowy w momencie jego wykonywania
B. Interpreter konwertuje kod źródłowy na język maszynowy przed jego kompilacją
C. Kompilator przekształca kod źródłowy na język maszynowy przed uruchomieniem aplikacji
D. Interpreter tworzy plik wykonywalny, który funkcjonuje niezależnie od otoczenia
Kompilator nie tłumaczy kodu w trakcie jego działania, bo to już zadanie interpretera. Interpreter przetwarza kod linijka po linijce podczas działania programu. Z tego powodu nie tworzy plików wykonywalnych, program po prostu działa w czasie rzeczywistym, a to sprawia, że działa wolniej. Mówiąc krótko, tłumaczenie kodu przed kompilacją to nie jest to, co się robi – kompilacja to proces, który tworzy plik wykonywalny z kodu źródłowego. Dlatego interpreter nie generuje żadnych niezależnych plików, tylko analizuje i wykonuje kod od razu.

Pytanie 31

Zademonstrowana pętla wykorzystuje obiekt random do

Ilustracja do pytania
A. jednorazowego wylosowania znaku z określonego zestawu znaków
B. stworzenia losowego napisu o długości 8 znaków składającego się z liter
C. uzupełnienia tablicy danymi w postaci liczb pseudolosowych
D. wielokrotnego generowania liczby, aby stworzyć ciąg z liczb pseudolosowych
Wielokrotne losowanie – Dotyczy sytuacji, gdy generowane jest wiele liczb, co nie jest zgodne z kodem. Wypełnienie tablicy – Kod dotyczy jednego znaku, a nie tablicy. Generowanie napisu – Pętla mogłaby generować ciąg znaków, ale pytanie dotyczy pojedynczego znaku.

Pytanie 32

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

A. Konstruktor
B. Funkcja zaprzyjaźniona
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 33

Termin ryzyko zawodowe odnosi się do

A. prawdopodobieństwa, że zdarzenia niepożądane związane z pracą spowodują straty, w szczególności negatywne skutki zdrowotne dla pracowników
B. ciężkości skutków niepożądanych zdarzeń związanych z pracą
C. zagrożenia wypadkowego, które może wystąpić w miejscu pracy
D. efektów zagrożeń wypadkowych, jakie występują w miejscu zatrudnienia
Ryzyko zawodowe to prawdopodobieństwo wystąpienia niepożądanych zdarzeń związanych z pracą, mogących prowadzić do strat zdrowotnych lub materialnych. Ocena ryzyka to kluczowy element zarządzania bezpieczeństwem pracy.

Pytanie 34

W pokazanych fragmentach kodu zdefiniowano funkcję pod nazwą fun1. W tej funkcji należy zaimplementować obsługę

Ilustracja do pytania
A. inicjacji elementów interfejsu użytkownika
B. naciśnięcia przycisku zatwierdzającego dialog
C. usunięcia kontrolek z pamięci RAM
D. aplikacji po wystąpieniu zdarzenia utraty focusa przez pole opcji
Obsługa zdarzeń związanych z przyciskami zatwierdzającymi dialogi jest kluczową częścią interakcji użytkownika z aplikacją. W wielu środowiskach programistycznych, takich jak JavaScript, C# czy Java, przyciski te wywołują funkcje obsługi zdarzeń (event handlers), które mogą walidować dane, przetwarzać informacje lub wykonywać inne działania po naciśnięciu przycisku. Implementacja funkcji obsługującej przycisk jest nieodzowna w aplikacjach graficznych, gdzie interakcja z użytkownikiem wymaga dynamicznego reagowania na jego działania. Dzięki temu aplikacje stają się bardziej interaktywne i responsywne, co zwiększa komfort użytkownika i poprawia ogólną użyteczność oprogramowania.

Pytanie 35

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

A. Unikanie stosowania silnych haseł do konta
B. Zgłaszanie treści, które naruszają regulamin
C. Regularne kontrolowanie ustawień prywatności
D. Udostępnianie jak największej ilości informacji osobowych
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 36

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. heurystyczną
B. dziel i zwyciężaj
C. komiwojażera
D. najkrótszej ścieżki
Strategia znana jako 'dziel i zwyciężaj' to sposób, w jaki można podejść do rozwiązywania problemów w algorytmice. Chodzi o to, żeby rozdzielić większy problem na mniejsze kawałki, które są już łatwiejsze do ogarnięcia. Robimy to, aż każdy z tych kawałków da się rozwiązać bez większego trudu. Jak już mamy rozwiązania tych mniejszych problemów, to je łączymy, żeby uzyskać odpowiedź na nasz pierwotny problem. Przykłady? No to mamy algorytm sortowania szybkiego (Quicksort) oraz Mergesort, które świetnie sobie radzą z porządkowaniem danych, dzieląc je na mniejsze części. Jak patrzy się na to z perspektywy analizy algorytmów, to ta strategia często prowadzi do lepszej złożoności obliczeniowej, co sprawia, że jest naprawdę przydatna w praktyce, zwłaszcza w informatyce. W książce Cormena i innych, 'Introduction to Algorithms', można znaleźć sporo informacji na temat tych metod i ich zastosowań, co czyni je naprawdę istotnymi w obszarze programowania i analizy danych.

Pytanie 37

Jakie jest kluczowe działanie przy opracowywaniu zbiorów danych do rozwiązania problemu programistycznego?

A. Wybór odpowiednich struktur danych
B. Zmiana języka programowania na bardziej wydajny
C. Weryfikacja zbiorów danych przed ich zastosowaniem
D. Realizacja algorytmu sortującego
Wybór właściwych struktur danych to mega ważny krok, kiedy projektujesz swoje zestawy danych. To, jaką strukturę wybierzesz, ma ogromny wpływ na to, jak szybko i efektywnie będą działać algorytmy. Każda struktura ma swoje plusy i minusy – na przykład listy pozwalają na elastyczne zarządzanie elementami, stosy i kolejki trzymają dane w określonej kolejności, a drzewa czy grafy są już do bardziej skomplikowanych problemów. Dobrze dobrane struktury mogą znacznie przyspieszyć działanie programu i zmniejszyć zużycie zasobów. Moim zdaniem, jeśli chcesz projektować efektywne algorytmy, musisz naprawdę dobrze rozumieć, jak różne struktury działają i umieć je dopasować do problemu, który chcesz rozwiązać.

Pytanie 38

Na podstawie treści zawartej w ramce, określ, który z rysunków ilustruje element odpowiadający klasie Badge zdefiniowanej w bibliotece Bootstrap?

Ilustracja do pytania
A. Rysunek 2
B. Rysunek 3
C. Rysunek 1
D. Rysunek 4
Wybór Rysunku 2 jest poprawny ponieważ przedstawia on elementy badge zdefiniowane w bibliotece Bootstrap Badge to niewielkie oznaczenia wizualne zazwyczaj zawierające liczby lub krótkie informacje które można umieścić obok linków lub innych elementów interfejsu użytkownika W Bootstrapie badge są implementowane za pomocą klasy .badge i można je stosować na przykład do wskazywania liczby nowych wiadomości lub powiadomień w aplikacjach webowych Dzięki temu użytkownik ma natychmiastowy dostęp do ważnych informacji bez konieczności wykonywania dodatkowych działań Przykładem zastosowania badge może być ikonka koperty z liczbą nieprzeczytanych wiadomości w skrzynce odbiorczej Co więcej badge można stylować za pomocą dodatkowych klas kolorystycznych takich jak .bg-primary .bg-success itd co pozwala na dostosowanie ich wyglądu do stylistyki całej aplikacji To praktyczne narzędzie w tworzeniu intuicyjnych interfejsów użytkownika które poprawia użyteczność i estetykę strony internetowej Zastosowanie badge zgodnie z dobrymi praktykami projektowania UX/UI wspiera lepszą organizację i dostępność informacji w aplikacjach internetowych

Pytanie 39

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

A. Zbiór klas, które nie mają wspólnych powiązań
B. Układ klas w strukturę, w której klasy pochodne dziedziczą cechy od klas bazowych
C. Układ klas, który ogranicza występowanie dziedziczenia wielokrotnego
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 40

Jakie jest zadanie interpretera?

A. optymalizacja większej części kodu, aby przyspieszyć jego wykonanie
B. analiza składni całego programu przed jego uruchomieniem
C. wykonywanie skryptu krok po kroku
D. tłumaczenie kodu na kod maszynowy
Interpreter to takie narzędzie, które wykonuje kod linijka po linijce. Działa to tak, że odczytuje program napisany w języku wysokiego poziomu, weryfikuje co tam w nim siedzi i od razu realizuje polecenia, co sprawia, że można fajnie testować kod. Na przykład w Pythonie można łatwo sprawdzić różne fragmenty kodu, co jest mega pomocne przy pisaniu i poprawianiu oprogramowania. Wiesz, od kompilatora różni się tym, że kompilator przetwarza cały kod od razu, tworząc kod maszynowy, który później działa na komputerze. Dzięki temu interpreter jest bardziej elastyczny, można szybko przetestować nowe pomysły, ale z drugiej strony, czasami nie działa tak efektywnie jak skompilowane programy, bo każda linia kodu jest analizowana na bieżąco. Więc w przypadku dużych i wymagających aplikacji lepiej sprawdzają się kompilatory, ale interpreter to skarb, zwłaszcza w nauce i prototypowaniu.