Wyniki egzaminu

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

Egzamin zdany!

Wynik: 29/40 punktów (72,5%)

Wymagane minimum: 20 punktów (50%)

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

Który z wymienionych dokumentów jest najczęściej stosowany w zarządzaniu pracą zespołu Scrum?

A. Lista zasobów ludzkich
B. Product backlog
C. Diagram Gantta
D. Specyfikacja techniczna
Diagram Gantta jest fajnym narzędziem do pokazywania harmonogramu, ale nie ma go w zarządzaniu backlogiem. Specyfikacja techniczna to co innego – tam są szczegóły implementacyjne, a nie priorytety funkcji. Lista zasobów ludzkich to temat o zarządzaniu personelem, a nie o zadaniach i priorytetach w Scrumie. Więc tu bardziej musisz uważać na to, co do czego pasuje.

Pytanie 2

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

A. Android Studio Layout Editor
B. Narzędzie do zarządzania bazami danych
C. Kompilator Javy
D. PyCharm Debugger
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 3

Jakie jest główne zadanie portali społecznościowych?

A. Tworzenie kopii zapasowych plików
B. Udostępnianie informacji i interakcja między użytkownikami
C. Zarządzanie handlem produktami i usługami
D. Analiza rezultatów działalności gospodarczej
Główna funkcja portali społecznościowych polega na umożliwieniu użytkownikom tworzenia, udostępniania oraz wymiany treści, a także komunikacji w czasie rzeczywistym. Portale takie jak Facebook, Twitter czy Instagram pozwalają na interakcję poprzez posty, komentarze, polubienia oraz wiadomości prywatne. Użytkownicy mogą dzielić się zdjęciami, filmami, artykułami lub osobistymi przemyśleniami, co sprzyja budowaniu społeczności i nawiązywaniu relacji. Funkcjonalności te są zgodne z najlepszymi praktykami UX/UI, które kładą nacisk na intuicyjność i łatwość obsługi. W kontekście SEO, portale społecznościowe są także ważne ze względu na możliwość generowania ruchu na zewnętrzne strony internetowe poprzez linki i udostępnienia. Przykładem może być wykorzystanie platformy Instagram do promocji produktów, gdzie użytkownicy mogą kliknąć w linki do sklepu. Takie działania zwiększają widoczność marki w Internecie oraz angażują odbiorców, co jest kluczowe dla efektywnej strategii marketingowej.

Pytanie 4

Programem służącym do monitorowania błędów oraz organizacji projektów jest:

A. Jasmine
B. Jira
C. Bugzilla
D. Git
Jira to świetne narzędzie, które pomaga w śledzeniu błędów i zarządzaniu projektami. Dzięki niemu można łatwo prowadzić dokumentację i organizować zadania w zespole. Dlatego wiele zespołów IT wybiera właśnie to rozwiązanie, bo ułatwia pracę i poprawia komunikację.

Pytanie 5

Który z wymienionych poniżej przykładów ilustruje prawidłowy szkielet zarządzania wyjątkami w języku C++?

A. try { kod } handle { obsługa }
B. try { kod } except { obsługa }
C. try { kod } finally { obsługa }
D. try { kod } catch { obsługa }
Jak to wygląda w C++? Kluczowym elementem jest szkielet z blokami 'try' i 'catch'. W bloku 'try' piszesz kod, który może spowodować błąd, a 'catch' zajmuje się sytuacjami, kiedy coś pójdzie nie tak. Dzięki temu nie musisz się martwić, że program nagle przestanie działać, bo masz kontrolę nad tym, jak reagować w trudnych momentach. Obsługa wyjątków to naprawdę ważna sprawa w programowaniu, bo pomaga wyłapać różne problemy, czy to z danymi, z pamięcią, czy z plikami. Z mojego doświadczenia, to po prostu sprawia, że aplikacje są bardziej stabilne i działa to na korzyść zarówno programisty, jak i użytkownika.

