Wyniki egzaminu

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

Egzamin zdany!

Wynik: 30/40 punktów (75,0%)

Wymagane minimum: 20 punktów (50%)

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

Które z poniższych stwierdzeń najlepiej charakteryzuje tablicę asocjacyjną?

A. Tablica, która zmienia swoje wymiary w trakcie działania programu
B. Tablica przechowująca dane w formie par klucz-wartość
C. Tablica, która przechowuje wartości, do których można uzyskać dostęp tylko za pomocą indeksów numerycznych
D. Tablica, która przechowuje wyłącznie dane tekstowe
Tablica asocjacyjna to fajna rzecz, bo przechowuje dane w formie par klucz-wartość. W przeciwieństwie do zwykłych tablic, gdzie używasz numerów do indeksowania, tutaj możesz mieć różne unikalne klucze, na przykład teksty czy liczby. To naprawdę ułatwia wyszukiwanie informacji i organizowanie danych. W Pythonie nazywa się to 'słownikami', a w C++ używa się 'map'. Moim zdaniem, to świetne narzędzie do pracy z większymi zbiorami danych.

Pytanie 2

W jakiej sytuacji kolekcja typu lista okaże się bardziej wydajna niż tablica?

A. Gdy mamy pewność co do dokładnego rozmiaru kolekcji przed kompilacją
B. Gdy liczba elementów w kolekcji zmienia się dynamicznie
C. Gdy liczba elementów w kolekcji jest niezmienna
D. Gdy chcemy uzyskać dostęp do elementów przy pomocy indeksu
Lista to dynamiczna struktura danych, która pozwala na efektywne dodawanie i usuwanie elementów, zwłaszcza gdy liczba elementów zmienia się w trakcie działania programu. Listy są bardziej elastyczne niż tablice, ponieważ mogą dynamicznie dostosowywać swoją wielkość bez potrzeby alokacji dodatkowej pamięci. W przypadku dynamicznych operacji, takich jak częste wstawianie i usuwanie elementów, listy są znacznie bardziej wydajne niż tablice, które wymagają przesunięcia wszystkich elementów po każdej operacji. Listy świetnie sprawdzają się w implementacji kolejek, stosów oraz w strukturach, które muszą rosnąć i kurczyć się podczas działania aplikacji.

Pytanie 3

Który z operatorów w języku C++ służy do pobierania adresu zmiennej?

A. delete
B. &
C. >
D. *
Hmmm, operator '*' rzeczywiście jest do dereferencji wskaźnika, ale nie myl go z innymi operatorami. '>' to operator do porównania, ale nie ma nic wspólnego z adresami czy wskaźnikami. A delete służy do zwalniania pamięci, a nie do uzyskiwania adresów zmiennych. Każdy z tych operatorów ma swoje miejsce w C++, ale jak się pomyli, to może być ciężko, no nie? Warto się przyjrzeć jeszcze raz tym pojęciom.

Pytanie 4

Która z wymienionych kart graficznych oferuje lepszą wydajność w grach komputerowych?

A. NVIDIA GeForce GTX 1050 Ti - 4GB GDDR5, 128-bit
B. AMD Radeon R7 240 - 2GB GDDR5, 64-bit
C. Intel UHD Graphics 630 - zintegrowana
D. AMD Radeon RX 580 - 8GB GDDR5, 256-bit
AMD Radeon RX 580 to karta graficzna, która zapewnia wyższą wydajność w grach komputerowych w porównaniu do innych wymienionych opcji. Wyposażona w 8GB pamięci GDDR5 oraz 256-bitową szynę danych, karta ta jest w stanie obsługiwać bardziej złożone tekstury oraz większe rozdzielczości. Jej architektura Polaris pozwala na lepsze zarządzanie energią oraz wydajność w grach, co czyni ją idealnym wyborem dla graczy. Dzięki obsłudze technologii DirectX 12 i Vulkan, RX 580 jest w stanie wykorzystać najnowsze osiągnięcia w dziedzinie grafiki, co przekłada się na wyższą jakość obrazu oraz płynność animacji. Przykłady gier, w których RX 580 sprawdza się najlepiej to 'Far Cry 5' czy 'Shadow of the Tomb Raider', gdzie karta umożliwia granie w wysokich ustawieniach graficznych z zachowaniem wysokiej liczby klatek na sekundę. Standardy, takie jak PCIe 3.0, zapewniają pełną kompatybilność z nowoczesnymi płytami głównymi, co czyni tę kartę doskonałym wyborem dla entuzjastów gier komputerowych.

