Wyniki egzaminu

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

Egzamin zdany!

Wynik: 39/40 punktów (97,5%)

Wymagane minimum: 20 punktów (50%)

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

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. ~pracownik
B. operator==
C. pracownik
D. wypisz
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 2

W jakiej metodzie zarządzania projektami nacisk kładzie się na ograniczenie marnotrawstwa?

A. Waterfall
B. Prototypowy
C. Kanban
D. Scrum
Kanban to metodologia zarządzania projektem, która koncentruje się na minimalizacji marnotrawstwa i optymalizacji przepływu pracy. Kluczowym elementem Kanbanu jest wizualizacja procesu za pomocą tablicy, na której znajdują się zadania w różnych fazach realizacji. Dzięki temu zespół może łatwo identyfikować wąskie gardła i eliminować zbędne procesy. Kanban promuje ciągłe doskonalenie (kaizen) i pozwala na dostosowywanie się do zmieniających się priorytetów bez konieczności reorganizacji całego projektu. Ta metodologia jest szeroko stosowana w branży IT, produkcji oraz w zespołach operacyjnych, które wymagają dużej elastyczności.

Pytanie 3

Jakie narzędzie można wykorzystać do stworzenia mobilnej aplikacji cross-platform w języku C#?

A. środowisko XCode
B. środowisko Android Studio
C. bibliotekę React Native
D. platformę Xamarin
Xamarin to platforma umożliwiająca tworzenie aplikacji mobilnych typu cross-platform w języku C#. Umożliwia programistom tworzenie aplikacji działających na Androidzie i iOS z wykorzystaniem jednego kodu źródłowego. Xamarin integruje się z Visual Studio, co pozwala na efektywne budowanie aplikacji mobilnych w ekosystemie Microsoftu.

Pytanie 4

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

A. Konstruktor
B. Instrukcja warunkowa
C. Funkcja zaprzyjaźniona
D. Metoda statyczna
Konstruktor jest niezbędny do inicjalizacji pól klasy podczas tworzenia nowego obiektu. Bez konstruktora obiekt mógłby zostać utworzony w stanie nieokreślonym, co może prowadzić do błędów w działaniu programu. Konstruktor automatycznie przypisuje wartości do pól lub wykonuje inne niezbędne operacje przygotowawcze. Przykład w C++: `class Samochod { public: Samochod() { marka = "Nieznana"; } }`. W tym przypadku konstruktor ustawia domyślną wartość dla pola `marka`, co eliminuje konieczność ręcznego przypisywania wartości po utworzeniu obiektu.

Pytanie 5

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

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

Pytanie 6

W jakiej sytuacji wykorzystanie stosu będzie korzystniejsze niż lista podczas projektowania zestawu danych?

A. Gdy kolejność przetwarzania danych jest odwrócona (LIFO)
B. Gdy dane muszą być uporządkowane
C. Gdy chcemy usunąć element z końca
D. Gdy ważne jest szybkie znajdowanie elementów
Stos to struktura danych działająca na zasadzie LIFO (Last In First Out), co oznacza, że ostatni dodany element jest przetwarzany jako pierwszy. Jest to niezwykle efektywne rozwiązanie w przypadkach, gdy dane muszą być przetwarzane w odwrotnej kolejności niż były dodane. Stos jest szeroko wykorzystywany w implementacji algorytmów rekurencyjnych, obsłudze wywołań funkcji oraz w systemach zarządzania historią (np. w przeglądarkach internetowych lub edytorach tekstu). Stos zapewnia szybki dostęp do ostatnio dodanych danych i efektywne zarządzanie pamięcią, co czyni go niezastąpionym w wielu aplikacjach informatycznych.

Pytanie 7

Który z wymienionych poniżej wzorców projektowych można zakwalifikować jako wzorzec strukturalny?

