Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

W jakim celu wykorzystuje się diagram Gantta?

A. do przedstawiania funkcjonalności systemu
B. do planowania i zarządzania projektem
C. do dokładnej analizy czasowo-kosztowej projektu
D. do wizualizacji powiązań między elementami systemów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Diagram Gantta to jeden z podstawowych i – moim zdaniem – najfajniejszych narzędzi używanych w zarządzaniu projektami, zwłaszcza w budowlance, IT czy produkcji. Jest bardzo praktyczny, bo pozwala wizualnie rozplanować, jakie zadania są do wykonania, ile mają trwać i co od czego zależy. Dzięki prostemu układowi poziomych pasków na osi czasu można szybko ogarnąć całość projektu, zobaczyć które zadania się pokrywają i gdzie mogą być wąskie gardła. Branżowe standardy, np. PMBOK, zalecają korzystanie z diagramu Gantta właśnie do planowania i monitorowania postępu. Z mojego doświadczenia to narzędzie, które łączy ludzi – wszyscy od razu widzą, kto co robi i na kiedy. Fajne jest też to, że łatwo aktualizować taki diagram w miarę zmian w projekcie. Diagram Gantta pomaga też w kontroli terminowości i identyfikacji opóźnień. Jeśli ktoś kiedyś miał styczność z programami jak MS Project czy nawet prostym Excelem – na pewno widział taki wykres. Można tam nawet dodać kamienie milowe czy zależności między zadaniami (np. jedno musi się skończyć, zanim drugie się zacznie). Tak naprawdę, w profesjonalnych firmach, zarządzanie projektem bez takiego narzędzia byłoby trochę strzałem w stopę.

Pytanie 2

Jakie z wymienionych narzędzi służy do testowania aplikacji?

A. Git
B. Photoshop
C. Selenium
D. WordPress

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Selenium to potężne narzędzie do automatycznego testowania aplikacji webowych. Umożliwia ono symulowanie działań użytkownika na stronie internetowej, takich jak klikanie przycisków, wypełnianie formularzy czy nawigowanie po witrynie. Dzięki Selenium programiści mogą automatyzować testy funkcjonalne i regresyjne, co pozwala na szybkie wykrywanie błędów i sprawdzanie zgodności aplikacji z wymaganiami. Selenium obsługuje wiele języków programowania, takich jak Python, Java, C# czy JavaScript, co czyni je wszechstronnym narzędziem do testowania aplikacji webowych na różnych platformach i przeglądarkach. Jest to jedno z najważniejszych narzędzi w arsenale testerów oprogramowania i deweloperów dbających o jakość swoich produktów.

Pytanie 3

Jaki rodzaj testów można scharakteryzować przedstawionym opisem?

NazwaOpisCzynnościPo teście
Formularz osobowySprawdzenie odpowiedzi formularza na błędy użytkownika1. czy wpisano wszystkie wymagane pola?
2. czy e-mail zawiera znak @?
3. czy nr telefonu zawiera cyfry, zgodnie ze wzorcem?
4. czy jest zgoda na przetwarzanie danych?
Usunąć z bazy danych wpisane podczas testowania osoby
A. testy jednostkowe
B. testy wydajnościowe
C. testy funkcjonalne
D. testy zgodności

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dokładnie o takie testy tutaj chodzi! Testy funkcjonalne skupiają się na sprawdzaniu, czy system realizuje funkcje zgodnie z wymaganiami biznesowymi i oczekiwaniami użytkownika. W tym przypadku chodzi o formularz osobowy, który ma określone zasady walidacji – na przykład obowiązkowe pola, poprawny format e-maila czy numer telefonu zgodny ze wzorcem. Sprawdza się też, czy użytkownik wyraził zgodę na przetwarzanie danych. To wszystko to typowe przypadki testów funkcjonalnych, bo nie interesuje nas tu ani wydajność systemu, ani szczegóły implementacji kodu, tylko efekt w postaci poprawnego działania funkcji z punktu widzenia użytkownika. Moim zdaniem właśnie w takich testach najłatwiej złapać błędy, które są naprawdę uciążliwe dla użytkowników końcowych. Branżowe standardy, takie jak ISTQB, podkreślają, że testy funkcjonalne badają zachowanie systemu na podstawie specyfikacji, a nie sposobu realizacji. Praktyka pokazuje, że nawet proste formularze często zawierają bzdurne błędy (np. nie sprawdza się formatu maila albo nie wymaga zgody RODO), więc takie testy są wręcz niezbędne. Dodatkowo, dobrym zwyczajem jest po takich testach „posprzątać” po sobie dane testowe, żeby nie zaśmiecać bazy – to też jest element dobrze przeprowadzonego testowania funkcjonalnego.

Pytanie 4

Do form komunikacji werbalnej zalicza się

A. pozycja ciała
B. gestykulacja
C. wyraz twarzy
D. mówienie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Mówienie to podstawowa forma komunikacji werbalnej – bez tego ciężko byłoby przekazać bardziej złożone treści, polecenia czy po prostu podzielić się informacjami w jasny i jednoznaczny sposób. Właśnie dlatego w większości branż technicznych, niezależnie czy rozmawiamy o pracy na budowie, czy w biurze projektowym, umiejętność jasnego i zrozumiałego mówienia jest często kluczowa. W praktyce komunikacja werbalna opiera się na słowach, które przekazujemy ustnie. Moim zdaniem najważniejsze jest to, że pozwala uniknąć nieporozumień i usprawnia współpracę w zespole – szczególnie gdy pracujemy przy dużych projektach, gdzie każdy detal ma znaczenie. W codziennych sytuacjach, takich jak prowadzenie spotkań, omawianie problemów technicznych czy instruowanie nowych pracowników, mówienie okazuje się nieocenione. Dodatkowo, standardy komunikacji interpersonalnej podkreślają, że skuteczny przekaz werbalny wymaga nie tylko odpowiedniego doboru słów, ale też umiejętności dostosowania tonu głosu i tempa mówienia do sytuacji. Warto też pamiętać, że mowa ludzka jest najdokładniejszym narzędziem do przekazywania informacji, bo daje możliwość dopytania, wyjaśnienia i natychmiastowej korekty, czego raczej nie da się osiągnąć tylko poprzez gesty czy mimikę. Z mojego doświadczenia wynika, że inwestowanie w rozwój umiejętności werbalnych zwraca się bardzo szybko w pracy technika czy specjalisty.

Pytanie 5

Jaki kod może być związany z treścią wygenerowaną w trakcie działania programu Java?