Pytanie 5

Jakie znaczenie ma polimorfizm w programowaniu obiektowym?

A. Umożliwia jednej metodzie działać w różnorodny sposób w zależności od klasy, do której należy
B. Ogranicza dostęp do atrybutów klasy
C. Dzieli program na klasy oraz obiekty
D. Pozwala na tworzenie obiektów z wielu różnych klas równocześnie
Polimorfizm to zdolność obiektów do używania tej samej metody lub interfejsu, ale z różnymi implementacjami, w zależności od klasy obiektu. Dzięki polimorfizmowi można wywołać metodę `obiekt.wyswietl()`, która zachowuje się inaczej w klasie `Samochod` i inaczej w klasie `Motocykl`, mimo że nazwa metody pozostaje taka sama. Polimorfizm ułatwia rozbudowę aplikacji, ponieważ nowe klasy mogą być dodawane bez modyfikacji istniejącego kodu, co zwiększa elastyczność i rozszerzalność programu. Jest to jedna z najważniejszych zasad programowania obiektowego, obok dziedziczenia i hermetyzacji.

Pytanie 6

Który komponent systemu komputerowego zajmuje się transferem danych pomiędzy procesorem a pamięcią RAM?

A. Zasilacz
B. Mostek północny (Northbridge)
C. Kontroler DMA
D. Karta graficzna
Mostek północny, znany również jako Northbridge, jest kluczowym elementem architektury komputerowej, który odpowiada za komunikację pomiędzy procesorem a pamięcią RAM. Jego głównym zadaniem jest koordynowanie przepływu danych w systemie oraz zapewnienie szybkiego dostępu do pamięci, co jest niezbędne dla wydajności całego systemu. Mostek północny jest odpowiedzialny za zarządzanie magistralami danych, a także interfejsami, takimi jak PCI Express, które łączą różne komponenty. Dzięki zastosowaniu standardów, takich jak DDR (Double Data Rate), mostek północny umożliwia efektywne przesyłanie danych w wysokiej prędkości. Praktycznym przykładem działania mostka północnego jest sytuacja, kiedy procesor potrzebuje załadować dane z pamięci RAM do rejestrów – mostek północny zarządza tym procesem, minimalizując opóźnienia i maksymalizując wydajność. W nowoczesnych systemach komputerowych mostek północny jest często zintegrowany z procesorem, co dodatkowo zwiększa efektywność komunikacji oraz zmniejsza czas dostępu do danych.

Pytanie 7

Który z poniższych przypadków stanowi test niefunkcjonalny?

A. Sprawdzenie obsługi formularza rejestracji
B. Weryfikacja poprawności logowania użytkownika
C. Sprawdzenie działania przycisku
D. Testowanie wydajności aplikacji pod dużym obciążeniem
Sprawdzenie poprawności logowania użytkownika to przykład testu funkcjonalnego, który ocenia, czy aplikacja spełnia wymagania w zakresie autoryzacji i uwierzytelnienia. Weryfikacja działania przycisku oraz obsługi formularza rejestracji to także testy funkcjonalne, które dotyczą poprawności interakcji użytkownika z aplikacją. Testy te nie oceniają wydajności ani stabilności aplikacji w warunkach dużego obciążenia, co jest celem testów niefunkcjonalnych.

Pytanie 8

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. heurystyczne
B. liniowe
C. rekurencyjne
D. iteracyjne
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 9

Który z wymienionych poniżej przykładów stanowi system informacji przetwarzany przez system informatyczny?

