Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

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

const items = [
  { id: 1, name: 'phone', price: 500 },
  { id: 2, name: 'laptop', price: 1000 },
  { id: 3, name: 'tablet', price: 750 }
];

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

Brak odpowiedzi na to pytanie.

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

Pytanie 2

Które z poniższych nie jest typem testu w programowaniu?

A. Testy jednostkowe
B. Testy end-to-end
C. Testy kompilacyjne
D. Testy integracyjne

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Testy kompilacyjne, w przeciwieństwie do testów jednostkowych, integracyjnych czy end-to-end, nie są typowym rodzajem testowania oprogramowania w kontekście zapewnienia jakości. Testy te koncentrują się na poprawności składni kodu pod kątem kompilacji, a nie na weryfikacji jego funkcjonalności. W praktyce programiści muszą upewnić się, że ich kod jest poprawny syntaktycznie, aby mógł zostać skompilowany przez kompilator. Warto zwrócić uwagę, że testy kompilacyjne są pierwszym krokiem w procesie programowania, ponieważ pozwalają na szybkie wychwycenie błędów, które mogłyby uniemożliwić dalsze etapy rozwoju oprogramowania. Testy jednostkowe koncentrują się na testowaniu pojedynczych funkcji lub metod, natomiast testy integracyjne sprawdzają interakcje między różnymi modułami. Testy end-to-end z kolei symulują zachowanie użytkownika i weryfikują, czy aplikacja działa zgodnie z wymaganiami biznesowymi. Zrozumienie różnicy między tymi rodzajami testów jest kluczowe dla skutecznego zarządzania jakością oprogramowania.

Pytanie 3

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

A. Bugzilla
B. Git
C. Trello
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 4

Jaki jest podstawowy cel przystosowania aplikacji do publikacji w sklepie mobilnym?

A. Dostosowanie kodu aplikacji w celu zwiększenia jej wydajności
B. Zapewnienie, że aplikacja działa jedynie w trybie offline
C. Zmniejszenie rozmiaru aplikacji poniżej 10 MB
D. Dostosowanie aplikacji do wymogów platformy oraz regulacji sklepu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dostosowanie aplikacji do wymagań platformy i przepisów sklepu mobilnego (np. Google Play lub App Store) to kluczowy krok w procesie publikacji aplikacji. Sklepy mobilne wymagają, aby aplikacje spełniały określone standardy dotyczące bezpieczeństwa, dostępności, wydajności oraz zgodności z wytycznymi interfejsu użytkownika. Proces ten obejmuje testowanie aplikacji pod kątem stabilności, optymalizację grafik i ikon, a także dostosowanie opisów i metadanych aplikacji, co zwiększa jej widoczność i atrakcyjność dla użytkowników. Przestrzeganie wytycznych App Store lub Google Play jest niezbędne, aby aplikacja mogła zostać zatwierdzona i udostępniona do pobrania.

Pytanie 5

Jakie z wymienionych narzędzi służy do emulacji mobilnych urządzeń podczas developowania aplikacji?

A. Postman
B. Genymotion
C. TensorFlow
D. Numpy

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Genymotion to jedno z najbardziej zaawansowanych narzędzi do emulacji urządzeń mobilnych podczas tworzenia aplikacji na system Android. Umożliwia symulowanie działania aplikacji na różnych urządzeniach i wersjach systemu Android, co pozwala programistom na testowanie kompatybilności i wydajności aplikacji w różnych warunkach. Genymotion oferuje szybkie emulowanie, obsługę GPS, kamery oraz czujników, co czyni go niezwykle przydatnym narzędziem w procesie rozwoju aplikacji mobilnych. Dzięki wsparciu dla integracji z Android Studio, Genymotion jest popularnym wyborem wśród deweloperów tworzących aplikacje na platformę Android.

Pytanie 6

Jakie elementy zostaną wyświetlone w przeglądarce po wykonaniu kodu źródłowego stworzonego za pomocą dwóch funkcjonalnie równoważnych fragmentów? KOD W ANGULAR:

tags: string[] = ['tag1', 'tag2', 'tag3' ];
// ...
<p *ngFor="let tag of tags"> {{tag}} </p>
KOD W REACT.JS:
state = {   tags: ['tag1', 'tag2', 'tag3']   };
// ...   /* w instrukcji return metody render */
<React.Fragment>
  { this.state.tags.map(tag => <p key={tag}>{tag}</p>) }
</React.Fragment>
A. Trzy paragrafy, każdy odpowiadający kolejnemu elementowi tablicy tags.
B. Trzy paragrafy, w każdym z nich tekst o treści: {tag}.
C. Jeden paragraf zawierający wszystkie elementy tablicy tags w kolejności.
D. Jeden paragraf z pierwszym elementem tablicy tags.

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod generuje trzy paragrafy, każdy z kolejnym elementem tablicy tags. Jest to standardowy sposób iteracji po elementach tablicy i renderowania ich jako oddzielnych elementów HTML. W praktyce, takie podejście jest szeroko stosowane w aplikacjach frontendowych, gdzie dynamicznie tworzone elementy interfejsu użytkownika są generowane na podstawie tablic lub list danych. Każdy element tablicy jest iterowany i osobno przekształcany w znacznik HTML, co pozwala na łatwe zarządzanie i aktualizowanie treści strony w czasie rzeczywistym. To podejście jest zgodne z najlepszymi praktykami dotyczącymi manipulacji DOM i zapewnia wysoką wydajność aplikacji.