Exception in thread "main" java.lang.ArithmeticException: / by zero
A. if (x > y) ...
B. x = x % y;
C. x = tablica[6];
D. x = 0;

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod x = x % y; jest klasycznym przykładem operacji, która może prowadzić do wystąpienia wyjątku ArithmeticException w Javie, szczególnie gdy zmienna y przyjmuje wartość zero. Operator modulo (%) w języku Java nie toleruje dzielenia przez zero – w przeciwieństwie do niektórych innych języków, które mogą zwracać np. NaN lub Infinity, tutaj od razu zostanie zgłoszony wyjątek. Taki wyjątek jest dość powszechny w pracy programisty, zwłaszcza w aplikacjach, gdzie dane wejściowe nie są do końca kontrolowane. Moim zdaniem dobrze jest od razu przyzwyczaić się do zabezpieczania wszystkich operacji dzielenia i modulo poprzez wcześniejsze sprawdzenie wartości dzielnika. Rekomenduje się stosowanie warunków typu if (y != 0) przed wykonaniem takiej instrukcji, co jest zgodne z dobrymi praktykami defensywnego programowania. Dodatkowo, w środowiskach produkcyjnych często otacza się te fragmenty kodu blokiem try-catch, aby elegancko obsłużyć wyjątek i np. wyświetlić użytkownikowi zrozumiały komunikat. Warto pamiętać, że ArithmeticException dziedziczy po RuntimeException, a więc nie musimy jej jawnie obsługiwać, ale nie oznacza to, że powinniśmy ją ignorować – w dobrze napisanym kodzie zawsze należy przewidywać takie sytuacje. Z mojego doświadczenia wynika, że najwięcej błędów z tym związanych pojawia się w aplikacjach przetwarzających dane liczbowe, gdzie nawet niepozorna operacja modulo może „wywalić” cały proces, jeśli nie zostanie odpowiednio zaopiekowana.

Pytanie 6

Co to jest Cypress?

A. Biblioteka komponentów UI dla React
B. Narzędzie do kompilacji kodu TypeScript
C. System zarządzania bazami danych dla aplikacji mobilnych
D. Framework do testowania end-to-end aplikacji webowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Cypress to popularny framework do testowania aplikacji webowych, skoncentrowany na testach end-to-end, co oznacza, że pozwala na symulowanie rzeczywistego użytkownika w interakcji z aplikacją. Jego architektura oparta na JavaScript i łatwość integracji z innymi narzędziami sprawiają, że jest chętnie wybierany przez zespoły developerskie. Cypress umożliwia szybkie pisanie testów, które mogą być uruchamiane bezpośrednio w przeglądarce, co ułatwia debugowanie. Przykładem zastosowania może być testowanie formularzy na stronie internetowej, gdzie można sprawdzić, czy wszystkie pola działają poprawnie, czy błędne dane są odpowiednio walidowane oraz czy interfejs użytkownika reaguje jak oczekiwano. Dobrą praktyką jest pisanie testów w sposób, który odzwierciedla rzeczywiste scenariusze użytkowników, co zwiększa jakość i niezawodność aplikacji. Cypress zyskał uznanie w branży dzięki swojej wydajności i możliwościom wizualizacji testów, co czyni go jednym z wiodących narzędzi w obszarze automatyzacji testów.

Pytanie 7

Jaka jest składnia komentarza jednoliniowego w języku Python?

A. ""
B. #
C. //
D. !

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Komentarz jednoliniowy w Pythonie zaczynamy od znaku hash, czyli #. To jest taki uniwersalny sposób na szybkie dodanie uwagi lub wyjaśnienia bez wpływu na działanie kodu. Moim zdaniem to bardzo praktyczne – wystarczy po prostu wpisać # i reszta linii jest ignorowana przez interpreter. W dużych projektach często spotyka się krótkie komentarze obok wyrażeń, np. x += 1 # inkrementacja liczby porządkowej. Co ciekawe, Python nie posiada stricte blokowych komentarzy, jak niektóre inne języki (np. /* ... */ w C lub Java), więc hashe naprawdę często się stosuje. To niesamowicie pomaga przy czytelności kodu, szczególnie gdy wracamy do własnych plików po kilku tygodniach albo pracujemy w zespole. PEP 8, czyli oficjalny przewodnik stylu Pythona, zaleca wręcz regularne używanie komentarzy do wyjaśniania „dlaczego” coś robimy, nie tylko „co” robimy. Dobrze napisany komentarz może skrócić czas szukania błędów albo tłumaczenia rozwiązań innym. Z mojego doświadczenia, warto pilnować, by komentarze nie były przestarzałe – łatwo zapomnieć o ich aktualizacji po zmianach w kodzie. Jeśli kiedyś napotkasz kod bez #, a z innymi znakami, to od razu czerwona lampka: to raczej nie jest Python.

Pytanie 8

W zestawieniu przedstawiono doświadczenie zawodowe członków zespołu IT. Osobą odpowiedzialną za stworzenie aplikacji front-end powinna być:

PracownikZnajomość technologii/programów
AnnaInscape, Corel Draw
KrzysztofAngular
PatrykHTML, CSS
EwaDjango, .NET
A. Anna
B. Patryk
C. Krzysztof
D. Ewa

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wybór Krzysztofa jako osoby odpowiedzialnej za stworzenie aplikacji front-end jest zdecydowanie trafiony. Angular to obecnie jedno z najpopularniejszych frameworków do budowy zaawansowanych aplikacji webowych, które wykorzystują wiele komponentów, obsługują dynamiczne interfejsy użytkownika i muszą być skalowalne. Angular pozwala efektywnie zarządzać logiką front-endu, stanami aplikacji oraz integracją z backendem. Z mojego doświadczenia wynika, że osoby znające Angulara są w stanie nie tylko napisać klasyczny interfejs w HTML i CSS, ale również wdrożyć bardziej rozbudowane rozwiązania zgodne ze współczesnymi standardami, takimi jak SPA (single-page application). Praktyka pokazuje, że projekty front-endowe na dużą skalę, bez frameworków takich jak Angular, React czy Vue, bardzo szybko stają się nieczytelne i trudne w utrzymaniu. Krzysztof, mając doświadczenie z Angularem, będzie też znał TypeScript, który jest już właściwie standardem w dużych projektach front-endowych. To daje też lepszą kontrolę nad błędami i czytelność kodu, a to się liczy w zespole. Co ciekawe, w ofertach pracy na front-end developera, znajomość Angulara jest jednym z najczęściej wymienianych wymagań, właśnie przez wzgląd na szeroki zakres zastosowań i wsparcie społeczności. Tak naprawdę, jeżeli zależy nam na wydajnym, nowoczesnym i dobrze zaprojektowanym interfejsie użytkownika, Krzysztof jest tutaj najlepszym wyborem. Często początkujący myślą, że wystarczy sam HTML i CSS, ale prawdziwa praca front-endowca to już zupełnie wyższa liga. Szczerze mówiąc, mając taką osobę w zespole, można spać spokojnie, że front-end będzie wykonany zgodnie z branżowymi standardami.