A. System wentylacyjny w biurowcach
B. System do monitorowania temperatury serwerów
C. System PESEL
D. System zarządzania oświetleniem drogowym
System wentylacji w biurowcach, system monitorowania temperatury serwerów oraz system sterowania światłami drogowymi, chociaż są przykładami systemów inżynieryjnych, nie stanowią systemów informacji przetwarzanych przez systemy informatyczne w tradycyjnym rozumieniu. System wentylacji w biurowcach to mechanizm regulujący przepływ powietrza, który działa na podstawie fizycznych zasad termodynamiki i wymiany ciepła. W tym przypadku dane są zbierane i przetwarzane w sposób, który nie angażuje intensywnego zarządzania informacjami osobowymi ani gromadzenia danych w skali, jaką obserwuje się w systemach informacyjnych. Z kolei system monitorowania temperatury serwerów służy do zapewnienia odpowiednich warunków pracy sprzętu komputerowego. Choć wykorzystuje technologię informatyczną do zbierania danych, jego funkcjonalność koncentruje się na diagnostyce i bezpieczeństwie sprzętu, a nie na przetwarzaniu informacji o osobach czy instytucjach. Ostatecznie system sterowania światłami drogowymi, mimo że operuje na podstawie zebranych danych o ruchu drogowym, w istocie nie prowadzi złożonych operacji przetwarzania informacji w sensie administracyjnym ani nie gromadzi danych osobowych. Jego działanie opiera się na algorytmach, które reagują na ruch uliczny, a nie na zarządzaniu informacjami w sposób, który jest charakterystyczny dla systemów takich jak PESEL.

Pytanie 10

Do form komunikacji werbalnej zalicza się

A. mówienie
B. pozycja ciała
C. wyraz twarzy
D. gestykulacja
Mówienie jest formą komunikacji werbalnej, która obejmuje przekazywanie informacji za pomocą słów. Jest to podstawowy sposób wyrażania myśli, instrukcji i emocji w bezpośredniej interakcji z innymi osobami.

Pytanie 11

Jaką strukturę danych obrazuje zamieszczony kod w języku C#?

Ilustracja do pytania
A. tablicę jednowymiarową
B. listę
C. stos
D. tablicę dwuwymiarową
Kod w języku C# reprezentuje tablicę dwuwymiarową, która jest deklarowana za pomocą podwójnych nawiasów kwadratowych. Tablica taka pozwala na przechowywanie danych w formie macierzy.

Pytanie 12

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

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

Pytanie 13

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

A. 512
B. 1024
C. 1000
D. 2048
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 14

Które z wymienionych sytuacji jest przykładem hermetyzacji w programowaniu obiektowym?

A. Tworzenie wielu metod o tej samej nazwie w różnych klasach
B. Tworzenie klasy abstrakcyjnej
C. Wykorzystanie klasy nadrzędnej w innej klasie
D. Ograniczenie dostępu do pól klasy poprzez modyfikatory dostępu
Hermetyzacja (ang. encapsulation) to mechanizm programowania obiektowego, który polega na ukrywaniu wewnętrznych danych obiektu oraz udostępnianiu dostępu do nich tylko za pośrednictwem metod publicznych (gettery i settery). Dzięki hermetyzacji dane klasy są chronione przed bezpośrednią modyfikacją, co zwiększa bezpieczeństwo i stabilność kodu. Przykład w C++: `class Konto { private: double saldo; public: void wplata(double kwota) { saldo += kwota; } }` – saldo jest polem prywatnym, które można modyfikować tylko poprzez metody publiczne, co zapobiega nieautoryzowanemu dostępowi.

Pytanie 15

Którą funkcję w C++ można zastosować do dynamicznego przydzielania pamięci dla tablicy?

A. malloc()
B. delete[]
C. free()
D. sizeof()
Funkcja 'free()' służy do zwalniania pamięci zaalokowanej dynamicznie przez 'malloc()', ale nie alokuje pamięci. Funkcja 'sizeof()' zwraca rozmiar typu lub obiektu, ale nie alokuje pamięci dynamicznie – jest wykorzystywana do określania ilości pamięci potrzebnej dla danego typu. 'Delete[]' jest operatorem w C++, który usuwa tablicę dynamicznie zaalokowaną przy użyciu 'new[]', ale nie alokuje pamięci – jest to mechanizm zwalniania pamięci, a nie jej przydzielania.

Pytanie 16

Podaj przykład incydentu w miejscu pracy?

A. złe samopoczucie spowodowane przewlekłą chorobą zatrudnionego, które wystąpiło w biurze
B. oparzenie dłoni, które miało miejsce podczas nieobowiązkowego szkolenia w czasie prywatnym pracownika
C. złamanie nogi w trakcie urlopu wypoczynkowego przyznanego przez pracodawcę
D. kontuzja stawu skokowego, która zdarzyła się w trakcie bezpośredniej drogi do miejsca zatrudnienia
Jak dla mnie, to uraz stawu skokowego w drodze do pracy jak najbardziej można uznać za wypadek przy pracy. Wiesz, nawet jeśli to się wydarzy poza firmą, to jeśli szedłeś prosto do niej, to masz prawo do ochrony i świadczeń z ubezpieczenia. To ważne, żeby to wiedzieć.

