Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 22 listopada 2025 20:57
  • Data zakończenia: 22 listopada 2025 21:49

Egzamin zdany!

Wynik: 32/40 punktów (80,0%)

Wymagane minimum: 20 punktów (50%)

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

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

A. Hasło ustawione na urządzeniu
B. Nieaktualne oprogramowanie
C. Szyfrowanie danych na urządzeniu
D. Zainstalowanie aplikacji rozrywkowych
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 2

Jaką instrukcję należy wykorzystać do poprawnej deklaracji zmiennej typu string w C++?

A. string name = "Jan"
B. int name = "Jan"
C. float name = "Jan"
D. bool name = "Jan"
Ta deklaracja 'string name = "Jan"' to naprawdę dobry sposób na zdefiniowanie zmiennej łańcuchowej w C++. Wiesz, 'string' to typ danych, 'name' to nazwa tej zmiennej, a 'Jan' to wartość, która jest jej przypisana. Typ 'string' jest częścią biblioteki <string> i daje nam wiele możliwości, gdy pracujemy z tekstem. Możemy łączyć, porównywać i modyfikować różne łańcuchy znaków bez większego problemu. To jest mega ważne w aplikacjach, które mają do czynienia z danymi tekstowymi, interfejsami użytkownika czy analizą danych, które wprowadzamy.

Pytanie 3

W jaki sposób można załadować tylko komponent z biblioteki React?

A. import Component from 'react'
B. import { Component } from 'react'
C. import React.Component from 'react'
D. import [ Component ] from 'react'
Aby zaimportować komponent z biblioteki React, należy użyć składni import { Component } from 'react'. Pozwala to na importowanie konkretnego komponentu, co jest bardziej optymalne i zapewnia czytelność kodu.

Pytanie 4

Jaki rodzaj testów można scharakteryzować przedstawionym opisem?

Ilustracja do pytania
A. testy funkcjonalne
B. testy wydajnościowe
C. testy jednostkowe
D. testy zgodności
Testy funkcjonalne (functional testing) oceniają, czy aplikacja działa zgodnie z założeniami, testując jej poszczególne funkcjonalności. Są kluczowym etapem w procesie testowania oprogramowania, ponieważ potwierdzają poprawność implementacji.

Pytanie 5

Jakie wartości jest w stanie przechować zmienna o typie logicznym?

A. Wartość w reprezentacji binarnej
B. Jedną z dwóch opcji: true lub false
C. Dowolną liczbę rzeczywistą
D. Tylko ciąg znaków
Zmienna typu logicznego (boolean) może przechowywać jedną z dwóch wartości: 'true' lub 'false'. Są to podstawowe wartości wykorzystywane w operacjach warunkowych i pętlach, które decydują o przepływie sterowania w programach. Wartości logiczne są kluczowe w konstrukcjach takich jak 'if-else', pętlach 'while' oraz w porównaniach. W wielu językach programowania 'true' jest równoznaczne z 1, a 'false' z 0, co pozwala na łatwą integrację z typami całkowitymi. Typ boolean jest niezbędny w programowaniu, umożliwiając implementację decyzji, walidacji danych i automatyzacji procesów.

Pytanie 6

Która z funkcji powinna zostać zrealizowana w warstwie back-end aplikacji webowej?

A. zarządzanie bazą danych
B. zarządzanie zdarzeniami elementów
C. sprawdzanie formularzy w czasie rzeczywistym
D. wyświetlanie danych z formularza w przeglądarce
Obsługa bazy danych jest fundamentalną częścią warstwy back-end w aplikacjach internetowych. Backend odpowiada za przetwarzanie logiki biznesowej, przechowywanie i zarządzanie danymi, a także komunikację z bazą danych. Dane przesyłane z front-endu (interfejsu użytkownika) są walidowane i przetwarzane po stronie serwera, zanim trafią do bazy danych lub zostaną zwrócone użytkownikowi. W przypadku aplikacji dynamicznych, serwer pobiera informacje z bazy danych, przekształca je zgodnie z wymogami aplikacji i przesyła z powrotem na front-end. Właściwe zarządzanie danymi i bezpieczeństwo operacji na bazie danych to kluczowe zadania back-endu. Równie ważne jest zapobieganie wstrzykiwaniu SQL (SQL Injection) i zapewnienie integralności danych, co stanowi podstawę skalowalnych i bezpiecznych aplikacji.