Pytanie 9

W jednostce centralnej, za obliczenia na liczbach zmiennoprzecinkowych odpowiada

A. IU
B. FPU
C. ALU
D. AU

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
FPU, czyli Floating Point Unit, to specjalizowany układ w jednostce centralnej, który zajmuje się właśnie obliczeniami na liczbach zmiennoprzecinkowych. Moim zdaniem bardzo często się o tym zapomina, bo „procesor to procesor”, a tu jednak mamy konkretne podzespoły odpowiadające za różne rodzaje operacji. Współczesne CPU praktycznie zawsze mają wbudowaną FPU, bo operacje na zmiennych typu float czy double są na porządku dziennym, szczególnie w grafice komputerowej, symulacjach fizycznych czy obliczeniach naukowych. Przykładowo, FPU jest niezbędna podczas renderowania grafiki 3D albo nawet przy zwykłych obliczeniach matematycznych, które wymagają dużej precyzji. Standardy branżowe jak IEEE 754 określają sposób reprezentacji i przetwarzania liczb zmiennoprzecinkowych, a FPU jest zaprojektowana właśnie pod takie standardy, żeby wyniki były przewidywalne i zgodne ze światowymi normami. Dla mnie to jest ciekawe, bo chociaż FPU działa raczej „w tle”, to bez niej większość zaawansowanych aplikacji praktycznie by nie działała albo byłaby po prostu niewyobrażalnie wolna. Czasem w kontekście architektury komputerów mówi się nawet o osobnych układach FPU, które kiedyś były dokładane do procesorów, zanim trafiły bezpośrednio do ich wnętrza. Warto o tym pamiętać, bo to właśnie FPU pozwala komputerom liczyć z dużą dokładnością i szybkością wartości, których zwykła ALU by nie ogarnęła.

Pytanie 10

W metodach klasy GoldCustomer dostępne są tylko pola

public class Customer {
    public string Name;
    protected int Id;
    private int Age;
}
public class GoldCustomer: Customer {
    private GoldPoints: int;
}
A. GoldPoints, Name, Id, Age
B. GoldPoints, Name
C. GoldPoints, Name, Id
D. GoldPoints

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Ta odpowiedź dobrze pokazuje, jak działa dziedziczenie i modyfikatory dostępu w C#. W klasie GoldCustomer masz dostęp do własnych pól, czyli GoldPoints, oraz do pól odziedziczonych po klasie bazowej Customer. Tutaj kluczowe jest rozumienie, które pola są faktycznie dostępne. Skoro Name jest publiczne, to bez żadnych kombinacji można się do niego dobrać z dowolnego miejsca – nawet spoza klasy. Id jest chronione (protected), więc według zasad OOP dostępne jest w klasie bazowej oraz wszystkich pochodnych – czyli właśnie w GoldCustomer. To bardzo praktyczne, bo często się zdarza, że potrzebujemy pracować na polach z klasy bazowej, ale nie chcemy, żeby były one widoczne na zewnątrz klasy (np. przez innych programistów korzystających z API). Age jest prywatne i tu już nie da się go bezpośrednio użyć w klasie pochodnej. Z mojego doświadczenia korzystanie z protected dla rzeczy, które mają być dostępne tylko w hierarchii dziedziczenia, to codzienność – pozwala zachować elastyczność, ale i bezpieczeństwo enkapsulacji. Praktycznie rzecz biorąc, jak piszesz klasy dziedziczące po innych, zawsze warto zerknąć na poziomy dostępu, bo od nich zależy, do czego masz dostęp i co możesz odziedziczyć. Wzorce projektowe, jak np. Template Method, mocno polegają na mechanizmach dziedziczenia i odpowiedniego ustawienia widoczności pól czy metod. Przemyślany dobór public, protected, private ułatwia utrzymanie kodu oraz chroni przed przypadkowym wykorzystaniem nieodpowiednich elementów klasy, co w większych projektach bywa naprawdę kluczowe.

Pytanie 11

Który aspekt projektu aplikacji jest kluczowy dla zabezpieczenia danych użytkowników?

A. Zastosowanie zaawansowanych systemów ochrony
B. Tworzenie prostych formularzy do rejestracji
C. Koncentracja na wyglądzie interfejsu użytkownika
D. Pominięcie testowania aplikacji w etapie produkcji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Stosowanie zaawansowanych mechanizmów bezpieczeństwa jest kluczowe dla ochrony danych użytkowników w aplikacjach. Wdrożenie technologii takich jak szyfrowanie, autoryzacja dwuskładnikowa (2FA), firewalle oraz regularne testy penetracyjne pozwala na minimalizację ryzyka ataków i naruszeń danych. Mechanizmy te nie tylko zabezpieczają dane, ale również budują zaufanie użytkowników do aplikacji, co jest niezwykle istotne w branżach takich jak bankowość, medycyna czy e-commerce.

Pytanie 12

Co to jest serverless computing?

A. Model wykonywania kodu w chmurze bez konieczności zarządzania infrastrukturą serwerową
B. Technika projektowania baz danych bez użycia serwera SQL
C. Metoda tworzenia aplikacji bez użycia back-endu
D. Proces kompilacji kodu bezpośrednio w przeglądarce użytkownika

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Serverless computing to model dostarczania usług obliczeniowych, który pozwala programistom skupić się na pisaniu kodu, bez konieczności zarządzania serwerami czy infrastrukturą. W tym modelu, dostawcy usług chmurowych automatycznie przydzielają zasoby obliczeniowe w odpowiedzi na zdarzenia, co oznacza, że użytkownicy płacą jedynie za rzeczywistą moc obliczeniową, której używają, a nie za z góry ustalone zasoby. Przykładem zastosowania serverless computing może być wykorzystanie funkcji AWS Lambda, która uruchamia kod w odpowiedzi na zdarzenia, takie jak zmiany w bazie danych, przesyłanie plików do chmury czy wywołania API. Ten model jest zgodny z zasadami DevOps oraz architekturą mikroserwisów, które promują elastyczność i szybkość w dostarczaniu aplikacji. Dobrą praktyką jest również integrowanie serverless computing z systemami CI/CD, co pozwala na automatyczne wdrażanie i zarządzanie kodem w sposób efektywny.

Pytanie 13

Która z wymienionych metod najlepiej chroni komputer przed złośliwym oprogramowaniem?