Pytanie 17

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. PRINCE2
B. Model kaskadowy
C. Model V
D. Agile
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 18

Jakie jest źródło błędu w podanym kodzie przez programistę?

Ilustracja do pytania
A. brak konstruktora w definicji klasy
B. pole autor jest niedostępne z tego poziomu
C. inicjacja obiektu została błędnie zapisana
D. argumenty konstruktora powinny być przekazane podczas inicjacji obiektu
Błąd związany z polem 'autor' wynika z problemu dostępu do pól prywatnych w klasie. W programowaniu obiektowym, pola prywatne (oznaczone jako private) są dostępne tylko wewnątrz danej klasy i nie mogą być bezpośrednio modyfikowane lub odczytywane z zewnątrz. Aby umożliwić dostęp do takich pól, programista powinien utworzyć odpowiednie metody dostępowe – tzw. gettery i settery. Jest to przykład hermetyzacji (encapsulation), jednego z filarów programowania obiektowego, który pozwala na kontrolę nad tym, jak dane są przechowywane i modyfikowane. Hermetyzacja zwiększa bezpieczeństwo aplikacji i zapobiega przypadkowym zmianom wartości pól obiektu.

Pytanie 19

Który z wymienionych przykładów ilustruje projektowanie interfejsu zgodnego z zasadami user experience (UX)?

A. Brak opcji cofnięcia już wykonanej akcji
B. Zastosowanie jedynie jednego koloru w całym interfejsie
C. Przycisk umieszczony w przypadkowym miejscu aplikacji
D. Użycie czytelnych czcionek i intuicyjnego układu elementów
Użycie czytelnych czcionek i intuicyjnego układu elementów to kluczowe zasady projektowania zgodne z user experience (UX). Przejrzystość i estetyka interfejsu zwiększają komfort użytkownika i ułatwiają korzystanie z aplikacji. Intuicyjny układ elementów pozwala na szybkie odnalezienie potrzebnych funkcji, co redukuje frustrację użytkownika i skraca czas potrzebny na realizację zadania. UX opiera się na badaniach dotyczących zachowań użytkowników i dostosowywaniu projektu do ich potrzeb.

Pytanie 20

Który z wymienionych objawów może sugerować nagłe zagrożenie dla zdrowia?

A. Intensywne pocenie się w gorącym otoczeniu
B. Ostry ból w klatce piersiowej
C. Zwiększona efektywność pracy
D. Obniżony nastrój w ciągu dnia
Ostry ból w klatce piersiowej to jeden z najbardziej alarmujących objawów wskazujących na nagłe zagrożenie zdrowotne, takie jak zawał serca lub zatorowość płucna. Tego rodzaju ból jest często opisywany jako gniotący, ściskający lub rozlewający się na inne części ciała, takie jak ramię, szyja czy żuchwa. W takich przypadkach kluczowe jest szybkie wezwanie pomocy medycznej, ponieważ każda minuta opóźnienia może zwiększyć ryzyko powikłań lub śmierci. Edukacja w zakresie rozpoznawania tego objawu może uratować życie, dlatego tak ważne jest rozróżnianie go od innych mniej groźnych objawów.

Pytanie 21

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 [ Component ] from 'react'
D. import React.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 22

Dokumentacja, która została przedstawiona, dotyczy algorytmu sortowania

Ilustracja do pytania
A. bąbelkowe
B. przez wstawianie
C. szybkie (Quicksort)
D. przez wybór
Przedstawiona dokumentacja opisuje algorytm sortowania bąbelkowego (Bubble Sort), który działa poprzez wielokrotne porównywanie sąsiednich elementów i zamianę ich miejscami, jeśli są w złej kolejności. Algorytm ten ma prostą implementację, ale charakteryzuje się niską efektywnością dla dużych zbiorów danych (złożoność O(n^2)).

Pytanie 23

Który z wymienionych algorytmów najczęściej wykorzystuje rekurencję?