Pytanie 6

Zaproponowany fragment kodu w Android Studio realizuje metodę nasłuchującą do obsługi wydarzenia

Ilustracja do pytania
A. naciśnięcia przycisku
B. zmiany w polu tekstowym
C. zmiany stanu kontrolki Switch
D. wybór daty
Metoda OnClickListener, to coś, co na pewno warto znać, gdy pracujesz z aplikacjami na Androida. Gdy użytkownik klika przycisk, wywoływana jest metoda onClick. I tu możesz zrobić różne rzeczy, jak na przykład przejść do innego ekranu, zapisać dane albo uruchomić jakąś akcję w tle. To jest dobry przykład wzorca projektowego zwanego Delegacja, który pomaga oddzielić to, co widzisz w interfejsie, od tego, co dzieje się w aplikacji. Dzięki temu łatwiej zarządzać kodem i wprowadzać zmiany. Fajnie jest, gdy logikę umieszczasz w osobnych metodach, bo wtedy testowanie całej aplikacji staje się prostsze. Przykłady? Możesz na przykład użyć OnClickListenera, żeby zrobić logowanie po kliknięciu przycisku lub wysłać formularz. Pamiętaj też, żeby unikać ciężkich operacji w metodzie onClick, żeby aplikacja działała płynnie.

Pytanie 7

Ile gigabajtów (GB) mieści się w 1 terabajcie (TB)?

A. 1024
B. 2048
C. 512
D. 1000
Odpowiedzi 1000, 2048 i 512 są błędne z różnych powodów. Zaczynając od 1000 – często spotykana w reklamach, zwłaszcza w kontekście dysków twardych, odnosi się do systemu dziesiętnego, gdzie 1 TB to 1 000 GB. Ale w informatyce to tak nie działa, bo 1 TB to 1024 GB, co może nieco mylić. Odpowiedź 2048 to też nie to, bo tu mamy do czynienia z pomyleniem jednostek – 2048 wynika z 2^11 i nie pasuje do terabajtów i gigabajtów. Na koniec, 512, to w ogóle nie gra, bo 512 MB to tylko 0,5 GB, co w porównaniu do 1 TB jest po prostu za małe. Dlatego warto ogarnąć te różnice między systemami binarnym i dziesiętnym, żeby dobrze wiedzieć, jak przeliczać jednostki pamięci.

Pytanie 8

Jaką wartość zwróci funkcja napisana w języku C++, jeżeli jej argumentem wejściowym jest tablica stworzona w sposób następujący: int tablica[6] = {3,4,2,4,10,0};?

Ilustracja do pytania
A. 10
B. 23
C. 20
D. 0
Funkcja w C++ zwraca sumę elementów tablicy, co daje wynik 23. Algorytm iteracyjnie dodaje wszystkie elementy do zmiennej sumującej, co jest typowym rozwiązaniem dla tego typu operacji.

Pytanie 9

W jakim modelu Cyklu Życia Projektu Informatycznego znajduje się etap analizy ryzyka?

A. W modelu Fry’ego
B. W kaskadowym
C. W spiralnym
D. W modelu z prototypem
Model spiralny zawiera etap analizy ryzyka na każdym poziomie iteracji. To kluczowy element tej metodyki, który pozwala minimalizować potencjalne problemy na wczesnym etapie rozwoju projektu.

Pytanie 10

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

A. int
B. struct
C. bool
D. char
Typ 'struct' w C++ to super sprawa, bo pozwala na trzymanie różnych danych pod jedną nazwą. Dzięki temu można łatwo zorganizować zmienne, które różnią się typami. Wyobraź sobie, że możesz stworzyć strukturę, która będzie reprezentować na przykład samochód z jego marką, rocznikiem i ceną. To naprawdę ułatwia pracę z danymi! Każde pole w strukturze może mieć inny typ, co czyni 'struct' bardzo uniwersalnym narzędziem do modelowania różnych obiektów, jak ludzie czy produkty. W zasadzie, to takie logiczne pudełko, do którego wrzucasz różne informacje i masz do nich szybki dostęp.