A. Unikanie używania publicznych sieci Wi-Fi
B. Stosowanie mocnych haseł
C. Cykliczne wykonywanie kopii zapasowych
D. Właściwie zaktualizowany program antywirusowy

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Program antywirusowy to naprawdę istotna rzecz, jeśli chodzi o ochronę komputerów przed złośliwym oprogramowaniem. On w zasadzie non stop monitoruje nasz system i ma za zadanie wyłapywać różne wirusy, trojany, a nawet ransomware, co jest bardzo ważne. Pamiętaj, żeby regularnie aktualizować bazy wirusów, bo dzięki temu będziesz miał zabezpieczenie przed najnowszymi zagrożeniami. Warto też zauważyć, że wiele programów antywirusowych ma dodatkowe opcje, jak na przykład monitorowanie stron www, czy skanowanie e-maili i plików, które pobierasz. To wszystko razem daje lepszą ochronę.

Pytanie 14

Jakie znaczenie ma krajowa normalizacja dla produktów i usług?

A. Restrukcjonuje innowacje technologiczne
B. Usuwa konieczność przeprowadzania kontroli jakości
C. Gwarantuje lepszą zgodność oraz jakość
D. Ogranicza liczbę dostępnych towarów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Normalizacja krajowa to świetny sposób na to, żeby produkty i usługi były bardziej spójne i lepszej jakości. Kiedy mamy standardy, to producenci mogą robić rzeczy, które są zgodne z wymaganiami technicznymi. To z kolei sprawia, że konsumenci mogą bardziej ufać produktom, a ryzyko, że coś będzie wadliwe, spada. Dzięki normalizacji zwiększa się bezpieczeństwo, poprawia interoperacyjność, a to wszystko wspiera rozwój technologiczny. No i jest jeszcze to, że łatwiej jest wymieniać produkty między różnymi rynkami, co ma pozytywny wpływ na całą gospodarkę.

Pytanie 15

Jakie stwierdzenie najlepiej tłumaczy cel podziału programu na funkcje (metody)?

A. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
B. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
C. Eliminuje potrzebę korzystania ze zmiennych globalnych
D. Gwarantuje automatyczną kompilację programu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dzielenie programu na funkcje (lub metody) jest jedną z kluczowych zasad programowania strukturalnego i obiektowego. Funkcje pozwalają na podzielenie dużych bloków kodu na mniejsze, łatwiejsze do zarządzania i ponownego wykorzystania fragmenty. Dzięki temu kod jest bardziej czytelny, zrozumiały i łatwiejszy do testowania. Ułatwia to także proces debugowania, ponieważ błędy można izolować w konkretnych funkcjach, zamiast przeszukiwać cały program. Ponadto funkcje umożliwiają wielokrotne używanie tego samego fragmentu kodu, co zwiększa efektywność i eliminuje konieczność powielania kodu, zmniejszając ryzyko błędów.

Pytanie 16

Który z etapów umożliwia zwiększenie efektywności aplikacji przed jej wydaniem?

A. Tworzenie interfejsu graficznego
B. Testowanie jednostkowe
C. Dodawanie komentarzy do kodu
D. Optymalizacja kodu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Optymalizacja kodu to kluczowy etap poprawy wydajności aplikacji przed jej publikacją. Polega na eliminacji zbędnych operacji, poprawie algorytmów oraz minimalizacji użycia zasobów, co pozwala na szybsze działanie aplikacji i zmniejszenie jej zapotrzebowania na pamięć. Optymalizacja kodu obejmuje również refaktoryzację, czyli przekształcenie kodu w bardziej czytelną i efektywną formę bez zmiany jego funkcjonalności. Dzięki optymalizacji aplikacje działają płynniej, szybciej się ładują i oferują lepsze doświadczenie użytkownika, co ma kluczowe znaczenie dla SEO oraz pozycjonowania aplikacji w wyszukiwarkach. Dodatkowo, zoptymalizowany kod jest łatwiejszy w utrzymaniu i rozwijaniu, co przekłada się na długoterminowe korzyści dla zespołu deweloperskiego.

Pytanie 17

Programista umieścił poniższą linię kodu w pliku HTML, aby

<script src="jquery-3.5.1.min.js"></script>
A. pobrać z Internetu w momencie otwierania strony i użyć biblioteki jQuery
B. wstawić kod JavaScript pomiędzy znacznikami &lt;script&gt;&lt;/script&gt;
C. zadeklarować własną funkcję JavaScript o nazwie min.js
D. skorzystać z funkcji biblioteki jQuery, która była wcześniej pobrana i zapisana lokalnie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod HTML jest często używany do włączania zewnętrznych bibliotek JavaScript, takich jak jQuery, które zostały wcześniej pobrane i zapisane lokalnie na serwerze. W tym przypadku atrybut src w znaczniku script wskazuje na lokalnie przechowywany plik jQuery, co oznacza, że przeglądarka załaduje bibliotekę z serwera, na którym znajduje się nasza strona. Korzystanie z lokalnych kopii bibliotek jest dobrą praktyką w przypadku ograniczonego lub niestabilnego dostępu do internetu, ponieważ gwarantuje dostępność bibliotek niezależnie od zewnętrznych źródeł. Zaletą tego rozwiązania jest redukcja potencjalnych opóźnień w ładowaniu strony, ponieważ plik jest już dostępny na tym samym serwerze. Użycie lokalnych plików jest również korzystne z punktu widzenia bezpieczeństwa, gdyż pozwala kontrolować dokładną wersję załadowanej biblioteki i uniknąć potencjalnych zagrożeń wynikających z modyfikacji zewnętrznych plików. W praktyce, programiści często łączą lokalne i zdalne zasoby, wybierając odpowiednią metodę w zależności od potrzeb projektu i dostępnych zasobów sieciowych.

Pytanie 18

Jakie narzędzie jest używane do automatyzacji testów interfejsu użytkownika aplikacji webowych?

A. Selenium
B. JIRA
C. Slack
D. Trello

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Selenium to jedno z najpopularniejszych narzędzi do automatyzacji testów interfejsu użytkownika aplikacji webowych. Jest to otwartoźródłowe oprogramowanie, które umożliwia tworzenie skryptów testowych w różnych językach programowania, takich jak Java, C#, Python czy Ruby. Dzięki Selenium testerzy mogą symulować interakcje użytkownika z przeglądarką, takie jak klikanie przycisków, wypełnianie formularzy czy nawigacja po stronach. Co ważne, Selenium jest kompatybilne z wieloma przeglądarkami, w tym Chrome, Firefox i Safari, co pozwala na testowanie aplikacji w różnych środowiskach. Jest to narzędzie szeroko stosowane w branży IT, zwłaszcza w ramach podejścia ciągłej integracji i dostarczania (CI/CD), gdzie automatyzacja testów jest kluczowym elementem zapewniającym szybkie i niezawodne dostarczanie oprogramowania. Dodatkowo, Selenium WebDriver, jako część tej rodziny narzędzi, umożliwia bezpośrednią komunikację z przeglądarką, co zwiększa jego efektywność i precyzję w porównaniu do starszych wersji Selenium.

