Wyniki egzaminu

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

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Który z podanych algorytmów można zrealizować zarówno w sposób iteracyjny, jak i rekurencyjny?

A. Algorytm sortowania bąbelkowego
B. Algorytm wyszukiwania binarnego
C. Algorytm mapowania kluczy w tablicach asocjacyjnych
D. Algorytm generowania liczb losowych
Sortowanie bąbelkowe to algorytm iteracyjny i nie ma naturalnej wersji rekurencyjnej, ponieważ jego działanie opiera się na powtarzających się pętlach. Algorytm mapowania kluczy w tablicach asocjacyjnych nie korzysta z rekurencji – jest to proces przypisywania wartości do odpowiednich kluczy, który realizowany jest w sposób iteracyjny. Algorytm generowania liczb losowych nie wymaga rekurencji ani iteracji – jest to operacja oparta na wywołaniu odpowiednich funkcji w zależności od użytej biblioteki i języka programowania.

Pytanie 2

Jakie jest podstawowe działanie w ochronie miejsca zdarzenia?

A. Zagwarantowanie odpowiedniego oświetlenia
B. Zagwarantowanie stabilności ciała rannego
C. Usunięcie niebezpiecznych przedmiotów z otoczenia
D. Zastosowanie sterylnych materiałów opatrunkowych
Moim zdaniem, zapewnienie stabilności ciała poszkodowanego jest ważne, ale nie można o tym zapominać, że najpierw powinno się zlikwidować zagrożenia. Jasne, że lepsze oświetlenie miejsca wypadku zwiększa widoczność, ale nie jest to najważniejsze, gdy są wokół niebezpieczne przedmioty. No i jasne, że użycie sterylnych materiałów do opatrunków ma znaczenie, ale w tej sytuacji nie pomaga w usuwaniu zagrożeń wokół.

Pytanie 3

Działania przedstawione w filmie korzystają z narzędzia

A. debuggera analizującego wykonujący kod
B. kompilatora dla interfejsu graficznego
C. generatora kodu java
D. generatora GUI przekształcającego kod do języka XAML

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Narzędzie przedstawione w filmie to kreator GUI tłumaczący kod do języka XAML, co pozwala na szybkie projektowanie interfejsów użytkownika w aplikacjach opartych na Windows Presentation Foundation (WPF). Jest to wygodne rozwiązanie umożliwiające dynamiczne tworzenie elementów wizualnych.

Pytanie 4

Jakie jest podstawowe zadanie konstruktora w klasie?

A. Usuwanie instancji obiektów
B. Inicjalizacja obiektu w momencie jego tworzenia
C. Wprowadzenie nowej metody do już istniejącej klasy
D. Nadanie wartości polom obiektu po jego zniszczeniu
Usuwanie obiektów to zadanie destruktora, a nie konstruktora. Destruktor zwalnia zasoby i wykonuje czyszczenie po zakończeniu działania obiektu. Przypisywanie wartości do pól po zniszczeniu obiektu jest niemożliwe, ponieważ obiekt przestaje istnieć. Dodawanie nowych metod do klasy odbywa się przez definiowanie funkcji członkowskich, ale nie jest to zadanie konstruktora. Konstruktor nie służy do tworzenia nowych funkcji – jego rolą jest wyłącznie inicjalizacja pól obiektu podczas jego tworzenia.

Pytanie 5

Na równoważnych pod względem funkcjonalnym listingach fragmentów aplikacji Angular oraz React.js utworzono listę punktowaną, która zawiera

Ilustracja do pytania
A. jedynie jeden element o treści Harry Potter
B. wyłącznie jeden element o treści Harry Potter, Hobbit, Władca pierścieni
C. tyle elementów, ile znajduje się w tablicy books, w każdym punkcie listy widnieje element o treści {book}
D. taką liczbę elementów, ile znajduje się w tablicy books, w każdym punkcie listy umieszczony jest jeden element tablicy
Lista punktowana nie zawiera wszystkich elementów w jednej pozycji listy, dlatego opcja przedstawiająca tylko jeden punkt z całą treścią (np. Harry Potter, Hobbit) jest błędna. Inna odpowiedź sugeruje, że treść wyświetlana jest jako {book}, co oznacza, że nie nastąpiła interpolacja zmiennych, co jest błędem składniowym lub logicznym.