Pytanie 7

Zaprezentowany diagram Gantta odnosi się do projektu IT. Przy założeniu, że każdy członek zespołu dysponuje wystarczającymi umiejętnościami do realizacji każdego z zadań oraz że do każdego zadania można przypisać jedynie jedną osobę, która poświęci na zadanie pełny dzień pracy, to minimalna liczba członków zespołu powinna wynosić:

Ilustracja do pytania
A. 1 osobę
B. 5 osób
C. 4 osoby
D. 2 osoby
Liczba osób zależy od liczby zadań wykonywanych jednocześnie, a nie od całkowitej liczby zadań w projekcie. Mniej osób oznaczałoby opóźnienia, a większa liczba pracowników byłaby nieefektywna i generowałaby niepotrzebne koszty.

Pytanie 8

Polecenia wydane w kontekście repozytorium Git, przy założeniu, że folder projektu jest aktualnie wybrany, mają na celu

Ilustracja do pytania
A. utworzenie kopii istniejącego repozytorium z jedynie tą rewizją, która zostanie zapisana pod nazwą first commit
B. rozpoczęcie sesji z już istniejącym repozytorium oraz pobranie kodu projektu do lokalnego folderu
C. rozpoczęcie pracy z nowym repozytorium, dodanie oraz zatwierdzenie kodu projektu jako first commit
D. zamknięcie projektu, co spowoduje zarchiwizowanie wszystkich rewizji do lokalnego archiwum pod nazwą first commit
Polecenia git init git add . oraz git commit -m 'first commit' są podstawowymi komendami do rozpoczęcia pracy z nowym repozytorium Gita. git init inicjalizuje puste repozytorium w aktualnym katalogu co tworzy podkatalog .git zawierający wszystkie metadane i historię w wersjonowania. Następnie git add . dodaje wszystkie nowe i zmodyfikowane pliki w bieżącym katalogu do indeksu co oznacza że są one gotowe do zatwierdzenia w repozytorium. Kolejne polecenie git commit -m 'first commit' tworzy pierwszy snapshot aktualnego stanu projektu z przypisaną wiadomością 'first commit' co jest dobrą praktyką sygnalizującą początek nowej historii projektu. Taki proces inicjacji jest standardem w zarządzaniu wersjami w branży IT umożliwiając śledzenie zmian w kodzie ułatwiając współpracę zespołową oraz zapewniając kontrolę nad rozwojem oprogramowania. Ważne jest by w pierwszym commicie umieścić podstawowe działające elementy projektu co stanowi solidną bazę do dalszego rozwoju.

Pytanie 9

W metodach klasy GoldCustomer dostępne są tylko pola

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

Pytanie 10

Jedną z zasad standardu WCAG 2.0 jest

A. ograniczanie treści na stronie przez rezygnację z używania alternatywnych tekstów dla obrazów i filmów
B. unikanie przedstawiania informacji w formie uproszczonej
C. używanie jednego, odpowiednio dużego rozmiaru czcionki
D. stosowanie różnych palet kolorystycznych, w tym o wysokim kontraście
Unikanie uproszczeń językowych nie jest celem WCAG – wręcz przeciwnie, zaleca się stosowanie prostego języka. Zmniejszanie zawartości strony poprzez eliminację alternatywnych tekstów dla obrazów i wideo jest sprzeczne z zasadami dostępności. Stosowanie jednego rozmiaru czcionki ogranicza elastyczność interfejsu i nie spełnia standardów dostępności.

Pytanie 11

W jaki sposób definiuje się konstruktor kopiujący w ramach klasy?