Pytanie 19

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

A. Dobra niematerialne
B. Własność przemysłowa
C. Autorskie prawa majątkowe
D. Prawa pokrewne

Brak odpowiedzi na to pytanie.

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

Pytanie 20

Co to jest CORS (Cross-Origin Resource Sharing)?

A. Metoda udostępniania API dla aplikacji mobilnych
B. Mechanizm bezpieczeństwa, który określa, które domeny mogą uzyskiwać dostęp do zasobów na serwerze
C. Technika optymalizacji ładowania zasobów statycznych
D. Protokół komunikacji między różnymi bazami danych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
CORS, czyli Cross-Origin Resource Sharing, to mechanizm bezpieczeństwa stosowany w aplikacjach internetowych, który reguluje, które zewnętrzne domeny mają prawo uzyskiwać dostęp do zasobów na serwerze. Jest to szczególnie istotne w kontekście aplikacji klienckich działających w przeglądarkach, gdzie zapytania do różnych źródeł (tzw. cross-origin requests) mogą prowadzić do problemów z bezpieczeństwem, takich jak ataki typu CSRF (Cross-Site Request Forgery) czy XSS (Cross-Site Scripting). Przykładowo, jeśli aplikacja internetowa hostowana na domenie A próbuje uzyskać dane z API na domenie B, serwer na domenie B może poprzez nagłówki CORS określić, czy i jakie żądania od domeny A będą honorowane. Przy odpowiedniej konfiguracji, serwer może zezwolić na dostęp tylko dla zaufanych źródeł, co zapobiega nieautoryzowanym operacjom. W praktyce, stosowanie CORS przyczynia się do stworzenia bezpieczniejszych aplikacji webowych, zgodnych z aktualnymi standardami bezpieczeństwa w sieci, takimi jak W3C i OWASP.

Pytanie 21

Jaką wartość będzie miała zmienna result po wykonaniu poniższego kodu PHP?

$array = [5, 1, 8, 3, 7];
$result = 0;
foreach ($array as $value) {
  if ($value > $result) {
    $result = $value;
  }
}
A. 5
B. 7
C. 8
D. 24

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wartość zmiennej result po wykonaniu podanego kodu PHP wynosi 8, ponieważ kod ten ma na celu znalezienie największej liczby w tablicy. Zmienna $result jest początkowo ustawiona na 0, co oznacza, że każda liczba z tablicy, która jest większa od zera, zostanie przypisana do $result. W trakcie iteracji przez tablicę $array, każdy element jest porównywany z bieżącą wartością $result. Kiedy napotykamy wartość 5, która jest większa od 0, zmienna $result zostaje zaktualizowana do 5. Następnie porównujemy 1, co nie zmienia $result. Kiedy napotykamy 8, zmienna $result jest aktualizowana do 8, ponieważ 8 jest większe od 5. Kolejne wartości 3 i 7 również nie zmieniają $result, ponieważ są mniejsze od 8. Po zakończeniu pętli, $result pozostaje równe 8, co jest największą wartością w tablicy. To podejście jest zgodne z dobrymi praktykami programistycznymi, gdzie używa się pętli do przetwarzania kolekcji danych w sposób optymalny i przejrzysty.

Pytanie 22

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

A. RAD pozwala na szybsze budowanie aplikacji dzięki narzędziom do wizualnego designu i automatycznego generowania kodu
B. RAD działa tylko na urządzeniach z systemem iOS
C. RAD nie obsługuje interfejsu użytkownika
D. RAD koncentruje się wyłącznie na procesie debugowania aplikacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 23

Aby wykorzystać framework Django, należy pisać w języku

A. Python
B. Java
C. C#
D. JavaScript

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Framework Django został zaprojektowany specjalnie dla języka Python i z tego powodu wszystkie projekty, aplikacje czy rozszerzenia w Django realizuje się właśnie w tym języku. To nie jest przypadek – Python od lat cieszy się ogromną popularnością w branży webowej, między innymi dzięki swojej czytelności i elastyczności. Moim zdaniem to właśnie ta prostota składni Pythona sprawia, że tak łatwo zacząć nawet większe projekty – nie trzeba tracić czasu na walkę z zawiłościami języka. W praktyce programiści korzystający z Django piszą zarówno widoki, modele, jak i całą logikę aplikacji w Pythonie, wykorzystując przy tym liczne biblioteki i narzędzia tego ekosystemu. Django jest zgodny z filozofią DRY (Don’t Repeat Yourself), co oznacza, że kod w Pythonie staje się bardzo zwięzły i przejrzysty. Często można spotkać się z opinią, że nauka Django to świetny sposób na wejście w świat programowania webowego – sam się z tym zgadzam. Warto wiedzieć, że ogromna społeczność Pythona i Django oferuje mnóstwo wsparcia, dokumentacji oraz gotowych rozwiązań, co na co dzień ułatwia pracę. Tylko w Pythonie zbudujesz pełnoprawną aplikację w Django, bo framework ten nie wspiera innych języków – to się po prostu nie uda, nawet jeśli ktoś próbuje kombinować z integracjami. Widać to choćby po oficjalnych tutorialach i dokumentacji – wszystko, od konfiguracji po deployment, opiera się na pythonowych narzędziach.

Pytanie 24

W programie stworzonym w języku C++ trzeba zadeklarować zmienną, która będzie przechowywać wartość rzeczywistą. Jakiego typu powinna być ta zmienna?

A. int
B. numeric
C. number
D. double

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W języku C++ typ double jest przeznaczony do przechowywania liczb rzeczywistych, czyli takich, które mają część ułamkową. Jest to standardowy wybór w sytuacjach, gdy zależy nam na precyzji przy obliczeniach z użyciem liczb zmiennoprzecinkowych. Takie zmienne bardzo często spotyka się w programowaniu symulacji fizycznych, obliczeniach matematycznych czy przetwarzaniu sygnału – właściwie wszędzie tam, gdzie liczby całkowite po prostu nie wystarczają. Moim zdaniem, wybór double jest najbardziej praktyczny, bo oferuje kompromis między szerokim zakresem wartości a precyzją, czego nie zagwarantuje typ float (który jest mniej precyzyjny). Warto pamiętać, że double to typ określony przez standard języka C++ (IEEE 754), co gwarantuje jego przenośność między różnymi systemami i kompilatorami. Uważam, że dobrze znać też różnicę między double a float – w praktyce double przechowuje liczby z dokładnością do około 15 cyfr znaczących i zakresie od 10^-308 do 10^308. Często programiści korzystają z double domyślnie, żeby mieć spokój z precyzją, nawet jeśli float byłby wystarczający. Z mojego doświadczenia podpowiem, że deklarując double liczysz się z większym zużyciem pamięci niż przy float, ale za to rzadziej napotkasz błędy zaokrągleń. W każdym razie – jeśli chodzi o zmienne rzeczywiste w C++, double to najbezpieczniejszy wybór.