A. Sortowanie przez wstawianie
B. Sortowanie bąbelkowe
C. Wyszukiwanie liniowe
D. Obliczanie liczb Fibonacciego
Sortowanie bąbelkowe to algorytm iteracyjny, który działa na zasadzie porównywania sąsiednich elementów tablicy i zamiany ich miejscami. Nie korzysta on z rekurencji, ponieważ jego struktura nie wymaga podziału problemu na mniejsze części. Wyszukiwanie liniowe to prosty algorytm iteracyjny, który przeszukuje kolejne elementy tablicy i nie wykorzystuje rekurencji. Sortowanie przez wstawianie również jest algorytmem iteracyjnym, który działa na zasadzie wstawiania kolejnych elementów w odpowiednie miejsca i nie wymaga wywoływania funkcji rekurencyjnych.

Pytanie 24

Złośliwe oprogramowanie stworzone w celu przyznania hakerom uprawnień administracyjnych do komputera ofiary bez jej świadomości, to

A. keylogger
B. robak
C. rootkit
D. wirus
Rootkit to rodzaj szkodliwego oprogramowania, które ukrywa swoją obecność i zapewnia hakerom uprawnienia administracyjne do systemu ofiary. Jest trudny do wykrycia i stanowi poważne zagrożenie bezpieczeństwa.

Pytanie 25

Który algorytm sortowania opiera się na metodzie "dziel i zwyciężaj"?

A. Sortowanie szybkie (QuickSort)
B. Sortowanie przez wybór
C. Sortowanie przez wstawianie
D. Sortowanie bąbelkowe
QuickSort to algorytm sortowania wykorzystujący podejście 'dziel i zwyciężaj', co oznacza, że dzieli tablicę na mniejsze części wokół elementu zwanego pivotem, a następnie rekurencyjnie sortuje każdą z tych części. Ta strategia pozwala na efektywne sortowanie dużych zbiorów danych w czasie O(n log n) w większości przypadków. Dziel i zwyciężaj to potężne narzędzie algorytmiczne, które znajduje zastosowanie w wielu innych algorytmach, takich jak Merge Sort i algorytmy wyszukiwania binarnego. QuickSort jest często używany w aplikacjach wymagających szybkiego przetwarzania dużych ilości danych.

Pytanie 26

W obrębie klasy pracownik zdefiniowano przedstawione metody. Którą z nich można zgodnie z jej funkcją rozszerzyć o element diagnostyczny o treści: cout << "Obiekt został usunięty";

Ilustracja do pytania
A. pracownik
B. operator==
C. ~pracownik
D. wypisz
Destruktor (~pracownik) to metoda wywoływana automatycznie podczas usuwania obiektu. To idealne miejsce na dodanie komunikatu diagnostycznego informującego o usunięciu obiektu. Destruktory są kluczowe w zarządzaniu pamięcią i zasobami, zapewniając zwolnienie zasobów po zakończeniu działania obiektu.

Pytanie 27

Jakie są różnice między procesem kompilacji a interpretacją kodu?

A. Kompilacja wymaga użycia debuggera, natomiast interpretacja tego nie potrzebuje
B. Interpretacja umożliwia tworzenie bibliotek dynamicznych, a kompilacja bibliotek statycznych
C. Kompilacja przekształca cały kod źródłowy przed jego wykonaniem, podczas gdy interpretacja tłumaczy kod na bieżąco
D. Kompilacja jest stosowana jedynie w programowaniu obiektowym
Kompilacja i interpretacja to dwa różne sposoby, żeby uruchomić kod. Kiedy kompilujesz, to cały kod jest zamieniany na język maszynowy przed uruchomieniem programu, a na końcu dostajesz plik, który można odpalić. Z kolei w interpretacji, kod jest analizowany i wykonywany linia po linii „na żywo”. Kompilacja jest bardziej typowa dla języków takich jak C czy C++, a interpretacja jest popularna w językach skryptowych jak Python czy JavaScript. Kompilacja daje większą wydajność, ale musisz poczekać, aż cały kod się skompiluje, a interpretacja pozwala na szybkie testowanie i łatwiejsze znajdowanie błędów.

Pytanie 28

Które z poniżej wymienionych afirmacji najtrafniej charakteryzuje proces interpretacji kodu?