A. Metoda szablonowa (Template method)
B. Fabryka abstrakcyjna (Abstract Factory)
C. Fasada (Facade)
D. Obserwator (Observer)
Fasada (Facade) to wzorzec projektowy, który jest przykładem wzorca strukturalnego. Umożliwia on tworzenie uproszczonego interfejsu dla bardziej złożonego systemu, integrując wiele podsystemów i dostarczając jednolity punkt dostępu. Strukturalne wzorce projektowe skupiają się na organizacji klas i obiektów, a Fasada doskonale wpisuje się w tę kategorię, redukując złożoność i zwiększając czytelność kodu. Wzorzec ten jest szeroko stosowany w architekturze aplikacji, gdzie występuje potrzeba uproszczenia dostępu do skomplikowanych bibliotek lub systemów wewnętrznych.

Pytanie 8

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

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

Pytanie 9

Na podstawie zamieszczonego fragmentu kodu można stwierdzić, że element o nazwie rysunek jest

Ilustracja do pytania
A. konstruktorem
B. polem w klasie
C. metodą w klasie
D. obiektem
Zobacz, 'rysunek' w tym kodzie to metoda klasy. Skąd to wiem? Po tym, że mamy nawiasy. Metody klasy są super przydatne, bo pozwalają na robienie różnych rzeczy z obiektami albo zwracanie wyników na zewnątrz.

Pytanie 10

Wartości składowych RGB koloru #AA41FF zapisane w systemie szesnastkowym po przekształceniu na system dziesiętny są odpowiednio

A. 160, 64, 255
B. 170, 65, 255
C. 170, 64, 255
D. 160, 65, 255
Kolor #AA41FF w formacie RGB składa się z trzech komponentów: czerwony (AA - 170), zielony (41 - 65) i niebieski (FF - 255). Przekształcenie wartości szesnastkowych na dziesiętne pozwala na precyzyjne odwzorowanie koloru w różnych aplikacjach graficznych. Tego typu konwersje są kluczowe w projektowaniu stron internetowych i aplikacji, gdzie kolorystyka ma istotne znaczenie dla UX/UI.

Pytanie 11

Które z wymienionych stwierdzeń najtrafniej charakteryzuje klasę bazową?

A. Klasa, która dziedziczy z klasy pochodnej
B. Klasa, która nie może być dziedziczona
C. Klasa, która zawsze zawiera metody wirtualne
D. Klasa, która zapewnia wspólne atrybuty i metody dla klas pochodnych
Klasa bazowa to klasa, która dostarcza wspólne pola i metody dla klas pochodnych. Definiuje ogólną funkcjonalność, która może być rozszerzana lub modyfikowana przez klasy dziedziczące. Dzięki temu programowanie obiektowe umożliwia wielokrotne wykorzystanie kodu, co prowadzi do jego większej modularności i czytelności. Klasa bazowa często zawiera metody wirtualne, które mogą być nadpisywane przez klasy pochodne, co pozwala na dostosowanie funkcjonalności do konkretnych potrzeb. Przykładem jest klasa 'Pojazd', która posiada metody takie jak 'Jedz()' czy 'Zatrzymaj()', a klasy pochodne, np. 'Samochód' lub 'Rower', rozszerzają tę funkcjonalność.

Pytanie 12

Jaką kategorię własności intelektualnej reprezentują znaki towarowe?

A. Autorskie prawa majątkowe
B. Prawa pokrewne
C. Własność przemysłowa
D. Dobra niematerialne
Znaki towarowe należą do kategorii własności przemysłowej. Ochrona znaków towarowych pozwala firmom na zabezpieczenie ich brandingu, logotypów oraz nazw produktów przed nieuprawnionym wykorzystaniem przez konkurencję. Rejestracja znaku towarowego daje właścicielowi prawo do wyłącznego używania go w celach komercyjnych i przeciwdziałania naruszeniom. Własność przemysłowa obejmuje także patenty, wzory przemysłowe i oznaczenia geograficzne, stanowiąc kluczowy element strategii ochrony marki oraz wartości firmy na rynku międzynarodowym.

Pytanie 13

Jaką właściwość ma sieć synchroniczna?