Pytanie 25

Który z poniższych języków programowania jest statycznie typowany?

A. JavaScript
B. TypeScript
C. Ruby
D. PHP

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
TypeScript jest językiem programowania, który został zaprojektowany jako nadzbiór JavaScriptu. Jednym z jego kluczowych wyróżników jest statyczne typowanie, co oznacza, że zmienne, funkcje i obiekty mogą mieć zdefiniowane typy, które są sprawdzane w czasie kompilacji, zanim kod zostanie uruchomiony. Dzięki temu programiści mogą wychwycić wiele typowych błędów, takich jak niezgodność typów, co zwiększa bezpieczeństwo kodu oraz ułatwia jego utrzymanie. TypeScript pozwala na korzystanie z typów prostych, obiektowych, a także umożliwia definiowanie własnych typów, co daje większą elastyczność. Przykładowo, definiując funkcję w TypeScript, można określić typy argumentów oraz typ zwracany, co jest zgodne z najlepszymi praktykami w programowaniu, zachęcając do bardziej strukturalnego podejścia do pisania kodu. W praktyce, projektowanie aplikacji w TypeScript pozwala na łatwiejsze wprowadzanie zmian i refaktoryzację, ponieważ zmiany w typach są automatycznie sprawdzane przez kompilator. Warto również zauważyć, że TypeScript jest szeroko stosowany w dużych projektach, zwłaszcza w kontekście aplikacji frontendowych opartych na frameworkach takich jak Angular czy React, gdzie zarządzanie złożonością kodu jest kluczowe.

Pytanie 26

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

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź 4 jest prawidłowa ponieważ algorytm rozpoczyna od n równego 1 i zwiększa tę wartość o jeden w każdej iteracji aż do momentu gdy n stanie się równe 7 Wtedy warunek n mniejsze od 7 przestaje być spełniony co oznacza że warunek ten jest sprawdzany łącznie 6 razy tj dla n równych 1 2 3 4 5 i 6 Jest to typowa pętla kontrolna często spotykana w programowaniu gdzie warunek pętli decyduje o jej zakończeniu W praktyce takie podejście pozwala na efektywne zarządzanie liczbą iteracji i zapewnia klarowność kodu Co więcej użycie pętli z warunkiem końcowym jest zgodne z dobrymi praktykami projektowania algorytmów gdyż minimalizuje ryzyko błędów logicznych poprzez jawne określenie końca pętli Ponadto zrozumienie mechanizmu działania pętli i jej warunków jest kluczowe dla optymalizacji algorytmów i efektywnego zarządzania zasobami co ma bezpośrednie przełożenie na wydajność aplikacji szczególnie w środowiskach wymagających dużej mocy obliczeniowej

Pytanie 27

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

A. Polimorfizm
B. Abstrakcja
C. Hermetyzacja
D. Dziedziczenie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 28

Które z wymienionych oznaczeń wskazuje na liniową złożoność algorytmu?

A. O(n)
B. O(log n)
C. O(n²)
D. O(1)

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Złożoność O(n) oznacza liniową zależność czasu wykonania algorytmu od rozmiaru danych wejściowych. Oznacza to, że dla każdego dodatkowego elementu algorytm wykonuje jedną dodatkową operację. Algorytmy liniowe są jednymi z najczęściej stosowanych w praktyce, ponieważ oferują dobrą równowagę między szybkością a złożonością implementacji. Przykłady algorytmów o złożoności O(n) to przeszukiwanie liniowe (Linear Search), sumowanie elementów tablicy oraz niektóre algorytmy sortowania, takie jak Counting Sort dla określonych warunków. Liniowa złożoność czyni te algorytmy bardzo efektywnymi przy przetwarzaniu dużych zbiorów danych.

Pytanie 29

Przedstawiony na filmie kod napisany w języku C++ nie kompiluje się. Co należy zmienić w tym kodzie, aby proces kompilacji wykonał się bez błędów?

A. poprawnie zapisać warunek w instrukcji if w linii 11, np. sprawdz(x)==true
B. zadeklarować zmienną sprawdz przed jej wykorzystaniem w linii 11
C. naprawić błąd w funkcji sprawdz, który polega na braku nawiasów {} w pętli for
D. dodać deklarację funkcji sprawdz przed funkcją main

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź jest trafna, bo w języku C++ kompilator musi wiedzieć o istnieniu funkcji zanim zostanie ona użyta w kodzie, np. w funkcji main. Bez wcześniejszej deklaracji, kompilator nie zna sygnatury funkcji i nie potrafi zweryfikować wywołania, co skutkuje błędem typu 'implicit declaration of function'. Deklaracja funkcji to taki sygnał informujący kompilator „hej, taka funkcja będzie i będzie przyjmować takie argumenty, a zwracać taki typ”. Praktycznie rzecz biorąc, przed funkcją main wystarczy wpisać np. 'bool sprawdz(int x);', żeby wszystko grało. To szczególnie ważne przy większych projektach czy pracy w zespołach, gdzie pliki nagłówkowe z deklaracjami funkcji są standardem. Pozwala to na lepszą czytelność i porządek w kodzie – kompilator wie, czego się spodziewać, a Ty unikasz dziwnych, trudnych do znalezienia błędów. Moim zdaniem taka organizacja kodu to podstawa, szczególnie jeśli kiedyś będziesz korzystać z bibliotek lub cudzych funkcji – deklaracje są wtedy wręcz obowiązkowe. To zasada, której trzyma się większość zespołów programistycznych i, szczerze mówiąc, sam kilka razy w młodości zapomniałem o deklaracji, przez co debugowanie trwało wieki. Warto od razu wyrobić sobie taki nawyk, bo to oszczędza sporo nerwów i czasu, a kod staje się solidniejszy i bardziej profesjonalny.

Pytanie 30

W jaki sposób można załadować tylko komponent z biblioteki React?