A. Generowanie bibliotek dynamicznych dla programu
B. Tworzenie pliku wykonywalnego
C. Analiza struktury kodu przed tłumaczeniem
D. Tłumaczenie kodu źródłowego na język maszynowy w czasie rzeczywistym
Interpretacja kodu to proces tłumaczenia kodu źródłowego na język maszynowy w czasie rzeczywistym, instrukcja po instrukcji. Jest to charakterystyczne dla języków takich jak Python, JavaScript i Ruby, które używają interpreterów. Dzięki temu program jest wykonywany od razu, bez konieczności wcześniejszego generowania pliku wykonywalnego. Zaletą interpretacji jest szybka analiza i możliwość natychmiastowego testowania kodu, co przyspiesza proces debugowania i prototypowania aplikacji.

Pytanie 29

Który z poniższych przykładów ilustruje deklarację złożonego typu w języku C++?

A. bool status;
B. int wynik = 100;
C. class Student {};
D. float ocena = 4.5;
Deklaracja `class Student {};` w języku C++ przedstawia przykład tworzenia typu złożonego w postaci klasy. Klasa to podstawowy element programowania obiektowego, który pozwala na łączenie danych (pól) i funkcji (metod) w jednej strukturze. Klasy umożliwiają modelowanie rzeczywistych obiektów i ich zachowań, co prowadzi do bardziej zorganizowanego i skalowalnego kodu. Klasy mogą być rozszerzane przez dziedziczenie, co jest kluczową zaletą programowania obiektowego.

Pytanie 30

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

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

Pytanie 31

Jakie narzędzie służy do zarządzania wersjami?

A. Trello
B. Jira
C. Bugzilla
D. Git
Trello – To narzędzie do zarządzania projektami, a nie kontroli wersji. Jira – Służy do śledzenia błędów i zarządzania zadaniami, ale nie do kontroli wersji. Bugzilla – Jest systemem do zarządzania błędami, ale nie obsługuje kontroli wersji kodu.

Pytanie 32

Które z wymienionych działań, które są częścią procesu kreowania prostej galerii zdjęć w formie aplikacji mobilnej, powinno być realizowane przez zespół?

A. Przygotowanie i konfiguracja repozytorium dla projektu
B. Przygotowanie testu jednostkowego dla funkcji przegladajZdjecia()
C. Stworzenie dokumentacji kodu aplikacji
D. Wdrożenie funkcji dodajZdjecie()
Pozostałe odpowiedzi są zadaniami, które w większości przypadków mogą być realizowane indywidualnie, co czyni je zadaniami jednostkowymi. Implementacja funkcji dodajZdjecie() dotyczy konkretnego aspektu programistycznego, który może być wykonany przez jednego dewelopera. Wymaga ona znajomości języka programowania oraz logiki potrzebnej do dodawania zdjęć do galerii, co zazwyczaj nie wymaga współpracy z innymi członkami zespołu. Przygotowanie i skonfigurowanie repozytorium dla projektu natomiast to techniczny proces, który również najczęściej realizuje jedna osoba, odpowiedzialna za ustawienie środowiska pracy. Tworzenie testu jednostkowego dla funkcji przegladajZdjecia() to kolejny krok, który można wykonać samodzielnie, koncentrując się na testowaniu konkretnej funkcji w izolacji, bez potrzeby angażowania innych programistów. W przypadku tych zadań, choć mogą one być częścią większego projektu, to ich realizacja nie wymaga współpracy zespołowej, co sprawia, że nie są to zadania zespołowe.

Pytanie 33

Zgodnie z informacjami zawartymi w ramce, wskaż, który z rysunków ilustruje element przypisany do klasy Badge określonej w bibliotece Bootstrap?

Ilustracja do pytania
A. B
B. C
C. A
D. D
Klasa 'Badge' w Bootstrap jest używana do wyświetlania małych etykietek lub liczników, często w kontekście przycisków lub elementów nawigacyjnych. Badge pomaga wskazać np. liczbę nieprzeczytanych wiadomości, powiadomień lub status danego elementu. Jest to kluczowy element UI, który poprawia przejrzystość interfejsu użytkownika.

Pytanie 34

Który z wymienionych algorytmów jest algorytmem opartym na iteracji?