A. Generuje nowy obiekt i usuwa wcześniejszy
B. Inicjuje obiekt klasy na podstawie klasy dziedziczącej
C. Generuje nowy obiekt klasy bez przypisywania wartości
D. Tworzy nowy obiekt jako wierną kopię innego obiektu
Konstruktor kopiujący to specjalny typ konstruktora, który tworzy nowy obiekt będący dokładną kopią innego obiektu tej samej klasy. Jest to niezwykle przydatne, gdy chcemy zduplikować istniejący obiekt, zachowując jego stan i wartości wszystkich składowych. Konstruktor kopiujący przyjmuje jako argument referencję do obiektu tej samej klasy, co pozwala na kopiowanie zarówno podstawowych typów danych, jak i dynamicznie alokowanych zasobów. Jego zastosowanie jest kluczowe w sytuacjach, gdy musimy pracować z obiektami dynamicznymi lub kopiować obiekty zarządzające wskaźnikami, aby uniknąć problemów związanych z wielokrotnym zwalnianiem tej samej pamięci.

Pytanie 12

Które z wymienionych środowisk programistycznych jest rekomendowane do developing aplikacji w języku Python z użyciem frameworka Django?

A. PyCharm
B. Android Studio
C. XCode
D. Unity
PyCharm to jedno z najbardziej zaawansowanych środowisk programistycznych (IDE) dedykowanych do tworzenia aplikacji w języku Python. Jest to narzędzie preferowane przez programistów korzystających z frameworka Django, który jest popularnym rozwiązaniem do budowy aplikacji webowych. PyCharm oferuje rozbudowane wsparcie dla Django, umożliwiając szybkie tworzenie projektów, integrację z bazami danych oraz wygodne debugowanie aplikacji. IDE zapewnia również możliwość uruchamiania serwerów deweloperskich, podglądu zmian w czasie rzeczywistym oraz automatyczne uzupełnianie kodu, co znacząco zwiększa efektywność pracy nad aplikacjami webowymi. Dzięki PyCharm programiści mogą łatwo zarządzać migracjami bazy danych, tworzyć modele i szablony, co sprawia, że jest to narzędzie nieocenione w ekosystemie Django.

Pytanie 13

Jakie jest znaczenie klasy abstrakcyjnej?

A. Klasa, która może zawierać zarówno metody zdefiniowane, jak i niezdefiniowane (czysto wirtualne)
B. Klasa, która może być dziedziczona, ale nie można jej instancjonować
C. Klasa, która zawsze dziedziczy z klasy bazowej
D. Klasa, która nie może posiadać żadnych metod
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 14

Jaką funkcję pełnią okna dialogowe niemodalne?

A. wstrzymywania działania aplikacji w czasie wprowadzania oraz zatwierdzania danych
B. zarządzania ustawieniami aplikacji, jako okno, które pozostaje widoczne na ekranie przez cały czas trwania aplikacji
C. zarządzania stanem aplikacji za pomocą systemów menu
D. prezentowania komunikatów, które wymagają potwierdzenia, aby kontynuować działanie aplikacji
Okna dialogowe niemodalne umożliwiają interakcję z innymi elementami aplikacji nawet wtedy, gdy są otwarte. Są często wykorzystywane w ustawieniach aplikacji, pozwalając użytkownikowi na wprowadzanie zmian i jednoczesne korzystanie z innych funkcji programu.

Pytanie 15

Jakie jest przeznaczenie polecenia "git merge"?

A. Do pobierania aktualizacji zdalnego repozytorium
B. Do zakładania nowego repozytorium
C. Do łączenia zmian z różnych gałęzi
D. Do usuwania zmian w repozytorium
Polecenie 'git merge' służy do łączenia zmian z jednej gałęzi (branch) z inną. Najczęściej używane jest do scalenia gałęzi deweloperskich (feature branches) z gałęzią główną (main lub master). Git merge pozwala na integrację nowych funkcji z głównym kodem projektu, co jest kluczowe w pracy zespołowej. W przypadku konfliktów, Git wymaga ręcznego rozwiązania ich przed zakończeniem procesu scalania. Umożliwia to zachowanie porządku w kodzie i unikanie błędów, które mogłyby wyniknąć z niezgodnych zmian.

Pytanie 16

Które z poniższych NIE jest zasadą programowania SOLID?