Pytanie 7

Polecenia wydane w kontekście repozytorium Git, przy założeniu, że folder projektu jest aktualnie wybrany, mają na celu

git init
git add .
git commit -m 'first commit'
A. utworzenie kopii istniejącego repozytorium z jedynie tą rewizją, która zostanie zapisana pod nazwą first commit
B. zamknięcie projektu, co spowoduje zarchiwizowanie wszystkich rewizji do lokalnego archiwum pod nazwą first commit
C. rozpoczęcie sesji z już istniejącym repozytorium oraz pobranie kodu projektu do lokalnego folderu
D. rozpoczęcie pracy z nowym repozytorium, dodanie oraz zatwierdzenie kodu projektu jako first commit

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Polecenia git init git add . oraz git commit -m 'first commit' są podstawowymi komendami do rozpoczęcia pracy z nowym repozytorium Gita. git init inicjalizuje puste repozytorium w aktualnym katalogu co tworzy podkatalog .git zawierający wszystkie metadane i historię w wersjonowania. Następnie git add . dodaje wszystkie nowe i zmodyfikowane pliki w bieżącym katalogu do indeksu co oznacza że są one gotowe do zatwierdzenia w repozytorium. Kolejne polecenie git commit -m 'first commit' tworzy pierwszy snapshot aktualnego stanu projektu z przypisaną wiadomością 'first commit' co jest dobrą praktyką sygnalizującą początek nowej historii projektu. Taki proces inicjacji jest standardem w zarządzaniu wersjami w branży IT umożliwiając śledzenie zmian w kodzie ułatwiając współpracę zespołową oraz zapewniając kontrolę nad rozwojem oprogramowania. Ważne jest by w pierwszym commicie umieścić podstawowe działające elementy projektu co stanowi solidną bazę do dalszego rozwoju.

Pytanie 8

Zaprezentowany symbol odnosi się do

Ilustracja do pytania
A. praw autorskich
B. Creative Commons
C. domeny publicznej
D. prawa cytatu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Ten symbol to międzynarodowe oznaczenie domeny publicznej – często nazywany jest też symbolem Public Domain. Moim zdaniem to bardzo przydatna rzecz, bo jednoznacznie komunikuje, że utwór nie jest chroniony prawem autorskim, więc można go swobodnie wykorzystywać bez pytania kogokolwiek o zgodę. To szczególnie ważne, gdy pracujesz nad projektami komercyjnymi albo edukacyjnymi i musisz mieć pewność, że nie naruszasz czyichś praw. W praktyce spotkasz to oznaczenie na stronach z grafikami, muzyką czy tekstami, np. na Wikimedia Commons albo w niektórych bazach zdjęć stockowych – wtedy od razu wiesz, że możesz pobierać, edytować czy publikować materiał na własnych zasadach. Kluczowe jest jednak, żeby nie mylić tego symbolu z licencjami Creative Commons – tam nadal obowiązują konkretne warunki. W branży IT oraz przy pracy twórczej rozpoznawanie takich oznaczeń jest wręcz podstawą dobrych praktyk, bo znacząco minimalizuje ryzyko prawne. Z mojego doświadczenia wynika, że wielu początkujących myli domenę publiczną z wolnymi licencjami – a to nie to samo. Oznaczenie Public Domain jasno pokazuje: nie ma ograniczeń, korzystaj śmiało i nie musisz podawać autora, choć czasami jest to mile widziane z punktu widzenia etyki.

Pytanie 9

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

...(RAD)..., is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development.

In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Źródło: https://en.wikipedia.org/

A. prototypowanie wsparte testami jednostkowymi
B. środowisko szybkiego rozwoju aplikacji
C. zintegrowane środowisko programistyczne
D. środowisko refaktoryzacji aplikacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
RAD, czyli Rapid Application Development, tłumaczy się na polski najczęściej jako „środowisko szybkiego rozwoju aplikacji” albo „metodyka szybkiego wytwarzania oprogramowania”. To podejście stawia na błyskawiczne prototypowanie i szybkie iteracje zamiast długiego, formalnego planowania. Bardziej niż na dokumentacji, skupia się na tworzeniu działających wersji aplikacji, które można testować i na bieżąco modyfikować zgodnie z tym, czego oczekuje klient lub zespół użytkowników. W praktyce, przykładowy projekt w RAD to np. budowa aplikacji, gdzie klient dostaje wstępny prototyp po tygodniu, a nie po miesiącu – i od razu może zgłaszać uwagi. Bardzo często stosuje się narzędzia typu CASE (Computer-Aided Software Engineering), które pozwalają szybko generować kod i prototypy GUI bez żmudnego pisania wszystkiego od zera. W świecie profesjonalnych firm IT, RAD jest chętnie wykorzystywany, kiedy czas wdrożenia jest kluczowy, na przykład w startupach, które muszą szybko przetestować swój pomysł rynkowy. Moim zdaniem, nawet jeśli nie wszystkie projekty się do tego nadają, to znajomość RAD jest bardzo przydatna dla każdego programisty – pozwala lepiej zrozumieć, jak można pracować zwinnie i elastycznie, bez zbędnego formalizmu. RAD to nie tylko metodyka, ale też praktyczny styl myślenia o aplikacjach – szybciej, więcej, elastyczniej. Warto się tym zainteresować, szczególnie jeśli komuś zależy na czasie i wczesnych efektach pracy.