A. Fibonacci (rekurencyjnie)
B. QuickSort
C. DFS (przeszukiwanie w głąb)
D. BubbleSort
Bubble Sort to klasyczny przykład algorytmu iteracyjnego, który sortuje elementy tablicy poprzez wielokrotne porównywanie i zamianę sąsiadujących elementów. Algorytm ten działa w pętlach, aż wszystkie elementy zostaną odpowiednio uporządkowane. Chociaż jest jednym z najprostszych algorytmów sortowania, jego złożoność O(n^2) czyni go mniej efektywnym dla dużych zbiorów danych. Bubble Sort jest często wykorzystywany w nauczaniu podstaw algorytmiki, ponieważ łatwo zrozumieć jego działanie i implementację. Pomimo niskiej efektywności, bywa stosowany w przypadkach, gdy liczba elementów jest niewielka lub zbiór danych jest wstępnie posortowany.

Pytanie 35

Jakie elementy powinny być ujęte w dokumentacji programu?

A. Szczegóły dotyczące konfiguracji serwera
B. Opis funkcji, klas i zmiennych w kodzie
C. Strategia marketingowa aplikacji
D. Zestawienie błędów zidentyfikowanych w trakcie testów
Opis funkcji, klas i zmiennych w kodzie to kluczowy element dokumentacji programu. Tego rodzaju dokumentacja pozwala na lepsze zrozumienie struktury aplikacji, jej logiki biznesowej oraz wzajemnych zależności pomiędzy poszczególnymi komponentami. Dokumentacja techniczna obejmuje szczegółowe informacje na temat implementacji, interfejsów API, schematów baz danych oraz sposobów integracji z innymi systemami. Dzięki niej programiści mogą szybciej wdrażać się w projekt, a błędy i niejasności są minimalizowane. Kompleksowa dokumentacja zawiera także przykłady użycia poszczególnych funkcji, co dodatkowo ułatwia rozwój i rozbudowę aplikacji. W dobrze prowadzonym projekcie dokumentacja kodu jest na bieżąco aktualizowana, co zwiększa jego przejrzystość i wspiera proces refaktoryzacji.

Pytanie 36

Wynik dodawania liczb binarnych 1101 i 1001 to

A. 10111
B. 10110
C. 1110
D. 1001
1110 – Wynik ten pomija przeniesienie, co skutkuje błędnym dodaniem. 10111 – Jest to wynik błędnego przeniesienia. 1001 – To jedna z liczb wejściowych, a nie wynik dodawania.

Pytanie 37

Jaki typ złośliwego oprogramowania funkcjonuje w tle, zbierając dane o wprowadzanych hasłach?

A. Trojan
B. Keylogger
C. Spyware
D. Adware
Keylogger to takie złośliwe oprogramowanie, które działa w tle i rejestruje wszystkie naciśnięcia klawiszy. To naprawdę niebezpieczne, bo może przechwytywać hasła i inne ważne dane osobowe. Keyloggery mogą się dostawać na komputer na różne sposoby, na przykład przez zainfekowane pliki, złośliwe reklamy albo w ramach innych niebezpiecznych programów. Przykładami takich keyloggerów są Spyrix czy Perfect Keylogger, które mogą monitorować, co robisz na komputerze. Z punktu widzenia bezpieczeństwa, standardy takie jak ISO/IEC 27001 mówią, jak ważna jest ochrona informacji. Dlatego tak istotne jest, żeby użytkownicy mieli świadomość zagrożeń, jakie niosą keyloggery i używali dobrego oprogramowania antywirusowego, żeby chronić swoje urządzenia i dane.

Pytanie 38

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

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

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

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

Pytanie 40

Co następuje, gdy błąd nie zostanie uchwycony przez blok catch?

A. Program kontynuuje działanie, pomijając błąd
B. Instrukcja throw zostanie automatycznie wykreślona
C. Błąd zostanie zignorowany przez kompilator
D. Program zakończy działanie z błędem
Jeśli wyjątek nie zostanie przechwycony przez blok 'catch', program zakończy działanie z błędem i wygeneruje komunikat o nieobsłużonym wyjątku. Jest to domyślne zachowanie w C++ i innych językach obsługujących wyjątki, co ma na celu zapobieganie dalszemu wykonywaniu kodu, który mógłby prowadzić do nieprzewidywalnych rezultatów. Obsługa wyjątków jest kluczowym elementem zapewniania stabilności i bezpieczeństwa aplikacji – brak jej implementacji może prowadzić do awarii programu. Dlatego zaleca się, aby zawsze stosować odpowiednie bloki 'try-catch' wokół kodu, który może generować wyjątki.