A. Single Responsibility Principle (Zasada pojedynczej odpowiedzialności)
B. Code Reuse Principle (Zasada ponownego użycia kodu)
C. Open/Closed Principle (Zasada otwarte/zamknięte)
D. Dependency Inversion Principle (Zasada odwrócenia zależności)
Odpowiedź "Code Reuse Principle" jest prawidłowa, ponieważ nie stanowi ona jednej z pięciu zasad programowania SOLID. SOLID to akronim, który odnosi się do pięciu podstawowych zasad, które mają na celu ułatwienie tworzenia oprogramowania, które jest łatwe w utrzymaniu i rozwijaniu. W skład tych zasad wchodzą: Zasada pojedynczej odpowiedzialności (Single Responsibility Principle), Zasada otwarte/zamknięte (Open/Closed Principle), Zasada segregacji interfejsów (Interface Segregation Principle), Zasada odwrócenia zależności (Dependency Inversion Principle) oraz Zasada Liskov (Liskov Substitution Principle). Przykładowo, Zasada pojedynczej odpowiedzialności zakłada, że każda klasa powinna mieć jedną, jasno określoną odpowiedzialność, co pozwala na łatwiejsze testowanie i modyfikowanie kodu bez wpływu na inne jego części. Użycie zasad SOLID w praktyce prowadzi do lepszego rozdzielenia logiki aplikacji i ułatwia jej rozwój oraz utrzymanie, co jest kluczowe w długoterminowych projektach programistycznych.

Pytanie 17

Jaki jest podstawowy okres ochrony autorskich praw majątkowych w krajach Unii Europejskiej?

A. 70 lat od zgonu autora
B. Bezterminowo
C. 50 lat od chwili pierwszej publikacji utworu
D. 75 lat od daty powstania utworu
Podstawowy czas trwania autorskich praw majątkowych w Unii Europejskiej wynosi 70 lat od śmierci autora. Oznacza to, że przez ten okres twórca lub jego spadkobiercy mają wyłączne prawo do korzystania z utworu i czerpania z niego korzyści finansowych. Po upływie tego czasu dzieło przechodzi do domeny publicznej i może być swobodnie wykorzystywane przez każdego, bez konieczności uzyskania zgody. Długość ochrony praw autorskich została ujednolicona w ramach przepisów UE, aby zagwarantować spójność w całej wspólnocie i wspierać ochronę kultury oraz dziedzictwa narodowego.

Pytanie 18

W jaki sposób procesor nawiązuje komunikację z pamięcią podręczną (cache)?

A. Bezpośrednio, omijając mostki systemowe
B. Poprzez linie danych w magistrali systemowej
C. Używając wyłącznie pamięci RAM
D. Za pomocą systemu przerwań
Procesor komunikuje się z pamięcią podręczną (cache) za pomocą linii danych w magistrali systemowej, co jest kluczowym elementem architektury komputerowej. Magistrala systemowa to zestaw ścieżek, które umożliwiają przesyłanie danych pomiędzy różnymi komponentami systemu, w tym procesorem, pamięcią RAM oraz pamięcią podręczną. Pamięć podręczna działa jako bufor, który przechowuje najczęściej używane dane, co pozwala na znaczne zwiększenie szybkości operacji, ponieważ dostęp do pamięci cache jest znacznie szybszy niż dostęp do pamięci RAM. W standardach takich jak Intel's QuickPath Interconnect (QPI) czy AMD's HyperTransport, linie danych odgrywają kluczową rolę w efektywnej komunikacji, co przekłada się na ogólną wydajność systemu. Przykładowo, w nowoczesnych procesorach wielordzeniowych, każda rdzeń może mieć własną pamięć podręczną, a komunikacja za pomocą magistrali pozwala na synchronizację danych pomiędzy tymi rdzeniami oraz współdzielenie zasobów. Efektywne zarządzanie pamięcią podręczną i magistralą jest kluczowe dla osiągnięcia wysokiej wydajności w obliczeniach oraz przetwarzaniu danych.

Pytanie 19

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