Pytanie 10

W systemie RGB kolor Pale Green przedstawia się jako RGB(152, 251, 152). Jaki jest szesnastkowy kod tego koloru?

A. 98 FE98
B. AO FE AO
C. AO FB AO
D. 98FB98

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kolor Pale Green w systemie RGB jest reprezentowany przez wartości RGB(152, 251, 152). Aby przekształcić te wartości na format szesnastkowy, należy każdy z komponentów koloru (czerwony, zielony, niebieski) przekształcić na format heksadecymalny. Wartość 152 w systemie dziesiętnym odpowiada 98 w systemie szesnastkowym, a 251 w systemie dziesiętnym odpowiada FE w systemie szesnastkowym. Dlatego, łącząc te wartości w kolejności od komponentu czerwonego, zielonego, do niebieskiego, uzyskujemy kod szesnastkowy 98FE98. Kod ten może być używany w projektach graficznych oraz w CSS do definiowania kolorów tła, tekstów i innych elementów. Użycie formatu szesnastkowego w projektowaniu stron internetowych oraz w aplikacjach jest zgodne z zasadami standardu W3C dotyczącego kolorów w HTML i CSS, co zapewnia spójność wizualną i ułatwia pracę z kolorami.

Pytanie 11

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. konkretny element (argument) jest obecny w tablicy liczb całkowitych
B. wszystkie elementy w tablicy są równe wartości przekazanego argumentu
C. przekazany argument mieści się w zakresie od 0 do 4
D. w tablicy liczb całkowitych znajdują się jedynie wartości 4, 15, -2, 9, 202

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 12

Zaprezentowany wykres ilustruje wyniki przeprowadzonych testów

Ilustracja do pytania
A. funkcjonalności
B. użyteczności
C. ochrony
D. wydajności

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wykres przedstawia czasy odpowiedzi strony internetowej co jest kluczowe w kontekście testów wydajnościowych. Testy wydajnościowe mają na celu zmierzenie jak system radzi sobie pod określonym obciążeniem i jak szybko potrafi odpowiedzieć na zapytania użytkowników. Tego typu analiza pomaga zidentyfikować potencjalne wąskie gardła w infrastrukturze IT. Przykładowo jeżeli czasy odpowiedzi DNS lub połączenia są zbyt długie może to wskazywać na potrzebę optymalizacji serwerów DNS lub infrastruktury sieciowej. Testy te są nieodłącznym elementem zapewnienia jakości oprogramowania a ich prawidłowe wykonanie wpływa na doświadczenia użytkowników końcowych. Dobra praktyka w branży IT zakłada regularne przeprowadzanie testów wydajnościowych w celu monitorowania stabilności systemu w warunkach zbliżonych do rzeczywistych. Warto również zauważyć że narzędzia takie jak JMeter czy LoadRunner są powszechnie używane do przeprowadzania takich testów co umożliwia symulację różnorodnych scenariuszy obciążenia i analizę wyników w czasie rzeczywistym.

Pytanie 13

Który z języków programowania jest najczęściej wykorzystywany do budowania aplikacji internetowych po stronie serwera?

A. PHP
B. HTML
C. JavaScript
D. CSS

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
PHP to jeden z najczęściej używanych języków programowania do tworzenia aplikacji webowych po stronie serwera. Jest to język skryptowy, który umożliwia dynamiczne generowanie treści stron internetowych, zarządzanie sesjami użytkowników, obsługę formularzy oraz integrację z bazami danych. PHP napędza popularne systemy zarządzania treścią (CMS), takie jak WordPress, Joomla czy Drupal. Dzięki swojej prostocie, szerokiemu wsparciu społeczności oraz dużej liczbie gotowych bibliotek i frameworków (np. Laravel), PHP pozostaje jednym z czołowych języków backendowych. PHP pozwala również na szybkie wdrażanie aplikacji i jest kompatybilny z wieloma serwerami WWW, co czyni go uniwersalnym wyborem w budowie aplikacji webowych.

Pytanie 14

Co to jest kontener Docker?

A. Narzędzie do automatycznego testowania interfejsów użytkownika
B. System zarządzania bazami danych NoSQL
C. Graficzny interfejs do zarządzania kodem aplikacji webowych
D. Lekka, samodzielna jednostka oprogramowania, która zawiera wszystko, co aplikacja potrzebuje do uruchomienia

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kontener Docker to lekka, samodzielna jednostka oprogramowania, która zawiera wszystko, co aplikacja potrzebuje do uruchomienia: kod, biblioteki, zmienne środowiskowe oraz inne zależności. Dzięki wykorzystaniu technologii wirtualizacji na poziomie systemu operacyjnego, kontenery są bardziej efektywne i oszczędne w użyciu zasobów w porównaniu do tradycyjnych maszyn wirtualnych. Przykładem zastosowania kontenerów Docker jest rozwój aplikacji webowych, gdzie różne mikroserwisy mogą być uruchamiane w osobnych kontenerach, co pozwala na łatwe skalowanie oraz zarządzanie nimi. W praktyce, kontenery umożliwiają programistom szybkie uruchamianie środowisk testowych i produkcyjnych, a także ułatwiają ciągłą integrację i ciągłe wdrażanie (CI/CD), co jest zgodne z najlepszymi praktykami DevOps. W kontekście zarządzania infrastrukturą, kontenery zapewniają spójność środowiska, eliminując problemy związane z "działa na moim komputerze".