Pytanie 11

Jakie są różnice między konstruktorem a zwykłą metodą w klasie?

A. Konstruktor można wywołać bez konieczności tworzenia obiektu
B. Konstruktor jest uruchamiany jedynie przez destruktor
C. Konstruktor powinien zwracać jakąś wartość
D. Konstruktor zawsze nosi tę samą nazwę co klasa i nie zwraca wartości
Konstruktor nie zwraca wartości, w przeciwieństwie do zwykłych metod klasy, które mogą zwracać typy danych (`int`, `float`, `string`). Konstruktor nie może być wywoływany bez tworzenia obiektu – jest to mechanizm związany wyłącznie z procesem inicjalizacji obiektu. Destruktor, a nie konstruktor, jest wywoływany po zakończeniu życia obiektu w celu zwolnienia zasobów. Konstruktor jest pierwszą metodą, która działa podczas tworzenia obiektu, co odróżnia go od destruktora, który działa na końcu życia obiektu.

Pytanie 12

Wskaż algorytm sortowania, który nie jest stabilny?

A. sortowanie przez zliczanie
B. sortowanie przez wstawianie
C. sortowanie szybkie
D. sortowanie bąbelkowe
Sortowanie szybkie (QuickSort) jest algorytmem niestabilnym, co oznacza, że nie zachowuje kolejności elementów o tej samej wartości. Jego główną zaletą jest efektywność, jednak brak stabilności może być istotny w aplikacjach wymagających zachowania oryginalnej kolejności danych.

Pytanie 13

Jaki jest kluczowy zamysł wzorca "Kompozyt" (Composite)?

A. Danie możliwości dynamicznej zmiany zachowania obiektu
B. Stworzenie jednej klasy do zarządzania wieloma obiektami tego samego rodzaju
C. Umożliwienie klientom obsługi obiektów oraz ich zbiorów w spójny sposób
D. Określenie interfejsu komunikacji pomiędzy składnikami systemu
Zarządzanie wieloma obiektami tego samego typu to cecha wzorca Fabryka (Factory) lub Builder, a nie Kompozyt. Definiowanie interfejsu komunikacji między komponentami systemu to rola wzorca Mediator, który organizuje interakcje między różnymi obiektami. Umożliwienie dynamicznej zmiany zachowania obiektu jest domeną wzorca Strategia (Strategy) lub Dekorator (Decorator), które oferują elastyczność w zakresie modyfikacji zachowania podczas działania programu.

Pytanie 14

Jakie jest przeznaczenie polecenia "git merge"?

A. Do pobierania aktualizacji zdalnego repozytorium
B. Do łączenia zmian z różnych gałęzi
C. Do usuwania zmian w repozytorium
D. Do zakładania nowego 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 15

Co to jest dokumentacja instruktażowa programu?

A. Instrukcją opisującą, jak używać funkcji programu
B. Zbiorem szczegółów technicznych dotyczących kodu źródłowego
C. Kolekcją testów jednostkowych oraz ich wyników
D. Dokumentem przedstawiającym plany rozwoju oprogramowania
Instrukcja wyjaśniająca, jak korzystać z funkcji programu, to podstawowy element dokumentacji pomocy programu. Tego rodzaju dokumentacja jest skierowana do użytkowników końcowych i zawiera opisy interfejsu, funkcji oraz dostępnych narzędzi. Instrukcja użytkownika może obejmować zrzuty ekranu, filmy instruktażowe oraz FAQ (często zadawane pytania), co ułatwia szybkie wdrożenie w obsługę aplikacji. Celem dokumentacji pomocy jest nie tylko wyjaśnienie podstawowych funkcji programu, ale także zwiększenie komfortu użytkownika i minimalizacja problemów związanych z obsługą oprogramowania. Przejrzysta i dobrze napisana instrukcja wpływa na pozytywne doświadczenia użytkowników, redukując liczbę zgłoszeń do działu wsparcia technicznego.

