Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 12 stycznia 2025 20:09
  • Data zakończenia: 12 stycznia 2025 20:47

Egzamin zdany!

Wynik: 31/40 punktów (77,5%)

Wymagane minimum: 20 punktów (50%)

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

W językach C++ bądź C# termin virtual można wykorzystywać w kontekście

A. funkcji zaprzyjaźnionych
B. destruktorów
C. metod klasy
D. atrybutów klasy
W językach C++ i C# słowo kluczowe 'virtual' można stosować do metod klasy, co umożliwia ich nadpisanie w klasach pochodnych. Pozwala to na implementację polimorfizmu, co jest kluczowym elementem programowania obiektowego.

Pytanie 2

Jaki numer telefonu należy wybrać, aby skontaktować się z pogotowiem ratunkowym w Polsce?

A. 998
B. 997
C. 113
D. 112
Numer 997 łączy bezpośrednio z policją, 998 ze strażą pożarną, a 113 nie jest numerem alarmowym w Polsce. Choć numery 997 i 998 są ważne, to numer 112 jest bardziej wszechstronny, umożliwiając kontakt z wszystkimi służbami jednocześnie, co jest kluczowe w sytuacjach kryzysowych.

Pytanie 3

Jaki język programowania został stworzony z myślą o tworzeniu aplikacji na system Android?

A. Swift
B. Java
C. Objective-C
D. Python
Swift? To język, który Apple wymyśliło dla swoich aplikacji na iOS i macOS, więc nie ma go w Androidzie. Objective-C też jest używany do aplikacji Apple, ale na Androida nie zadziała. Python jest super i bardzo uniwersalny, ale nie jest językiem, który na Androidzie działa natywnie – są co prawda frameworki, jak Kivy, które pozwalają na pisanie aplikacji w Pythonie, ale to nie jest standard dla Androida.

Pytanie 4

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

A. Przycisk umieszczony w przypadkowym miejscu aplikacji
B. Brak opcji cofnięcia już wykonanej akcji
C. Użycie czytelnych czcionek i intuicyjnego układu elementów
D. Zastosowanie jedynie jednego koloru w całym interfejsie
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 5

Które z wymienionych stwierdzeń najtrafniej charakteryzuje WPF?

A. Biblioteka do obróbki danych w Pythonie
B. Framework przeznaczony do budowy aplikacji stacjonarnych w systemie Windows
C. Framework przeznaczony do budowy aplikacji internetowych
D. Framework umożliwiający zarządzanie urządzeniami IoT
No dobra, WPF to framework, którego używamy, żeby robić aplikacje na Windowsa. Jest częścią platformy .NET i super się nadaje do tworzenia ładnych interfejsów z użyciem XAML, co jest takim językiem, który pozwala na zaprojektowanie interfejsu. Dzięki WPF możemy korzystać z fajnych animacji i ogólnie mieć niezłe wizualizacje. W dodatku, wspiera model MVVM, co ułatwia rozdzielenie logiki aplikacji od tego, co widzi użytkownik. Także w wielu firmach, gdzie potrzebna jest zaawansowana grafika, WPF jest chętnie wykorzystywane.

Pytanie 6

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 7

Błędy w interpretacji kodu stworzonego za pomocą React.js lub Angular można wykryć dzięki

A. wbudowanemu debuggerowi w danym środowisku
B. konsoli przeglądarki internetowej
C. narzędziom zainstalowanym po stronie serwera aplikacji
D. kompilatorowi języka JavaScript
Konsola przeglądarki to naprawdę super narzędzie do śledzenia błędów w JavaScript, a szczególnie przydatna jest, gdy piszemy coś w React.js albo Angular. Dzięki niej możesz łatwo sprawdzać logi i błędy, a nawet na żywo testować różne fragmenty swojego kodu. To naprawdę szybki sposób, żeby znaleźć problemy, bez potrzeby grzebania w całym kodzie aplikacji.

Pytanie 8

W pokazanych fragmentach kodu zdefiniowano funkcję pod nazwą fun1. W tej funkcji należy zaimplementować obsługę