Pytanie 15

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

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

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 16

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

A. Bitowe "xor"
B. Operację przesunięcia bitów w prawo
C. Bitowe "lub"
D. Logiczne "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.

Pytanie 17

Który z frameworków bazuje na budowaniu komponentów przy użyciu języka JavaScript?

A. ASP.NET Core
B. React.js
C. Node.js
D. Django

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
React.js to popularna biblioteka JavaScript, która opiera się na komponencie jako podstawowym elemencie budowy interfejsu użytkownika. Framework ten umożliwia tworzenie dynamicznych i interaktywnych aplikacji webowych, które cechują się wysoką wydajnością. Dzięki wykorzystaniu komponentów, programiści mogą wielokrotnie wykorzystywać te same elementy interfejsu, co znacznie upraszcza zarządzanie kodem i poprawia jego czytelność. React jest szeroko stosowany w budowie Single Page Applications (SPA) i wspiera technologię Virtual DOM, co minimalizuje liczbę operacji na rzeczywistym DOM i zwiększa szybkość renderowania stron. React jest szczególnie polecany do tworzenia nowoczesnych aplikacji webowych o dynamicznych interfejsach, co czyni go jednym z liderów na rynku frontendowym.

Pytanie 18

Które z wymienionych zastosowań najlepiej definiuje bibliotekę jQuery?

A. Projektowanie struktur baz danych
B. Tworzenie interfejsów w programach desktopowych
C. Ułatwienie manipulacji DOM oraz obsługi zdarzeń w JavaScript
D. Budowanie aplikacji mobilnych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
jQuery to popularna biblioteka JavaScript, która ułatwia manipulację DOM (Document Object Model), obsługę zdarzeń oraz wykonywanie animacji na stronach internetowych. Dzięki jQuery programiści mogą znacznie skrócić ilość kodu potrzebnego do realizacji operacji na elementach HTML. Biblioteka ta zapewnia również wygodny sposób na wykonywanie asynchronicznych żądań HTTP (AJAX), co pozwala na dynamiczne pobieranie danych z serwera bez konieczności przeładowywania całej strony. jQuery jest szeroko stosowane w projektach, które wymagają interaktywności oraz lekkich efektów wizualnych. Choć w ostatnich latach jego popularność spadła na rzecz bardziej zaawansowanych frameworków takich jak React czy Angular, jQuery nadal jest cenione za prostotę, wydajność oraz bogaty ekosystem gotowych wtyczek i rozszerzeń.

Pytanie 19

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

A. do kierowania się zdaniem danej grupy
B. do doprowadzania spraw do końca
C. do uległości wobec autorytetów
D. do odwzajemniania się osobie, która nam pomogła

Brak odpowiedzi na to pytanie.

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

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

A. Definicja destruktora
B. Deklaracja atrybutów klasy
C. Definicja funkcji członkowskich klasy
D. Zastosowanie słowa kluczowego class

Brak odpowiedzi na to pytanie.

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

Pytanie 21

Jakie działania należy podjąć, aby uniknąć nieskończonej rekurencji w danej funkcji?

A. Wykorzystać automatyczny debugger w kompilatorze
B. Zastosować iterację zamiast rekurencji
C. Rozszerzyć zakres zmiennych globalnych
D. Dodać warunek zakończenia w funkcji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Warunek stopu to taki kluczowy element w rekurencji, który właściwie mówi, kiedy funkcja powinna przestać się wywoływać. Jak masz ten warunek, to funkcja wraca z wynikiem zamiast kręcić się w kółko, co mogłoby prowadzić do jakiegoś szaleństwa, tzn. przepełnienia stosu. Myślę, że warto zwrócić uwagę, że dodanie tego warunku to naprawdę podstawowa sprawa w programowaniu, bo bez niego wszystko może się posypać i przestanie działać tak, jak powinno.

Pytanie 22

Zajmując się pracą w zespole oraz dbając o jego efektywne funkcjonowanie, nie powinniśmy