A. Przekazywanie danych zachodzi w sposób niesystematyczny
B. Gwarantuje większą elastyczność w przesyłaniu danych
C. Transmisja danych odbywa się w wyznaczonych interwałach czasowych
D. Nie jest konieczna synchronizacja zegarów
Sieć synchroniczna charakteryzuje się tym, że transmisja danych odbywa się w ustalonych odstępach czasu, co oznacza, że wszystkie urządzenia w sieci są zsynchronizowane do jednego zegara. Taki sposób przesyłania danych pozwala na precyzyjne określenie momentu, w którym dane są wysyłane i odbierane, co redukuje opóźnienia i błędy w komunikacji. Przykładem sieci synchronicznej jest system TDM (Time Division Multiplexing), który dzieli czas na różne sloty, przydzielając każdy slot konkretnemu użytkownikowi lub urządzeniu. Dzięki temu każdy uczestnik sieci ma gwarancję, że w swoim czasie dostanie dostęp do medium transmisyjnego. Standardy takie jak SONET (Synchronous Optical Network) i SDH (Synchronous Digital Hierarchy) są przykładami technologii, które wykorzystują synchronizację do efektywnego przesyłania danych na dużych odległościach. Takie podejście jest powszechnie stosowane w telekomunikacji, gdzie wysoka wydajność i niezawodność transmisji są kluczowe dla jakości usług.

Pytanie 14

Jakie narzędzie najlepiej sprawdza się w przekształcaniu liczby szesnastkowej na binarną?

A. Aplikacja internetowa
B. Program do arkuszy kalkulacyjnych
C. Kalkulator programisty
D. Program do edycji tekstu
Kalkulator programisty jest najbardziej odpowiednim narzędziem do konwersji liczby szesnastkowej na binarną ze względu na swoje wyspecjalizowane funkcje matematyczne i programistyczne. Narzędzia te umożliwiają użytkownikom łatwe przekształcanie różnych systemów liczbowych, w tym konwersji z systemu szesnastkowego (hex) na system binarny. Kalkulatory programistyczne często zawierają dedykowane opcje dla konwersji liczbowej, co pozwala na szybkie i dokładne uzyskanie wyników bez potrzeby stosowania skomplikowanych algorytmów lub wzorów. Na przykład, aby przekształcić liczbę szesnastkową '1A' na binarną, użytkownik wprowadza '1A' do kalkulatora, a wynik '00011010' zostaje automatycznie wygenerowany. Dodatkowo, wiele kalkulatorów programistycznych jest zgodnych z międzynarodowymi standardami, co zapewnia ich wiarygodność w obliczeniach. Warto również zauważyć, że kalkulatory programistyczne mogą obsługiwać konwersje z różnych systemów liczbowych, co czyni je wszechstronnym narzędziem w pracy z danymi cyfrowymi i kodowaniem. Dzięki temu, kalkulator programisty stanowi idealne rozwiązanie dla programistów i inżynierów, którzy regularnie pracują z różnymi formatami danych.

Pytanie 15

Dlaczego w wyniku działania tego kodu w języku C++ na ekranie pojawiła się wartość O zamiast 50?

Ilustracja do pytania
A. Funkcja zwraca wartość, chociaż nie powinna jej zwracać
B. Niepoprawnie zdefiniowano działanie wewnątrz funkcji
C. Zmienna x powinna być inicjowana wartością równą 1, a nie O
D. Argument funkcji został przekazany przez wartość, a nie przez referencję
W C++ funkcje standardowo dostają argumenty przez wartość, co znaczy, że dostają kopię tego, co do nich wysyłamy. W tym kodzie, jak widzisz, zmienna x idzie do funkcji oblicz jako kopia. To sprawia, że jakiekolwiek zmiany w x w tej funkcji nie mają wpływu na x w funkcji main. Dlatego po wywołaniu oblicz(x) wartość x w main zostaje taka sama. Jeśli chcesz, żeby zmiany wewnątrz funkcji były widoczne w funkcji, która ją wywołuje, to musisz użyć przekazywania przez referencję. Robisz to, dodając & w deklaracji parametru funkcji, czyli robisz to tak: void oblicz(int &x). Przekazywanie przez referencję to dobra praktyka, gdy chcesz, aby funkcja mogła zmieniać wartość argumentu. A dodatkowo jest to efektywniejsze, bo unikasz kopiowania danych, co bywa kosztowne, szczególnie przy dużych strukturach danych.

Pytanie 16

Jaki jest zasadniczy cel ataku phishingowego?