Pytanie 6

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

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

Który z poniższych aspektów najlepiej definiuje działanie e-sklepu?

A. Dostęp do bazy danych klientów
B. Mechanizm generowania grafiki 3D
C. Zarządzanie serwerem e-mail
D. System obsługi koszyka oraz realizacji zamówień
System zarządzania koszykiem i realizacją zamówień to kluczowy element każdej aplikacji e-commerce (sklepu internetowego). Umożliwia użytkownikom dodawanie produktów do koszyka, zarządzanie ich ilością, a następnie finalizację transakcji poprzez proces realizacji zamówienia i płatności. Tego typu funkcjonalność wymaga integracji z bazą danych oraz systemami płatności online, co zapewnia bezpieczeństwo i wygodę użytkownika. Systemy koszyków zakupowych często oferują zaawansowane funkcje, takie jak kupony rabatowe, kody promocyjne czy integracje z magazynami i systemami logistycznymi. Realizacja zamówienia obejmuje procesy takie jak autoryzacja płatności, generowanie faktur oraz śledzenie zamówień, co jest podstawą funkcjonowania nowoczesnych platform e-commerce.

Pytanie 8

Jednym z kroków przy publikacji aplikacji mobilnej w sklepie Google Play są testy Beta, które charakteryzują się tym, że są one

A. podzielone na testy funkcjonalne, wydajnościowe oraz skalowalności
B. przeprowadzane na podstawie dokumentu zawierającego przypadki testowe
C. przeprowadzane przez grupę docelowych użytkowników aplikacji
D. realizowane przez zespół testerów zatrudnionych przez firmę Google
Testy Beta są kluczowym etapem w procesie publikacji aplikacji mobilnej w sklepie Google Play, ponieważ pozwalają na uzyskanie cennych informacji zwrotnych od rzeczywistych użytkowników aplikacji. W tej fazie aplikacja jest udostępniana ograniczonej grupie docelowych użytkowników, którzy są zainteresowani testowaniem oprogramowania przed jego oficjalnym wydaniem. Użytkownicy ci mają możliwość zgłaszania błędów, proponowania ulepszeń oraz oceny funkcjonalności, co jest niezwykle ważne, aby zapewnić, że produkt spełnia wymagania rynku. Przykładem zastosowania testów Beta może być aplikacja społecznościowa, która w pierwszej fazie testowania pozwala wybranej grupie użytkowników na dzielenie się swoimi doświadczeniami. Otrzymane dane są następnie analizowane w celu wprowadzenia niezbędnych poprawek przed pełnym wprowadzeniem aplikacji na rynek. Ponadto, przeprowadzanie testów Beta jest zgodne z najlepszymi praktykami w branży oprogramowania, zgodnie z metodykami Agile, które podkreślają znaczenie interakcji z użytkownikami oraz ich wkładu w rozwój produktów.

Pytanie 9

Przyjmując, że opisana hierarchia klas właściwie odzwierciedla figury geometryczne i każda figura ma zdefiniowaną metodę do obliczania pola, to w której klasie można znaleźć deklarację metody liczPole()?

Ilustracja do pytania
A. czworokąt
B. figura
C. trapez
D. trójkąt
Metoda liczPole() znajduje się w klasie 'figura', ponieważ jest to klasa bazowa reprezentująca wspólne cechy dla wszystkich figur geometrycznych. Dziedziczenie tej metody przez klasy pochodne pozwala na zachowanie spójności kodu.

Pytanie 10

Jakie pola powinny być umieszczone w klasie nadrzędnej w strukturze dziedziczenia?