Ilustracja do pytania
A. naciśnięcia przycisku zatwierdzającego dialog
B. usunięcia kontrolek z pamięci RAM
C. inicjacji elementów interfejsu użytkownika
D. aplikacji po wystąpieniu zdarzenia utraty focusa przez pole opcji
Obsługa zdarzeń utraty focusa dotyczy pól tekstowych i formularzy, a nie przycisków zatwierdzających dialog. Inicjalizacja elementów interfejsu użytkownika jest wykonywana na etapie ładowania aplikacji, a nie w odpowiedzi na interakcję z przyciskiem. Usuwanie kontrolek z pamięci jest ważnym elementem zarządzania zasobami, ale nie ma związku z obsługą zdarzeń przycisków dialogowych. Każda z tych operacji dotyczy innego etapu cyklu życia aplikacji i nie odnosi się bezpośrednio do zatwierdzania danych przez użytkownika.

Pytanie 9

Który z języków programowania jest powszechnie stosowany do tworzenia interfejsów użytkownika przy użyciu XAML?

A. C#
B. Objective-C
C. C++
D. Java
C# to język programowania szeroko stosowany w tworzeniu aplikacji desktopowych, w tym do budowy interfejsów użytkownika przy użyciu XAML. XAML (Extensible Application Markup Language) to język znaczników wykorzystywany w środowisku WPF (Windows Presentation Foundation) oraz UWP (Universal Windows Platform) do projektowania graficznych interfejsów użytkownika. C# i XAML doskonale się uzupełniają, pozwalając na tworzenie nowoczesnych, interaktywnych aplikacji desktopowych, w których logika (C#) jest oddzielona od warstwy wizualnej (XAML). Dzięki tej separacji możliwe jest szybkie prototypowanie i łatwa rozbudowa aplikacji, co czyni je preferowanym wyborem dla deweloperów pracujących w ekosystemie Microsoftu.

Pytanie 10

Jak zostanie przedstawiony poniższy kod XAML?

Ilustracja do pytania
A. Rysunek 3
B. Rysunek 2
C. Rysunek 4
D. Rysunek 1
W przedstawionym kodzie XAML widoczna jest struktura składająca się z kilku elementów UI ułożonych w pionowym StackLayout co skutkuje wyświetleniem ich w pionowej kolejności. Pierwszym elementem jest Entry z placeholderem Imię a kolejnym Entry z placeholderem Nazwisko co determinuje obecność dwóch pól tekstowych tak jak w Rysunku 4. Następnie w kodzie znajduje się poziomy StackLayout z etykietą Zgoda RODO i przełącznikiem ustawionym na wartość true co oznacza że przełącznik jest domyślnie włączony. To również odpowiada widokowi na Rysunku 4. Kolejny element to Slider z ustawionymi kolorami MinimumTrackColor i MaximumTrackColor co pozwala na zmianę koloru paska suwaka co również jest widoczne w Rysunku 4. Na końcu znajduje się Button z tekstem Zapisz i jest to jedyny przycisk w całym układzie co także zgadza się z Rysunkiem 4. Rozumienie kodu XAML i jego renderowania jest kluczowe w tworzeniu aplikacji mobilnych ponieważ pozwala na precyzyjne określenie wyglądu i funkcjonalności interfejsu użytkownika i jest zgodne z najlepszymi praktykami w projektowaniu UI.

Pytanie 11

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

A. string
B. char
C. float
D. boolean
Typ 'char' to przykład typu znakowego, który przechowuje pojedynczy znak (litera, cyfra, symbol). W językach takich jak C++, Java czy C, typ 'char' zajmuje jeden bajt pamięci i jest podstawą do obsługi operacji tekstowych oraz przetwarzania danych wejściowych. Typy znakowe są często wykorzystywane do manipulacji łańcuchami tekstowymi, przechowywania kodów ASCII i pracy z danymi wejściowymi. Znaki są podstawowym elementem budowy tekstów i mogą być łączone w tablice (ciągi znaków) lub przetwarzane indywidualnie.

Pytanie 12

Fragment kodu w języku JavaScript to

Ilustracja do pytania
A. definicja zmiennej typu tablicowego
B. definicja funkcji strzałkowej
C. prototyp metody klasy
D. prototyp interfejsu
Kod w JavaScript opisuje definicję funkcji strzałkowej, która jest nowoczesnym i bardziej zwięzłym sposobem definiowania funkcji. Funkcje strzałkowe mają też specyficzne zachowanie w kontekście 'this', co czyni je często preferowanymi przy pracy z obiektami i metodami callback.