A. Uniemożliwienie dostępu do usług internetowych
B. Kradzież haseł z pamięci operacyjnej urządzenia
C. Zbieranie danych osobowych za pomocą podszywających się stron lub wiadomości
D. Zakłócanie pracy sieci przez nadmiarowe zapytania
Głównym celem ataku phishingowego jest przejęcie danych osobowych ofiary, co realizowane jest poprzez wykorzystanie fałszywych stron internetowych lub wiadomości. Atakujący tworzą atrakcyjne i wiarygodne kopie legalnych stron, często podszywając się pod znane instytucje bankowe, portale społecznościowe czy serwisy e-commerce. Użytkownik, nieświadomy zagrożenia, wprowadza swoje dane logowania, numery kart kredytowych lub inne wrażliwe informacje, które trafiają w ręce cyberprzestępców. Aby ułatwić ten proces, phisherzy często wykorzystują techniki inżynierii społecznej, takie jak fałszywe powiadomienia o konieczności weryfikacji konta. Przykłady skutecznych ataków phishingowych obejmują kampanie wysyłania e-maili, które informują użytkowników o rzekomych problemach z kontem, kierując ich na podszyte strony. Standardy bezpieczeństwa, takie jak DMARC, SPF i DKIM, są kluczowe dla ochrony przed tego rodzaju atakami, jednak ich brak lub niewłaściwe wdrożenie zwiększa podatność na phishing.

Pytanie 17

Jaką rolę pełni debugger w trakcie programowania?

A. Do wykrywania błędów w czasie działania programu
B. Do konwersji kodu źródłowego na język maszynowy
C. Do kontrolowania wersji kodu źródłowego
D. Do automatycznego generowania dokumentacji projektu
Debugger to takie narzędzie, które pomaga programistom w znajdowaniu błędów i śledzeniu, co się dzieje z programem, kiedy go uruchamiamy. Można go zatrzymać w dowolnym momencie, co nazywamy breakpoints, i wtedy można zobaczyć, jakie zmienne mają jakie wartości. Dzięki temu można łatwiej dostrzegać błędy logiczne czy składniowe. Wydaje mi się, że to naprawdę ważne narzędzie w pracy każdego programisty, bo ułatwia życie!

Pytanie 18

Jaki model zarządzania projektami przewiduje, że wszystkie etapy są realizowane jeden po drugim, bez możliwości wrócenia do wcześniejszych faz?

A. Metodyki zwinne (Agile)
B. Model spiralny
C. Model kaskadowy (waterfall)
D. Model przyrostowy
Model kaskadowy (Waterfall) zakłada, że każda faza projektu jest realizowana sekwencyjnie, bez możliwości powrotu do wcześniejszych etapów. Każda faza musi zostać zakończona przed rozpoczęciem kolejnej, co sprawia, że model ten jest przewidywalny i dobrze nadaje się do projektów o jasno określonych wymaganiach. Dzięki temu ryzyko błędów jest minimalizowane na wczesnym etapie, co zwiększa stabilność projektu. Waterfall jest często stosowany w projektach infrastrukturalnych i rządowych, gdzie istotna jest dokładność i zgodność z pierwotnym planem.

Pytanie 19

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

A. generatora GUI przekształcającego kod do języka XAML
B. debuggera analizującego wykonujący kod
C. kompilatora dla interfejsu graficznego
D. generatora kodu java
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 20

Które z wymienionych sformułowań najlepiej definiuje oprogramowanie typu ransomware?

A. Oprogramowanie uniemożliwiające dostęp do danych w celu wymuszenia zapłaty
B. Programy zbierające prywatne dane bez zgody użytkownika
C. Oprogramowanie stosowane do realizacji ataków DDoS
D. Złośliwe aplikacje wyświetlające reklamy
Oprogramowanie typu ransomware to rodzaj złośliwego oprogramowania, które ma na celu zablokowanie dostępu do danych użytkownika, a następnie wymuszenie okupu w zamian za ich przywrócenie. Ransomware działa na zasadzie szyfrowania plików na zainfekowanym urządzeniu, co uniemożliwia użytkownikowi korzystanie z danych. Po dokonaniu szyfrowania, ofiara otrzymuje wiadomość z żądaniem okupu, zazwyczaj w kryptowalutach, które mają na celu anonimowość transakcji. Przykłady ransomware to oprogramowanie takie jak WannaCry oraz Petya, które spowodowały globalne ataki, skutkując znacznymi stratami finansowymi dla wielu organizacji. Zgodnie z definicjami i standardami, takimi jak NIST (National Institute of Standards and Technology), ransomware jest klasyfikowane jako jedno z najpoważniejszych zagrożeń dla bezpieczeństwa informacji. Warto również zauważyć, że ransomware rozwija się, a jego twórcy stosują różne techniki, aby zwiększyć skuteczność ataków, takie jak wykorzystywanie luk w oprogramowaniu oraz phishing, aby zainfekować systemy użytkowników.