A. skupiać się jedynie na własnych korzyściach
B. przyjmować odpowiedzialności za swoje decyzje
C. sumiennie i w ustalonym terminie realizować swoje zadania
D. wspierać się nawzajem

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dokładnie o to chodzi – skupianie się tylko na własnych korzyściach prawie zawsze działa na szkodę zespołu. W praktyce, gdy ktoś patrzy wyłącznie na siebie, najczęściej zaniedbuje współpracę, co prowadzi do napięć i spadku efektywności grupy. W zespole liczy się wspólny cel, a nie indywidualne interesy, bo to właśnie dzięki wzajemnemu wsparciu i otwartej komunikacji można osiągnąć lepsze wyniki. Z mojego doświadczenia wynika, że projekty, w których członkowie współpracowali i dzielili się odpowiedzialnością, szły sprawniej i bez zbędnych spięć. Profesjonalne standardy, np. metodyki Scrum czy Agile, akcentują wartość pracy zespołowej i transparentności – jeśli każdy ciągnie w swoją stronę, cały model współpracy się sypie. Warto pamiętać, że nawet najlepszy specjalista sam nie pociągnie projektu, jeśli nie będzie działał fair wobec innych. Najlepiej się sprawdza takie podejście, gdzie ludzie podchodzą do pracy z otwartością, potrafią poprosić o pomoc i wspólnie świętują sukcesy, a nie tylko skupiają się na własnych liczbach czy bonusach. To naprawdę widać w praktyce – zespoły, gdzie nie liczy się tylko własny interes, mają zwykle znacznie lepsze efekty i atmosferę pracy.

Pytanie 23

Jaki jest główny cel normalizacji baz danych?

A. Zwiększenie liczby tabel w celu lepszej organizacji danych
B. Zmniejszenie rozmiaru bazy danych kosztem integralności
C. Eliminacja redundancji danych i zapewnienie integralności danych
D. Przyśpieszenie zapytań kosztem zwiększenia redundancji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Głównym celem normalizacji baz danych jest eliminacja redundancji danych oraz zapewnienie ich integralności. Proces ten polega na przekształceniu danych w taki sposób, aby zminimalizować powielanie informacji, co przekłada się na oszczędność miejsca oraz poprawę wydajności bazy. Normalizacja wyodrębnia dane w sposób, który pozwala na ich logiczne i spójne uporządkowanie, co ułatwia aktualizację oraz usuwanie danych bez ryzyka wprowadzenia niezgodności. Przykładem praktycznego zastosowania normalizacji jest system zarządzania danymi klientów, gdzie informacje o klientach, zamówieniach i produktach są przechowywane w odrębnych tabelach. Dzięki temu można łatwo wprowadzać zmiany w danych klientów, bez wpływu na dane zamówień czy produktów. W branży baz danych, standardy takie jak ACID (Atomicity, Consistency, Isolation, Durability) i zasady dotyczące normalizacji, jak pierwsza, druga czy trzecia forma normalna, stanowią fundamenty dobrych praktyk projektowania baz danych. Zastosowanie tych zasad wpływa na zwiększenie efektywności operacji CRUD (Create, Read, Update, Delete) i zapewnia integralność danych w dłuższym okresie.

Pytanie 24

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

A. Blender
B. Chrome DevTools
C. Postman
D. Git

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Chrome DevTools to potężne narzędzie wbudowane w przeglądarkę Google Chrome, które umożliwia debugowanie aplikacji webowych. Umożliwia ono analizowanie struktury DOM, monitorowanie sieci, profilowanie wydajności oraz inspekcję kodu JavaScript. Chrome DevTools pozwala na śledzenie błędów w czasie rzeczywistym, edytowanie stylów CSS oraz modyfikowanie HTML bezpośrednio w przeglądarce, co znacznie przyspiesza proces rozwoju i testowania aplikacji webowych.

Pytanie 25

Jaką strukturę danych stosuje się w algorytmie BFS (przeszukiwanie wszerz)?

A. Tablica
B. Kolejka
C. Zbiór
D. Graf

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kolejka jest strukturą danych wykorzystywaną w algorytmie BFS (przeszukiwanie wszerz), co umożliwia przetwarzanie węzłów w kolejności ich dodania – zgodnie z zasadą FIFO (First In First Out). W BFS kolejka przechowuje kolejne wierzchołki do odwiedzenia, co pozwala na eksplorację grafu poziom po poziomie. Dzięki temu BFS jest idealny do znajdowania najkrótszej ścieżki w grafach nieskierowanych oraz przeszukiwania dużych przestrzeni stanów. Kolejka gwarantuje, że każdy wierzchołek jest odwiedzany w odpowiedniej kolejności, co czyni BFS algorytmem niezawodnym i wszechstronnym w zastosowaniach takich jak nawigacja, sieci komputerowe i sztuczna inteligencja.

Pytanie 26

Które narzędzie służy do zarządzania zależnościami w projekcie JavaScript?

A. git
B. docker
C. npm
D. postman

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
npm, czyli Node Package Manager, jest kluczowym narzędziem w ekosystemie JavaScript, którego głównym celem jest zarządzanie zależnościami projektów. Umożliwia to instalowanie, aktualizowanie oraz usuwanie paczek (modułów), które są niezbędne do budowy aplikacji. Przykładowo, jeśli twój projekt wymaga biblioteki React, możesz ją łatwo zainstalować za pomocą polecenia `npm install react`, co automatycznie dodaje ją do pliku 'package.json', co ułatwia późniejsze zarządzanie wersjami. Dodatkowo, npm wspiera skrypty, co pozwala na automatyzację wielu procesów, takich jak testowanie czy budowanie aplikacji. Stosowanie npm jest zgodne z najlepszymi praktykami, ponieważ pozwala na utrzymanie spójności w projekcie oraz ułatwia współpracę zespołową, ułatwiając innym programistom instalowanie tych samych zależności w identycznych wersjach. Obecnie npm jest standardem wśród menedżerów pakietów dla JavaScript, co czyni go niezbędnym narzędziem dla każdego developera.