Pytanie 13

Jakie środowisko jest natywne do tworzenia aplikacji desktopowych w języku C#?

A. Eclipse
B. MS Visual Studio
C. NetBeans
D. PyCharm
MS Visual Studio to środowisko natywne do programowania aplikacji desktopowych w języku C#. To jedno z najczęściej używanych IDE do programowania w ekosystemie Microsoftu, oferujące wsparcie dla debugowania, projektowania interfejsu użytkownika i integracji z .NET. Visual Studio posiada również zaawansowane narzędzia do refaktoryzacji kodu, analizy oraz tworzenia aplikacji webowych i mobilnych.

Pytanie 14

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. 0
B. 10
C. 20
D. 23
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 15

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

A. W modelu z prototypem
B. W kaskadowym
C. W modelu Fry’ego
D. W spiralnym
Model kaskadowy nie uwzględnia formalnej analizy ryzyka, a projekt jest realizowany liniowo. Model z prototypem koncentruje się na szybkim tworzeniu działających wersji produktu, ale analiza ryzyka nie jest jego istotnym elementem. Model Fry’ego to starszy model, który nie kładzie nacisku na analizę ryzyka w każdej fazie projektu.

Pytanie 16

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. Zawierają przeciążenie operatora.
D. Są przeciążone.
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 17

Jakie metody umożliwiają przesyłanie danych z serwera do aplikacji front-end?

A. formatu JSON
B. metody POST
C. biblioteki jQuery
D. protokołem SSH
Jest taka sprawa z jQuery – chociaż to super narzędzie do manipulacji DOM i pracy z asynchronicznymi żądaniami HTTP, to jednak nie jest formatem danych. Tak, jQuery świetnie działa z AJAX-em, ale nie definiuje, jak dane powinny być przesyłane. Jak już używasz jQuery do przesyłania danych, to potrzebujesz formatu, na przykład JSON. Dlatego ta odpowiedź jest niepoprawna. Metoda POST umożliwia przesyłanie danych do serwera w protokole HTTP, ale sama w sobie nie mówi, w jakim formacie te dane będą przesyłane. Można używać różnych formatów, w tym JSON, ale sama metoda POST to za mało. A SSH, czyli Secure Shell, to protokół do bezpiecznego logowania i zdalnego zarządzania systemami, a nie do przesyłania danych między aplikacjami webowymi a serwerem. Dlatego tu też mamy błąd. Wszystkie te technologie są ważne, ale nie mówią o przesyłaniu danych w kontekście front-endu tak, jak robi to JSON.

Pytanie 18

Jak określa się proces, w trakcie którego klasa przejmuje właściwości innej klasy w programowaniu obiektowym?

A. Polimorfizm
B. Dziedziczenie
C. Abstrakcja
D. Hermetyzacja
Dziedziczenie to kluczowa cecha programowania obiektowego (OOP), która pozwala jednej klasie (klasie pochodnej) przejmować cechy i zachowania innej klasy (klasy bazowej). Dzięki dziedziczeniu można wielokrotnie wykorzystywać kod, co prowadzi do większej modularności i zmniejszenia redundancji. Dziedziczenie umożliwia rozszerzanie funkcjonalności klas bazowych poprzez dodawanie nowych metod lub modyfikowanie istniejących, bez konieczności ingerencji w oryginalny kod. Przykład w C++: `class Pojazd { ... }; class Samochod : public Pojazd { ... };` – `Samochod` dziedziczy wszystkie publiczne i chronione (protected) elementy klasy `Pojazd`.

Pytanie 19

Które z podejść do tworzenia aplikacji najlepiej uwzględnia przyszłe zmiany w funkcjonalności?