Pytanie 16

Która z wymienionych zasad odnosi się do zachowania prywatności w sieci?

A. Umieszczanie wszystkich zdjęć na platformach społecznościowych
B. Publikowanie danych osobowych na otwartych platformach
C. Stosowanie pseudonimów zamiast rzeczywistych imion na mediach społecznościowych
D. Przechowywanie haseł w wiadomościach e-mail
Używanie pseudonimów zamiast prawdziwych imion na portalach społecznościowych jest jedną z podstawowych zasad ochrony prywatności w internecie. Dzięki temu ograniczasz możliwość identyfikacji i śledzenia Twojej aktywności przez osoby trzecie. Pseudonimy minimalizują ryzyko kradzieży tożsamości i redukują ilość danych osobowych dostępnych publicznie. To działanie jest szczególnie ważne dla dzieci i młodzieży, chroniąc ich przed cyberprzemocą i innymi zagrożeniami. W wielu serwisach można także dostosować ustawienia prywatności, ukrywając profil przed osobami spoza listy znajomych.

Pytanie 17

Które z poniższych twierdzeń najlepiej charakteryzuje bibliotekę w kontekście programowania?

A. Zestaw funkcji i klas, które mogą być wykorzystywane w aplikacjach
B. Zbiór kodu źródłowego, który jest stosowany wyłącznie w fazie kompilacji aplikacji
C. Zbiór zmiennych globalnych, które są dostępne w trakcie działania aplikacji
D. Plik wykonywalny, który funkcjonuje jako odrębny program
Biblioteka w programowaniu to taka paczka różnych funkcji i klas, które można wykorzystać w wielu projektach. Dzięki nim programiści mają łatwiej, bo korzystają z gotowych rozwiązań, co oszczędza czas na pisanie aplikacji. W bibliotekach można znaleźć przeróżne moduły – od prostych funkcji matematycznych po skomplikowane narzędzia do obsługi grafiki, sieci czy baz danych. Znam parę popularnych bibliotek, takich jak React.js w JavaScript, NumPy w Pythonie czy STL w C++. Używanie bibliotek sprawia, że praca programisty jest efektywniejsza, a tworzenie bardziej złożonych aplikacji idzie szybciej, bo nie musisz wszystkiego pisać od podstaw.

Pytanie 18

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

Pytanie 19

Podczas programowania kontrolki stepper przedstawionej na ilustracji w aplikacji mobilnej, należy zarządzać zmienną, która zawsze przechowuje jej bieżącą wartość. Jakie zdarzenie można wykorzystać do osiągnięcia tej funkcjonalności?

Ilustracja do pytania
A. DescendantAdded
B. ValueChanged
C. Unfocused
D. SizeChanged
Zdarzenie ValueChanged jest kluczowe w kontekście programowania kontrolek takich jak stepper w aplikacjach mobilnych. To zdarzenie jest wywoływane zawsze, gdy wartość kontrolki zostaje zmieniona przez użytkownika, co umożliwia natychmiastowe przetwarzanie tej zmiany i aktualizację interfejsu użytkownika lub innych powiązanych komponentów. W praktyce, użycie zdarzenia ValueChanged to dobry przykład reaktywnego programowania, gdzie aplikacja reaguje na akcje użytkownika w czasie rzeczywistym. Przy implementacji takiego zdarzenia należy zadbać o poprawne sprawdzanie zakresu wartości, aby uniknąć błędów logicznych. Warto również pamiętać o optymalizacji wydajności takiej obsługi, zwłaszcza w aplikacjach złożonych z wielu komponentów zależnych od wartości steppera. Praktyczne zastosowanie tego zdarzenia można znaleźć w aplikacjach e-commerce, gdzie steppery mogą być używane do wyboru ilości produktów w koszyku, a zmiana wartości natychmiast wpływa na obliczenie ceny całkowitej. Używanie zdarzeń takich jak ValueChanged jest zgodne z dobrymi praktykami projektowania interfejsów użytkownika, poprawiając ich responsywność i interaktywność.