Pytanie 27

Wskaż typy numeryczne o stałej precyzji

A. long long, long double
B. bool char, string
C. float, double
D. int, short, long

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Typy numeryczne o stałej precyzji (czyli tzw. typy całkowite) to na przykład int, short, long – dokładnie te, które wskazałeś. Działają one trochę jak liczniki – przechowują liczby całkowite w określonym zakresie, bez przecinka. Moim zdaniem to podstawa, jeśli chodzi o reprezentowanie wartości typu liczba sztuk, indeks, identyfikator – wszędzie tam, gdzie nie potrzebujemy części ułamkowej. Ich precyzja wynika z tego, że są zdefiniowane w standardzie (np. w C++ czy Javie) jako liczby całkowite reprezentowane przez określoną liczbę bitów. Dla przykładu, 32-bitowy int zawsze pomieści wartości od -2 147 483 648 do 2 147 483 647 i każdy bit jest tu ważny. W praktyce, programując mikrokontrolery albo systemy wbudowane, właściwy wybór typu o stałej precyzji potrafi decydować o stabilności i wydajności całego programu. Warto też wiedzieć, że typy te – int, short, long – nie mają błędu zaokrągleń, co często zdarza się przy operacjach na liczbach zmiennoprzecinkowych. No i jeszcze takie małe spostrzeżenie: dobrym zwyczajem jest wybieranie najmniejszego typu całkowitego, który pokryje wymagany zakres, żeby zoptymalizować zużycie pamięci. Takie podejście mocno się przydaje, zwłaszcza jak się pracuje nad większym projektem, gdzie każda optymalizacja jest na wagę złota.

Pytanie 28

Co to jest WebSocket?

A. Biblioteka JavaScript do tworzenia dynamicznych formularzy
B. Protokół komunikacyjny zapewniający komunikację dwukierunkową przez pojedyncze połączenie TCP
C. Narzędzie do testowania aplikacji webowych
D. Standard zapisu danych w formacie binarnym

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
WebSocket to protokół komunikacyjny, który umożliwia dwukierunkową, interaktywną komunikację między klientem a serwerem przez pojedyncze połączenie TCP. Dzięki WebSocket możliwe jest przesyłanie danych w czasie rzeczywistym, co jest szczególnie istotne w aplikacjach wymagających natychmiastowej wymiany informacji, takich jak czaty, gry online czy aplikacje do monitorowania. W przeciwieństwie do tradycyjnych protokołów HTTP, które wymagają wielokrotnych połączeń dla każdej interakcji, WebSocket utrzymuje stałe połączenie, co minimalizuje opóźnienia oraz obciążenie serwera. Technologia ta opiera się na standardach IETF, a także jest szeroko wspierana przez większość nowoczesnych przeglądarek, co czyni ją idealnym rozwiązaniem dla aplikacji webowych. Dobrą praktyką jest również obsługa protokołu HTTPS, co zapewnia bezpieczeństwo wymiany danych. Przykładem zastosowania WebSocket jest aplikacja finansowa, w której użytkownicy muszą na bieżąco śledzić zmiany cen akcji.

Pytanie 29

Jakie metody można wykorzystać do przechowywania informacji o użytkownikach w aplikacji mobilnej na systemie Android?

A. Tylko w pamięci RAM
B. Wyłącznie w zewnętrznych bazach danych
C. Za pomocą plików SharedPreferences
D. W rejestrze systemu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
SharedPreferences to jedno z najprostszych i najczęściej stosowanych narzędzi do przechowywania danych użytkownika w aplikacjach mobilnych na Androidzie. SharedPreferences umożliwia zapisywanie małych porcji danych w postaci par klucz-wartość. Jest to idealne rozwiązanie do przechowywania ustawień użytkownika, preferencji aplikacji oraz stanów interfejsu. Dane przechowywane w SharedPreferences są zapisywane w plikach XML i pozostają na urządzeniu nawet po zamknięciu aplikacji, co czyni je doskonałym narzędziem do przechowywania trwałych informacji. Deweloperzy cenią SharedPreferences za prostotę implementacji i wydajność, co sprawia, że jest to jedno z najbardziej uniwersalnych narzędzi do lokalnego przechowywania danych w aplikacjach mobilnych.

Pytanie 30

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

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 31

Co to jest IndexedDB?

A. Format indeksowania danych w bazach NoSQL
B. Indeks danych używany przez wyszukiwarki internetowe
C. Niskopoziomowe API do przechowywania dużych ilości danych w przeglądarce użytkownika
D. System zarządzania bazami SQL w aplikacjach backendowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
IndexedDB to niskopoziomowe API, które umożliwia przechowywanie dużych ilości danych bezpośrednio w przeglądarce użytkownika. Dzięki temu programiści mogą tworzyć aplikacje webowe, które wykorzystują lokalne bazy danych, co pozwala na szybki dostęp do informacji, a także na pracę offline. IndexedDB jest asynchroniczny, co oznacza, że operacje na bazie danych nie blokują interfejsu użytkownika, co jest zgodne z dobrymi praktykami w tworzeniu responsywnych aplikacji webowych. Przykłady zastosowania to aplikacje e-commerce, które mogą przechowywać historię zakupów czy koszyk użytkownika lokalnie, co zwiększa wydajność i komfort użytkowania. Warto również zwrócić uwagę, że IndexedDB obsługuje obiekty JavaScript, co umożliwia przechowywanie złożonych struktur danych. Standardy związane z IndexedDB są częścią W3C i są szeroko wspierane przez nowoczesne przeglądarki, co czyni tę technologię wiarygodnym rozwiązaniem do przetwarzania danych w aplikacjach webowych.