A. Tworzenie bez wcześniejszej specyfikacji technicznej
B. Pisanie kodu bez jakiejkolwiek dokumentacji
C. Zastosowanie modularnej architektury aplikacji
D. Skupienie się tylko na estetce aplikacji
Użycie modularnej architektury aplikacji to najlepsze podejście do projektowania systemów, które muszą uwzględniać przyszłe modyfikacje funkcjonalności. Modularność pozwala na podział aplikacji na mniejsze, niezależne komponenty, które mogą być rozwijane, testowane i aktualizowane niezależnie od siebie. Takie podejście zwiększa elastyczność, ułatwia zarządzanie kodem i pozwala na szybkie wdrażanie nowych funkcji bez konieczności ingerencji w cały system. Architektura modularna jest szczególnie przydatna w dużych projektach, gdzie zmiany są częste, a wymagania dynamicznie się zmieniają.

Pytanie 20

Wskaż fragment kodu, który stanowi realizację przedstawionego algorytmu w języku C++

Ilustracja do pytania
A. kod 1
B. kod 3
C. kod 2
D. kod 4
Jak się przyjrzysz innym opcjom, można zauważyć sporo problemów, które mogą wprowadzać w błąd przy implementacji algorytmu związanym z schematem blokowym. Opcja Kod 2 stosuje instrukcję if-else, co już jest dużym błędem. W związku z tym operacje dodawania i zwiększania zmiennej `i` wykonają się tylko raz, jeśli początkowy warunek jest spełniony. Z tego wynika brak powtarzalności, co ważne w algorytmach, gdzie trzeba coś robić wielokrotnie, aż warunek będzie spełniony. Z kolei Kod 3 używa pętli for, która lepiej nadaje się do przypadków, gdzie liczba powtórzeń jest znana. Ale tutaj zmienna `i` jest źle umiejscowiona i nie pasuje do logiki algorytmu. Dodatkowo, sama konstrukcja pętli for nie pokazuje, że musimy coś zrobić przynajmniej raz, zanim sprawdzimy warunek. Kod 4 chociaż używa pętli while, to i tak nie spełnia warunku, że operacja musi się wykonać przynajmniej raz przed sprawdzeniem tego warunku. Pętla while najpierw weryfikuje warunek, więc jeśli na początku jest nieprawdziwy, to nie wejdzie w żadną iterację, co jest sprzeczne z logiką algorytmu. Dlatego tylko Kod 1 jest naprawdę zgodny z wymaganiami algorytmu i może być traktowany jako poprawna implementacja według tego schematu.

Pytanie 21

Jakie jest główne zadanie debuggera w środowisku programowania?

A. Analiza i usuwanie błędów w kodzie
B. Tworzenie kodu źródłowego
C. Kompilowanie kodu źródłowego
D. Generowanie plików wykonywalnych
Debugger to narzędzie programistyczne służące do analizy i usuwania błędów w kodzie źródłowym. Pozwala na krokowe wykonywanie programu, śledzenie wartości zmiennych i identyfikowanie miejsc, w których występują błędy logiczne lub składniowe. Debugger umożliwia zatrzymanie wykonania programu w dowolnym miejscu, ustawienie tzw. breakpointów (punktów przerwania) i monitorowanie przepływu sterowania. Dzięki temu programista może dokładnie przeanalizować, dlaczego program nie działa zgodnie z oczekiwaniami i szybko znaleźć przyczynę problemu. Debuggery są dostępne w większości zintegrowanych środowisk programistycznych (IDE), takich jak Visual Studio, PyCharm czy IntelliJ IDEA.

Pytanie 22

Z jakiego obiektu można skorzystać, aby stworzyć kontrolkę wskazaną strzałką na ilustracji?

Ilustracja do pytania
A. TextBox - dla biblioteki WPF; JTextField - dla biblioteki Swing
B. Box - dla biblioteki WPF; JField - dla biblioteki Swing
C. Text - dla biblioteki WPF; JText - dla biblioteki Swing
D. Windows - dla biblioteki WPF; JFrame - dla biblioteki Swing
TextBox w WPF oraz JTextField w Swing to kontrolki umożliwiające wprowadzanie tekstu przez użytkownika. Są one szeroko stosowane w aplikacjach desktopowych do tworzenia formularzy i interaktywnych interfejsów użytkownika.

Pytanie 23

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

A. char
B. struct
C. bool
D. int
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 24

Jakie są kluczowe etapy realizacji projektu programistycznego?