A. W rejestrze systemu
B. Za pomocą plików SharedPreferences
C. Tylko w pamięci RAM
D. Wyłącznie w zewnętrznych bazach danych
SharedPreferences to jedno z najprostszych i najczęściej stosowanych narzędzi do przechowywania danych użytkownika w aplikacjach mobilnych na Androidzie. SharedPreferences umożliwia zapisywanie małych porcji danych w postaci par klucz-wartość. Jest to idealne rozwiązanie do przechowywania ustawień użytkownika, preferencji aplikacji oraz stanów interfejsu. Dane przechowywane w SharedPreferences są zapisywane w plikach XML i pozostają na urządzeniu nawet po zamknięciu aplikacji, co czyni je doskonałym narzędziem do przechowywania trwałych informacji. Deweloperzy cenią SharedPreferences za prostotę implementacji i wydajność, co sprawia, że jest to jedno z najbardziej uniwersalnych narzędzi do lokalnego przechowywania danych w aplikacjach mobilnych.

Pytanie 20

Celem zastosowania wzorca Obserwator w tworzeniu aplikacji WEB jest:

A. informowanie obiektów o modyfikacji stanu innych obiektów
B. dostosowanie interfejsu użytkownika do różnych kategorii użytkowników
C. zarządzanie funkcjami synchronicznymi w kodzie aplikacji
D. monitorowanie działań użytkownika oraz generowanie wyjątków
Obserwowanie interakcji użytkownika i obsługa wyjątków to funkcje obsługiwane przez mechanizmy event-driven i bloków try-catch. Funkcje synchroniczne są realizowane przez inne wzorce, a dopasowanie interfejsu do użytkowników jest często osiągane poprzez wzorce strategii lub fabryki, a nie Obserwator.

Pytanie 21

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

A. Obniżenie ostrości wzroku
B. Uszkodzenie słuchu i zmęczenie
C. Choroby skórne
D. Wzrost efektywności pracy
Długotrwały hałas w miejscu pracy może prowadzić do poważnych konsekwencji zdrowotnych, takich jak uszkodzenie słuchu oraz przewlekłe zmęczenie. Stała ekspozycja na hałas o wysokim natężeniu może powodować stopniową utratę słuchu, szumy uszne, a także zwiększać poziom stresu i obniżać koncentrację. Zmęczenie wynikające z hałasu wpływa negatywnie na produktywność i samopoczucie pracowników, prowadząc do spadku efektywności oraz wzrostu ryzyka popełniania błędów. W celu ochrony przed hałasem zaleca się stosowanie środków ochrony indywidualnej, takich jak nauszniki lub zatyczki do uszu, a także instalowanie ekranów dźwiękochłonnych i ograniczenie źródeł hałasu w środowisku pracy.

Pytanie 22

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

A. Java
B. C++
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 23

Jakie z wymienionych narzędzi służy do emulacji mobilnych urządzeń podczas developowania aplikacji?

A. Genymotion
B. TensorFlow
C. Numpy
D. Postman
TensorFlow to biblioteka do uczenia maszynowego i analizy danych, ale nie jest narzędziem do emulacji urządzeń mobilnych. Postman to narzędzie do testowania API i komunikacji z serwerami, co jest przydatne w kontekście backendu, ale nie służy do emulacji urządzeń mobilnych. Numpy to biblioteka do obliczeń numerycznych w Pythonie, która nie ma związku z testowaniem aplikacji mobilnych na różnych urządzeniach. Genymotion wyróżnia się jako dedykowane narzędzie do symulacji środowiska mobilnego, umożliwiające testowanie w czasie rzeczywistym na wielu wirtualnych urządzeniach.

Pytanie 24

W C++ mechanizm programowania obiektowego, który wykorzystuje funkcje wirtualne (ang. Virtual) i umożliwia programiście pominięcie kontroli klasy pochodnej podczas wywoływania metod, nazywa się

