Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 30 czerwca 2026 16:33
  • Data zakończenia: 30 czerwca 2026 16:43

Egzamin zdany!

Wynik: 36/40 punktów (90,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Co należy do zadań interpretera?

A. ulepszanie większej części kodu, aby przyspieszyć jego wykonanie
B. wykonanie skryptu instrukcja po instrukcji
C. sprawdzanie składni całego programu przed jego uruchomieniem
D. przekładanie kodu na kod maszynowy
Interpreter to taki program, który odczytuje kod źródłowy i wykonuje go krok po kroku, instrukcja po instrukcji, bez wcześniejszego tłumaczenia całości na kod maszynowy. W praktyce oznacza to, że interpreter analizuje każdą linię lub blok kodu i natychmiast realizuje odpowiadające im działania na komputerze. Przykładem są języki takie jak Python czy JavaScript – tam właśnie interpreter gra główną rolę. Umożliwia to szybkie testowanie i prototypowanie, bo nie trzeba czekać na kompilację całego programu, wystarczy wpisać polecenie i od razu widzimy efekt. Moim zdaniem to genialne rozwiązanie zwłaszcza do nauki programowania czy pisania prostych skryptów systemowych, gdzie liczy się szybka informacja zwrotna. Warto wiedzieć, że interpreter nie generuje pliku wykonywalnego na stałe – każdy raz trzeba uruchomić kod za jego pośrednictwem. W branży często używa się interpreterów do automatyzacji zadań, analizy danych czy tworzenia narzędzi do testów. Z własnego doświadczenia wiem, że interpreter pozwala łatwo wyłapać błędy logiczne na bieżąco, chociażby w konsoli Pythona. To świetne narzędzie, gdy chcemy eksperymentować z kodem, bo nic nie stoi na przeszkodzie, żeby szybko coś zmodyfikować i od razu zobaczyć rezultat. Trzeba tylko pamiętać, że takie podejście czasem może być wolniejsze niż wykonanie kodu skompilowanego, ale w wielu zadaniach wygoda i elastyczność przeważają nad wydajnością.

Pytanie 2

Który z wymienionych elementów jest fundamentalny w architekturze klient-serwer?

A. Wyłącznie komunikacja synchroniczna
B. Brak podziału na funkcje klienta i serwera
C. Zdalne wykonywanie aplikacji na urządzeniu klienta
D. Scentralizowane przechowywanie danych
Scentralizowane przechowywanie danych to podstawowy element architektury klient-serwer. W takim modelu dane przechowywane są na serwerze, a klient uzyskuje do nich dostęp na żądanie. Dzięki temu możliwa jest efektywna synchronizacja danych oraz ich ochrona przed nieautoryzowanym dostępem. Architektura klient-serwer jest skalowalna i umożliwia obsługę wielu klientów jednocześnie, co czyni ją fundamentem dla większości nowoczesnych aplikacji webowych i mobilnych.

Pytanie 3

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

public class Point {
    public void Move(int x, int y) {...}
    public void Move(int x, int y, int z) {...}
    public void Move(Point newPt) {...}
}
A. Są przeciążone.
B. Zawierają przeciążenie operatora.
C. Zawierają błąd, ponieważ nazwy metod powinny być różne.
D. Służą jako konstruktory w zależności od liczby argumentów.
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 4

Które z wymienionych stwierdzeń najtrafniej charakteryzuje WPF?

A. Framework przeznaczony do budowy aplikacji internetowych
B. Framework przeznaczony do budowy aplikacji stacjonarnych w systemie Windows
C. Biblioteka do obróbki danych w Pythonie
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 5

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

A. RAD nie obsługuje interfejsu użytkownika
B. RAD działa tylko na urządzeniach z systemem iOS
C. RAD pozwala na szybsze budowanie aplikacji dzięki narzędziom do wizualnego designu i automatycznego generowania kodu
D. RAD koncentruje się wyłącznie na procesie debugowania aplikacji
RAD (Rapid Application Development) umożliwia szybsze tworzenie aplikacji mobilnych dzięki narzędziom do wizualnego projektowania i automatycznego generowania kodu. RAD koncentruje się na iteracyjnym podejściu do rozwoju oprogramowania, w którym prototypy są budowane i testowane w krótkich cyklach, co pozwala na szybkie dostosowywanie aplikacji do zmieniających się wymagań użytkowników. W kontekście aplikacji mobilnych, RAD skraca czas tworzenia poprzez graficzne narzędzia do budowy interfejsów, gotowe komponenty oraz integrację z backendem. Frameworki RAD, takie jak OutSystems, Mendix czy Flutter, pozwalają na szybkie wdrażanie i modyfikację aplikacji mobilnych, co znacząco zwiększa efektywność programistów.

Pytanie 6

Wskaż właściwość charakterystyczną dla metody abstrakcyjnej?

A. zawsze jest prywatna
B. jest pusta w klasach dziedziczących
C. jest pusta w klasie nadrzędnej
D. nie ma implementacji w klasie bazowej
Wokół metod abstrakcyjnych narosło sporo nieporozumień, które często wynikają z mieszania pojęć związanych z dziedziczeniem i modyfikatorami dostępu. Ludzie czasem myślą, że metoda abstrakcyjna musi być zawsze prywatna, co jednak mija się z prawdą – przecież klasa pochodna nie miałaby do niej dostępu i nie mogłaby jej zaimplementować, gdyby była private. Standardy języków jak Java czy C# wręcz wymagają, by była minimum protected albo public, żeby dziedziczące klasy mogły ją nadpisać. Często można się też spotkać z przekonaniem, że metoda abstrakcyjna jest pusta w klasach dziedziczących – a to bardzo mylące, bo właśnie w klasach dziedziczących mamy obowiązek podać jej konkretną implementację. Jeżeli to pominiesz, kompilator przypomni o tym błędzie. Pojawia się też pogląd, że metoda abstrakcyjna jest pusta w klasie nadrzędnej – to nieprecyzyjne ujęcie, bo 'pusta' sugeruje, że można mieć ciało metody, tylko nic w nim nie napisać, a tymczasem w przypadku metody abstrakcyjnej w ogóle nie wolno podawać ciała w klasie bazowej (nawet klamerek!). Typowym błędem jest też mylenie metody abstrakcyjnej z tzw. metodą wirtualną lub domyślną (te już często mają jakąś domyślną implementację, którą można nadpisać). Takie nieporozumienia prowadzą potem do źle zaprojektowanych hierarchii klas, co z czasem utrudnia rozwój projektu. Z mojego doświadczenia wynika, że najlepiej po prostu pamiętać: metoda abstrakcyjna to taka, która nie ma implementacji w bazie i wymusza jej podanie w klasie pochodnej. Tyle, żadnych półśrodków czy wyjątków.

Pytanie 7

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

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

Pytanie 8

Który z wymienionych parametrów dysku twardego ma największy wpływ na jego wydajność?

A. Prędkość obrotowa talerzy (RPM)
B. Pojemność dysku
C. Ilość pamięci podręcznej (Cache)
D. Rodzaj złącza (SATA/PCIe)
Pojemność dysku jest istotnym parametrem, ale nie wpływa bezpośrednio na jego szybkość działania. Większa pojemność oznacza, że na dysku można przechowywać więcej danych, jednak nie przyspiesza to operacji odczytu i zapisu. Wydajność jest bardziej związana z tym, jak szybko dane mogą być przesyłane do i z dysku, co nie jest bezpośrednio związane z jego pojemnością. Rodzaj złącza, takiego jak SATA czy PCIe, również ma swoje znaczenie, ale w przypadku dysków HDD to prędkość obrotowa jest kluczowa dla szybkości pracy. Złącza PCIe, które są znacznie szybsze od SATA, są bardziej relevantne w kontekście dysków SSD, gdzie czas dostępu i szybkość transferu są znacznie wyższe niż w przypadku talerzowych dysków HDD. Na koniec, ilość pamięci podręcznej (Cache) dysku, choć ma znaczenie w usprawnieniu operacji odczytu i zapisu, to jej wpływ jest marginalny w porównaniu do prędkości obrotowej. Cache działa jako bufor, ale nie zastąpi wyższej prędkości obrotowej talerzy, która decyduje o tym, jak быстро można uzyskać dostęp do danych przechowywanych na dysku.

Pytanie 9

Które stwierdzenie dotyczące interfejsu w Java jest prawdziwe?

A. W interfejsie można definiować implementacje metod statycznych
B. Interfejs może zawierać pola z dostępem protected
C. Wszystkie metody w interfejsie są domyślnie publiczne i abstrakcyjne
D. Interfejs może dziedziczyć po wielu klasach jednocześnie
Interfejsy w języku Java są fundamentalnym elementem programowania obiektowego, pozwalającym na definiowanie kontraktów, które muszą być implementowane przez klasy. Stwierdzenie, że wszystkie metody w interfejsie są domyślnie publiczne i abstrakcyjne, jest całkowicie zgodne z zasadami języka Java. Oznacza to, że nie trzeba jawnie deklarować tych modyfikatorów dostępu, ponieważ metody zdefiniowane w interfejsie są zawsze dostępne dla klas implementujących ten interfejs. To podejście promuje luźne powiązania między kodem oraz ułatwia testowanie i utrzymanie aplikacji. Przykładem praktycznym może być interfejs Comparable, który definiuje metodę compareTo. Klasy, które implementują ten interfejs, muszą dostarczyć konkretnej logiki porównywania obiektów, co pozwala na ujednolicenie sposobu, w jaki obiekty są porównywane w kolekcjach. Warto również zauważyć, że od Javy 8 interfejsy mogą zawierać metody domyślne z implementacją, ale nawet te metody są publiczne. Poprawne zrozumienie roli interfejsów jest kluczowe w projektowaniu systemów z zastosowaniem wzorców projektowych, takich jak MVC czy strategia.

Pytanie 10

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

A. Przekazywanie danych zachodzi w sposób niesystematyczny
B. Nie jest konieczna synchronizacja zegarów
C. Transmisja danych odbywa się w wyznaczonych interwałach czasowych
D. Gwarantuje większą elastyczność w przesyłaniu danych
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 11

Jedną z dolegliwości, która pojawia się u programistów w wyniku długotrwałego korzystania z myszki komputerowej lub klawiatury, objawiającą się bólami, drętwieniem oraz zaburzeniami czucia w obszarze 1-3 palca dłoni jest

A. Dyskopatia
B. zespół suchego oka
C. kifoza
D. zespól cieśni kanału nadgarstka
Zespół cieśni kanału nadgarstka to schorzenie, które powstaje w wyniku ucisku na nerw pośrodkowy w kanale nadgarstka. Jest to wąski tunel utworzony przez kości nadgarstka oraz więzadła, przez który przechodzą ścięgna oraz nerwy odpowiedzialne za czucie i ruch w dłoni. Objawy zespołu cieśni kanału nadgarstka obejmują bóle, drętwienie oraz zaburzenia czucia, szczególnie w obszarze pierwszych trzech palców ręki. Praca z myszą komputerową i klawiaturą przez długi czas, szczególnie w niewłaściwej ergonomicznej pozycji, może prowadzić do nadmiernego obciążenia i zapalenia tkanek otaczających nerw pośrodkowy. W praktyce, osoby cierpiące na to schorzenie często skarżą się na problemy z chwytaniem przedmiotów, a także na osłabienie siły uchwytu. W leczeniu zespołu cieśni kanału nadgarstka zaleca się m.in. unikanie czynników przyczynowych, stosowanie ortez, fizjoterapię oraz w niektórych przypadkach leczenie chirurgiczne. Należy również zwrócić uwagę na ergonomię stanowiska pracy, co może znacząco zredukować ryzyko wystąpienia tej dolegliwości. Zarządzanie czasem spędzanym przy komputerze oraz regularne przerwy są kluczowe w prewencji tego schorzenia.

Pytanie 12

Która grupa typów zawiera wyłącznie typy złożone?

A. class, struct, union
B. class, struct, float
C. char, struct, union
D. unsigned, struct, float
W tej odpowiedzi trafiłeś w sedno, bo class, struct oraz union to typowe przykłady typów złożonych w językach programowania takich jak C++ czy C. Każdy z nich służy do przechowywania bardziej skomplikowanych struktur danych niż zwykłe typy proste jak int czy float. Klasa (class) to podstawa programowania obiektowego. Pozwala łączyć dane i funkcje w jeden byt – obiekt. Z mojego doświadczenia korzystanie z klas daje ogromne możliwości, bo można ukrywać szczegóły implementacji czy stosować dziedziczenie – co jest nieocenione przy większych projektach. Struktura (struct) to taki trochę prostszy wariant klasy, szczególnie w C, gdzie nie obsługuje ona metod czy hermetyzacji, ale w C++ różnice się zacierają. Union natomiast pozwala na oszczędność pamięci – kilka pól dzieli ten sam obszar pamięci, czyli tylko jedno z nich jest aktywne w danej chwili. To się przydaje np. w programowaniu niskopoziomowym, obsłudze różnych protokołów czy pracy z rejestrami sprzętowymi. Według standardów ISO/IEC dla języka C++ (np. 14882:2017), właśnie te trzy typy należą bezdyskusyjnie do grupy złożonych, bo są zbudowane z innych typów i pozwalają lepiej modelować rzeczywistość. Warto pamiętać, że typy złożone są podstawą nowoczesnych technik projektowania oprogramowania. W praktyce, nawet w prostych aplikacjach, korzystanie z tych struktur podnosi czytelność i ułatwia przyszłą rozbudowę kodu.

Pytanie 13

Zaprezentowany fragment kodu w języku C# tworzy hasło. Wskaż zdanie PRAWDZIWE dotyczące charakterystyki tego hasła:

var random = new Random();
string pulaZnakow = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";

int dlPuli = pulaZnakow.Length - 1;
char znak;
string wynik = "";

for(int i = 0; i < 8; i++)  {
    znak = pulaZnakow[random.Next(0, dlPuli)];
    wynik += znak;
}
A. Może zawierać małe i wielkie litery oraz cyfry
B. Jest maksymalnie 7-znakowe, co wynika z wartości zmiennej i
C. Ma co najmniej 8 znaków oraz zawiera małe i wielkie litery oraz cyfry
D. Może zawierać zarówno małe, jak i wielkie litery, cyfry oraz symbole
Analizując podany fragment kodu, widać, że hasło generowane jest losowo z puli znaków, która zawiera małe i wielkie litery alfabetu łacińskiego oraz cyfry od 0 do 9. Nie znajdują się tam żadne znaki specjalne ani symbole, więc hasło nie może ich zawierać – to ważne z praktycznego punktu widzenia, bo często spotyka się wymagania dotyczące obecności symboli w bezpiecznych hasłach. Kod wykorzystuje pętlę for, która wykonuje się dokładnie 8 razy, czyli hasło ma zawsze 8 znaków – ani mniej, ani więcej. Z mojego doświadczenia wynika, że taki sposób generowania haseł jest dość powszechny w prostych aplikacjach, np. przy automatycznym tworzeniu kont użytkowników. Jednak warto pamiętać, że im bardziej zróżnicowana pula znaków, tym lepsze zabezpieczenie – tutaj ograniczamy się tylko do liter i cyfr. Z praktycznego punktu widzenia, takie losowe hasło trudno odgadnąć ręcznie, ale jest dość przewidywalne, jeśli ktoś zna algorytm i nie ma dodatkowych zabezpieczeń (np. cryptographically secure random number generator). W standardach bezpieczeństwa, np. OWASP, zaleca się uwzględnianie symboli i unikanie prostego Random do generowania haseł, bo można go przewidzieć, ale do nauki i zastosowań testowych taki kod jest całkiem w porządku. Hasło więc może zawierać małe i wielkie litery oraz cyfry – dokładnie jak głosi prawidłowa odpowiedź.

Pytanie 14

Jakie z przedstawionych rozwiązań może pomóc w unikaniu porażeń prądem w biurze?

A. Systematyczne sprawdzanie instalacji elektrycznych
B. Wykorzystanie foteli o ergonomicznym kształcie
C. Stosowanie monitorów LCD
D. Kontrolowanie jakości powietrza
Regularne testowanie instalacji elektrycznych to podstawowy sposób zapobiegania porażeniom prądem w pracy biurowej. Testy te pozwalają wykryć uszkodzenia, przeciążenia i inne usterki, które mogą stanowić zagrożenie dla pracowników. Prawidłowo przeprowadzane przeglądy techniczne obejmują sprawdzanie stanu przewodów, gniazdek oraz urządzeń elektrycznych. Regularne kontrole zgodne z normami BHP oraz przepisami dotyczącymi instalacji elektrycznych są obowiązkowe i mają kluczowe znaczenie dla bezpieczeństwa pracy. Pamiętaj, że zaniedbanie testów elektrycznych może prowadzić do poważnych wypadków, takich jak pożary lub porażenia prądem.

Pytanie 15

Jakie składniki są kluczowe w dynamicznym formularzu logowania?

A. Pola tekstowe do wprowadzania danych użytkownika
B. Nagłówek HTTP
C. Plik graficzny
D. Tabela w bazie danych
Pola tekstowe do wprowadzania danych użytkownika są kluczowym elementem dynamicznego formularza logowania. Umożliwiają one użytkownikowi wprowadzenie informacji, takich jak nazwa użytkownika i hasło, co jest niezbędne do uwierzytelnienia w systemie. Formularze HTML wykorzystują tagi <input> do tworzenia pól tekstowych, a ich interakcja z użytkownikiem może być wspierana przez JavaScript lub inne technologie frontendowe, które walidują dane i zapewniają bezpieczeństwo procesu logowania. Pola tekstowe mogą być wzbogacone o atrybuty, takie jak 'required', 'pattern' czy 'type', które dodatkowo zabezpieczają formularz i ułatwiają użytkownikowi poprawne wypełnienie danych.

Pytanie 16

Jakie są cechy biblioteki statycznej w zestawieniu z dynamiczną?

A. Nie potrzebuje obecności pliku wykonywalnego
B. Zostaje dodana do pliku wykonywalnego w trakcie kompilacji
C. Może być zmieniana w czasie działania programu
D. Jest wczytywana do pamięci podczas działania aplikacji
Biblioteki dynamiczne są ładowane do pamięci podczas działania programu, co pozwala na oszczędność miejsca i elastyczność w aktualizacjach. Twierdzenie, że biblioteka nie wymaga obecności pliku wykonywalnego, jest błędne – biblioteka musi być dostępna w systemie, aby program mógł z niej korzystać. Możliwość modyfikacji biblioteki w trakcie działania programu dotyczy tylko bibliotek dynamicznych, a nie statycznych, ponieważ kod bibliotek statycznych jest na stałe wkompilowany w aplikację.

Pytanie 17

W programowaniu obiektowym odpowiednikami zmiennych oraz funkcji w programowaniu strukturalnym są

A. pola i metody
B. hermetyzacja oraz dziedziczenie
C. metody statyczne i abstrakcyjne
D. pola i kwalifikatory dostępu
Pola i metody to absolutna podstawa, jeśli chodzi o programowanie obiektowe. Właśnie one są najbliższym odpowiednikiem zmiennych i funkcji z podejścia strukturalnego. Moim zdaniem, gdy uczysz się OOP, warto od razu wyłapać tę analogię – pola (czyli inaczej: atrybuty, właściwości, fields) przechowują stan obiektu, a metody (czyli funkcje w klasie) definiują, co obiekt potrafi zrobić. Przykład z życia: klasa Samochód ma pole kolor, które opisuje jego cechę oraz metodę jedź(), która realizuje jakąś akcję. W praktyce programiści bardzo często modelują swoje klasy tak, aby pola były prywatne (zgodnie z zasadą hermetyzacji), a dostęp do nich zapewniały metody publiczne – tzw. gettery i settery. Standardy branżowe, np. JavaBeans w Javie czy konwencje C#, też polegają na tym, że pola odzwierciedlają dane, a metody operacje na tych danych. Z mojego doświadczenia wynika, że rozumienie tej relacji ułatwia zarówno pisanie czytelnego kodu, jak i jego dalsze rozwijanie. To właśnie dzięki rozdzieleniu na pola i metody klasy mogą odwzorowywać obiekty z realnego świata i ich zachowania, co jest głównym celem programowania obiektowego.

Pytanie 18

Co będzie wynikiem działania poniższego kodu SQL?

SELECT COUNT(*)
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
A. Liczba pracowników z pensją powyżej średniej
B. Liczba pracowników z najwyższą pensją
C. Średnia pensja wszystkich pracowników
D. Błąd składni SQL
Odpowiedź, że wynik działania zapytania SQL to liczba pracowników z pensją powyżej średniej, jest całkowicie poprawna. Zapytanie to korzysta z funkcji agregującej COUNT(*), która zlicza liczbę rekordów spełniających określony warunek. W tym przypadku warunkiem jest, że pensja pracownika jest większa od średniej pensji wszystkich pracowników, którą obliczamy za pomocą wewnętrznego zapytania (subquery). Tego rodzaju operacje są powszechnie stosowane w analizie danych w bazach danych, gdzie często musimy wykonać porównania względem wartości agregatów, takich jak średnia, mediana czy suma. Przykładowo, w analizie wynagrodzeń w danej firmie, można użyć podobnych zapytań do oceny, jaki odsetek pracowników jest wynagradzanych powyżej średniej, co może być istotne z punktu widzenia polityki płacowej oraz budżetowania. Pamiętaj, że dobre praktyki w pracy z bazami danych obejmują optymalizację zapytań oraz unikanie niepotrzebnych obliczeń, co może wpłynąć na wydajność systemu.

Pytanie 19

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

A. Android Studio Layout Editor
B. PyCharm Debugger
C. Narzędzie do zarządzania bazami danych
D. Kompilator Javy
Android Studio Layout Editor to narzędzie umożliwiające projektowanie interfejsu użytkownika aplikacji mobilnych w sposób wizualny, za pomocą metody 'przeciągnij i upuść'. Layout Editor pozwala na szybkie tworzenie responsywnych interfejsów, które automatycznie dostosowują się do różnych rozmiarów ekranów i rozdzielczości. Dzięki niemu programiści mogą łatwo dodawać elementy UI, takie jak przyciski, pola tekstowe, listy czy obrazy, oraz dostosowywać ich właściwości bez konieczności pisania dużych fragmentów kodu XML. Narzędzie to jest kluczowe dla szybkiego prototypowania aplikacji oraz iteracyjnego podejścia do budowy interfejsu użytkownika w środowisku Android Studio.

Pytanie 20

Która z poniższych metod HTTP służy do aktualizacji zasobu?

A. POST
B. PUT
C. GET
D. DELETE
Metoda HTTP PUT jest używana do aktualizacji zasobów na serwerze. Zgodnie z zasadami protokołu HTTP, PUT wysyła zaktualizowane dane do określonego zasobu, co pozwala na jego modyfikację lub utworzenie nowego, jeśli zasób nie istnieje. Przykładem zastosowania PUT może być aktualizacja informacji o użytkowniku w systemie, gdzie wysyłane są dane użytkownika w formacie JSON do odpowiedniego endpointu API, przykładowo: PUT /api/users/123 z danymi {"name": "Jan", "email": "[email protected]"}. W praktyce, korzystanie z metody PUT jest zgodne z zasadami RESTful API, które zaleca używanie tej metody do operacji aktualizacji. PUT jest idempotentne, co oznacza, że niezależnie od liczby razy, jakie zostanie wykonane, wynik operacji pozostaje taki sam. To różni się od POST, które służy do tworzenia nowych zasobów. Zrozumienie zastosowania metod HTTP jest kluczowe w projektowaniu i implementacji efektywnych interfejsów API.

Pytanie 21

W jaki sposób określa się wypadek związany z pracą?

A. Każde zdarzenie, które prowadzi do opóźnienia w wykonaniu obowiązków
B. Nagłe zdarzenie związane z pracą, powodujące uraz lub śmierć
C. Każdy incydent wynikający z działania osób trzecich
D. Każde zdarzenie, które wymaga interwencji technicznej w miejscu zatrudnienia
Wypadek przy pracy to nagłe zdarzenie związane z wykonywaną pracą, które powoduje uraz lub śmierć pracownika. Wypadki te mogą być wynikiem zaniedbań, nieprzestrzegania zasad BHP lub nieodpowiedniego zabezpieczenia stanowiska pracy. Przykładami wypadków przy pracy są upadki z wysokości, porażenia prądem, oparzenia chemiczne lub uszkodzenia ciała przez maszyny. Pracodawca jest zobowiązany do zgłaszania każdego wypadku przy pracy, prowadzenia dochodzenia w celu ustalenia przyczyn i wdrażania działań zapobiegających powtórzeniu się podobnych sytuacji. Wypadki przy pracy są jedną z głównych przyczyn absencji oraz roszczeń pracowniczych, dlatego prewencja i edukacja w zakresie BHP są niezwykle istotne.

Pytanie 22

Które z poniższych jest podstawowym rodzajem testów używanych w testowaniu jednostkowym?

A. Testy systemowe
B. Testy akceptacyjne
C. Testy integracyjne
D. Testy jednostkowe
Testy jednostkowe są kluczowym elementem procesu testowania oprogramowania, szczególnie w kontekście metodologii programowania zwinnego. Polegają one na testowaniu pojedynczych najmniejszych części programu, takich jak funkcje czy metody, w izolacji od reszty systemu. Dzięki temu możemy szybko wykryć błędy i upewnić się, że dany fragment kodu działa zgodnie z oczekiwaniami. W praktyce, testy jednostkowe są często automatyzowane i stanowią podstawę dla procesu ciągłej integracji (CI). Przykładem zastosowania testów jednostkowych może być sprawdzenie, czy funkcja dodająca dwie liczby zwraca poprawny wynik dla różnych zestawów danych wejściowych. Dzięki testom jednostkowym programiści mogą z większą pewnością modyfikować i rozwijać kod, mając pewność, że nie wprowadzają nowych błędów. To właśnie testy jednostkowe pozwalają na szybkie wykrywanie regresji i są fundamentem dla bardziej zaawansowanych form testowania, takich jak testy integracyjne czy systemowe. Dbanie o dobrze zdefiniowany zestaw testów jednostkowych jest uznawane za dobrą praktykę w branży IT i podnosi jakość oprogramowania.

Pytanie 23

Reguła zaangażowania i konsekwencji jako jedna z zasad wpływania na innych odnosi się

A. do uległości wobec autorytetów
B. do doprowadzania spraw do końca
C. do odwzajemniania się osobie, która nam pomogła
D. do kierowania się zdaniem danej grupy
Reguła zaangażowania i konsekwencji, o której tu mowa, faktycznie odnosi się do potrzeby doprowadzania spraw do końca. To jedna z podstawowych zasad psychologicznych wykorzystywanych w wpływaniu na decyzje i zachowania ludzi, szczególnie w sprzedaży czy negocjacjach. Kiedy już się na coś zgodzimy lub podejmiemy pierwsze, nawet drobne zobowiązanie, automatycznie pojawia się w nas silna potrzeba zachowania spójności z wcześniejszymi deklaracjami — tak po prostu działa ludzka psychika. Z mojego doświadczenia wynika, że firmy bardzo często to wykorzystują, np. prosząc klienta o drobną przysługę, podpis czy mikroakceptację, bo potem jest większa szansa, że pójdzie za ciosem i zdecyduje się na większy krok. W psychologii społecznej ten mechanizm uznaje się za bardzo skuteczny – zresztą Robert Cialdini w swoich książkach szeroko o tym pisze. Na rynku pracy też to widać, bo pracodawcy chętniej powierzają ważne zadania osobom, które mają zwyczaj kończyć to, co zaczęły. W praktyce, jeśli ktoś raz się w coś zaangażuje — nawet formalnie nie podpisując żadnej umowy — to potem z dużym prawdopodobieństwem wytrwa przy swojej decyzji. Dlatego znajomość tej zasady jest nie tylko teoretycznie ciekawa, ale daje konkretne narzędzia do skuteczniejszego działania w relacjach międzyludzkich, marketingu czy zarządzaniu projektami.

Pytanie 24

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

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

Pytanie 25

Jakie rozwiązanie jest najbardziej odpowiednie przy projektowaniu aplikacji, która ma funkcjonować na różnych systemach operacyjnych?

A. Wykorzystanie technik responsywnego projektowania interfejsu
B. Pełne dopasowanie aplikacji do systemu Windows
C. Koncentrowanie się wyłącznie na estetyce aplikacji
D. Opracowanie dedykowanego kodu dla każdej platformy
Wykorzystanie technik responsywnego projektowania interfejsu to obecnie jedno z najskuteczniejszych rozwiązań, jeśli chodzi o tworzenie aplikacji działających na różnych systemach operacyjnych. Moim zdaniem, to podejście daje największą elastyczność i wygodę zarówno dla użytkownika, jak i dla samego zespołu developerskiego. Responsywność nie sprowadza się tylko do zmiany rozmiaru okna, ale także do automatycznego dostosowania elementów interfejsu do różnych rozdzielczości, DPI czy nawet gestów obsługiwanych przez konkretne urządzenia. Dzięki temu aplikacja może wyglądać i działać spójnie niezależnie od tego, czy uruchamiana jest na Windowsie, MacOS, Linuksie czy nawet na mobilnych systemach operacyjnych. W praktyce często korzysta się z frameworków takich jak Flutter, React Native albo Electron, które już "z pudełka" oferują narzędzia do tworzenia responsywnych, wieloplatformowych aplikacji. Branżowe standardy, szczególnie te, które dotyczą UX/UI (na przykład wytyczne Material Design czy Human Interface Guidelines od Apple), mocno podkreślają wagę responsywności i uniwersalności rozwiązań. Co ciekawe, dobrze zaprojektowana responsywna aplikacja jest też łatwiejsza w utrzymaniu i rozwoju, bo zamiast kilku osobnych wersji kodu, mamy jedną, dobrze przemyślaną bazę. To oszczędza czas, zasoby i minimalizuje ryzyko powstawania błędów. Sam przećwiczyłem wiele takich przypadków i widać, że inżynieria oprogramowania idzie właśnie w stronę uniwersalnych, "adaptacyjnych" rozwiązań.

Pytanie 26

Jakie znaczenie ma framework w kontekście programowania?

A. System operacyjny, który umożliwia uruchamianie aplikacji
B. Zbiór gotowych bibliotek, narzędzi i zasad ułatwiających tworzenie aplikacji
C. Program do graficznego projektowania interfejsów użytkownika
D. Moduł do zarządzania systemami baz danych
Framework to zbiór gotowych bibliotek, narzędzi i reguł, które wspierają tworzenie aplikacji poprzez dostarczanie struktury ułatwiającej pracę programistów. Frameworki definiują standardowe komponenty aplikacji, umożliwiając programistom skoncentrowanie się na logice biznesowej zamiast na podstawowej architekturze aplikacji. Przykłady popularnych frameworków to .NET, Angular, Django i Spring. Frameworki przyspieszają proces programowania, poprawiają jakość kodu i wspierają skalowalność aplikacji, co czyni je nieodłącznym elementem nowoczesnego programowania.

Pytanie 27

Ile kilobajtów (KB) znajduje się w jednym megabajcie (MB)?

A. 1000
B. 1024
C. 10
D. 100
W informatyce jednostki pamięci są często używane do określenia pojemności danych. 1 megabajt (MB) równa się 1024 kilobajtom (KB) w systemie binarnym, który jest podstawowym systemem liczbowym używanym w komputerach. Wynika to z faktu, że komputery operują w systemie binarnym, gdzie wartości są potęgami liczby 2. Z definicji, 1 MB to 2 do potęgi 20 bajtów, co daje 1048576 bajtów. Kiedy dzielimy tę wartość przez 1024, otrzymujemy 1024 kilobajty. W praktyce, ta konwersja jest niezwykle istotna w kontekście zarządzania pamięcią oraz określania rozmiarów plików. Na przykład, przy pobieraniu plików z internetu, znając tę konwersję, można lepiej oszacować czas pobierania oraz zarządzanie przestrzenią dyskową. Warto również zauważyć, że niektóre systemy operacyjne i producenci sprzętu używają systemu dziesiętnego, w którym 1 MB to 1000 KB, co prowadzi do nieporozumień. Dlatego znajomość różnic między systemami binarnym i dziesiętnym jest kluczowa dla zrozumienia pojemności pamięci komputerowej i odpowiednich jednostek.

Pytanie 28

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

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

Pytanie 29

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

A. Zmiana rozdzielczości ekranu
B. Ograniczenie liczby grafik na stronie
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 30

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

Ilustracja do pytania
A. Kod 1
B. Kod 3
C. Kod 4
D. Kod 2
Bardzo dobrze wychwycone! Kod 3 idealnie odwzorowuje logikę algorytmu przedstawioną na schemacie blokowym. Pętla while sprawdza warunek y != 100 i dopóki jest spełniony, wykonuje instrukcję y = a + b. Zarówno przebieg pętli, jak i wyjście z niej odpowiadają dokładnie temu, co prezentuje ten diagram blokowy – czyli wykonujemy przypisanie y = a + b, jeśli warunek jest prawdziwy, a gdy przestaje być, wychodzimy z pętli. Takie podejście jest bardzo typowe w programowaniu, nie tylko w szkolnych zadaniach, ale też w praktyce, gdy musimy powtarzać akcję do momentu spełnienia konkretnego warunku. Moim zdaniem, dobrze jest tutaj zauważyć, że pętle while są preferowane, gdy nie znamy z góry liczby powtórzeń, a warunek wejścia ma być sprawdzany przed każdym przebiegiem – to klasyczna konstrukcja w językach takich jak C, Java czy Python. Tego typu algorytmy można spotkać choćby podczas obsługi wejścia użytkownika (np. powtarzaj pytanie, aż użytkownik poda poprawną wartość) albo w sterowaniu urządzeniami, gdy czekamy na określony sygnał wejściowy. Warto też pamiętać, że w profesjonalnym kodzie dobrze jest dbać o czytelność i jednoznaczność takich fragmentów – a ten kod właśnie taki jest. Swoją drogą, czasem warto dodać jeszcze zabezpieczenia, by uniknąć tzw. nieskończonej pętli, ale tutaj, jak widać, intencja jest jasna i zgodna ze standardami branżowymi.

Pytanie 31

Jakie znaczenie ma deklaracja zmiennej w programowaniu?

A. Przypisanie zmiennej wartości domyślnej
B. Zarezerwowanie miejsca w pamięci dla wyników operacji arytmetycznych
C. Stworzenie nowej wartości w bazie danych
D. Określenie typu oraz nazwy zmiennej w kodzie programu
Deklaracja zmiennej to podstawowy krok w programowaniu, który polega na określeniu typu oraz nazwy zmiennej, zanim zostanie do niej przypisana wartość. W językach takich jak C++, Java, czy C# deklaracja wygląda na przykład tak: `int liczba;`. Określenie typu zmiennej pozwala kompilatorowi lub interpreterowi zarezerwować odpowiednią ilość pamięci oraz kontrolować, jakie operacje mogą być na niej wykonywane. Deklaracja zmiennej zwiększa czytelność kodu, umożliwia wykrywanie błędów na wczesnym etapie kompilacji i jest kluczowa w zarządzaniu zasobami aplikacji.

Pytanie 32

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

class Dokument {
    public string nazwa;
    protected string autor;
}
// .... w kodzie funkcji main
Dokument doc = new Dokument();
Console.WriteLine(doc.autor);
A. Pole autor jest niedostępne z tego poziomu.
B. Brak konstruktora w definicji klasy.
C. Argumenty konstruktora powinny być przekazane podczas inicjalizacji obiektu.
D. Inicjalizacja obiektu została błędnie zapisana.
Błąd związany z polem 'autor' wynika z problemu dostępu do pól prywatnych w klasie. W programowaniu obiektowym, pola prywatne (oznaczone jako private) są dostępne tylko wewnątrz danej klasy i nie mogą być bezpośrednio modyfikowane lub odczytywane z zewnątrz. Aby umożliwić dostęp do takich pól, programista powinien utworzyć odpowiednie metody dostępowe – tzw. gettery i settery. Jest to przykład hermetyzacji (encapsulation), jednego z filarów programowania obiektowego, który pozwala na kontrolę nad tym, jak dane są przechowywane i modyfikowane. Hermetyzacja zwiększa bezpieczeństwo aplikacji i zapobiega przypadkowym zmianom wartości pól obiektu.

Pytanie 33

Który z wymienionych terminów dotyczy klasy, która stanowi podstawę dla innych klas, lecz nie może być tworzona w instancji?

A. Klasa abstrakcyjna
B. Klasa finalna
C. Klasa pochodna
D. Klasa statyczna
Klasa abstrakcyjna to klasa, która nie może być instancjonowana i służy jako szablon dla innych klas. Definiuje ona ogólną strukturę oraz interfejs, który klasy pochodne muszą zaimplementować. Klasy abstrakcyjne mogą zawierać zarówno metody z ciałem (zdefiniowane), jak i metody czysto wirtualne (bez implementacji), które muszą być przesłonięte w klasach pochodnych. W C++ deklaracja czysto wirtualnej metody odbywa się za pomocą '= 0'. Klasa abstrakcyjna zapewnia spójność interfejsu i narzuca implementację określonych metod we wszystkich klasach dziedziczących, co prowadzi do bardziej przewidywalnego i bezpiecznego kodu.

Pytanie 34

Przedstawione w filmie działania wykorzystują narzędzie

A. kompilatora dla interfejsu graficznego
B. generatora GUI przekształcającego kod do języka XAML
C. generatora kodu java
D. debuggera analizującego wykonujący kod
Wybrana odpowiedź jest trafna, bo faktycznie narzędzie pokazane w filmie to generator GUI, który potrafi przekształcać kod do języka XAML. XAML (czyli Extensible Application Markup Language) jest powszechnie używany do deklaratywnego opisywania interfejsów użytkownika, na przykład w aplikacjach WPF czy UWP na platformie .NET. Jak dla mnie, korzystanie z takich generatorów to ogromna wygoda, bo pozwala błyskawicznie przenosić projekt graficzny do formatu czytelnego dla platformy Microsoftu. Z mojego doświadczenia, wiele zespołów programistycznych stosuje takie rozwiązania, żeby oszczędzić czas na ręcznym pisaniu XAML-a (co potrafi być naprawdę żmudne przy dużych projektach). Co ciekawe, takie narzędzia bardzo dobrze współpracują z designerskimi edytorami UI i potrafią zautomatyzować konwersję nawet z innych formatów graficznych, np. Sketch czy Adobe XD do XAML-a. Branżowe standardy zalecają, by wykorzystywać generatorów GUI właśnie do tego celu, bo minimalizuje to liczbę błędów, przyspiesza wdrożenie zmian i ułatwia współpracę między programistami a projektantami. Warto pamiętać, że XAML jest bardzo elastyczny i umożliwia potem ręczną edycję wygenerowanego kodu – czasem powstają drobne poprawki, ale ogólnie to naprawdę przydatne narzędzie. Ogólnie – jeśli tylko projektujesz UI pod .NET, to automatyczna konwersja do XAML-a to jest coś, co warto znać i wykorzystywać w praktyce.

Pytanie 35

Które z wymienionych działań zwiększa bezpieczeństwo transakcji online?

A. Weryfikowanie certyfikatów SSL na stronach zajmujących się transakcjami
B. Udostępnianie informacji o karcie kredytowej w e-mailach
C. Nieaktualizowanie oprogramowania przeglądarki
D. Zastosowanie publicznego Wi-Fi do logowania się na konto bankowe
Sprawdzanie certyfikatów SSL na stronach transakcyjnych to jeden z najważniejszych kroków w zapewnieniu bezpieczeństwa transakcji internetowych. Certyfikat SSL szyfruje dane przesyłane między użytkownikiem a serwerem, chroniąc je przed przechwyceniem przez osoby trzecie. Adresy stron z certyfikatem SSL zaczynają się od 'https', co wskazuje na bezpieczne połączenie. Certyfikaty SSL zapewniają integralność danych i są podstawą dla każdej strony internetowej obsługującej płatności lub przechowującej dane użytkowników. Zignorowanie tej kwestii naraża użytkowników na ataki typu man-in-the-middle i phishing.

Pytanie 36

Jakie są cechy testów interfejsu?

A. Weryfikują zgodność aplikacji z przepisami prawnymi
B. Analizują wydajność aplikacji w czasie rzeczywistym
C. Sprawdzają prawidłowość pracy elementów graficznych oraz interakcji użytkownika z aplikacją
D. Ulepszają kod aplikacji
Testy interfejsu, znane też jako testy GUI (Graphical User Interface), są niesamowicie istotne w codziennej pracy programisty, zwłaszcza jeśli chodzi o aplikacje z graficznym interfejsem użytkownika. Ich głównym celem jest sprawdzanie, czy wszystkie elementy graficzne, takie jak przyciski, pola tekstowe czy menu działają zgodnie z założeniami oraz czy użytkownik może wchodzić z nimi w interakcję w przewidywany sposób. W praktyce zdarza się, że najwięcej błędów wychodzi właśnie na tym etapie – na przykład, kliknięcie w przycisk nie wywołuje żadnej akcji, albo okna dialogowe są nieczytelne. Moim zdaniem regularne wykonywanie takich testów (często automatycznych przy użyciu narzędzi typu Selenium, Cypress czy Playwright) pozwala wykrywać drobne usterki zanim trafią do rąk klienta, co jest zgodne z dobrymi praktykami Continuous Integration. Często też testy te są weryfikowane pod kątem responsywności, dostępności (WCAG) czy kompatybilności z różnymi przeglądarkami. Z mojego doświadczenia to właśnie testy interfejsu najbardziej pomagają w budowaniu pozytywnych doświadczeń użytkowników, bo pomagają wychwycić nieintuicyjne zachowania aplikacji, które ciężko zauważyć samym kodem. Warto więc o nich pamiętać, bo nawet najlepsza logika aplikacji nie obroni się, gdy UI nie działa poprawnie.

Pytanie 37

Który z protokołów w modelu TCP/IP odpowiada za pewne przesyłanie danych?

A. IP
B. HTTP
C. UDP
D. TCP
Protokół TCP (Transmission Control Protocol) jest kluczowym elementem modelu TCP/IP, odpowiedzialnym za zapewnienie niezawodnego i uporządkowanego przesyłania danych między urządzeniami w sieci. TCP działa na poziomie transportu i gwarantuje, że dane są dostarczane w odpowiedniej kolejności oraz bez błędów. Protokół ten wykorzystuje mechanizmy takie jak kontrola przepływu, retransmisja utraconych pakietów oraz potwierdzenia odbioru, co czyni go idealnym do aplikacji wymagających wysokiej niezawodności, takich jak przesyłanie plików czy komunikacja w sieciach WWW. Na przykład, gdy przeglądarka internetowa pobiera stronę, TCP segmentuje dane na mniejsze pakiety, które są następnie przesyłane do użytkownika, a każdy z nich jest potwierdzany przez odbiorcę. Jeśli pakiet nie zostanie potwierdzony w określonym czasie, TCP automatycznie go retransmituje. Protokół ten jest zgodny z standardami RFC 793 oraz RFC 1122, które definiują jego działanie oraz zasady dotyczące niezawodnego przesyłania danych w sieciach komputerowych.

Pytanie 38

Jak zrealizować definiowanie własnego wyjątku w języku C++?

A. Wykorzystać blok try z pustym blokiem catch
B. Skorzystać z domyślnej metody obsługi błędów
C. Automatycznie wywołać funkcję throw
D. Utworzyć klasę, która dziedziczy po std::exception
Aby zdefiniować własny wyjątek w języku C++, należy stworzyć klasę dziedziczącą po standardowej klasie 'std::exception' lub jednej z jej pochodnych. Klasa ta może zawierać własne metody i pola, dostosowując obsługę błędów do specyficznych potrzeb aplikacji. Dziedziczenie z 'std::exception' umożliwia korzystanie z funkcji takich jak 'what()', która zwraca opis błędu. Dzięki temu programista może precyzyjnie określić typ i przyczynę wyjątku, co prowadzi do bardziej czytelnego i łatwiejszego w utrzymaniu kodu. Tworzenie własnych wyjątków jest szczególnie przydatne w dużych projektach, gdzie występuje potrzeba kategoryzacji i obsługi różnych typów błędów w zależności od ich źródła.

Pytanie 39

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

A. Przechowywać dane na niezabezpieczonych nośnikach przenośnych
B. Systematycznie aktualizować oprogramowanie i wykonywać kopie zapasowe
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 40

Który element HTML5 służy do wyświetlania zawartości video?

A. <video>
B. <media>
C. <play>
D. <film>
Element HTML5 <video> jest kluczowym składnikiem do wyświetlania treści wideo w przeglądarkach. Dzięki niemu można łatwo osadzić filmy na stronach internetowych, co sprawia, że są one bardziej interaktywne i atrakcyjne dla użytkowników. Przykład użycia tego tagu wygląda następująco: <video src='film.mp4' controls></video>. Atrybut 'controls' pozwala na dodanie prostych przycisków odtwarzania, pauzy i regulacji głośności, co znacząco poprawia doświadczenia użytkownika. Warto również wspomnieć, że element <video> wspiera różne formaty wideo, takie jak MP4, WebM czy Ogg, co jest istotne w kontekście zgodności z różnymi przeglądarkami i urządzeniami. W praktyce, stosowanie <video> pozwala na łatwe zarządzanie wideo, w tym na dodawanie napisów, ustawienie automatycznego odtwarzania czy loopowania. To sprawia, że jest on niezwykle popularny w tworzeniu nowoczesnych stron internetowych, które chcą dostarczać wartościowe multimedia. Zastosowanie tego elementu jest zgodne z najlepszymi praktykami w zakresie dostępności i użyteczności, co czyni go niezwykle ważnym w dzisiejszym web development.