Pytanie 20

Na zaprezentowanych ilustracjach znajduje się okno aplikacji w wersji początkowej oraz po wprowadzeniu danych. Przyjmując, że pole "Dostępne środki" służy do wprowadzania wartości typu rzeczywistego, wskaż elementy struktury, które najlepiej odpowiadają tym danym?

Ilustracja do pytania
A. Kod 4
B. Kod 2
C. Kod 1
D. Kod 3
Dla pola 'Dostępne środki', które powinno przechowywać wartości rzeczywiste, odpowiednią strukturą jest ta zawierająca typ danych float lub double. Są to typy zmiennoprzecinkowe umożliwiające przechowywanie liczb z częścią ułamkową, co jest kluczowe przy operacjach finansowych i precyzyjnych obliczeniach. Wybór odpowiedniej struktury danych gwarantuje dokładność i minimalizuje ryzyko błędów związanych z zaokrągleniami.

Pytanie 21

Jakie są główne różnice między środowiskiem RAD (Rapid Application Development) a klasycznymi IDE?

A. RAD pozwala na szybkie tworzenie prototypów i rozwijanie aplikacji przy minimalnej ilości kodu
B. RAD funkcjonuje tylko w systemach operacyjnych Linux
C. RAD nie oferuje żadnych narzędzi do debugowania
D. RAD koncentruje się tylko na testowaniu programów
RAD (Rapid Application Development) to metodologia tworzenia oprogramowania, która kładzie nacisk na szybkie prototypowanie i iteracyjne podejście do rozwoju aplikacji, minimalizując czas poświęcany na pisanie kodu od podstaw. Kluczowym aspektem RAD jest możliwość szybkiego dostosowywania aplikacji do zmieniających się wymagań biznesowych oraz ciągła interakcja z klientem. Narzędzia RAD, takie jak Visual Studio, Delphi czy OutSystems, pozwalają na budowanie aplikacji przy użyciu graficznych interfejsów, gotowych komponentów i automatycznego generowania kodu, co znacząco skraca czas wprowadzenia produktu na rynek. RAD doskonale sprawdza się w przypadku projektów o krótkim cyklu życia i wymagających szybkich zmian.

Pytanie 22

Która z wymienionych bibliotek pozwala na obsługę zdarzeń związanych z myszą w aplikacjach desktopowych?

A. Numpy
B. Django
C. TensorFlow
D. Qt
Qt to jedna z najpopularniejszych bibliotek, która umożliwia obsługę zdarzeń myszy i klawiatury w aplikacjach desktopowych. Dzięki Qt możliwe jest tworzenie interaktywnych aplikacji, które reagują na kliknięcia, przesunięcia kursora oraz inne zdarzenia generowane przez urządzenia wejściowe. Qt oferuje obszerną dokumentację i gotowe klasy, takie jak QPushButton, QLabel czy QSlider, które mogą nasłuchiwać zdarzeń i dynamicznie zmieniać stan aplikacji. Co więcej, Qt pozwala na implementację niestandardowych zdarzeń i tworzenie zaawansowanych interfejsów graficznych, które są w pełni interaktywne i responsywne.

Pytanie 23

Jakie informacje można uzyskać na temat metod w klasie Point?

Ilustracja do pytania
A. Służą jako konstruktory w zależności od liczby argumentów.
B. Zawierają błąd, ponieważ nazwy metod powinny być różne.
C. Są przeciążone.
D. Zawierają przeciążenie operatora.
Metody klasy Point są przeciążone, co oznacza, że mogą mieć tę samą nazwę, ale różnią się liczbą lub typem parametrów. Przeciążenie metod to jedna z podstawowych technik programowania obiektowego, która pozwala na bardziej elastyczne projektowanie kodu. Dzięki temu programista może tworzyć metody dostosowane do różnych sytuacji, zachowując spójność nazw i intuicyjność użycia. To zwiększa czytelność i utrzymanie kodu, ponieważ wywołania metod o tej samej nazwie, ale różnych parametrach, są łatwe do zrozumienia i odnalezienia.