A. hermetyzacją
B. dziedziczeniem
C. polimorfizmem
D. przeciążeniem
Polimorfizm to mechanizm w programowaniu obiektowym, który pozwala na wywoływanie metod na obiektach różnych klas przez wspólny interfejs lub klasę bazową. Dzięki temu programista może pisać bardziej elastyczny i modułowy kod, w którym konkretna implementacja metody jest wybierana w czasie działania programu. Kluczową rolę w polimorfizmie odgrywają funkcje wirtualne (virtual), które umożliwiają nadpisanie metod w klasach dziedziczących. Polimorfizm upraszcza rozbudowę aplikacji i minimalizuje potrzebę wielokrotnego pisania tego samego kodu, co jest istotne w dużych projektach programistycznych. Przykładem jest klasa Figura, która może mieć metody obliczania pola powierzchni, a klasy dziedziczące, takie jak Kolo i Kwadrat, implementują te metody w sposób specyficzny dla swojej geometrii.

Pytanie 25

Który z wymienionych typów testów najlepiej ocenia odporność aplikacji na intensywne obciążenie?

A. Testy bezpieczeństwa
B. Testy funkcjonalne
C. Testy obciążeniowe
D. Testy zgodności
Testy obciążeniowe to rodzaj testów, które sprawdzają, jak aplikacja radzi sobie z dużym ruchem użytkowników lub przetwarzaniem dużych ilości danych. Celem testów obciążeniowych jest wykrycie potencjalnych wąskich gardeł, identyfikacja problemów z wydajnością oraz określenie maksymalnej przepustowości aplikacji. Testy te są kluczowe dla aplikacji o wysokim natężeniu ruchu, takich jak sklepy internetowe czy systemy bankowe, gdzie stabilność pod obciążeniem jest krytyczna dla sukcesu.

Pytanie 26

Jakie informacje przedstawia diagram Gantta?

A. Strukturę plików w projekcie
B. Relacje między różnymi projektami
C. Plan działań w projekcie
D. Model przepływu danych
Diagram Gantta to narzędzie używane do wizualizacji harmonogramu zadań w projekcie. Przedstawia on zadania w układzie osi czasu, co pozwala na łatwe śledzenie terminów, zależności i etapów realizacji projektu. Diagram Gantta jest niezwykle przydatny w dużych projektach, ponieważ ułatwia planowanie zasobów i umożliwia identyfikowanie potencjalnych opóźnień. Dzięki czytelnej formie, managerowie mogą szybko ocenić, które zadania są w trakcie realizacji, a które są opóźnione. Diagramy Gantta są szeroko stosowane w zarządzaniu projektami budowlanymi, IT oraz w planowaniu kampanii marketingowych.

Pytanie 27

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

A. 0 oraz każda liczba całkowita
B. 1, -1
C. trzy dowolne liczby naturalne
D. true, false
Typ logiczny (boolean) może przyjąć jedynie dwie wartości: true (prawda) i false (fałsz). Jest to fundamentalna zasada w programowaniu, ponieważ zmienne logiczne są podstawą operacji warunkowych, pętli oraz sterowania przepływem programu. W językach takich jak C++, Java, Python i wielu innych, wartości logiczne pozwalają na budowanie złożonych struktur decyzyjnych. Dzięki nim programista może precyzyjnie kontrolować, które fragmenty kodu zostaną wykonane, co jest kluczowe w implementacji algorytmów oraz walidacji danych.

Pytanie 28

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

A. MD5
B. DES
C. AES
D. RSA
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 29

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. Specyfikacja Procedury Testowej
C. Raport Podsumowujący Testy
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 30

Jaką rolę odgrywa destruktor w definicji klasy?

A. Generuje nowe instancje klasy
B. Ustawia wartości pól klasy
C. Usuwa instancje i zwalnia pamięć
D. Realizuje testy jednostkowe klasy
Destruktor to specjalna metoda klasy, która jest automatycznie wywoływana w momencie, gdy obiekt przestaje być używany. Jego zadaniem jest zwalnianie zasobów, takich jak pamięć dynamiczna, uchwyty do plików lub połączenia sieciowe. Destruktor ma tę samą nazwę co klasa, poprzedzoną symbolem `~` w C++ (`~Samochod()`). Destruktor zapobiega wyciekom pamięci i zapewnia, że wszystkie zasoby są poprawnie zwalniane po zakończeniu pracy obiektu. Jest to kluczowy element zarządzania cyklem życia obiektu w językach takich jak C++.