A. import Component from 'react'
B. import [ Component ] from 'react'
C. import { Component } from 'react'
D. import React.Component from 'react'

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Użycie składni import { Component } from 'react' to zdecydowanie najczęściej spotykany i najbardziej rekomendowany sposób importowania tylko wybranego komponentu z biblioteki React. To tzw. import nazwany, czyli dokładnie wskazujesz, który kawałek kodu chcesz wyciągnąć z całego modułu. W praktyce, jest to bardzo czytelne i pozwala na jasne zarządzanie zależnościami w pliku. Moim zdaniem ma to ogromne znaczenie w większych projektach, bo łatwo potem znaleźć, które elementy są faktycznie wykorzystywane w danym pliku. Co ważne, taka technika importowania jest w pełni zgodna ze standardami ES6, właściwie każdy nowoczesny projekt front-endowy na tym bazuje. Przykład praktyczny: jeśli chcesz stworzyć klasowy komponent React, wystarczy napisać import { Component } from 'react', a potem class MyClass extends Component {...}. Jest to nieco bardziej eleganckie niż importowanie całego obiektu React (np. import React from 'react'), zwłaszcza jeśli nie potrzebujesz całej funkcjonalności. Dodatkowo, takie rozwiązanie może wpływać pozytywnie na bundlowanie kodu, bo nie ściągasz do projektu niepotrzebnych fragmentów biblioteki. Swoją drogą, coraz częściej widać, że programiści skupiają się na minimalizowaniu importów i czytelności kodu – właśnie przez wybór takich rozwiązań.

Pytanie 31

Który z poniższych elementów UI umożliwia graficzną nawigację pomiędzy różnymi sekcjami aplikacji?

A. Rozwijana lista
B. Obszar tekstowy
C. Menu
D. Przycisk opcji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Pasek menu to kluczowy element interfejsu użytkownika, który umożliwia wizualną nawigację pomiędzy różnymi sekcjami aplikacji. Paski menu są powszechnie stosowane w aplikacjach desktopowych i mobilnych, ponieważ pozwalają na szybki dostęp do różnych funkcji oraz ustawień. Dzięki ich hierarchicznej strukturze użytkownicy mogą łatwo odnaleźć potrzebne narzędzia i opcje, co zwiększa intuicyjność i wygodę korzystania z aplikacji.

Pytanie 32

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

A. Git
B. Trello
C. Bugzilla
D. Jira

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dokładnie tak – Git to obecnie najpopularniejsze narzędzie do zarządzania wersjami kodu źródłowego. Wykorzystuje się go praktycznie w każdej większej firmie IT, a nawet w małych zespołach projektowych. Git pozwala śledzić wszelkie zmiany w projekcie, przywracać starsze wersje plików czy nawet łączyć pracę wielu osób nad tym samym kodem bez ryzyka konfliktów. Największą przewagą Gita nad starszymi systemami jak SVN jest rozproszony charakter – każdy programista ma lokalną kopię całej historii projektu i może pracować offline, a dopiero potem synchronizować zmiany. Z mojego doświadczenia przechodzenie na Gita wymaga chwili nauki, ale to narzędzie daje ogromną kontrolę nad kodem i bezpieczeństwo – nie ma się co bać eksperymentowania, bo zawsze można wrócić do wcześniejszej wersji. W praktyce, na przykład na Githubie czy GitLabie, Git jest podstawą do pracy zespołowej, code review i automatycznych testów. Warto też wspomnieć, że znajomość Gita jest już niemal wymaganiem na rynku pracy, nie tylko wśród programistów, ale też administratorów, testerów czy nawet projektantów dokumentacji. Generalnie, jeśli chodzi o zarządzanie wersjami – Git to złoty standard.

Pytanie 33

Co to jest ORM w kontekście programowania?

A. Organized Resource Model - model organizacji zasobów w aplikacjach webowych
B. Output Rendering Module - moduł renderujący dane wyjściowe w aplikacjach
C. Operational Reliability Management - zarządzanie niezawodnością operacyjną systemów
D. Object-Relational Mapping - technika konwersji danych między systemami typów w relacyjnych bazach danych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Object-Relational Mapping (ORM) to technika programistyczna, która pozwala na konwersję danych pomiędzy obiektami w programowaniu obiektowym a relacyjnymi bazami danych. Dzięki ORM, programiści mogą operować na danych w sposób bardziej naturalny, wykorzystując obiekty i ich właściwości zamiast skomplikowanych zapytań SQL. Przykłady popularnych frameworków ORM to Hibernate dla Javy, Entity Framework dla .NET oraz Django ORM dla Pythona. Te narzędzia upraszczają komunikację z bazą danych, co zwiększa wydajność i ułatwia zarządzanie kodem. Dzięki zastosowaniu ORM, programiści mogą również łatwiej stosować zasady programowania obiektowego oraz wzorce projektowe, co prowadzi do lepszej organizacji kodu i jego łatwiejszej konserwacji. Wspierają one również migracje schematów bazy danych oraz zarządzanie relacjami między obiektami, co jest istotne w kontekście złożonych aplikacji webowych i systemów informatycznych.

Pytanie 34

Jakie mogą być konsekwencje długotrwałego narażenia na hałas w pracy?

A. Obniżenie ostrości wzroku
B. Choroby skórne
C. Wzrost efektywności pracy
D. Uszkodzenie słuchu i zmęczenie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Długotrwały hałas w miejscu pracy może prowadzić do poważnych konsekwencji zdrowotnych, takich jak uszkodzenie słuchu oraz przewlekłe zmęczenie. Stała ekspozycja na hałas o wysokim natężeniu może powodować stopniową utratę słuchu, szumy uszne, a także zwiększać poziom stresu i obniżać koncentrację. Zmęczenie wynikające z hałasu wpływa negatywnie na produktywność i samopoczucie pracowników, prowadząc do spadku efektywności oraz wzrostu ryzyka popełniania błędów. W celu ochrony przed hałasem zaleca się stosowanie środków ochrony indywidualnej, takich jak nauszniki lub zatyczki do uszu, a także instalowanie ekranów dźwiękochłonnych i ograniczenie źródeł hałasu w środowisku pracy.

Pytanie 35

Kod funkcji "wykonaj()" przedstawiony poniżej weryfikuje, czy

