Wyniki egzaminu

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

Egzamin niezdany

Wynik: 18/40 punktów (45,0%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Jaka będzie zawartość zmiennej filteredItems po wykonaniu poniższego kodu?

const items = [ { id: 1, name: 'phone', price: 500 }, { id: 2, name: 'laptop', price: 1000 }, { id: 3, name: 'tablet', price: 750 } ]; const filteredItems = items.filter(item => item.price > 600) .map(item => item.name);

A. ['phone']
B. ['laptop', 'tablet']
C. ['laptop', 'tablet', 'phone']
D. [{id: 2, name: 'laptop', price: 1000}, {id: 3, name: 'tablet', price: 750}]
Zmienna filteredItems zawiera tylko te elementy, których cena jest większa niż 600. W tym przypadku w tablicy items mamy trzy obiekty: 'phone' z ceną 500, 'laptop' z ceną 1000 oraz 'tablet' z ceną 750. Funkcja filter przeszukuje tablicę items i zwraca tylko te obiekty, które spełniają warunek price > 600, co daje nam 'laptop' oraz 'tablet'. Następnie, metoda map przekształca te obiekty w tablicę ich nazw, co skutkuje finalnym wynikiem ['laptop', 'tablet']. Takie podejście do filtrowania danych i mapowania ich na inne wartości jest niezwykle przydatne w programowaniu, szczególnie w pracy z danymi, gdzie często potrzebujemy wyodrębnić i przekształcić dane w bardziej użyteczne formy. Użycie metod filter i map jest zgodne z najlepszymi praktykami w JavaScript i przyczynia się do bardziej czytelnego oraz zwięzłego kodu.

Pytanie 2

Co należy do zadań interpretera?

A. wykonanie skryptu instrukcja po instrukcji
B. sprawdzanie składni całego programu przed jego uruchomieniem
C. przekładanie kodu na kod maszynowy
D. ulepszanie większej części kodu, aby przyspieszyć jego wykonanie
Kompilatory tłumaczą cały kod na język maszynowy przed uruchomieniem, a optymalizowanie kodu to zadanie kompilatora, nie interpretera. Analiza składni całego programu jest również cechą kompilatorów, a nie interpreterów.

Pytanie 3

Jakie są kluczowe zasady WCAG 2.0?

A. Elastyczna, prosta, przejrzysta, trwała
B. Ewolucyjna, interaktywna, efektywna
C. Dostosowana, błyskawiczna, mobilna, dostępna
D. Percepcyjna, operacyjna, zrozumiała, solidna
Niepoprawne odpowiedzi nie odzwierciedlają kluczowych zasad WCAG 2.0. Pierwsza z nich, określająca elementy jako postępowe, responsywne, efektywne, nie ujęła fundamentalnych wymogów dotyczących dostępności. Postępowe i responsywne odnoszą się bardziej do designu i wydajności strony, a nie do jej dostępności dla osób z różnymi niepełnosprawnościami. Wymagania dotyczące percepcji i interakcji z treścią są kluczowe dla WCAG 2.0, ale nie są poruszane w tej opcji. Kolejna odpowiedź wskazuje na cechy: dostosowana, szybka, mobilna, dostępna, co również nie odpowiada zasadom WCAG. Użyte terminy nie koncentrują się na dostępności treści, a bardziej na wydajności i dostosowywaniu do urządzeń mobilnych, pomijając kluczowe aspekty związane z percepcją i interaktywnością. Ostatnia niepoprawna odpowiedź, która zawiera elastyczność, prostotę, przejrzystość i trwałość, również nie odpowiada rzeczywistym zasadom WCAG. Choć te cechy są pożądane w projektowaniu stron internetowych, nie są częścią formalnych zasad WCAG, które koncentrują się na konkretnej dostępności treści dla osób z ograniczeniami. W rezultacie, te odpowiedzi nie spełniają wymaganych kryteriów dostępności.

Pytanie 4

Który z wymienionych typów danych należy do typu logicznego?

A. int
B. char
C. bool
D. float
Typ danych 'bool' (boolean) jest typem logicznym, który przechowuje jedną z dwóch wartości: 'true' lub 'false'. Typy logiczne są nieodłącznym elementem programowania, ponieważ umożliwiają implementację warunków i pętli sterujących przepływem programu. Typ 'bool' znajduje zastosowanie w praktycznie każdym języku programowania, w tym C++, Java, Python i C#. Operacje logiczne, takie jak 'AND', 'OR' i 'NOT', opierają się na wartościach typu 'bool', co czyni je podstawą dla algorytmów decyzyjnych i strukturalnych. Zastosowanie typów logicznych zwiększa czytelność kodu i pozwala na efektywne zarządzanie warunkami logicznymi.

Pytanie 5

Użycie typu DECIMAL w SQL wymaga wcześniejszego określenia liczby cyfr przed przecinkiem oraz ilości cyfr za przecinkiem. Jest to zapis:

A. stałoprzecinkowy
B. łańcuchowym
C. zmiennoprzecinkowy
D. logicznym
Typy stałoprzecinkowe są mniej elastyczne, a typy logiczne (BOOLEAN) przechowują tylko wartości prawda/fałsz. Łańcuchy znaków (STRING) służą do przechowywania tekstu i nie nadają się do operacji matematycznych na liczbach dziesiętnych.

Pytanie 6

Który wzorzec projektowy jest najlepszy do zarządzania tworzeniem obiektów?

A. Adapter
B. Factory Method
C. Decorator
D. Observer
Wybór wzorców projektowych w kontekście zarządzania tworzeniem obiektów jest kluczowy, jednak nie wszystkie wzorce są odpowiednie dla tego celu. Wzorzec Observer, na przykład, jest zaprojektowany do zarządzania powiązaniami między obiektami, umożliwiając jednemu obiektowi informowanie innych o zmianach stanu. Jego zastosowanie w kontekście tworzenia obiektów jest nieadekwatne, ponieważ nie rozwiązuje problemu instancjonowania obiektów, a jedynie komunikacji między nimi. Kolejnym błędnym podejściem jest wzorzec Decorator, który ma na celu dynamiczne dodawanie funkcjonalności do obiektów. Choć może być użyty w kontekście modyfikacji obiektów, nie zajmuje się tworzeniem ich instancji, co czyni go nieodpowiednim w tej sytuacji. Wzorzec Adapter może być mylony z Factory Method, ponieważ również pozwala na współpracę różnych interfejsów, jednak jego główną rolą jest umożliwienie komunikacji pomiędzy niekompatybilnymi interfejsami. Adapter koncentruje się na przekształcaniu interfejsów, a nie na tworzeniu obiektów. W rezultacie, wybór niewłaściwego wzorca może prowadzić do nieefektywnego projektowania, co utrudnia rozwój i utrzymanie aplikacji. Warto zatem dokładnie rozróżniać role poszczególnych wzorców i stosować je w odpowiednich kontekstach, aby unikać typowych pułapek myślowych związanych z ich zastosowaniem.

Pytanie 7

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

A. C++
B. Java
C. C#
D. Objective-C
C++ jest często używany do tworzenia aplikacji desktopowych, ale w przypadku interfejsów użytkownika XAML jest bardziej związany z C#. Java jest językiem wykorzystywanym głównie do tworzenia aplikacji na Androida oraz aplikacji webowych i backendowych, ale nie jest typowo używany do programowania interfejsów w XAML. Objective-C to starszy język programowania dla systemów Apple i nie jest związany z XAML, który jest specyficzny dla technologii Microsoftu.

Pytanie 8

Co to jest framework?

A. zbiór procedur, danych oraz złożonych typów danych używanych w kodzie źródłowym aplikacji
B. platforma programistyczna oferująca określone komponenty oraz narzucająca szkielet lub metodologię tworzenia aplikacji
C. oprogramowanie, które za pomocą metody drag and drop pozwala na stworzenie interfejsu aplikacji
D. narzędzie przeznaczone do opracowywania, edytowania, testowania i uruchamiania oprogramowania
Framework to platforma programistyczna, która dostarcza gotowe komponenty i narzuca określony sposób tworzenia aplikacji. Ułatwia rozwój oprogramowania, eliminując potrzebę pisania kodu od zera.

Pytanie 9

Kod zaprezentowany w filmie w języku C++ nie przechodzi kompilacji. Co należy zmodyfikować w tym kodzie, aby kompilacja odbyła się bez błędów?

A. naprawić błąd w funkcji sprawdz, który polega na braku nawiasów {} w pętli for
B. dodać deklarację funkcji sprawdz przed funkcją main
C. zadeklarować zmienną sprawdz przed jej wykorzystaniem w linii 11
D. poprawnie zapisać warunek w instrukcji if w linii 11, np. sprawdz(x)==true
Błąd kompilacji wynika z braku deklaracji funkcji przed jej użyciem. Dodanie deklaracji funkcji 'sprawdz' przed funkcją main eliminuje ten problem i umożliwia prawidłowe skompilowanie programu.

Pytanie 10

Co należy zrobić w sytuacji silnego krwawienia z rany?

A. Założyć opatrunek uciskowy oraz unieść kończynę powyżej poziomu serca
B. Nałożyć elastyczny bandaż bez ucisku
C. Poczekać, aż krwawienie ustanie samoistnie
D. Przepłukać ranę wodą utlenioną i zostawić do wyschnięcia
Założenie opatrunku uciskowego i uniesienie kończyny powyżej poziomu serca to najskuteczniejszy sposób na zatrzymanie silnego krwotoku z rany. Opatrunek uciskowy powoduje mechaniczne zamknięcie naczyń krwionośnych, co spowalnia lub całkowicie zatrzymuje wypływ krwi. Podniesienie kończyny dodatkowo zmniejsza ciśnienie krwi w obszarze rany, co ogranicza krwawienie. Ważne jest, aby nie zdejmować opatrunku, nawet jeśli przesiąknie krwią – należy dołożyć kolejną warstwę materiału. W sytuacjach ekstremalnych, gdy opatrunek uciskowy nie zatrzymuje krwawienia, można zastosować opaskę uciskową (tzw. stazę), ale tylko w ostateczności, gdy inne metody zawiodą. Takie działania mogą zapobiec wstrząsowi krwotocznemu i uratować życie poszkodowanego.

Pytanie 11

Które z poniższych stwierdzeń jest prawdziwe w kontekście dziedziczenia w języku Java?

A. Klasa pochodna dziedziczy po jednej klasie bazowej.
B. Java nie wspiera dziedziczenia.
C. Dziedziczenie jest niezalecane w języku Java.
D. Klasa pochodna może dziedziczyć po wielu klasach bazowych.
W kontekście dziedziczenia w języku Java istnieje kilka powszechnych nieporozumień. Po pierwsze, język Java nie wspiera dziedziczenia wielokrotnego, co oznacza, że klasa pochodna nie może dziedziczyć po więcej niż jednej klasie bazowej. Pomimo że inne języki, jak C++, pozwalają na dziedziczenie wielokrotne, Java projektowo unikała tego podejścia, aby zniwelować złożoność i problemy takie jak 'diamentowy problem'. W Java, zamiast dziedziczenia wielokrotnego, używa się interfejsów, które mogą być implementowane przez klasę, dając jej dodatkowe funkcjonalności bez narzucania struktury dziedziczenia. Po drugie, stwierdzenie, że Java nie wspiera dziedziczenia, jest niepoprawne, ponieważ dziedziczenie jest fundamentalnym aspektem języka Java i jednym z filarów programowania obiektowego. Dzięki dziedziczeniu można tworzyć hierarchie klas, co zwiększa możliwość ponownego użycia kodu i jego organizacji. Na koniec, twierdzenie, że dziedziczenie jest niezalecane w Java, również jest błędne. Dziedziczenie jest powszechnie stosowane w Java i stanowi podstawę wielu wzorców projektowych. Należy jednak stosować je z rozwagą, aby zapewnić przejrzystość kodu i uniknąć nadmiernego skomplikowania hierarchii klas. Koncepcja dziedziczenia w Java jest kluczowa i szeroko używana w praktyce, choć zawsze z uwzględnieniem najlepszych praktyk projektowych.

Pytanie 12

Które z wymienionych stwierdzeń najcelniej opisuje proces uruchamiania aplikacji?

A. Wykonywanie programu na podstawie przetłumaczonego kodu maszynowego
B. Generowanie pliku źródłowego
C. Przetwarzanie kodu źródłowego przez kompilator
D. Tłumaczenie kodu źródłowego na język pośredni
Uruchomienie programu to naprawdę ważny moment, bo w tym czasie procesor zaczyna działać na kodzie maszynowym. Ten kod powstaje podczas kompilacji, która zamienia kod źródłowy na coś, co komputer rozumie. W tym etapie program trafia do pamięci, a także przygotowywane są różne dane do działania. Tak więc, to jest kluczowy krok w całej historii programu, bo decyduje, jak dobrze będzie działać.

Pytanie 13

Przedstawione logo praw Creative Commons umożliwia bezpłatne użytkowanie dzieła:

Ilustracja do pytania
A. pod warunkiem zachowania go w oryginalnej formie
B. w celu modyfikacji lub remiksowania
C. pod warunkiem udostępnienia go na tej samej zasadzie licencyjnej
D. w działaniach komercyjnych
Licencja nie zawsze pozwala na wykorzystanie utworu w celach komercyjnych – istnieją wersje zakazujące tego. Warunek pozostawienia utworu w oryginalnej postaci dotyczy licencji NoDerivatives (ND), a nie standardowych Creative Commons. Udostępnienie na tej samej licencji to cecha licencji ShareAlike (SA), która odnosi się do rozpowszechniania, a nie remiksowania.

Pytanie 14

Jakie będą skutki wykonania podanego fragmentu kodu w języku C++?

Ilustracja do pytania
A. do tablicy liczby, na jej początku, dodawane są nowe wartości
B. z tablicy liczby usuwane są elementy, z każdym obiegiem pętli eliminowany jest element z jej początku
C. z tablicy liczby usuwane są elementy, z każdym obiegiem pętli eliminowany jest element z jej końca
D. do tablicy liczby, na jej końcu, dodawane są nowe wartości
Kod w języku C++ dodaje kolejne wartości na końcu tablicy 'liczby' podczas każdej iteracji pętli. Operacja ta jest realizowana poprzez użycie wskaźnika lub iteratora wskazującego na ostatnią pozycję tablicy, co umożliwia efektywne dodawanie elementów bez konieczności przestawiania istniejących danych.

Pytanie 15

Wskaź rodzaj testowania, które realizuje się w trakcie tworzenia kodu źródłowego?

A. testy jednostkowe
B. testy wydajnościowe
C. testy kompatybilności
D. testy wdrożeniowe
Testy wydajnościowe są wykonywane po zakończeniu kodowania, aby sprawdzić, jak system działa pod obciążeniem. Testy kompatybilności sprawdzają zgodność aplikacji z różnymi środowiskami i urządzeniami. Testy wdrożeniowe są realizowane na końcowym etapie projektu i mają na celu sprawdzenie, czy aplikacja działa poprawnie w rzeczywistym środowisku.

Pytanie 16

Która z poniższych nie jest cechą architektury mikroserwisów?

A. Wspólna baza danych dla wszystkich usług
B. Niezależne wdrażanie poszczególnych usług
C. Autonomia zespołów rozwijających poszczególne usługi
D. Odporność na awarie pojedynczych komponentów
W architekturze mikroserwisów kluczową cechą jest niezależność każdej usługi, co obejmuje również niezależne zarządzanie danymi. Wspólna baza danych dla wszystkich usług narusza tę zasadę, ponieważ prowadzi do silnych powiązań między usługami, co ogranicza ich autonomię. Przykładem dobrych praktyk w architekturze mikroserwisów jest stosowanie wzorca bazy danych per mikroserwis, co pozwala na niezależne skalowanie, wdrażanie i rozwijanie poszczególnych usług. W praktyce, takie podejście zwiększa elastyczność w rozwoju i ułatwia szybkie wprowadzanie zmian, co jest kluczowe w nowoczesnym świecie IT. Zgodnie z zasadami DevOps i CI/CD, mikroserwisy powinny być w stanie wprowadzać zmiany w sposób autonomiczny, bez wpływu na inne komponenty systemu. Na przykład, jeżeli jedna usługa wymaga zmiany schematu bazy danych, to nie powinno to wpływać na inne usługi, co umożliwia stabilność oraz ciągłość działania całego systemu.

Pytanie 17

Jakie kroki należy podjąć, aby skutecznie zabezpieczyć dane na komputerze?

A. Systematycznie aktualizować oprogramowanie i wykonywać kopie zapasowe
B. Przechowywać dane na niezabezpieczonych nośnikach przenośnych
C. Dzielić się hasłami do plików z współpracownikami
D. Nie używać kopii zapasowych
Regularne aktualizowanie oprogramowania oraz tworzenie kopii zapasowych to kluczowe działania zapewniające bezpieczeństwo danych na komputerze. Aktualizacje łatają luki w zabezpieczeniach i eliminują błędy, które mogą zostać wykorzystane przez hakerów. Kopie zapasowe chronią dane przed utratą spowodowaną awarią sprzętu, atakiem ransomware lub przypadkowym usunięciem. Najlepszą praktyką jest przechowywanie kopii zapasowych w różnych miejscach – lokalnie i w chmurze – co dodatkowo zwiększa poziom zabezpieczenia przed nieprzewidzianymi sytuacjami.

Pytanie 18

Jakie sformułowanie najlepiej oddaje złożoność obliczeniową algorytmu quicksort?

A. jest zawsze mniejsza niż złożoność jakiegokolwiek innego algorytmu sortowania
B. jest większa niż O(n2)
C. jest różna w zależności od wyboru elementu dzielącego
D. jest większa niż złożoność sortowania bąbelkowego
Twierdzenie, że złożoność quicksort jest wyższa niż sortowania bąbelkowego, jest błędne – bubble sort ma złożoność O(n²) niezależnie od danych wejściowych, co czyni go jednym z najwolniejszych algorytmów. Quicksort nigdy nie ma złożoności wyższej niż O(n²) w najgorszym przypadku, co oznacza, że jest zawsze bardziej efektywny niż bubble sort. Twierdzenie, że quicksort zawsze jest szybszy niż jakikolwiek inny algorytm, jest nieprawdziwe – algorytmy takie jak counting sort lub radix sort mogą działać szybciej w określonych przypadkach. Ostateczna wydajność quicksort zależy od implementacji oraz charakterystyki danych wejściowych.

Pytanie 19

W jakiej sytuacji należy umieścić poszkodowanego w bezpiecznej pozycji bocznej?

A. w sytuacji omdlenia i braku tętna
B. gdy wystąpi uszkodzenie kręgosłupa
C. w przypadku urazu pleców, gdy osoba jest przytomna
D. gdy osoba omdleje, ale oddycha
Uraz pleców u osoby przytomnej nie wymaga pozycji bocznej, a raczej stabilizacji. Uszkodzenie kręgosłupa wymaga unikania poruszania poszkodowanego, aby nie pogłębiać obrażeń. Brak tętna i oddechu to wskazanie do rozpoczęcia resuscytacji, a nie układania w pozycji bocznej bezpiecznej.

Pytanie 20

Pętla przedstawiona w zadaniu działa na zmiennej typu string o nazwie ciąg. Jej celem jest

Ilustracja do pytania
A. od każdego znaku w ciągu, który nie jest równy 0, odjąć kod 32
B. od każdego znaku w ciągu odjąć kod 32
C. zamienić w ciągu małe litery na wielkie
D. zamienić w ciągu wielkie litery na małe
Odejmowanie 32 od wszystkich znaków w napisie to trochę kiepski pomysł, bo to nie zawsze działa. Nie wszystkie znaki, takie jak cyfry czy symbole, mają swoje wielkie odpowiedniki, więc ich kod ASCII nie powinien być zmieniany. Kabel od wielkich liter na małe to zupełnie inna bajka – tutaj dodajemy 32 do kodu. Odejmowanie kodu tylko dla znaków różniących się od 0 pomija istotę operacji na literach, co może skutkować dziwnymi rezultatami. Z mojego doświadczenia wynika, że lepiej to przemyśleć przed wprowadzeniem w życie.

Pytanie 21

Po uruchomieniu podanego kodu w języku C++ na konsoli zobaczymy następujący tekst:

Ilustracja do pytania
A. "%s dodawania: %d + %.2f = %f", "Wynik", 5, 5.12345, 10.123450
B. dodawania: 5+5.12345=10.123450 Wynik
C. Wynik dodawania: 5+5.12=10.123450
D. "%s dodawania: %d + %.2f=%f", "Wynik", a, b, w
Kod w C++ wyświetla 'Wynik dodawania: 5+5.12=10.123450'. Formatowanie tekstu i liczb zmiennoprzecinkowych jest kluczowe dla poprawnego wyświetlania danych w konsoli.

Pytanie 22

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

A. Zmienna lokalna wewnątrz danej klasy
B. Funkcja, która wywołuje destruktor danej klasy
C. Pole lub metoda, która jest przypisana do klasy, a nie do jej instancji
D. Metoda z dostępem ograniczonym tylko do tej samej klasy
Metoda z dostępem ograniczonym do tej samej klasy to przykład modyfikatora `private`, a nie cecha składnika statycznego. Funkcja wywołująca destruktor nie jest statycznym składnikiem klasy – destruktory są specyficzne dla każdej instancji obiektu. Zmienna lokalna wewnątrz klasy to zmienna zadeklarowana w metodzie klasy i istnieje tylko w czasie jej wykonywania, co różni się od pól statycznych, które są trwałe i współdzielone przez wszystkie obiekty danej klasy. Składniki statyczne odnoszą się do klasy jako całości, a nie do pojedynczych instancji.

Pytanie 23

Jakie zagrożenie związane z użytkowaniem cyberprzestrzeni ma wpływ na zdrowie fizyczne?

A. Uzależnienie od gier komputerowych
B. Depresja spowodowana cyberprzemocą
C. Problemy z kręgosłupem wynikające z długotrwałego siedzenia
D. Rozpowszechnianie nieprawdziwych informacji
Z mojej perspektywy, tak, depresja związana z cyberprzemocą to spory problem, ale mówimy tu o zdrowiu psychicznym, a nie fizycznym. Rzeczywiście, uzależnienie od gier może wpłynąć na to, jak się czujemy psychicznie i jak odnajdujemy się w społeczeństwie. Ale to nie jest to samo, co zagrożenie dla zdrowia fizycznego.

Pytanie 24

W jakiej fazie cyklu życia projektu informatycznego następuje integracja oraz testowanie wszystkich modułów systemu?

A. Faza analizy
B. Etap planowania
C. Faza wdrożenia
D. Etap implementacji
Planowanie to faza początkowa, w której określane są cele projektu, harmonogram i zasoby, ale nie jest to etap integracji systemu. Analiza skupia się na zbieraniu wymagań i definiowaniu specyfikacji technicznej, ale nie obejmuje łączenia modułów ani testowania gotowego produktu. Wdrożenie to końcowy etap cyklu życia projektu, który następuje po pełnej integracji i testowaniu – polega na uruchomieniu systemu w środowisku produkcyjnym i udostępnieniu go użytkownikom końcowym.

Pytanie 25

Która z poniższych deklaracji w języku C++ poprawnie opisuje tablicę dwuwymiarową?

A. int matrix[3][3][3];
B. int matrix[3];
C. int matrix[3][3];
D. int matrix[];
Deklaracja 'int matrix[3];' tworzy jednowymiarową tablicę, która nie ma drugiego indeksu do odwoływania się do elementów. 'Int matrix[];' jest błędną deklaracją, ponieważ nie określa rozmiaru tablicy. 'Int matrix[3][3][3];' definiuje tablicę trójwymiarową, a pytanie dotyczyło tablicy dwuwymiarowej. Aby poprawnie zadeklarować tablicę dwuwymiarową, konieczne jest użycie dwóch indeksów, jak w przypadku 'int matrix[3][3];'.

Pytanie 26

Co to jest automatyzacja testowania procesów?

A. Kompilowaniem kodu w celu zwiększenia efektywności
B. Integracją testów w środowisku deweloperskim
C. Sprawdzaniem poprawności działania aplikacji na urządzeniach przenośnych
D. Używaniem narzędzi oraz skryptów do wykonywania testów w sposób automatyczny bez udziału człowieka
Integracja testów w środowisku programistycznym odnosi się do procesu implementacji narzędzi CI/CD (Continuous Integration/Continuous Deployment), co wspiera zarządzanie cyklem życia oprogramowania, ale nie jest równoznaczne z automatyzacją testów. Weryfikacja poprawności działania aplikacji na urządzeniach mobilnych to proces testowania kompatybilności i responsywności aplikacji, co stanowi jedynie część procesu testowego, ale nie jest automatyzacją jako całość. Kompilacja kodu w celu optymalizacji wydajności to technika poprawy działania aplikacji, która może wpłynąć na jej szybkość, ale nie odnosi się do procesu testowania automatycznego, a raczej do programowania i debugowania aplikacji.

Pytanie 27

Jakie są kluczowe korzyści z wykorzystania frameworków podczas programowania aplikacji desktopowych?

A. Redukują zapotrzebowanie na pamięć operacyjną aplikacji
B. Ułatwiają kontrolę nad wersjami systemu operacyjnego
C. Skracają czas tworzenia aplikacji dzięki gotowym komponentom i narzędziom
D. Gwarantują dostęp do niskopoziomowego kodu systemowego
Jedną z głównych zalet stosowania frameworków w programowaniu aplikacji desktopowych jest znaczne skrócenie czasu tworzenia oprogramowania dzięki gotowym komponentom i narzędziom. Frameworki dostarczają struktury, która standaryzuje rozwój aplikacji i minimalizuje konieczność pisania kodu od podstaw. Frameworki takie jak WPF, Qt czy Electron umożliwiają szybkie tworzenie interfejsów użytkownika, obsługę zdarzeń oraz integrację z bazami danych i API. Ponadto frameworki wspierają modularność i umożliwiają łatwe zarządzanie dużymi projektami, co przekłada się na lepszą organizację kodu i wyższą jakość oprogramowania.

Pytanie 28

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

A. Ostry ból w klatce piersiowej
B. Intensywne pocenie się w gorącym otoczeniu
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 29

W przedsiębiorstwie IT obowiązują określone zasady dotyczące zarządzania projektami, co wskazuje, że firma wykorzystuje model zarządzania

Ilustracja do pytania
A. kaskadowy
B. prototypowy
C. spiralny
D. zwinny
Model zarządzania projektami opisany w pytaniu to model zwinny (Agile). Opiera się na iteracyjnych i inkrementalnych podejściach do tworzenia oprogramowania, umożliwiając szybkie dostosowanie do zmieniających się wymagań klienta.

Pytanie 30

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

A. Django
B. ASP.NET Core
C. jQuery
D. Angular
Django to framework backendowy dla języka Python, który służy do budowy serwerów i aplikacji webowych, ale nie jest wykorzystywany do dynamicznych interfejsów użytkownika w przeglądarce. ASP.NET Core to framework od Microsoftu, przeznaczony głównie do budowy aplikacji webowych i API w języku C#, jednak nie bazuje na TypeScript. jQuery to lekka biblioteka JavaScript, która ułatwia manipulację DOM i obsługę zdarzeń, ale nie oferuje kompleksowych narzędzi do tworzenia dużych aplikacji frontendowych w TypeScript, takich jak Angular.

Pytanie 31

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

A. Zwiększenie odporności na stres
B. Obniżenie koncentracji oraz zwiększone ryzyko popełniania błędów
C. Poprawa kondycji fizycznej
D. Wzrost poziomu motywacji
Fajnie, że zauważasz, że monotonia w pracy może zmniejszać motywację. Monotonne zadania, zamiast dawać energię, raczej ją zabierają. W sumie to, żeby poprawić swoją formę, trzeba się ruszać i nie tylko siedzieć przy biurku. Natomiast na stres najlepsze są treningi relaksacyjne – monotonia nie załatwia sprawy, a wręcz przeciwnie, zwiększa frustrację.

Pytanie 32

W zestawieniu zaprezentowano doświadczenie zawodowe pracowników firmy IT. Do stworzenia aplikacji front-end powinien/powinna zostać wyznaczony/a

PracownikZnajomość technologii lub programów
AnnaInkscape, Corel Draw
KrzysztofAngular
PatrykHTML, CSS
EwaDjango, .NET

A. Ewa
B. Anna
C. Patryk
D. Krzysztof
Krzysztof to naprawdę świetny wybór na budowę aplikacji front-end, bo zna Angulara, który jest jednym z najpopularniejszych frameworków do aplikacji jednostronicowych. Dzięki Angularowi można tworzyć dynamiczne i responsywne interfejsy, co jest mega ważne w projektach front-end. Ogólnie rzecz biorąc, ten framework opiera się na komponentach, co zdecydowanie ułatwia pracę z kodem i pozwala na jego ponowne wykorzystanie. W połączeniu z TypeScriptem, Angular daje duże możliwości, bo mocne typowanie zmniejsza ryzyko błędów i poprawia czytelność kodu. Zrozumienie, jak działa aplikacja i jakie są dobre praktyki, takie jak modularność czy testowanie, też jest istotne, żeby wykorzystać Angulara w pełni. Krzysztof ma tę wiedzę i potrafi wdrażać najlepsze praktyki, jak architektura MVC, co sprawia, że aplikacje są bardziej skalowalne i łatwiejsze w utrzymaniu. Dodatkowo, Angular robi też sporo, żeby aplikacje działały szybko, co jest ważne dla doświadczenia użytkownika. Dlatego wybierając Krzysztofa, mamy pewność, że projekt będzie zgodny z nowymi standardami i spełni oczekiwania użytkowników w zakresie interfejsu.

Pytanie 33

Co zostanie wypisane w konsoli po wykonaniu poniższego kodu JavaScript?

let a = { value: 10 }; let b = a; b.value = 20; console.log(a.value);

A. ReferenceError
B. 10
C. 20
D. undefined
Analizując błędne odpowiedzi, warto zwrócić uwagę na podstawowe zasady działania JavaScript w kontekście obiektów. Jeśli odpowiedzią byłoby 10, to sugerowałoby, że obiekt `a` nie został zmodyfikowany przez przypisanie do `b`, co jest nieprawdziwe. Obiekty w JavaScript są przekazywane przez referencję, co oznacza, że zmiana dokonana na jednym obiekcie wpływa na wszystkie referencje do niego. Odpowiedź `undefined` wskazywałaby na to, że obiekt `a` nie ma właściwości `value`, co również jest błędne, ponieważ obiekt `a` został zdefiniowany z tą właściwością i początkowo ma wartość 10. Z kolei `ReferenceError` występuje, gdy odwołujemy się do zmiennej, która nie istnieje w danym kontekście, co nie ma miejsca w naszym kodzie, ponieważ zarówno `a`, jak i `b` są zdefiniowane poprawnie. Błędy te często wynikają z niepełnego zrozumienia, jak JavaScript zarządza pamięcią i referencjami. Zrozumienie tych zasad jest kluczowe, aby unikać pułapek związanych z mutowalnością obiektów i przekazywaniem referencji, co może prowadzić do trudnych do diagnozowania błędów w większych projektach.

Pytanie 34

Jaki będzie wynik działania poniższego kodu JavaScript?

function foo() { console.log(a); var a = 1; console.log(a); } foo();

A. undefined, undefined
B. ReferenceError, 1
C. undefined, 1
D. 1, 1
Wynikiem działania tego kodu nie może być 'ReferenceError, 1', ponieważ w sytuacji, gdy zmienna 'a' została zadeklarowana za pomocą 'var', nie może wystąpić błąd referencyjny związany z odwołaniem się do niej przed jej przypisaniem. Wartość zmiennej 'a' przed jej przypisaniem to 'undefined', a nie 'ReferenceError', co jest typowym nieporozumieniem w kontekście hoisting. W przypadku zmiennych zadeklarowanych za pomocą 'let' lub 'const', rzeczywiście moglibyśmy napotkać 'ReferenceError', gdyż te zmienne mają tzw. „temporal dead zone” przed ich zadeklarowaniem. Wynik 'undefined, undefined' również nie jest poprawny, ponieważ po pierwszym 'console.log' zmienna 'a' jest jeszcze niezainicjalizowana i wyświetli 'undefined', ale drugie 'console.log' z pewnością wyświetli wartość '1', po przypisaniu. Odpowiedź '1, 1' jest również błędna, ponieważ pierwsze logowanie 'a' przed przypisaniem z pewnością da 'undefined'. Ważne jest zrozumienie zasad hoisting oraz jak różne typy deklaracji zmiennych wpływają na ich zakres i inicjalizację, aby unikać nieporozumień w przyszłości.

Pytanie 35

Co będzie wynikiem wykonania poniższego kodu w języku C#?

string text = "hello world"; var result = string.Join("", text.Split(' ').Select(s => char.ToUpper(s[0]) + s.Substring(1))); Console.Console.WriteLine(result);

A. HelloWorld
B. Hello World
C. HELLO WORLD
D. helloworld
Wynik działania przedstawionego kodu to 'HelloWorld'. Zrozumienie tego wyniku wymaga analizy poszczególnych elementów kodu. Na początku mamy zmienną tekstową 'text' z wartością 'hello world'. Następnie, tekst jest dzielony na fragmenty za pomocą metody 'Split', która rozdziela go na podstawie spacji. W efekcie otrzymujemy tablicę z dwoma elementami: 'hello' i 'world'. Następnie, za pomocą metody 'Select', każdy z tych fragmentów jest przetwarzany. Pierwszy znak każdego słowa jest konwertowany na wielką literę dzięki 'char.ToUpper(s[0])', a następnie łączony z resztą słowa ('s.Substring(1)'). Tak uzyskane fragmenty są łączone w jeden ciąg za pomocą 'string.Join("", ...)'. W rezultacie otrzymujemy 'HelloWorld', co jest zgodne z praktykami konwencji nazewniczych w programowaniu, gdzie często łączy się słowa w jeden ciąg, eliminując spacje. Dzięki temu wynik jest bardziej zwięzły i czytelny."

Pytanie 36

Który z objawów może sugerować zawał serca?

A. Gorączka oraz dreszcze
B. Ból brzucha po spożyciu posiłku
C. Spadek nastroju
D. Intensywny ból w klatce piersiowej promieniujący do lewej ręki
Silny ból w klatce piersiowej promieniujący do lewej ręki to klasyczny objaw zawału serca (ostrego zespołu wieńcowego). Ból ten często pojawia się nagle, jest intensywny, gniotący lub piekący i może towarzyszyć mu duszność, zawroty głowy, zimne poty i nudności. Zawał serca wynika z zablokowania jednej z tętnic wieńcowych, co prowadzi do niedokrwienia mięśnia sercowego. Szybka reakcja i wezwanie pomocy medycznej mogą uratować życie i zminimalizować uszkodzenia serca. Każda minuta jest kluczowa – nie należy czekać na ustąpienie objawów, lecz natychmiast zadzwonić na numer alarmowy 112 lub udać się do najbliższego szpitala.

Pytanie 37

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

A. Intel UHD Graphics 630 - zintegrowana
B. NVIDIA GeForce GTX 1050 Ti - 4GB GDDR5, 128-bit
C. AMD Radeon R7 240 - 2GB GDDR5, 64-bit
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 38

Resuscytacja krążeniowo-oddechowa polega na realizowaniu

A. 15 ucisków klatki piersiowej oraz 3 oddechy ratunkowe
B. 10 ucisków klatki piersiowej oraz 5 oddechów ratunkowych
C. 20 ucisków klatki piersiowej oraz 1 oddech ratunkowy
D. 30 ucisków klatki piersiowej oraz 2 oddechy ratunkowe
10 uciśnięć i 5 oddechów – Nie jest to schemat RKO stosowany w praktyce. 15 uciśnięć i 3 oddechy – Był to wcześniejszy standard, ale obecnie stosuje się inny schemat. 20 uciśnięć i 1 oddech – Jest to niepoprawne i niezgodne z wytycznymi pierwszej pomocy.

Pytanie 39

Aplikacje funkcjonujące w systemach Android do komunikacji z użytkownikiem wykorzystują klasę

A. Fragments
B. Activity
C. Windows
D. Screens
W systemach Android do interakcji z użytkownikiem wykorzystywana jest klasa Activity, która reprezentuje pojedynczy ekran aplikacji. Activity zarządza cyklem życia aplikacji i pozwala na obsługę zdarzeń użytkownika, co jest kluczowym elementem w budowie aplikacji mobilnych.

Pytanie 40

Na ilustracji pokazany jest fragment diagramu blokowego pewnego algorytmu. Ile razy warunek n<7 będzie badany?

Ilustracja do pytania
A. 7
B. 8
C. 6
D. 5
Wybór innej odpowiedzi niż 4 wskazuje na nieprawidłowe rozumienie mechanizmu działania pętli z warunkiem końcowym Problem może tkwić w błędnym założeniu dotyczącym liczby iteracji które ma miejsce gdy nie uwzględnia się początkowej wartości n Wynik 8 mógłby wynikać z mylnego założenia że pętla sprawdza warunek również po zakończeniu gdy n wynosi 7 co jest nieprawidłowe Ponadto wybór 5 może sugerować że zrozumienie zakresu wartości n jest niepełne ponieważ pomija się pierwszą iterację gdy n równa się 1 Odpowiedź 7 mogłaby wynikać z błędnego przeliczania liczby iteracji lub niepoprawnego przeanalizowania działania inkrementacji w algorytmie Ważne jest aby zrozumieć że warunek n mniejsze od 7 jest sprawdzany na początku każdej iteracji pętli i gdy n osiąga wartość 7 pętla nie wykonuje się ponownie Zrozumienie tego mechanizmu jest kluczowe do poprawnego projektowania algorytmów i unikania typowych błędów logicznych które mogą prowadzić do nieefektywności kodu oraz trudności w jego debugowaniu i utrzymaniu Praktykując analizę schematów blokowych i algorytmów warto zwrócić uwagę na działanie warunków i ich wpływ na przebieg pętli co ma szerokie zastosowanie zarówno w programowaniu jak i w analizie danych oraz automatyzacji procesów