Pytanie 31

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

A. O(n<sup>2</sup>)
B. O(n)
C. O(log n)
D. O(1)
O(1) oznacza stałą złożoność czasową, co oznacza, że algorytm wykonuje tę samą liczbę operacji niezależnie od rozmiaru danych wejściowych – jest to typowe dla operacji na haszmapach lub tablicach asocjacyjnych. O(n²) oznacza kwadratową złożoność algorytmu, gdzie liczba operacji rośnie proporcjonalnie do kwadratu liczby elementów – jest to charakterystyczne dla algorytmów takich jak Bubble Sort czy Insertion Sort. O(log n) wskazuje na logarytmiczną złożoność i jest typowe dla algorytmów wyszukiwania binarnego (Binary Search) i niektórych algorytmów operujących na drzewach.

Pytanie 32

Jakie wyrażenie logiczne powinno być użyte, aby zweryfikować, czy zmienna x zawiera wartości ujemne lub znajduje się w zakresie (10, 100)?

A. (x > 10 || x < 100) && x < 0
B. x > 10 || x < 100 || x < 0
C. x > 10 || x < 100 || x < 0
D. (x > 10 && x < 100) || x < 0
Poprawnym wyrażeniem logicznym sprawdzającym, czy zmienna x przechowuje wartości ujemne lub z przedziału (10, 100) jest (x > 10 && x < 100) || x < 0. Logika ta gwarantuje, że wartość x spełnia jeden z dwóch warunków: mieści się w przedziale lub jest ujemna.

Pytanie 33

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

A. Unikanie używania dużych liter w komunikacji
B. Stosowanie nieformalnego języka w każdej rozmowie
C. Zaniechanie odpowiadania na wiadomości od innych użytkowników
D. Udostępnianie treści bez zgody właścicieli
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 34

Jaką wartość będzie miała zmienna result po wykonaniu poniższego kodu PHP?

$array = [5, 1, 8, 3, 7]; $result = 0; foreach ($array as $value) { if ($value > $result) { $result = $value; } }
A. 5
B. 24
C. 8
D. 7
Wartości 24, 5 oraz 7 nie są poprawne w kontekście działania podanego kodu PHP. Gdy spojrzymy na odpowiedź 24, zauważymy, że nie ma takiej wartości w tablicy $array, która wynosi 5, 1, 8, 3 ani 7. Zatem, próbując uzyskać taką wartość z operacji na tych liczbach, prowadzi do złych wniosków. Możliwe, że błąd wynikał z niewłaściwego zrozumienia, czym jest proces iteracji w tablicy oraz jak działa przypisanie wartości. W przypadku wartości 5, można pomyśleć, że jest to największa liczba w tablicy, ponieważ jest to pierwsza liczba, która jest porównywana z wartością początkową zmiennej $result. Jednak nie uwzględnia ona kolejnych iteracji, które dostarczają większe wartości. Wartość 7, chociaż jest większa od 5, również nie jest największa, ponieważ istnieje jeszcze większa liczba - 8. W przypadku programowania, kluczowe jest zrozumienie, że pętla foreach nie tylko przegląda elementy, ale także pozwala na dynamiczne aktualizowanie zmiennej w zależności od warunku. Niezrozumienie tego aspektu może prowadzić do błędnych odpowiedzi, jak w tym przypadku, gdzie nie tylko nie dostrzegamy maksymalnej wartości, ale także nie rozumiemy poprawnych operacji na zmiennych. W programowaniu ważne jest, aby nie tylko znać składnię, ale także rozumieć logikę stojącą za danym algorytmem.

Pytanie 35

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

Ilustracja do pytania
A. nadany tytuł strony: "Egzamin zawodowy"
B. wyświetlony na stronie tekst w akapicie: "Egzamin zawodowy"
C. nadany tytuł każdego elementu HTML: "Egzamin zawodowy"
D. wyświetlony na stronie tekst w nagłówku: "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 36

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

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

Pytanie 37