A. Pola, które są wspólne dla wszystkich klas pochodnych
B. Pola, które są charakterystyczne jedynie dla pojedynczej klasy pochodnej
C. Pola, które są tylko prywatne
D. Pola, które są wykorzystywane tylko w funkcjach statycznych
Pola specyficzne dla jednej klasy pochodnej nie powinny znajdować się w klasie bazowej, ponieważ zwiększałoby to złożoność i naruszało zasadę separacji odpowiedzialności. Prywatne pola są ukryte i nie są dziedziczone przez klasy pochodne – są dostępne wyłącznie w ramach klasy, w której zostały zdefiniowane. Pola używane wyłącznie w metodach statycznych nie muszą znajdować się w klasie bazowej, ponieważ są to elementy niezależne od instancji klasy i są przypisane do samej klasy, a nie jej obiektów.

Pytanie 11

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 pracy z nowym repozytorium, dodanie oraz zatwierdzenie kodu projektu jako first commit
C. zamknięcie projektu, co spowoduje zarchiwizowanie wszystkich rewizji do lokalnego archiwum pod nazwą first commit
D. rozpoczęcie sesji z już istniejącym repozytorium oraz pobranie kodu projektu do lokalnego folderu
Rozpoczęcie pracy z repozytorium Git jest kluczowe dla efektywnego zarządzania wersjami kodu jednak błędne zrozumienie procesu może prowadzić do nieprawidłowych wniosków. Git nie oferuje funkcji zamknięcia projektu przez zarchiwizowanie wszystkich rewizji do lokalnego archiwum pod nazwą first commit. Takie podejście jest sprzeczne z modelem działania Gita który bazuje na ciągłym rozwoju i wersjonowaniu. Git nie tworzy kopii repozytorium jedynie z rewizją nazwaną first commit. Zamiast tego w każdym commicie zapisuje stan wszystkich dodanych plików co pozwala na pełną rekonstrukcję stanu projektu w każdej wersji. Utworzenie kopii repozytorium jest wykonywane przez klonowanie za pomocą git clone które jednak zachowuje całą historię wersji. Ponadto rozpoczęcie sesji z istniejącym repozytorium i pobranie kodu do lokalnego folderu odbywa się przez polecenia takie jak git clone lub git pull a nie poprzez inicjalizację nowego repozytorium. Użycie poleceń inicjalizujących git init i pierwszego commitu jest typowe dla rozpoczęcia od zera a ich zastosowanie w innych kontekstach może prowadzić do błędów.

Pytanie 12

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

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

Pytanie 13

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

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

Pytanie 14

Celem mechanizmu obietnic (ang. promises) w języku JavaScript jest

A. ulepszenie czytelności kodu synchronicznego
B. zarządzanie funkcjonalnością związaną z kodem asynchronicznym
C. zastąpienie mechanizmu dziedziczenia w programowaniu obiektowym
D. zarządzanie przechwytywaniem błędów aplikacji
Mechanizm obietnic (Promises) w JavaScript umożliwia obsługę kodu asynchronicznego. Pozwala na efektywne zarządzanie operacjami, które mogą się zakończyć sukcesem lub błędem w przyszłości, np. pobieranie danych z API. Promisy umożliwiają unikanie tzw. 'callback hell' i poprawiają czytelność kodu.

Pytanie 15

Który z wymienionych algorytmów pracujących na tablicy jednowymiarowej ma złożoność obliczeniową O(n2)?

A. Sortowanie bąbelkowe
B. Wyświetlenie elementów
C. Sortowanie szybkie
D. Wyszukiwanie metodą binarną
Sortowanie bąbelkowe to taki klasyczny algorytm, który ma złożoność O(n^2). Chociaż jest dość prosty w zrozumieniu, to nie za bardzo sprawdza się w większych zbiorach danych. Działa tak, że porównuje sąsiadujące ze sobą elementy i zamienia je miejscami, jeśli są w złej kolejności. Trochę to czasochłonne, ale warto znać ten algorytm, bo pokazuje podstawy sortowania.