Pytanie 21

Wskaż odpowiedź, która używa parafrazowania jako metodę aktywnego słuchania, gdy klient mówi: "Interesuje mnie aplikacja, która działa szybko, niezależnie od tego, czy korzysta z niej kilku czy tysiąc użytkowników"?

A. Czuję pewne wątpliwości w Pani głosie. Czy mogę zadać kilka pytań?
B. Jeśli dobrze zrozumiałam, chodzi o aplikację, która efektywnie obsługuje różne obciążenia
C. Dlaczego Pani potrzebuje takiej aplikacji?
D. Ilu użytkowników planuje z niej skorzystać?
Parafraza to świetna technika, która pomaga zrozumieć, co rozmówca ma na myśli. Jak w tym przypadku – odpowiedź, która mówi: 'Jeśli dobrze rozumiem, chodzi o aplikację, która radzi sobie z różnym obciążeniem,' naprawdę dobrze oddaje to, co klient próbował przekazać. Klient podkreśla, że ważne jest dla niego, aby aplikacja była wydajna, niezależnie od tego, ile osób z niej korzysta. Użycie terminu 'radzi sobie z obciążeniem' jest trafne, bo dotyczy zdolności systemu do przystosowywania się do zmieniającej się liczby użytkowników i ich aktywności. To pokazuje, że konsultant dobrze zrozumiał potrzeby klienta i otwiera możliwości do dalszej rozmowy o technicznych detalach aplikacji, a to jest kluczowe w sprzedaży i budowaniu dobrych relacji z klientem.

Pytanie 22

Jaki framework umożliwia tworzenie interaktywnych interfejsów użytkownika w języku TypeScript?

A. ASP.NET Core
B. jQuery
C. Django
D. Angular
Angular to popularny framework oparty na TypeScript, który umożliwia tworzenie dynamicznych i rozbudowanych interfejsów użytkownika. Jest rozwijany przez Google i używany do budowy aplikacji typu Single Page Applications (SPA), które cechują się płynnością działania i interaktywnością. Angular oferuje bogaty ekosystem narzędzi wspierających programistów, takich jak Angular CLI, który pozwala na szybkie generowanie komponentów, serwisów i modułów. Wsparcie dla TypeScript oznacza, że Angular pozwala na wykorzystywanie typów, interfejsów oraz zaawansowanych narzędzi do refaktoryzacji kodu, co przekłada się na większą czytelność i bezpieczeństwo aplikacji. Dzięki modularnej architekturze Angular wspiera tworzenie aplikacji, które są łatwe w utrzymaniu i skalowaniu. Jego dwukierunkowe wiązanie danych (two-way data binding) oraz możliwość dynamicznej aktualizacji widoków czynią go jednym z liderów na rynku frameworków frontendowych.

Pytanie 23

Zgodnie z dokumentacją dotyczącą menu Navbar z biblioteki Bootstrap 4, w celu stworzenia menu należy zdefiniować listę

Ilustracja do pytania
A. < ul class="navbar-nav" > ... < /ul>
B. < ul class="a, .nav-item" > ... < /ul>
C. < ol class="navbar-nav" > ... < /ol>
D. < ol class="a, .nav-item" > ... < /ol>
Aby utworzyć menu nawigacyjne w Bootstrap 4, należy użyć listy <ul class="navbar-nav">. Tego typu struktura pozwala na tworzenie dynamicznych i responsywnych pasków nawigacyjnych, które automatycznie dostosowują się do różnych rozdzielczości ekranu.