bool wykonaj(int argument)
{
    int T[] = {4, 15, -2, 9, 202};
    for(int i=0; i<5; i++) {
        if(T[i] == argument)
            return true;
    }
    return false;
}
A. przekazany argument mieści się w zakresie od 0 do 4
B. wszystkie elementy w tablicy są równe wartości przekazanego argumentu
C. w tablicy liczb całkowitych znajdują się jedynie wartości 4, 15, -2, 9, 202
D. konkretny element (argument) jest obecny w tablicy liczb całkowitych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Funkcja wykonaj() została napisana tak, by sprawdzić, czy przekazany do niej argument znajduje się w konkretnej tablicy liczb całkowitych. To bardzo typowy sposób wyszukiwania wartości w niewielkich zbiorach – pętla przechodzi przez każdy element tablicy i jeśli napotka element równy argumentowi, natychmiast zwraca true. To klasyczna implementacja tzw. liniowego wyszukiwania (linear search), co moim zdaniem jest często spotykane w zadaniach rekrutacyjnych albo przy szybkim prototypowaniu. W praktyce, jeśli tablica byłaby większa albo wymagania dotyczące wydajności byłyby bardziej rygorystyczne, lepiej jest korzystać z innych struktur danych, np. std::set czy std::unordered_set, gdzie operacja wyszukiwania jest zazwyczaj szybsza. Ale tutaj – dla kilku liczb – ta metoda wystarcza i jest czytelna. Warto zauważyć, że taki kod pozwala na szybkie sprawdzenie obecności dowolnego elementu w małej kolekcji i nie wymaga jej sortowania. Z mojego doświadczenia, rozumienie tego mechanizmu pomaga potem w nauce bardziej zaawansowanych algorytmów przeszukiwania i ogólnie usprawnia myślenie algorytmiczne. W codziennej pracy programisty znajomość takich podstaw bardzo się przydaje, bo często trzeba „na szybko” sprawdzić, czy coś znajduje się w tablicy lub liście. Warto też pamiętać, żeby nie nadużywać takich rozwiązań przy dużych ilościach danych – wtedy zaczynają się schody z wydajnością. Ale podsumowując, ta odpowiedź dokładnie opisuje, co robi ten kod – po prostu sprawdza, czy argument jest obecny w zbiorze liczb.

Pytanie 36

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

A. Strategia marketingowa aplikacji
B. Opis funkcji, klas i zmiennych w kodzie
C. Zestawienie błędów zidentyfikowanych w trakcie testów
D. Szczegóły dotyczące konfiguracji serwera

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 37

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

A. Gdy mamy pewność co do dokładnego rozmiaru kolekcji przed kompilacją
B. Gdy liczba elementów w kolekcji zmienia się dynamicznie
C. Gdy chcemy uzyskać dostęp do elementów przy pomocy indeksu
D. Gdy liczba elementów w kolekcji jest niezmienna

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Lista to dynamiczna struktura danych, która pozwala na efektywne dodawanie i usuwanie elementów, zwłaszcza gdy liczba elementów zmienia się w trakcie działania programu. Listy są bardziej elastyczne niż tablice, ponieważ mogą dynamicznie dostosowywać swoją wielkość bez potrzeby alokacji dodatkowej pamięci. W przypadku dynamicznych operacji, takich jak częste wstawianie i usuwanie elementów, listy są znacznie bardziej wydajne niż tablice, które wymagają przesunięcia wszystkich elementów po każdej operacji. Listy świetnie sprawdzają się w implementacji kolejek, stosów oraz w strukturach, które muszą rosnąć i kurczyć się podczas działania aplikacji.

Pytanie 38

Wskaż rodzaj testów, które przeprowadza się podczas fazy tworzenia kodu źródłowego

A. testy wydajnościowe
B. testy wdrożeniowe
C. testy jednostkowe
D. testy kompatybilności

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Testy jednostkowe to, moim zdaniem, absolutny fundament solidnego programowania. Są to niewielkie, automatyczne testy, które programista pisze zwykle równolegle z kodem albo nawet przed nim, jeśli stosuje się TDD (Test-Driven Development). Chodzi o to, żeby każda najmniejsza część programu – funkcja, metoda czy klasa – była dokładnie sprawdzona, czy zachowuje się zgodnie z założeniami już na etapie pisania kodu. W praktyce wygląda to tak: piszesz sobie funkcję, która np. liczy VAT, i od razu piszesz kilka testów, które sprawdzają, czy dla różnych wartości zwraca ona poprawne wyniki. Gdy coś się zmieni w kodzie, testy jednostkowe pozwalają od razu wychwycić, że coś zepsułeś (albo, oby nie, ktoś inny). Standardy branżowe, jak np. ISTQB czy wytyczne IEEE 829, bardzo mocno podkreślają wagę testów jednostkowych – bez nich zarządzanie jakością oprogramowania jest po prostu niemożliwe na dłuższą metę. W praktyce nawet proste projekty szybko bez nich zamieniają się w chaos. Co ciekawe, dobrze napisane testy jednostkowe ułatwiają refaktoryzację, bo masz pewność, że po zmianach wszystko działa jak należy. W mojej opinii, jeśli ktoś naprawdę poważnie myśli o pracy w branży IT, powinien umieć pisać testy jednostkowe z marszu.

Pytanie 39

Która z poniższych technologii służy do tworzenia interaktywnych aplikacji webowych bez przeładowania strony?

A. SQL
B. CSS3
C. AJAX
D. HTML5

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
AJAX, czyli Asynchronous JavaScript and XML, to technologia umożliwiająca tworzenie interaktywnych aplikacji webowych bez konieczności przeładowywania całej strony. Dzięki AJAX, możliwe jest asynchroniczne przesyłanie danych pomiędzy klientem a serwerem, co pozwala na dynamiczne aktualizowanie treści na stronie bez interakcji użytkownika w postaci odświeżania. Przykładem wykorzystania AJAX może być formularz kontaktowy, który po wysłaniu nie przeładowuje całej strony, ale zamiast tego zaktualizowuje tylko wybraną sekcję, informując użytkownika o sukcesie lub błędzie. AJAX jest wykorzystywany w wielu nowoczesnych aplikacjach webowych, takich jak Gmail czy Facebook, gdzie interaktywność i szybkość są kluczowe. W kontekście standardów, AJAX najlepiej współpracuje z technologiami takimi jak RESTful API oraz JSON, co optymalizuje wymianę danych. Przy implementacji AJAX ważne jest również przestrzeganie zasad związanych z wydajnością i bezpieczeństwem, takich jak unikanie ataków XSS oraz odpowiednie zarządzanie sesjami użytkowników.

Pytanie 40

Jaką funkcję pełni operator "|" w języku C++?

A. Bitowe "xor"
B. Operację przesunięcia bitów w prawo
C. Logiczne "lub"
D. Bitowe "lub"

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Operator `|` w języku C++ jest operatorem bitowym `OR`, który porównuje bity dwóch liczb i zwraca `1` w pozycji bitu, jeśli przynajmniej jeden z odpowiadających sobie bitów jest `1`. Przykład: `5 | 3` (w notacji binarnej `0101 | 0011`) zwróci `0111`, co odpowiada liczbie `7`. Operatory bitowe są często używane w programowaniu systemowym, kryptografii oraz manipulacji danymi na poziomie bitowym.