Pytanie 32

Czym jest klasa w programowaniu obiektowym?

A. typ danych
B. wskaźnik
C. zmienna
D. instrukcja

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Klasa w programowaniu obiektowym to w praktyce taki szablon, według którego tworzymy konkretne obiekty. To coś jak przepis, dzięki któremu programista może zdefiniować własny, złożony typ danych, opisujący realny byt czy problem. Klasa określa, jakie dane (pola, właściwości) oraz zachowania (metody, funkcje) mają mieć obiekty, które potem powstaną na jej podstawie. Programując w językach takich jak Java, C++ czy Python, właśnie klasy pozwalają nam zamknąć logikę i dane w jednym opakowaniu – to jest jeden z filarów OOP (programowania obiektowego). Moim zdaniem nie da się robić sensownych, skalowalnych projektów bez klas, bo to one pozwalają sensownie ogarnąć złożoność. Przykład? W aplikacji bankowej klasa KontoBankowe może mieć pola typu saldo, numer konta i metody do przelewów. Każde nowe konto to osobny obiekt tego typu, ale wszystkie zachowują się spójnie. Warto przy tym pamiętać, że dobra praktyka nakazuje projektować klasy tak, żeby były jak najbardziej uniwersalne, czyli zgodnie z zasadą DRY (Don’t Repeat Yourself) i SOLID. Często spotykam się z opinią, że klasa to „sztywny typ danych”, ale to nieprawda – dzięki dziedziczeniu czy polimorfizmowi można je elastycznie rozszerzać. Podsumowując, klasa to własny, często złożony typ danych stworzony specjalnie pod potrzeby danej aplikacji – i właśnie za to tak się je ceni.

Pytanie 33

Zapisany fragment w C# wskazuje na definicję klasy Car, która:

public class Car: Vehicle {     ...   }
A. jest powiązana z klasą Vehicle
B. stanowi klasę bazową (nie dziedziczy po żadnej klasie)
C. używa prywatnych pól klasy Vehicle
D. dziedziczy po Vehicle

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W przedstawionym kodzie w języku C# mamy definicję klasy Car, która dziedziczy po klasie Vehicle. Dziedziczenie to fundamentalny mechanizm programowania obiektowego, pozwalający jednej klasie przejąć właściwości i metody innej klasy. W praktyce oznacza to, że klasa Car automatycznie zyskuje dostęp do metod i właściwości publicznych oraz chronionych klasy Vehicle, co umożliwia ponowne użycie kodu i zwiększa jego przejrzystość. Dziedziczenie jest kluczowe w projektowaniu skalowalnych systemów, gdzie umożliwia tworzenie bardziej specyficznych klas na podstawie klas ogólnych, co jest zgodne z zasadą DRY (Don't Repeat Yourself). Przykładowo, jeżeli klasa Vehicle zawiera metody takie jak Start() i Stop(), klasa Car może je wykorzystać bez konieczności ponownego definiowania. Dobre praktyki w programowaniu obiektowym zalecają wykorzystywanie dziedziczenia do tworzenia hierarchii klas, które logicznie odwzorowują relacje „jest-a” pomiędzy obiektami w systemie. Ważne jest też unikanie zbyt głębokiego dziedziczenia, co może prowadzić do skomplikowanego i trudnego w utrzymaniu kodu. Zrozumienie dziedziczenia jest kluczowe dla efektywnego wykorzystania wzorców projektowych, takich jak wzorzec projektowy Adapter czy Dekorator.

Pytanie 34

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

Brak odpowiedzi na to pytanie.

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

Co to jest Cypress?

A. Biblioteka komponentów UI dla React
B. System zarządzania bazami danych dla aplikacji mobilnych
C. Narzędzie do kompilacji kodu TypeScript
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 36

Przykład wywołania funkcji zamien w języku C++ może wyglądać w następujący sposób:

void zamien(int *a, int *b) {
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}
A. zamien(*a, *b); // a, b - zmienne całkowite
B. zamien(m, n); // m, n - zmienne całkowite
C. zamien(&a, &b); // a, b - zmienne całkowite
D. zamien(12, 34)

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W tym przypadku wywołanie zamien(&a, &b); jest prawidłowe, bo funkcja zamien oczekuje wskaźników do zmiennych całkowitych, nie samych wartości tych zmiennych ani ich referencji. Przekazując adresy przez &a i &b, pozwalamy funkcji modyfikować oryginalne zmienne, a nie ich kopie. To jest fundament operacji wskaźnikowych w C++. Takie podejście umożliwia tzw. przekazywanie przez adres, które jest wykorzystywane wszędzie tam, gdzie trzeba w funkcji podmienić faktyczną zawartość zmiennej, a nie tylko jej kopię. W praktyce, na przykład podczas sortowania tablic czy zamiany miejscami dwóch wartości, korzysta się właśnie z takiego mechanizmu. Przekazywanie wskaźników jest bardzo uniwersalne – pozwala nie tylko zmieniać wartości, ale też np. przekazywać duże struktury bez kopiowania całej ich zawartości, co przyspiesza program i zmniejsza zużycie pamięci. Moim zdaniem warto też zauważyć, że użycie wskaźników jest jednym z filarów programowania na niskim poziomie w C i C++. Wielu początkujących programistów boi się wskaźników (nie wiem czemu, chyba przez te wszystkie historie o błędach i segfaultach), ale jak się już zrozumie, dlaczego i jak przekazywać adresy zmiennych, to potem dużo łatwiej korzystać z bardziej zaawansowanych mechanizmów np. dynamicznej alokacji pamięci czy tablic wskaźników. Standard C++ wręcz zaleca, by wszędzie tam, gdzie funkcja ma zmienić przekazane wartości, używać wskaźników lub referencji. W tym przypadku wskaźniki są idealne, bo dokładnie tego wymaga deklaracja funkcji. Dobrze jest też znać różnicę między przekazywaniem przez wartość, wskaźnik i referencję, bo to pozwala świadomie projektować interfejsy funkcji.

Pytanie 37

W zamieszczonej ramce znajdują się notatki testera dotyczące przeprowadzanych testów aplikacji. Jakiego typu testy planuje przeprowadzić tester?

  • zmierzyć czas zalogowania się użytkownika
  • ustalić domyślną liczbę produktów na stronie, dla której renderowanie jest akceptowalne czasowo
  • czy wizualizacja danych na mapie przebiega bez opóźnień?
  • czy czas logowania wzrasta znacznie przy logowaniu 10 użytkowników, 100, 1000?
  • jaka minimalna prędkość pobierania jest wymagana, aby aplikacja była zaakceptowana przez klienta?
A. Jednostkowe
B. Wydajnościowe
C. Interfejsu
D. Bezpieczeństwa

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Testy wydajnościowe są kluczowe dla zapewnienia, że system działa sprawnie pod różnym obciążeniem. Są one wykonywane, aby zrozumieć, jak aplikacja zachowuje się w warunkach rzeczywistych, kiedy wiele użytkowników korzysta z niej jednocześnie. W pytaniu wymienione zostały zadania takie jak mierzenie czasu logowania się użytkowników oraz sprawdzanie, czy czas ten wzrasta wraz ze wzrostem liczby użytkowników. To typowe aspekty testów wydajnościowych. Takie testy pomagają określić limity skalowalności i zapewniają, że aplikacja może obsługiwać oczekiwaną liczbę użytkowników bez spadku wydajności. Standardy branżowe, takie jak ISO/IEC 25010, zwracają uwagę na konieczność testowania wydajności, by zidentyfikować potencjalne wąskie gardła i zapewnić satysfakcjonujące doświadczenia użytkownikom. Dobrymi praktykami są używanie narzędzi takich jak JMeter czy LoadRunner, które umożliwiają symulację obciążenia i analizę wyników w celu optymalizacji kodu i infrastruktury. Tego typu testy są nieodzowne przed wdrożeniem aplikacji produkcyjnej, aby zapewnić jej niezawodne działanie.

Pytanie 38

Jakie oprogramowanie służy jako przykład programu do komunikacji audio-wideo?

A. Notion
B. Google Drive
C. Microsoft Teams
D. Slack

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Microsoft Teams to naprawdę fajne narzędzie do komunikacji. Łączy w sobie czat, wideo i audio, więc wszystko masz w jednym miejscu. Zostało stworzone przez Microsoft, żeby ułatwić współpracę w zespołach. To idealne, gdy trzeba prowadzić spotkania online z kilkoma osobami. Myślę, że to super rozwiązanie dla firm, które pracują zdalnie. Dzięki WebRTC jakość transmisji audio i wideo jest naprawdę wysoka. Można w nim organizować spotkania, webinary, a nawet stworzyć przestrzeń dla zespołów projektowych, gdzie można dzielić się plikami i prowadzić dyskusje. A jak jeszcze połączysz go z innymi aplikacjami Microsoft 365, jak OneNote czy SharePoint, to masz pełny zestaw do zarządzania projektami. Dobrze też, że Microsoft Teams dba o ochronę danych osobowych, więc jest bezpieczny dla różnych organizacji.

Pytanie 39

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

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

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 40

Która z operacji logicznych zwróci wartość "true", gdy obie zmienne są sobie równe?

A. x || y
B. x && y
C. x == y
D. x != y

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Operator `==` w języku C++ i wielu innych językach programowania (np. Python, Java, JavaScript) służy do porównywania dwóch wartości. Zwraca `true`, jeśli obie wartości są sobie równe, oraz `false`, jeśli są różne. Przykład: `if (x == y)` sprawdza, czy zmienna `x` jest równa zmiennej `y`. Operator ten jest kluczowy w instrukcjach warunkowych oraz pętlach, gdzie konieczne jest porównywanie wartości w celu podejmowania decyzji na podstawie wyniku tego porównania.