Pytanie 16

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. Unieważnienie umowy licencyjnej użytkownika końcowego
C. Obowiązek zamieszczenia publicznych przeprosin
D. Zakaz korzystania z oprogramowania open-source
Naruszenie prawa autorskiego może skutkować nałożeniem grzywny lub karą więzienia. W zależności od skali naruszenia oraz obowiązujących przepisów, osoba odpowiedzialna za naruszenie może zostać pociągnięta do odpowiedzialności karnej lub cywilnej. Kary mogą obejmować nie tylko grzywny finansowe, ale także konieczność wypłaty odszkodowań na rzecz twórcy lub właściciela praw autorskich. W niektórych przypadkach naruszenie praw autorskich na dużą skalę może prowadzić do kary pozbawienia wolności, co podkreśla wagę przestrzegania przepisów o ochronie własności intelektualnej.

Pytanie 17

Kolor Pale Green w modelu RGB przedstawia się jako RGB(152, 251, 152). Jaki jest szesnastkowy kod tego koloru?

A. A0 FE A0
B. 98 FB 98
C. 98 FE 98
D. A0 FB A0
Błędne odpowiedzi wynikają z błędnej konwersji jednej z wartości RGB na system szesnastkowy. Drobna pomyłka w jednej wartości może skutkować zupełnie innym kolorem, dlatego dokładność w przeliczaniu jest bardzo ważna w projektowaniu graficznym.

Pytanie 18

Jakie elementy zostaną wyświetlone w przeglądarce po wykonaniu kodu źródłowego stworzonego za pomocą dwóch funkcjonalnie równoważnych fragmentów?

Ilustracja do pytania
A. trzy paragrafy, w każdym z nich tekst o treści: {tag}
B. jeden paragraf z pierwszym elementem tablicy tags
C. jeden paragraf zawierający wszystkie elementy tablicy tags w kolejności
D. Trzy paragrafy, każdy odpowiadający kolejnemu elementowi tablicy tags
Generowanie jednego paragrafu zawierającego wszystkie elementy tablicy nie pozwala na elastyczne formatowanie i stylizację każdego elementu osobno. Taka implementacja jest rzadziej stosowana, ponieważ ogranicza kontrolę nad poszczególnymi elementami interfejsu. Wyświetlanie tylko pierwszego elementu tablicy jest błędem logicznym i pomija pozostałe dane, co prowadzi do niepełnego wyświetlenia informacji. Wygenerowanie trzech paragrafów z identyczną treścią '{tag}' sugeruje błędne odwołanie do zmiennej, co oznacza, że iteracja została przeprowadzona nieprawidłowo lub że niepoprawnie użyto zmiennej w szablonie.

Pytanie 19

Jaki framework jest powszechnie wykorzystywany do rozwijania aplikacji desktopowych w języku C++?

A. Qt
B. Node.js
C. Flutter
D. WPF
Node.js to środowisko uruchomieniowe dla języka JavaScript, przeznaczone do tworzenia aplikacji serwerowych i skryptów backendowych, a nie aplikacji desktopowych. WPF (Windows Presentation Foundation) jest frameworkiem dla języka C#, a nie C++. Flutter to framework stworzony przez Google, który służy do budowy aplikacji mobilnych i webowych, wykorzystując język Dart, co sprawia, że nie jest narzędziem pierwszego wyboru dla programistów C++.

Pytanie 20

Jak oddziaływanie monotonnego środowiska pracy może wpłynąć na organizm człowieka?

A. Wzrost poziomu motywacji
B. Zwiększenie odporności na stres
C. Obniżenie koncentracji oraz zwiększone ryzyko popełniania błędów
D. Poprawa kondycji fizycznej
Kiedy w pracy ciągle powtarzamy te same czynności, to może nas to naprawdę zniechęcać. Zauważyłem, że takie monotonne środowisko potrafi sprawić, że gorzej się skupiamy i łatwiej popełniamy błędy. Jeśli pracownicy cały czas robią to samo bez żadnych zmian, to szybko tracą zapał i nie są zadowoleni z tego, co robią. Moim zdaniem, warto czasem zmieniać zadania, żeby wprowadzić trochę świeżości i wyzwań. Dobrze jest też organizować przerwy, bo to pomaga nabrać energii oraz zadbać o fajną atmosferę w pracy.

Pytanie 21

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