A. Projektowanie, testowanie, aktualizacja, implementacja
B. Planowanie, projektowanie, debugowanie, konserwacja
C. Planowanie, analiza, implementacja, wdrożenie
D. Analiza, implementacja, testowanie, aktualizacja
Podstawowe fazy realizacji projektu programistycznego to: planowanie, analiza, implementacja i wdrożenie. Planowanie pozwala na ustalenie celów i zasobów, analiza definiuje wymagania, implementacja to właściwy proces tworzenia kodu, a wdrożenie polega na uruchomieniu produktu w środowisku produkcyjnym. Ten klasyczny podział jest stosowany zarówno w tradycyjnych modelach, takich jak Waterfall, jak i w nowoczesnych metodach Agile, gdzie fazy mogą być bardziej iteracyjne. Odpowiednie zarządzanie każdą z tych faz minimalizuje ryzyko błędów i zwiększa efektywność zespołu.

Pytanie 25

Aplikacje webowe stworzone z użyciem frameworka Angular lub biblioteki React, działające na standardowych portach, można uruchomić na lokalnym serwerze, wpisując w przeglądarkę

A. localhost:8080 (React) lub localhost:8000 (Angular)
B. localhost:3000 (React) lub localhost:4200 (Angular)
C. localhost:5001 (React) lub localhost:8080 (Angular)
D. localhost:8000 (React) lub localhost:49887 (Angular)
Domyślne porty dla aplikacji tworzonych w React to localhost:3000, a dla Angular to localhost:4200. Te ustawienia pozwalają na szybkie uruchomienie aplikacji na lokalnym serwerze podczas fazy deweloperskiej. React i Angular to popularne technologie do budowy nowoczesnych aplikacji webowych, a korzystanie z domyślnych portów upraszcza proces testowania i wdrażania.

Pytanie 26

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

A. liczba całkowita
B. tekst
C. liczba zmiennoprzecinkowa
D. bool
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 27

Jakie są typowe frameworki/biblioteki używane w aplikacjach webowych?

A. ASP.NET Core, jQuery, Joomla!, Wordpress, Angular
B. Visual Studio, Eclipse, angular, React.js, Node.js
C. ASP.NET Core, Django, Angular, React.js, Node.js
D. jquery, Joomla!, Wordpress, android Studio, Xamarin
Joomla! i WordPress – To systemy zarządzania treścią (CMS), a nie frameworki. Android Studio i Xamarin – Służą do tworzenia aplikacji mobilnych, a nie webowych. Eclipse – To środowisko programistyczne, nie framework typowy dla web developmentu.

Pytanie 28

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

Który z faz cyklu życia projektu wiąże się z identyfikacją wymagań użytkownika?

A. Analiza
B. Wdrażanie
C. Przeprowadzanie testów
D. Etap planowania
Analiza to etap cyklu życia projektu, podczas którego określane są wymagania użytkownika. W tej fazie zespół projektowy przeprowadza badania, konsultacje i warsztaty, aby zrozumieć potrzeby klienta i użytkowników końcowych. Wynikiem analizy jest szczegółowa specyfikacja funkcjonalna i niefunkcjonalna, która stanowi podstawę do projektowania i implementacji. Prawidłowo przeprowadzona analiza minimalizuje ryzyko nieporozumień oraz zapewnia, że finalny produkt będzie odpowiadał na realne potrzeby użytkowników.

Pytanie 30

Jakie z wymienionych narzędzi jest szeroko stosowane do debugowania aplikacji internetowych?

A. Blender
B. Chrome DevTools
C. Git
D. Postman
Git jest systemem kontroli wersji, który pomaga zarządzać kodem źródłowym i śledzić zmiany, ale nie służy do debugowania aplikacji webowych. Postman to narzędzie do testowania API, które pozwala na wysyłanie zapytań HTTP, ale nie umożliwia debugowania interfejsów webowych ani modyfikacji DOM. Blender jest narzędziem do modelowania 3D i animacji, nie mającym związku z debugowaniem aplikacji webowych.

Pytanie 31

Które z wymienionych opcji wspiera osoby niewidome w korzystaniu z witryn internetowych?