Pytanie 24

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

A. Dowolną liczbę rzeczywistą
B. Wartość w reprezentacji binarnej
C. Jedną z dwóch opcji: true lub false
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 25

Wartość liczby 1AF, zapisana w systemie szesnastkowym, po przeliczeniu na system dziesiętny wynosi

A. 26
B. 431
C. 6890
D. 257
No, tutaj coś poszło nie tak. Wartość 6890 to chyba wynik jakiegoś błędnego przeliczenia, bo z potęgami szesnastkowymi coś się nie zgadza. Jeśli chodzi o 26, to pewnie źle poskładałeś te cyfry w liczbie szesnastkowej. A 257 to w ogóle nie to, co powinno wyjść, bo brakuje tam jakiejś cyfry w tej liczbie szesnastkowej.

Pytanie 26

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

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

A. zm3
B. zm4
C. zm2
D. zm1
W przedstawionym kodzie zmienna 'zm3' jest zdolna przechowywać wartość 'T', co sugeruje, że jest to typ znakowy (char) lub string o odpowiedniej długości. To standardowa praktyka przy przechowywaniu pojedynczych znaków w języku Java.

Pytanie 27

Która z poniższych informacji o pojęciu obiekt jest prawdziwa?

A. obiekt oraz klasa są identyczne
B. obiekt to typ złożony
C. obiekt jest instancją klasy
D. obiekt pozwala na zdefiniowanie klasy
Obiekt nie jest typem złożonym – jest konkretnym egzemplarzem klasy, która jest typem złożonym. Obiekt i klasa to nie to samo – klasa jest definicją, a obiekt jej instancją. Obiekt nie definiuje klasy, to klasa tworzy obiekt poprzez swoje instancje. Takie rozróżnienie jest kluczowe dla zrozumienia programowania obiektowego.

Pytanie 28

Jakie jest najważniejsze właściwość algorytmów szyfrowania symetrycznego?

A. Zastosowanie odmiennych kluczy do szyfrowania i deszyfrowania
B. Zastosowanie identycznego klucza do szyfrowania oraz deszyfrowania
C. Szyfrowanie wyłącznie tekstowych plików
D. Funkcjonowanie bez użycia klucza
Algorytmy asymetryczne działają inaczej, bo wykorzystują różne klucze do szyfrowania i deszyfrowania, jak np. RSA. To totalnie różni je od algorytmów symetrycznych. No i są też algorytmy, które nie potrzebują klucza, takie jak hashowanie (MD5, SHA), które robią unikalne skróty danych, ale nie da się ich odwrócić. A jeśli chodzi o szyfrowanie plików tekstowych, to to tylko mały kawałek tego, co algorytmy symetryczne potrafią, bo mogą szyfrować właściwie wszystkie dane, bez względu na to, w jakim formacie są.

Pytanie 29

Jakie znaczenie ma krajowa normalizacja dla produktów i usług?

A. Ogranicza liczbę dostępnych towarów
B. Gwarantuje lepszą zgodność oraz jakość
C. Usuwa konieczność przeprowadzania kontroli jakości
D. Restrukcjonuje innowacje technologiczne
Wielu ludzi myśli, że normalizacja zmniejsza liczbę dostępnych produktów, ale to nie tak. W rzeczywistości standardy sprawiają, że pojawia się jeszcze więcej różnych produktów, które spełniają określone normy. A ten pomysł, że pozbywanie się kontroli jakości to coś dobrego, to chyba jakieś nieporozumienie – normalizacja wcale nie zastępuje kontroli jakości, ona ją raczej wspiera. I nie ma co mówić, że innowacji technologicznych jest mniej przez normalizację – wręcz przeciwnie, standardy dają solidny podstawy do tego, żeby rozwijać nowe technologie i produkty, które odpowiadają potrzebom rynku.