A. Jest automatycznie usuwana po zakończeniu działania programu
B. Nie może być zastosowana w strukturze dziedziczenia
C. Nie ma możliwości dodawania nowych metod
D. Dziedziczy atrybuty i metody z klasy bazowej
Stwierdzenie, że klasa pochodna nie może dodawać nowych metod, jest błędne – klasy pochodne mogą dodawać nowe metody, które rozszerzają funkcjonalność klasy bazowej. Automatyczne usuwanie klasy po zakończeniu programu dotyczy obiektów klasy, a nie samej klasy – za usuwanie obiektów odpowiada destruktor. Klasa, która nie może być używana w hierarchii dziedziczenia, to klasa oznaczona jako 'final' (w C++) lub 'sealed' (w C#), ale standardowe klasy pochodne nie mają tego ograniczenia, chyba że zostanie to jawnie zadeklarowane.

Pytanie 22

Który z wymienionych parametrów dysku twardego ma największy wpływ na jego wydajność?

A. Pojemność dysku
B. Ilość pamięci podręcznej (Cache)
C. Prędkość obrotowa talerzy (RPM)
D. Rodzaj złącza (SATA/PCIe)
Pojemność dysku jest istotnym parametrem, ale nie wpływa bezpośrednio na jego szybkość działania. Większa pojemność oznacza, że na dysku można przechowywać więcej danych, jednak nie przyspiesza to operacji odczytu i zapisu. Wydajność jest bardziej związana z tym, jak szybko dane mogą być przesyłane do i z dysku, co nie jest bezpośrednio związane z jego pojemnością. Rodzaj złącza, takiego jak SATA czy PCIe, również ma swoje znaczenie, ale w przypadku dysków HDD to prędkość obrotowa jest kluczowa dla szybkości pracy. Złącza PCIe, które są znacznie szybsze od SATA, są bardziej relevantne w kontekście dysków SSD, gdzie czas dostępu i szybkość transferu są znacznie wyższe niż w przypadku talerzowych dysków HDD. Na koniec, ilość pamięci podręcznej (Cache) dysku, choć ma znaczenie w usprawnieniu operacji odczytu i zapisu, to jej wpływ jest marginalny w porównaniu do prędkości obrotowej. Cache działa jako bufor, ale nie zastąpi wyższej prędkości obrotowej talerzy, która decyduje o tym, jak быстро można uzyskać dostęp do danych przechowywanych na dysku.

Pytanie 23

Jaki kod może być związany z treścią wygenerowaną w trakcie działania programu Java?

Ilustracja do pytania
A. Kodu 2
B. Kodu 4
C. Kodu 1
D. Kodu 3
Kod 4 jest prawidłowym rozwiązaniem generującym przedstawioną treść. Prawidłowo wykorzystuje składnię i logikę języka Java, co skutkuje poprawnym działaniem programu i zgodnym wynikiem w konsoli.

Pytanie 24

W zamieszczonej ramce znajdują się notatki testera dotyczące przeprowadzanych testów aplikacji. Jakiego typu testy planuje przeprowadzić tester?

Ilustracja do pytania
A. Bezpieczeństwa
B. Interfejsu
C. Wydajnościowe
D. Jednostkowe
Testy wydajnościowe są kluczowe dla zapewnienia, że system działa sprawnie pod różnym obciążeniem. Są one wykonywane, aby zrozumieć, jak aplikacja zachowuje się w warunkach rzeczywistych, kiedy wiele użytkowników korzysta z niej jednocześnie. W pytaniu wymienione zostały zadania takie jak mierzenie czasu logowania się użytkowników oraz sprawdzanie, czy czas ten wzrasta wraz ze wzrostem liczby użytkowników. To typowe aspekty testów wydajnościowych. Takie testy pomagają określić limity skalowalności i zapewniają, że aplikacja może obsługiwać oczekiwaną liczbę użytkowników bez spadku wydajności. Standardy branżowe, takie jak ISO/IEC 25010, zwracają uwagę na konieczność testowania wydajności, by zidentyfikować potencjalne wąskie gardła i zapewnić satysfakcjonujące doświadczenia użytkownikom. Dobrymi praktykami są używanie narzędzi takich jak JMeter czy LoadRunner, które umożliwiają symulację obciążenia i analizę wyników w celu optymalizacji kodu i infrastruktury. Tego typu testy są nieodzowne przed wdrożeniem aplikacji produkcyjnej, aby zapewnić jej niezawodne działanie.

Pytanie 25

Która z metod zarządzania projektami jest najbardziej odpowiednia, gdy w początkowej fazie projektu zakres nie jest w pełni określony, wymagania mogą zmieniać się podczas realizacji, a także mogą wystąpić nowe potrzeby?

A. Agile
B. PRINCE2
C. Model V
D. Model kaskadowy
Metodyka Agile jest najbardziej optymalna w przypadku niejasnych wymagań na początku projektu. Agile pozwala na iteracyjne wprowadzanie zmian, dostosowując się do nowych wymagań w trakcie trwania projektu. Jest to elastyczne podejście, które sprzyja szybkiemu reagowaniu na potrzeby klienta.

Pytanie 26

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

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

Pytanie 27

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. 4 osoby
B. 1 osobę
C. 2 osoby
D. 5 osób
Diagram Gantta przedstawia harmonogram projektu, gdzie poszczególne zadania są przypisane do konkretnych dni. W sytuacji, gdy każdy członek zespołu jest w stanie wykonać dowolne zadanie, minimalna liczba osób potrzebna do realizacji projektu to liczba równoczesnych zadań w najbardziej wymagającym momencie. Kluczowe jest tu równomierne rozłożenie pracy i unikanie przestojów, co zapewnia efektywne wykorzystanie zasobów.

Pytanie 28

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

A. Narzędzie przekształcające kod źródłowy na plik wykonywalny
B. System monitorujący zmiany w kodzie źródłowym
C. Narzędzie do analizy kodu w czasie rzeczywistym
D. Program łączący dynamiczne biblioteki z kodem źródłowym
Kompilator to narzędzie, które przekształca kod źródłowy napisany w języku programowania na plik wykonywalny (binarny), który może być uruchomiony bez potrzeby ponownej kompilacji. Proces ten obejmuje kilka etapów, takich jak analiza leksykalna, analiza składniowa, optymalizacja kodu oraz generowanie kodu maszynowego. Kompilator jest nieodzownym elementem w językach takich jak C, C++ czy Java. Generowany plik wykonywalny może działać szybciej niż kod interpretowany, ponieważ nie wymaga tłumaczenia w czasie rzeczywistym.

Pytanie 29

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

A. Zespół metod i pól posiadających ten sam modyfikator dostępu
B. Zbiór klas, które nie mają wspólnych powiązań
C. Układ klas w strukturę, w której klasy pochodne dziedziczą cechy od klas bazowych
D. Układ klas, który ogranicza występowanie dziedziczenia wielokrotnego
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 30

Który system operacyjny jest podstawowym środowiskiem do tworzenia aplikacji mobilnych w języku Swift?

A. LG UX
B. Android
C. iOS
D. Windows UWP
iOS to natywny system operacyjny dla aplikacji mobilnych pisanych w języku Swift. Swift to nowoczesny język programowania, stworzony przez Apple, ułatwiający rozwój aplikacji na urządzenia iPhone i iPad.

Pytanie 31

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

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

Jakie środowisko deweloperskie jest powszechnie wykorzystywane do produkcji aplikacji webowych w języku Java?

A. PyCharm
B. Android Studio
C. XCode
D. Eclipse
XCode to środowisko programistyczne przeznaczone głównie do tworzenia aplikacji na systemy Apple, takie jak macOS, iOS, iPadOS, a nie do aplikacji webowych w języku Java. Android Studio jest dedykowane tworzeniu aplikacji mobilnych na system Android i nie jest używane w środowisku webowym dla Javy. PyCharm to narzędzie skoncentrowane na języku Python i nie posiada natywnego wsparcia dla programowania w Javie, co czyni go nieodpowiednim wyborem dla aplikacji webowych opartych na tym języku.

Pytanie 33

Modyfikator dostępu znajdujący się przed definicją metody Dodaj() w klasie Kalkulator sprawia, że:

Ilustracja do pytania
A. jest ona dostępna zarówno w samej klasie, jak i w klasach dziedziczących po klasie Kalkulator
B. jest ona możliwa do wykorzystania w programie głównym i można ją wywołać na instancji klasy Kalkulator
C. nie jest ona osiągalna w klasach, które dziedziczą po klasie Kalkulator
D. nie jest ona dostępna z poziomu klas, które są zaprzyjaźnione z klasą Kalkulator
Metody, które są prywatne albo chronione, nie dadzą się wywołać w klasach dziedziczących, a publiczne metody są dostępne wszędzie. No i ten modyfikator, który działa tylko w głównym programie, ogranicza, jak pracujesz z kodem. Dziedziczenie natomiast daje ci więcej możliwości, żeby zrobić kod bardziej modularnym.

Pytanie 34

Jakie z poniższych narzędzi wspomaga projektowanie interfejsu użytkownika w aplikacjach mobilnych?

A. PyCharm Debugger
B. Kompilator Javy
C. Narzędzie do zarządzania bazami danych
D. Android Studio Layout Editor
Android Studio Layout Editor to narzędzie umożliwiające projektowanie interfejsu użytkownika aplikacji mobilnych w sposób wizualny, za pomocą metody 'przeciągnij i upuść'. Layout Editor pozwala na szybkie tworzenie responsywnych interfejsów, które automatycznie dostosowują się do różnych rozmiarów ekranów i rozdzielczości. Dzięki niemu programiści mogą łatwo dodawać elementy UI, takie jak przyciski, pola tekstowe, listy czy obrazy, oraz dostosowywać ich właściwości bez konieczności pisania dużych fragmentów kodu XML. Narzędzie to jest kluczowe dla szybkiego prototypowania aplikacji oraz iteracyjnego podejścia do budowy interfejsu użytkownika w środowisku Android Studio.

Pytanie 35

Jak przedstawia się liczba dziesiętna 255 w systemie szesnastkowym?

A. 100
B. FE
C. EF
D. FF
Liczba dziesiętna 255 jest reprezentowana w systemie szesnastkowym jako FF. Aby zrozumieć, dlaczego tak jest, należy przyjrzeć się procesowi konwersji z systemu dziesiętnego na szesnastkowy. System dziesiętny oparty jest na podstawie 10, co oznacza, że używa dziesięciu cyfr od 0 do 9. W systemie szesnastkowym, który ma podstawę 16, używane są cyfry od 0 do 9 oraz litery od A do F, gdzie A odpowiada 10, B - 11, C - 12, D - 13, E - 14, a F - 15. Aby przeliczyć 255 na system szesnastkowy, dzielimy tę liczbę przez 16. Pierwsza operacja daje nam 15 jako wynik całkowity oraz 15 jako resztę, co w systemie szesnastkowym jest reprezentowane literą F. Dalsze dzielenie 15 przez 16 daje wynik 0 oraz resztę 15, co również jest reprezentowane jako F. Zatem, zapisując reszty w odwrotnej kolejności, otrzymujemy FF. Taki zapis jest używany w różnych standardach, takich jak HTML i CSS, gdzie kolory są przedstawiane w formacie szesnastkowym. Przykładem może być kolor czerwony, którego zapis to #FF0000, co oznacza maksymalną wartość czerwonego składnika i zera dla niebieskiego oraz zielonego. Warto znać te konwersje, zwłaszcza w programowaniu i projektowaniu stron internetowych, gdzie często pracuje się z wartościami szesnastkowymi.

Pytanie 36

Algorytmy, które są wykorzystywane do rozwiązywania problemów przybliżonych lub takich, które nie mogą być opisane za pomocą algorytmu dokładnego, na przykład w prognozowaniu pogody czy identyfikacji nowych wirusów komputerowych, to algorytmy.

A. rekurencyjne
B. iteracyjne
C. liniowe
D. heurystyczne
Algorytmy heurystyczne są metodami rozwiązywania problemów, które są stosowane w sytuacjach, gdy nie ma jednoznacznego algorytmu dokładnego lub gdy problem jest zbyt skomplikowany, aby można go było rozwiązać w rozsądnym czasie. Przykłady zastosowań algorytmów heurystycznych obejmują przewidywanie pogody, gdzie różne modele atmosferyczne mogą być łączone w celu uzyskania lepszej prognozy, oraz rozpoznawanie nowych wirusów komputerowych, gdzie algorytmy heurystyczne pozwalają na identyfikację wzorców i anomalii w zachowaniu oprogramowania. Algorytmy te różnią się od tradycyjnych algorytmów liniowych, które działają na podstawie z góry określonych kroków oraz algorytmów rekurencyjnych, które polegają na rozwiązywaniu problemu poprzez dzielenie go na mniejsze podproblemy. Heurystyki są bardziej elastyczne, ponieważ pozwalają na zastosowanie intuicji i doświadczenia w procesie rozwiązywania. W praktyce algorytmy heurystyczne często łączą różne podejścia, aby uzyskać wyniki, które są wystarczająco dobre w krótkim czasie, co czyni je idealnymi do zastosowania w dynamicznie zmieniających się dziedzinach, takich jak analiza danych i sztuczna inteligencja.

Pytanie 37

Który z wymienionych procesów NIE jest częścią etapu kompilacji?

A. Analiza działania programu w czasie rzeczywistym
B. Optymalizacja kodu
C. Weryfikacja błędów składniowych
D. Tłumaczenie kodu źródłowego na język maszynowy
Optymalizacja kodu to integralna część kompilacji, mająca na celu zwiększenie wydajności programu poprzez usunięcie zbędnych instrukcji i usprawnienie algorytmów. Tłumaczenie kodu źródłowego na język maszynowy jest głównym zadaniem kompilatora, który generuje plik wykonywalny. Weryfikacja błędów składniowych jest jednym z pierwszych etapów kompilacji, mającym na celu upewnienie się, że kod jest poprawny pod względem składni, zanim zostanie przekształcony na kod maszynowy.

Pytanie 38

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

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

Pytanie 39

Jakie znaczenie ma określenie "klasa zaprzyjaźniona" w kontekście programowania obiektowego?

A. Klasa, która może być dziedziczona przez inne klasy
B. Klasa, która nie ma możliwości zawierania metod statycznych
C. Klasa, która ma dostęp do prywatnych i chronionych elementów innej klasy
D. Klasa, w której wszystkie komponenty są publiczne
Klasa zaprzyjaźniona (ang. 'friend class') to klasa, która ma dostęp do prywatnych i chronionych składowych innej klasy, dzięki specjalnej deklaracji 'friend' wewnątrz tej klasy. Jest to kluczowe narzędzie w programowaniu obiektowym, które umożliwia ściślejszą współpracę między klasami, jednocześnie zapewniając hermetyzację kodu w miejscach, gdzie jest to wymagane. Używanie klas zaprzyjaźnionych umożliwia bardziej efektywne zarządzanie zależnościami między klasami, co jest istotne w dużych projektach programistycznych. Klasy zaprzyjaźnione są często stosowane w bibliotekach standardowych i frameworkach, pozwalając na eleganckie rozwiązania problemów związanych z ukrywaniem implementacji i udostępnianiem tylko niezbędnych fragmentów kodu innym komponentom systemu.

Pytanie 40

Który z operatorów w Pythonie umożliwia sprawdzenie, czy dany element należy do listy?

A. in
B. ==
C. and
D. is
Operator `==` służy do porównywania dwóch wartości, ale nie sprawdza przynależności do listy czy zbioru. Operator `is` porównuje obiekty pod względem tożsamości (czy wskazują na ten sam obiekt w pamięci), co różni się od `in`, który porównuje wartości. Operator `and` to operator logiczny, który sprawdza, czy dwie wartości są prawdziwe (`True`), ale nie jest używany do wyszukiwania elementów w listach czy zbiorach. Każdy z tych operatorów pełni inną funkcję niż `in`, który jest dedykowany do sprawdzania przynależności elementów do kolekcji.