A. Ograniczenie liczby grafik na stronie
B. Zmiana rozdzielczości ekranu
C. Umożliwienie modyfikacji czcionki
D. Implementacja czytnika ekranu (screen reader)
Dodanie czytnika ekranu (screen reader) jest kluczowym rozwiązaniem, które znacząco ułatwia osobom niewidomym i słabowidzącym korzystanie z serwisów internetowych. Czytniki ekranu to oprogramowanie przekształcające tekst na stronie internetowej na mowę, co pozwala użytkownikom na interakcję z treścią dostępną w internecie. Technologia ta opiera się na standardach dostępności, takich jak WCAG (Web Content Accessibility Guidelines), które zalecają projektowanie stron przyjaznych dla osób z różnymi niepełnosprawnościami. Przykładem działania czytnika ekranu może być program JAWS, który umożliwia użytkownikom nawigację po stronach internetowych poprzez komendy klawiaturowe oraz odczytywanie treści na głos. Dzięki czytnikom ekranu, osoby niewidome mają możliwość dostępu do informacji, komunikacji oraz interakcji w sieci, co wpisuje się w ideę cyfrowej inkluzji i równości szans. Wprowadzenie czytnika ekranu na stronie internetowej to nie tylko techniczne wsparcie, ale również wyraz odpowiedzialności społecznej, mający na celu zapewnienie, że wszyscy użytkownicy mają równe prawo do korzystania z zasobów w sieci.

Pytanie 32

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

A. Kiedy liczba iteracji przewyższa maksymalny zakres zmiennej licznikowej
B. Gdy algorytm wymaga naturalnego podziału na mniejsze podproblemy
C. Gdy kod źródłowy ma być zoptymalizowany dla starszych kompilatorów
D. Kiedy program jest uruchamiany w środowisku wielowątkowym
Rekurencja jest bardziej efektywna od iteracji, gdy algorytm można naturalnie podzielić na mniejsze podproblemy. Przykładami są algorytmy podziału i zwycięzcy (divide and conquer), takie jak wyszukiwanie binarne, sortowanie szybkie (quick sort) czy obliczanie wartości liczb Fibonacciego. Rekurencja pozwala na bardziej eleganckie i przejrzyste rozwiązanie problemów, które mają strukturę rekurencyjną. W takich przypadkach kod jest krótszy i bardziej czytelny, co ułatwia jego konserwację i rozwój.

Pytanie 33

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

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

Które z poniższych zdań najlepiej określa funkcję zaprzyjaźnioną w ramach klasy?

A. Funkcja, która ma dostęp do prywatnych pól i metod klasy, z którą jest zaprzyjaźniona
B. Funkcja, która uruchamia się automatycznie po stworzeniu obiektu
C. Funkcja, która pozwala na dziedziczenie wielokrotne
D. Funkcja, która jest statyczna i nie ma możliwości modyfikacji pól klasy
Funkcja zaprzyjaźniona (ang. friend function) to funkcja, która ma dostęp do prywatnych i chronionych pól oraz metod klasy, mimo że nie jest jej częścią. Służy do realizacji operacji wymagających bezpośredniego dostępu do wewnętrznych elementów klasy, ale bez naruszania zasad hermetyzacji. Przykład w C++: `class Konto { private: double saldo; friend void wyswietlSaldo(Konto k); }`. Funkcja `wyswietlSaldo` może odczytać pole `saldo`, mimo że jest ono prywatne. Funkcje zaprzyjaźnione są używane, gdy konieczna jest bliska współpraca między klasami lub funkcjami, ale nie chcemy nadmiernie otwierać interfejsu klasy.

Pytanie 35

Czym jest ochrona własności intelektualnej?

A. Rejestr plików przechowywanych w chmurze
B. Zestaw przepisów dotyczących ochrony prywatności
C. Zbiór informacji osobowych
D. Koncepcja prawa zabezpieczającego twórczość i innowacje
Własność intelektualna to zbiór praw chroniących twórczość i wynalazki, obejmujący patenty, prawa autorskie, znaki towarowe i wzory przemysłowe. Własność intelektualna pozwala twórcom na zarabianie na swoich dziełach oraz kontrolowanie, kto i w jaki sposób może z nich korzystać. W wielu krajach naruszenie praw własności intelektualnej wiąże się z poważnymi konsekwencjami prawnymi. Dla przedsiębiorstw i innowatorów ochrona własności intelektualnej jest kluczowa dla zabezpieczenia ich inwestycji oraz rozwijania nowych technologii.