Pytanie 30

Przedstawione kody zawierają realizację funkcji oraz jeden zdefiniowany test automatyczny, który weryfikuje działanie funkcji w przypadku, gdy argumentem jest liczba ujemna. W miejscu kropek trzeba dodać drugi test, który sprawdzi funkcjonalność funkcji, kiedy argumentem jest liczba dodatnia. Który z poniższych kodów jest odpowiedni do tego testu?

Ilustracja do pytania
A. Odpowiedź A
B. Odpowiedź D
C. Odpowiedź C
D. Odpowiedź B
Poprawna odpowiedź to C ponieważ funkcja fun1 zwraca liczbę taką jaka jest z wyjątkiem sytuacji gdy liczba jest ujemna wtedy zwraca jej wartość bezwzględną Test C sprawdza wartość dodatnią 2 gdzie rezultat jest zgodny z oczekiwaniami i funkcja zwraca 2 co jest poprawnym wynikiem To testowanie zgodne z zasadą jednostkowych testów gdzie ważne jest aby funkcje były testowane na różne przypadki brzegowe w tym na wartości ujemne i dodatnie Implementacja jednostkowych testów pozwala na automatyczne sprawdzanie poprawności działania kodu co jest dobrą praktyką w programowaniu Szczególnie ważne jest aby testować funkcje krytyczne i te które mają potencjał do wystąpienia błędów związanych z nieoczekiwanymi danymi wejściowymi Przykład ten pokazuje jak ważne jest aby testy były dokładne i pokrywały różnorodne scenariusze użytkowania co pozwala na wczesne wychwycenie błędów i zapewnienie stabilności aplikacji W tej sytuacji testując wartość 2 zapewniamy że funkcja zachowuje się poprawnie dla wartości dodatnich co jest zgodne z oczekiwaniami programistycznymi

Pytanie 31

Który z podanych algorytmów operujących na jednowymiarowej tablicy posiada złożoność obliczeniową O(n2)?

A. Sortowanie bąbelkowe
B. Wypisanie elementów
C. Wyszukiwanie binarne
D. Sortowanie szybkie
Sortowanie bąbelkowe, znane również jako bubble sort, to prosty algorytm sortowania, który działa na zasadzie wielokrotnego przechodzenia przez tablicę i porównywania sąsiadujących ze sobą elementów. Algorytm ten ma złożoność obliczeniową O(n^2), co oznacza, że w najgorszym przypadku liczba operacji porównania wzrasta kwadratowo wraz ze wzrostem liczby elementów w tablicy. Przykładowo, dla tablicy o 5 elementach algorytm może wykonać do 10 porównań. W praktyce sortowanie bąbelkowe jest rzadko stosowane w dużych zbiorach danych ze względu na swoją niską efektywność, jednak jest to dobry przykład do nauki podstaw algorytmów sortujących. Standardy algorytmów sortujących, takie jak te zawarte w podręcznikach algorytmiki, często używają sortowania bąbelkowego jako przykładu do omówienia prostych koncepcji związanych z sortowaniem. Warto zauważyć, że chociaż algorytm ten jest prosty do zrozumienia, jego złożoność czasowa sprawia, że nie jest on praktyczny do stosowania w produkcyjnych rozwiązaniach, gdyż bardziej optymalne algorytmy, jak sortowanie szybkie czy sortowanie przez scalanie, osiągają złożoność O(n log n).

Pytanie 32

Wynik dodawania liczb binarnych 1101 i 1001 to

A. 10111
B. 1110
C. 1001
D. 10110
Sumą liczb binarnych 1101 i 1001 jest 10110. Dodawanie binarne odbywa się analogicznie do dodawania dziesiętnego, z przeniesieniem jedności na kolejny bit, co prowadzi do poprawnego wyniku.