Pytanie 24

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

A. robak
B. wirus
C. rootkit
D. keylogger
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

Jakie zastosowanie ma język Swift w zakresie aplikacji mobilnych?

A. Do tworzenia aplikacji na system Android
B. Do zarządzania bazami danych w aplikacjach mobilnych
C. Do przeprowadzania testów aplikacji mobilnych
D. Do tworzenia aplikacji na system iOS
Swift to język programowania stworzony przez Apple, który służy do tworzenia aplikacji na system iOS, macOS, watchOS i tvOS. Swift został zaprojektowany z myślą o nowoczesnym i bezpiecznym programowaniu, eliminując wiele typowych błędów spotykanych w Objective-C, takich jak null pointer exceptions. Dzięki swojej wydajności, przejrzystej składni i integracji z XCode, Swift stał się standardem w ekosystemie Apple. Język wspiera interaktywną platformę Playground, co umożliwia szybkie testowanie kodu, a także pełną integrację z narzędziami Apple, co czyni go niezbędnym narzędziem dla deweloperów aplikacji na iPhone'y i iPady.

Pytanie 26

Jakie są kluczowe różnice pomiędzy strukturą (struct) a unią (union) w języku C?

A. Struktura wymaga więcej miejsca w pamięci niż unia
B. Unia nie jest obsługiwana przez kompilatory współczesnych języków
C. Unia umożliwia dynamiczne przypisywanie typów danych, struktura natomiast nie
D. Struktura przechowuje wiele wartości równocześnie, unia tylko jedną
Główna różnica między strukturą ('struct') a unią ('union') w języku C polega na sposobie przechowywania danych. Struktura przechowuje wszystkie pola jednocześnie, przydzielając każdemu z nich osobne miejsce w pamięci, natomiast unia używa wspólnej przestrzeni pamięci dla wszystkich swoich pól – w danym momencie można przechowywać tylko jedną wartość. Unia jest bardziej efektywna pod względem pamięci, ale mniej wszechstronna, ponieważ zmiana wartości jednego pola nadpisuje pozostałe. Struktury są powszechnie wykorzystywane w aplikacjach, gdzie konieczne jest przechowywanie wielu niezależnych danych, podczas gdy unie są używane do oszczędzania pamięci.

Pytanie 27

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

Ilustracja do pytania
A. Są przeciążone.
B. Zawierają błąd, ponieważ nazwy metod powinny być różne.
C. Służą jako konstruktory w zależności od liczby argumentów.
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 28

Który z warunków logicznych weryfikuje, czy zmienna całkowita x jest dodatnią liczbą składającą się z dwóch cyfr i jest podzielna przez 4?

A. (x > 9 && x < 100) || (x % 4 == 0)
B. (x > 9 && x < 100) && (x % 4 == 0)
C. (x > 0 && x < 100) || (x / 4 == 0)
D. (x > 9 || x < 100) && (x / 4 == 0)
Warunek (x > 9 && x < 100) && (x % 4 == 0) sprawdza, czy zmienna x jest dodatnią liczbą dwucyfrową podzielną przez 4. Dzięki operatorom logicznym && programista może precyzyjnie określić, czy liczba mieści się w odpowiednim zakresie i spełnia wymagania dotyczące podzielności. Tego typu warunki są niezbędne przy filtrowaniu danych i walidacji użytkowych wejść.