Pytanie 36

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

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

Pytanie 37

Jaką wartość przyjmie etykieta label po wykonaniu podanego kodu, gdy zostanie on uruchomiony po naciśnięciu przycisku w aplikacji?

Ilustracja do pytania
A. liczby z przedziału od 0 do 100
B. suma liczb parzystych z przedziału od 0 do 100
C. suma liczb z przedziału od 0 do 100
D. liczby parzyste z przedziału od 0 do 100
Kod oblicza i zapisuje sumę liczb parzystych z przedziału od 0 do 100. Pętla iteruje przez kolejne liczby i dodaje te, które spełniają warunek parzystości, zapewniając poprawne wyniki.

Pytanie 38

Która z wymienionych metod może pomóc w walce z uzależnieniem od internetu?

A. Zwiększenie czasu spędzanego na mediach społecznościowych
B. Wprowadzenie systematycznych przerw od używania urządzeń cyfrowych
C. Używanie komputera jedynie w nocy
D. Zainstalowanie większej ilości aplikacji rozrywkowych
Wprowadzenie regularnych przerw od korzystania z urządzeń cyfrowych pomaga przeciwdziałać uzależnieniu od internetu. Regularne odstawienie urządzeń pozwala na regenerację, zmniejsza ryzyko nadmiernej ekspozycji na treści cyfrowe i pozwala na większą interakcję z rzeczywistym otoczeniem. Przerwy te pomagają w utrzymaniu równowagi psychicznej i fizycznej, poprawiają koncentrację oraz jakość snu.

Pytanie 39

W języku C# szablon List zapewnia funkcjonalność listy. Z tworzenia obiektu typu List wynika, że jego składnikami są

Ilustracja do pytania
A. liczby całkowite
B. liczby rzeczywiste
C. elementy o nieokreślonym typie
D. elementy typu List
Szablon List<int> w języku C# implementuje listę, której elementami są liczby całkowite. Jest to przykład zastosowania kolekcji generycznych, które wprowadzają typowanie silne w czasie kompilacji, co pozwala na uniknięcie błędów typowych dla kolekcji niegenerycznych. Definiując List<int> deklarujesz, że lista będzie przechowywać tylko liczby całkowite. Dzięki temu kompilator może wykrywać błędy związane z typowaniem już podczas pisania kodu, co zwiększa jego niezawodność i bezpieczeństwo. Typ generyczny T w List<T> umożliwia tworzenie kolekcji przechowujących dowolny typ, co ułatwia ponowne wykorzystanie kodu i zgodność z zasadą DRY (Don't Repeat Yourself). W praktyce List<int> jest szeroko stosowany w scenariuszach wymagających dynamicznie rozwijanych kolekcji, które nie ograniczają się do statycznej liczby elementów, takich jak tablice. Listy generyczne są wydajniejsze i bardziej elastyczne dzięki metodom takim jak Add, Remove czy Contains, które operują na elementach określonego typu. Dzięki implementacji IEnumerable/Listy są również zgodne z LINQ, co umożliwia stosowanie złożonych zapytań i operacji na danych, takich jak filtrowanie i sortowanie, w sposób czytelny i efektywny.

Pytanie 40

Jakie są różnice między typem łańcuchowym a typem znakowym?

A. Typ znakowy przechowuje dane logiczne, a łańcuchowy tekst
B. Typ łańcuchowy obsługuje liczby całkowite, a znakowy liczby zmiennoprzecinkowe
C. Typ łańcuchowy przechowuje pojedyncze znaki, a znakowy długie ciągi znaków
D. Typ znakowy przechowuje pojedyncze znaki, a łańcuchowy ciągi znaków
Typ znakowy (char) przechowuje pojedyncze znaki, natomiast typ łańcuchowy (string) przechowuje ciągi znaków. Różnica ta ma kluczowe znaczenie w programowaniu, ponieważ typ 'char' jest używany do operacji na pojedynczych literach, cyfrze lub symbolu, podczas gdy 'string' umożliwia przechowywanie i manipulowanie całymi wyrazami lub zdaniami. W wielu językach 'string' to bardziej złożona struktura danych, która zawiera tablicę znaków (array of characters), co pozwala na efektywną pracę z tekstem i budowanie interaktywnych aplikacji.