Pytanie 33

Szablon MojaTablica oferuje funkcjonalność tablicy z indeksami oraz elementami różnych typów. W oparciu o pokazany kod, który wykorzystuje ten szablon do tworzenia tablicy asocjacyjnej, wskaż definicję, która posługuje się szablonem do zainicjowania tablicy, gdzie indeksami są liczby całkowite, a elementami są napisy?

Ilustracja do pytania
A. int tab2 = new MojaTablica()
B. int tab2[] = new MojaTablica()
C. MojaTablica tab2 = MOjaTablica()
D. MojaTablica tab2 = new MojaTablica()
Deklaracja int tab2[] = new MojaTablica(); jest nieprawidłowa, ponieważ int odnosi się do typów prostych, a nie do tablic asocjacyjnych. MojaTablica tab2 = MOjaTablica(); zawiera literówkę i nie inicjalizuje nowego obiektu. Int tab2 = new MojaTablica(); jest błędne, ponieważ tablica asocjacyjna nie może być przypisana do typu int – wymaga użycia typu zgodnego z definicją szablonu.

Pytanie 34

W programie stworzonym w języku C++ trzeba zadeklarować zmienną, która będzie przechowywać wartość rzeczywistą. Jakiego typu powinna być ta zmienna?

A. double
B. number
C. int
D. numeric
Typ zmiennej 'double' przechowuje liczby rzeczywiste (zmiennoprzecinkowe) w języku C++. Jest to najczęściej używany typ do operacji wymagających precyzji, takich jak obliczenia matematyczne czy fizyczne. Double oferuje większą dokładność niż 'float' i jest standardem w większości aplikacji.

Pytanie 35

Które z wymienionych narzędzi nie znajduje zastosowania w tworzeniu aplikacji desktopowych?

A. Kompilator
B. Edytor graficzny
C. Przeglądarka internetowa
D. Debugger
Przeglądarka internetowa nie jest narzędziem wykorzystywanym bezpośrednio w procesie tworzenia aplikacji desktopowych. Chociaż może służyć do przeszukiwania dokumentacji lub testowania aplikacji webowych, jej funkcjonalność nie wspiera bezpośredniego tworzenia aplikacji desktopowych. W tworzeniu aplikacji desktopowych kluczowe są narzędzia takie jak kompilatory, debugery i edytory kodu. Kompilatory przekształcają kod źródłowy na kod wykonywalny, debugery pozwalają na śledzenie błędów, a edytory kodu umożliwiają pisanie i edytowanie aplikacji.

Pytanie 36

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

A. XCode
B. Android Studio
C. PyCharm
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 37

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. najkrótszej ścieżki
B. komiwojażera
C. dziel i zwyciężaj
D. heurystyczną
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 38

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 oceniają wydajność aplikacji, podczas gdy niefunkcjonalne weryfikują poprawność kodu
C. Testy funkcjonalne są realizowane tylko przez końcowych użytkowników, natomiast niefunkcjonalne przez programistów
D. Testy funkcjonalne koncentrują się na interfejsie, a niefunkcjonalne na backendzie aplikacji
Twierdzenie, że testy funkcjonalne sprawdzają wydajność aplikacji, a niefunkcjonalne poprawność kodu, jest błędne – testy funkcjonalne dotyczą zgodności aplikacji z wymaganiami, natomiast wydajność jest domeną testów niefunkcjonalnych. Testy funkcjonalne nie są przeprowadzane wyłącznie przez użytkowników końcowych – najczęściej są realizowane przez zespoły QA i testerów manualnych lub automatycznych. Podział testów na interfejsowe i backendowe nie jest synonimem podziału na testy funkcjonalne i niefunkcjonalne – oba typy mogą dotyczyć zarówno interfejsu, jak i zaplecza aplikacji.

Pytanie 39

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

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

Pytanie 40

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

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