Jakiego kwalifikatora powinno się użyć dla metody, aby umożliwić do niej dostęp jedynie z wnętrza tej klasy oraz klas dziedziczących, a także, by metoda ta nie była dostępna w żadnej funkcji?

A. public
B. protected
C. private
D. reinterpret_cast
Metoda oznaczona jako 'protected' jest dostępna tylko z poziomu klasy oraz jej klas potomnych. Chroni to przed bezpośrednim dostępem spoza klasy, zapewniając większe bezpieczeństwo kodu i ograniczenie dostępu.

Pytanie 38

Jak nazywa się proces znajdowania i usuwania błędów w kodzie?

A. Debugowanie
B. Kompensowanie
C. Kompilowanie
D. Interpretowanie
Debugowanie to niezwykle istotny etap w procesie tworzenia oprogramowania, polegający na identyfikowaniu i eliminowaniu błędów w kodzie źródłowym. Jest to proces, który wymaga zrozumienia logiki programu oraz umiejętności analitycznych, aby skutecznie odnaleźć przyczynę problemu i ją usunąć. Debugowanie jest kluczowe dla zapewnienia, że aplikacja działa zgodnie z zamierzeniami i jest wolna od błędów, które mogłyby wpłynąć na jej funkcjonalność lub stabilność. W praktyce debugowanie może obejmować różne techniki, takie jak użycie narzędzi do śledzenia wykonania kodu, analizę logów czy testowanie jednostkowe. Programiści często korzystają z dedykowanych środowisk programistycznych (IDE), które oferują funkcje ułatwiające debugowanie, takie jak punkty przerwań czy inspekcja zmiennych. Dobrym przykładem jest Visual Studio, które umożliwia śledzenie wartości zmiennych w czasie rzeczywistym. Debugowanie jest również częścią dobrych praktyk programistycznych, które zakładają regularne testowanie i kontrolę jakości kodu. Dzięki temu możliwe jest nie tylko eliminowanie błędów, ale także poprawa wydajności i bezpieczeństwa aplikacji.

Pytanie 39

Który z poniższych problemów jest najczęściej rozwiązywany z zastosowaniem algorytmu rekurencyjnego?

A. Obliczanie sumy elementów w tablicy
B. Generowanie ciągu Fibonacciego
C. Wyszukiwanie binarne w uporządkowanej tablicy
D. Sortowanie za pomocą metody QuickSort
Generowanie ciągu Fibonacciego to klasyczny przykład problemu, który najczęściej rozwiązuje się za pomocą algorytmu rekurencyjnego. Algorytm rekurencyjny wywołuje sam siebie, dzieląc problem na mniejsze podproblemy, aż do osiągnięcia przypadku bazowego. W przypadku Fibonacciego każda liczba jest sumą dwóch poprzednich, a algorytm rekurencyjny odwzorowuje to wprost poprzez wywołania fib(n-1) + fib(n-2). Rekurencja jest intuicyjna i często stosowana w zadaniach matematycznych, takich jak obliczanie silni czy rozwiązywanie problemów związanych z przeszukiwaniem drzew. Choć rekurencja jest elegancka, dla dużych n może prowadzić do nadmiarowych obliczeń, dlatego często optymalizuje się ją za pomocą pamięci podręcznej (memoizacji) lub iteracyjnych wersji algorytmu.

Pytanie 40

Jakie oznaczenie posiada norma krajowa w Polsce?

A. PN
B. ISO
C. EN
D. IEC
Polska Norma, czyli PN, to taki nasz krajowy znak, który mówi, jakie powinny być standardy jakości i techniczne dla różnych produktów i usług w Polsce. Normy PN są dostosowane do tego, czego potrzebujemy na rynku, ale często są oparte na międzynarodowych normach, takich jak ISO czy europejskich EN. Choć wdrażanie tych norm jest dobrowolne, to w wielu branżach ich przestrzeganie jest wręcz konieczne, jeśli chcemy zdobyć odpowiednie certyfikaty jakości. Warto je znać, bo dzięki nim możemy czuć się bezpieczniej, a jakość produktów staje się lepsza. To też wspiera rozwój nowych technologii w Polsce.