Pytanie 29

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 } finally { obsługa }
C. try { kod } catch { obsługa }
D. try { kod } except { 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 30

Cytat przedstawia charakterystykę metodyki RAD. Pełne znaczenie tego skrótu można przetłumaczyć na język polski jako:

Ilustracja do pytania
A. środowisko szybkiego rozwoju aplikacji
B. środowisko refaktoryzacji aplikacji
C. zintegrowane środowisko programistyczne
D. prototypowanie wsparte testami jednostkowymi
RAD (Rapid Application Development) to metodyka szybkiego rozwoju aplikacji, kładąca nacisk na szybkie prototypowanie, minimalizację dokumentacji i bliską współpracę z klientem. Celem RAD jest skrócenie czasu potrzebnego na dostarczenie działającego oprogramowania poprzez iteracyjne tworzenie i testowanie prototypów. Taka metodologia jest często stosowana w dynamicznych projektach, gdzie wymagania mogą się zmieniać.

Pytanie 31

Jakie elementy powinny być uwzględnione w scenariuszu testów aplikacji?

A. Dokładne wytyczne dotyczące realizacji kodu
B. Dokumentacja techniczna oprogramowania
C. Strategia wdrożenia aplikacji w środowisku produkcyjnym
D. Zestaw kroków do testowania, oczekiwanych rezultatów oraz warunków początkowych
Scenariusz testowy aplikacji powinien zawierać szczegółowy opis kroków testowych, oczekiwane wyniki oraz warunki wstępne, które muszą być spełnione przed rozpoczęciem testu. Scenariusz testowy to kluczowy dokument w procesie testowania oprogramowania, który pozwala na systematyczne i dokładne sprawdzenie, czy aplikacja działa zgodnie z oczekiwaniami. Uwzględnienie kroków testowych pozwala na replikację testów, a opis warunków wstępnych zapewnia, że test jest przeprowadzany w odpowiednim środowisku.

Pytanie 32

Zamieszczony kawałek kodu w języku C# tworzy hasło. Wskaż prawdziwe stwierdzenie dotyczące cech tego hasła?

Ilustracja do pytania
A. Może zawierać małe oraz wielkie litery, cyfry i znaki specjalne
B. Może zawierał małe i wielkie litery oraz cyfry
C. Ma maksymalną długość 7 znaków, co ustala zmienna i
D. Ma 8 znaków lub więcej i zawiera małe oraz wielkie litery, a także cyfry
Fragment programu w języku C# generuje hasło, które zawiera małe i wielkie litery oraz cyfry. W kodzie widzimy, że zmienna pulaZnakow zawiera wszystkie małe litery alfabetu, wszystkie wielkie litery oraz cyfry od 0 do 9. Zmienna dlPuli przechowuje długość ciągu znaków, co umożliwia losowe wybieranie znaków z pełnego zakresu dostępnych znaków. W pętli for odbywa się iteracja 8 razy, co oznacza, że każde generowane hasło ma długość 8 znaków. Każdy znak jest losowo wybierany z puli, co zapewnia różnorodność i brak uprzedzeń w doborze znaków. Warto również zwrócić uwagę na praktyczne użycie klasy Random, która jest standardem w przypadkowej generacji danych w C#. Takie podejście jest zgodne z najlepszymi praktykami, gdzie hasła powinny mieć różnorodne znaki, co zwiększa ich siłę i trudność złamania. Dobrym pomysłem jest również dodanie symboli specjalnych dla jeszcze większego bezpieczeństwa, co można łatwo zaimplementować modyfikując pule dostępnych znaków.

Pytanie 33

Jaką rolę odgrywa interpreter w kontekście programowania?

A. Zoptymalizowuje wydajność aplikacji w środowisku produkcyjnym
B. Generuje plik wykonywalny dla systemu operacyjnego
C. Przekłada kod źródłowy na język maszynowy w trakcie działania programu
D. Łączy kod źródłowy z zewnętrznymi bibliotekami
Interpreter tłumaczy kod źródłowy na język maszynowy instrukcja po instrukcji, co oznacza, że każda linia kodu jest analizowana i wykonywana na bieżąco. Dzięki temu programy interpretowane, takie jak te w Pythonie, Ruby czy JavaScript, mogą być szybko testowane i uruchamiane bez konieczności wcześniejszej kompilacji. Interpretacja pozwala na elastyczność w procesie rozwoju, ponieważ zmiany w kodzie są widoczne natychmiast po zapisaniu pliku. To czyni interpreter idealnym narzędziem do prototypowania i budowania aplikacji w dynamicznych środowiskach.

Pytanie 34

Która metoda w obrębie klasy jest uruchamiana automatycznie podczas tworzenia kopii obiektu?

A. Metoda statyczna
B. Konstruktor kopiujący
C. Destruktor
D. Metoda zaprzyjaźniona
Konstruktor kopiujący to taka specyficzna metoda w klasie, która działa, kiedy robimy nowy obiekt jako kopię już istniejącego. Dzięki temu możemy skopiować wartości pól z jednego obiektu do drugiego. To naprawdę ważne, zwłaszcza gdy mówimy o zarządzaniu pamięcią. Na przykład w C++ może to wyglądać tak: `Samochod(const Samochod &inny) { marka = inny.marka; przebieg = inny.przebieg; }`. Konstruktor kopiujący ma na celu uniknięcie problemów związanych z tzw. płytkim kopiowaniem, co może prowadzić do różnych błędów, jak wielokrotne zwolnienie tej samej pamięci. Generalnie mówiąc, jest to kluczowy mechanizm, który pomaga utrzymać bezpieczeństwo i poprawność działania naszej aplikacji.

Pytanie 35

Jakie jest główne zadanie ochrony danych osobowych?

A. Udostępnianie danych osobowych w celach marketingowych
B. Zabezpieczenie danych osobowych przed nieautoryzowanym dostępem i ich wykorzystaniem
C. Utrudnianie działalności organom ścigania
D. Gwarantowanie anonimowości dla internautów
Ochrona danych osobowych przed nieuprawnionym dostępem i wykorzystaniem to podstawowy cel ochrony danych osobowych. Zasady ochrony prywatności, takie jak RODO (GDPR), zapewniają użytkownikom prawo do kontroli nad swoimi danymi i decydowania, kto może je przetwarzać. Firmy i organizacje muszą wdrażać środki techniczne oraz organizacyjne, aby zabezpieczyć dane przed wyciekiem, kradzieżą i nadużyciami. Przestrzeganie tych zasad nie tylko chroni jednostki, ale również buduje zaufanie klientów do przedsiębiorstw.

Pytanie 36

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 37

Jakiego rodzaju zmiennej użyjesz w C++, aby przechować wartość "true"?

A. bool
B. tekst
C. liczba całkowita
D. liczba zmiennoprzecinkowa
Typ danych 'bool' w języku C++ jest przeznaczony do przechowywania wartości 'true' lub 'false'. Deklaracja 'bool isReady = true;' to przykład poprawnego przypisania wartości logicznej do zmiennej. Typ boolean jest kluczowy w warunkach decyzyjnych, pętlach i operacjach porównawczych. W programowaniu typ 'bool' jest wykorzystywany do kontroli przepływu programu, obsługi wyjątków oraz sprawdzania poprawności danych. Użycie booleanów w kodzie zwiększa jego czytelność i pozwala na bardziej przejrzyste budowanie logiki aplikacji.

Pytanie 38

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

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

Pytanie 39

Który z podanych terminów najlepiej odnosi się do składnika statycznego w klasie?

A. Pole lub metoda, która jest przypisana do klasy, a nie do jej instancji
B. Funkcja, która wywołuje destruktor danej klasy
C. Zmienna lokalna wewnątrz danej klasy
D. Metoda z dostępem ograniczonym tylko do tej samej klasy
Składnik statyczny klasy to pole lub metoda, która należy do klasy jako całości, a nie do konkretnego obiektu. Oznacza to, że istnieje tylko jedna kopia składnika statycznego współdzielona przez wszystkie obiekty tej klasy. Przykład w C++: `class Licznik { public: static int liczbaObiektow; }`. Zmienna `liczbaObiektow` przechowuje liczbę utworzonych instancji klasy i jest wspólna dla wszystkich obiektów. Składniki statyczne są często używane do implementacji liczników, zarządzania zasobami lub przechowywania danych globalnych w obrębie klasy.

Pytanie 40

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

A. free()
B. sizeof()
C. malloc()
D. delete[]
Funkcja 'malloc()' w języku C i C++ służy do dynamicznego alokowania pamięci dla tablic i innych struktur danych. Jest to kluczowa funkcja pozwalająca na przydzielenie określonej ilości bajtów w czasie wykonywania programu, co zwiększa elastyczność zarządzania pamięcią. Używając 'malloc()', programista może utworzyć tablicę o zmiennym rozmiarze, który nie musi być znany w czasie kompilacji. Dynamiczne alokowanie pamięci jest powszechnie stosowane w aplikacjach wymagających dużych ilości danych lub wtedy, gdy konieczne jest efektywne wykorzystanie zasobów systemowych.