Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 1 maja 2026 16:21
  • Data zakończenia: 1 maja 2026 16:31

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Jaką rolę pełni element statyczny w klasie?

A. Ogranicza dostęp do metod publicznych w klasie
B. Pozwala na dynamiczne dodawanie nowych metod
C. Zachowuje wspólną wartość dla wszystkich instancji tej klasy
D. Automatycznie likwiduje obiekty klasy po zakończeniu działania programu
Składnik statyczny klasy przechowuje wartości współdzielone przez wszystkie obiekty tej klasy. Jest to jedno z najbardziej efektywnych narzędzi w programowaniu obiektowym, pozwalające na ograniczenie zużycia pamięci oraz zapewnienie spójności danych. Główna rola składnika statycznego polega na utrzymaniu jednej kopii zmiennej lub metody, która jest dostępna niezależnie od liczby instancji klasy. To oznacza, że zmiana wartości składowej statycznej jest natychmiast widoczna dla wszystkich obiektów klasy. Przykładem jest licznik instancji klasy lub konfiguracja globalna aplikacji, gdzie statyczność pozwala na scentralizowanie danych i ich jednolite zarządzanie.

Pytanie 2

Co to jest WebSockets?

A. Biblioteka JavaScript do manipulacji danymi JSON
B. Format zapisu danych w bazach NoSQL
C. Metoda zabezpieczania połączeń HTTP
D. Protokół komunikacyjny zapewniający dwukierunkową komunikację między przeglądarką a serwerem
Inne odpowiedzi dotyczą różnych technologii, które nie są związane z WebSockets, co może prowadzić do błędnych wyobrażeń na temat ich funkcji. Na przykład, biblioteka JavaScript do manipulacji danymi JSON nie ma bezpośredniego związku z protokołem komunikacyjnym. JSON (JavaScript Object Notation) to format wymiany danych, który ułatwia przesyłanie obiektów między serwerem a klientem, ale nie zapewnia mechanizmu komunikacji w czasie rzeczywistym. Kolejną pomyłką jest myślenie, że WebSockets to format zapisu danych w bazach NoSQL. Bazy NoSQL mogą korzystać z różnych formatów danych, ale WebSockets koncentrują się na komunikacji, a nie na przechowywaniu czy formacie danych. Metoda zabezpieczania połączeń HTTP również nie dotyczy WebSockets. Chociaż z pewnością ważne jest, by zapewnić bezpieczeństwo połączeń (np. korzystając z HTTPS), WebSockets funkcjonują jako osobny protokół. Wiele osób może mylnie łączyć te koncepcje, co prowadzi do nieporozumień. Kluczowe jest zrozumienie, że WebSockets to narzędzie do efektywnej komunikacji w czasie rzeczywistym, a nie elementy związane z danymi czy bezpieczeństwem połączeń HTTP.

Pytanie 3

Który z poniższych opisów najlepiej definiuje kompilator?

A. Narzędzie do analizy kodu w czasie rzeczywistym
B. Program łączący dynamiczne biblioteki z kodem źródłowym
C. Narzędzie przekształcające kod źródłowy na plik wykonywalny
D. System monitorujący zmiany w kodzie źródłowym
Kompilator to narzędzie, które przekształca kod źródłowy napisany w języku programowania na plik wykonywalny (binarny), który może być uruchomiony bez potrzeby ponownej kompilacji. Proces ten obejmuje kilka etapów, takich jak analiza leksykalna, analiza składniowa, optymalizacja kodu oraz generowanie kodu maszynowego. Kompilator jest nieodzownym elementem w językach takich jak C, C++ czy Java. Generowany plik wykonywalny może działać szybciej niż kod interpretowany, ponieważ nie wymaga tłumaczenia w czasie rzeczywistym.

Pytanie 4

Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?

let arr = [1, 2, 3, 4, 5];
let result = arr.filter(num => num % 2 === 0);
console.log(result);
A. [1, 3, 5]
B. [1, 2, 3, 4, 5]
C. 2,4
D. [2, 4]
Wynik działania podanego kodu to [2, 4], ponieważ zastosowana funkcja filter tworzy nową tablicę, w której znajdują się tylko te elementy, które spełniają określony warunek. W tym przypadku warunkiem jest to, że element musi być parzysty (num % 2 === 0). Z tablicy arr, która zawiera liczby od 1 do 5, tylko liczby 2 i 4 spełniają ten warunek. Filtracja danych jest bardzo przydatna w programowaniu, zwłaszcza w kontekście pracy z dużymi zbiorami danych, gdzie można łatwo wyodrębnić interesujące nas elementy. Stosowanie takich metod, jak filter, jest zgodne z zasadami programowania funkcyjnego, które promują użycie funkcji do przetwarzania danych w sposób bardziej zwięzły i czytelny. W praktyce, funkcja filter może być używana do filtrowania danych z API, przetwarzania zbiorów danych w aplikacjach, czy też w analizach danych. Takie podejście zwiększa wydajność i czytelność kodu, co jest istotne w długoterminowym utrzymaniu projektów.

Pytanie 5

Jakie narzędzie jest najbardziej odpowiednie do identyfikacji błędów w trakcie działania programu?

A. Linker
B. Kompilator
C. Interpreter
D. Debugger
Debugger to narzędzie przeznaczone do wyszukiwania błędów w czasie wykonywania programu. Pozwala na zatrzymywanie aplikacji w wybranych miejscach, analizowanie wartości zmiennych i śledzenie przepływu sterowania, co umożliwia szybkie wykrywanie błędów logicznych i błędów czasu wykonania. Debugger jest niezbędny w procesie rozwoju oprogramowania, ponieważ pomaga programistom w zrozumieniu, jak ich kod działa w rzeczywistości i jak różne warunki wpływają na jego funkcjonowanie.

Pytanie 6

Jaką jednostkę zaleca się stosować przy projektowaniu interfejsu aplikacji?

A. mm
B. px
C. dp
D. pt
Wydaje się, że wybór jednostki do projektowania interfejsów to drobiazg, ale w praktyce ma ogromne znaczenie dla wygody użytkowników. Często spotykam się z przekonaniem, że skoro ekrany mają określoną liczbę pikseli, to właśnie px powinno być podstawową jednostką. Niestety, to myślenie prowadzi prosto do pułapki – piksele na różnych urządzeniach mają zupełnie inną wielkość fizyczną przez różne wartości gęstości ekranu (dpi). Coś, co na jednym wyświetlaczu wygląda dobrze, na innym może być kompletnie nieczytelne albo przesadnie duże. Z kolei mm, czyli milimetry, to jednostka fizyczna, ale ekrany rzadko odwzorowują tę wielkość precyzyjnie – w praktyce systemy operacyjne próbują przeliczać mm na piksele, ale często wychodzi to niedokładnie, bo nie każdy sprzęt ma idealnie skalibrowany ekran. Pt, czyli punkty typograficzne, mają trochę sensu w materiałach drukowanych czy w typografii desktopowej, ale w aplikacjach mobilnych niemal się ich nie używa, bo nie zapewniają spójności między różnymi urządzeniami. Takie podejścia – użycie px, mm albo pt – prowadzą do tego, że nasza aplikacja staje się trudna w obsłudze na różnych telefonach czy tabletach, a przecież chodzi o to, żeby wszędzie wyglądała dobrze i była wygodna w użyciu. Najlepszą praktyką branżową, polecaną przez Google i stosowaną w Material Design, jest korzystanie z dp (density-independent pixels). To najwygodniejsze i najbezpieczniejsze rozwiązanie – moim zdaniem, użycie innej jednostki jest uzasadnione chyba tylko, gdy robimy coś naprawdę nietypowego. Tak więc, warto od początku wdrażać dp jako podstawę i nie kombinować z innymi jednostkami, bo efekty są po prostu lepsze dla użytkowników.

Pytanie 7

Jakie jest rozwiązanie dla dodawania binarnego liczb 1011 oraz 110?

A. 10001
B. 11101
C. 10101
D. 11001
Dodawanie binarne to podstawowa operacja w systemie liczbowym, który używa tylko dwóch cyfr: 0 i 1. W przypadku dodawania liczb binarnych, proces ten przypomina dodawanie w systemie dziesiętnym, jednak z pewnymi różnicami ze względu na ograniczony zestaw cyfr. Gdy dodajemy liczby 1011 i 110, należy ustawić je w kolumnach, podobnie jak w dodawaniu dziesiętnym. Zaczynamy od najmniej znaczącej cyfry. W pierwszej kolumnie mamy 1 + 0, co daje 1. W drugiej kolumnie mamy 1 + 1, co daje 0, ale musimy przenieść 1 do następnej kolumny (przeniesienie jest kluczowym elementem w dodawaniu binarnym). W trzeciej kolumnie dodajemy 1 (przeniesienie) + 0 + 1, co daje 0 i przenosimy 1 do następnej kolumny. W czwartej kolumnie dodajemy przeniesienie 1 + 1 (z liczby 1011), co daje 10 w systemie binarnym, co oznacza 0 i przeniesienie 1. Końcowym wynikiem dodawania daje 10001 w systemie binarnym. To podejście jest zgodne z zasadami arytmetyki binarnej, które są fundamentem działania komputerów i systemów cyfrowych, w których operacje na danych są realizowane w systemie binarnym.

Pytanie 8

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

A. Testy integracyjne
B. Testy end-to-end
C. Testy jednostkowe
D. Testy kompilacyjne
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 9

W obrębie klasy pracownik zdefiniowano następujące metody:

pracownik() { ... }
static void wypisz() { ... }
int operator== (const pracownik &prac) { ... }
~pracownik() { ... }
Którą z nich można, zgodnie z jej funkcją, rozszerzyć o element diagnostyczny o treści:
cout << "Obiekt został usunięty";
A. wypisz
B. operator==
C. ~pracownik
D. pracownik
Wybranie destruktora ~pracownik do umieszczenia komunikatu diagnostycznego o usunięciu obiektu jest jak najbardziej słuszne i zgodne z praktykami programowania obiektowego w C++. To właśnie destruktor odpowiada za wykonywanie wszelkich czynności „na pożegnanie” obiektu, czyli w momencie jego zwalniania z pamięci. Właśnie tu umieszcza się takie rzeczy jak logowanie faktu usunięcia, czyszczenie zasobów zewnętrznych czy zwalnianie pamięci dynamicznej. W praktyce, gdy zadeklarujemy cout << "Obiekt został usunięty"; w destruktorze, będziemy mieli jasny sygnał przy każdym końcu życia obiektu, co świetnie nadaje się do diagnostyki i szukania błędów w zarządzaniu pamięcią. Moim zdaniem każdy programista, nawet początkujący, powinien chwilę pobawić się takimi komunikatami, żeby lepiej zrozumieć, kiedy dokładnie destruktor jest wołany (np. przy wyjściu ze scope’u, delete, końcu programu itp.). To też dobry sposób, żeby wychwycić niechciane wycieki pamięci lub zrozumieć, dlaczego obiekt nie został jeszcze usunięty. Wzorce projektowe, takie jak RAII, wręcz opierają się na działaniu destruktorów. W branży często stosuje się podobne rozwiązania do debugowania problematycznych fragmentów kodu. Ogólnie rzecz biorąc, umieszczanie komunikatów w destruktorze jest praktycznym i polecanym sposobem na rozpoznanie cyklu życia obiektu – i to w każdej większej aplikacji C++.

Pytanie 10

Która z poniższych technologii służy do tworzenia aplikacji mobilnych za pomocą języków webowych?

A. React Native
B. Django
C. ASP.NET Core
D. Spring Boot
React Native to popularna technologia opracowana przez Facebook, która umożliwia tworzenie aplikacji mobilnych z wykorzystaniem języków webowych, takich jak JavaScript oraz biblioteki React. React Native umożliwia programistom pisanie kodu raz i uruchamianie go na różnych platformach mobilnych, w tym iOS i Android, co znacząco przyspiesza proces developmentu. Dzięki temu, aplikacje stworzone w React Native zyskują natywną wydajność oraz dostęp do natywnych komponentów, co jest kluczowe dla uzyskania dobrego doświadczenia użytkownika. Przykłady zastosowania React Native obejmują znane aplikacje, takie jak Facebook, Instagram czy Skype, które wykorzystują tę technologię, aby szybko wprowadzać zmiany i aktualizacje. W branży uznaje się, że stosowanie React Native przyczynia się do oszczędności czasu i zasobów, a także wspiera dobre praktyki związane z wielokrotnym użyciem kodu. Warto również zauważyć, że React Native wspiera hot reloading, co pozwala programistom na bieżąco obserwować zmiany w kodzie bez potrzeby ponownego uruchamiania aplikacji.

Pytanie 11

Który z wymienionych elementów można zdefiniować jako psychofizyczny?

A. Stres i monotonia pracy
B. Zanieczyszczenie powietrza
C. Nadmiar światła w miejscu pracy
D. Promieniowanie elektromagnetyczne
Czynniki psychofizyczne w środowisku pracy obejmują takie elementy jak stres, monotonia pracy oraz nadmierne obciążenie organizmu. Są to zagrożenia, które mogą prowadzić do wypalenia zawodowego, depresji, spadku koncentracji i zwiększonego ryzyka popełniania błędów. Stres i monotonia pracy to jedne z najczęstszych psychofizycznych zagrożeń, które mogą wpływać nie tylko na zdrowie psychiczne, ale również na fizyczne samopoczucie pracownika. W celu ich minimalizacji organizacje wdrażają programy wsparcia psychologicznego, zapewniają przerwy, rotację obowiązków i dbają o dobrą atmosferę w pracy. Kluczowe jest także odpowiednie zarządzanie czasem pracy i eliminowanie monotonnych zadań na rzecz bardziej zróżnicowanych obowiązków.

Pytanie 12

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

A. npm
B. git
C. postman
D. docker
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 13

Jaki typ złośliwego oprogramowania funkcjonuje w tle, zbierając dane o wprowadzanych hasłach?

A. Keylogger
B. Adware
C. Spyware
D. Trojan
Keylogger to takie złośliwe oprogramowanie, które działa w tle i rejestruje wszystkie naciśnięcia klawiszy. To naprawdę niebezpieczne, bo może przechwytywać hasła i inne ważne dane osobowe. Keyloggery mogą się dostawać na komputer na różne sposoby, na przykład przez zainfekowane pliki, złośliwe reklamy albo w ramach innych niebezpiecznych programów. Przykładami takich keyloggerów są Spyrix czy Perfect Keylogger, które mogą monitorować, co robisz na komputerze. Z punktu widzenia bezpieczeństwa, standardy takie jak ISO/IEC 27001 mówią, jak ważna jest ochrona informacji. Dlatego tak istotne jest, żeby użytkownicy mieli świadomość zagrożeń, jakie niosą keyloggery i używali dobrego oprogramowania antywirusowego, żeby chronić swoje urządzenia i dane.

Pytanie 14

Które z poniżej wymienionych afirmacji najtrafniej charakteryzuje proces interpretacji kodu?

A. Tworzenie pliku wykonywalnego
B. Tłumaczenie kodu źródłowego na język maszynowy w czasie rzeczywistym
C. Generowanie bibliotek dynamicznych dla programu
D. Analiza struktury kodu przed tłumaczeniem
Interpretacja kodu to proces tłumaczenia kodu źródłowego na język maszynowy w czasie rzeczywistym, instrukcja po instrukcji. Jest to charakterystyczne dla języków takich jak Python, JavaScript i Ruby, które używają interpreterów. Dzięki temu program jest wykonywany od razu, bez konieczności wcześniejszego generowania pliku wykonywalnego. Zaletą interpretacji jest szybka analiza i możliwość natychmiastowego testowania kodu, co przyspiesza proces debugowania i prototypowania aplikacji.

Pytanie 15

Jak nazywa się wzorzec projektowy, do którego odnosi się ta definicja?

Wzorzec projektowy należący do grupy wzorców strukturalnych. Służy do ujednolicenia dostępu do złożonego systemu poprzez wystawienie uproszczonego, uporządkowanego interfejsu programistycznego, który ułatwia jego użycie.
Źródło Wikipedia. Wolna encyklopedia
A. Kompozyt
B. Fasada
C. Dekorator
D. Prototyp
Prototyp to wzorzec kreacyjny, który koncentruje się na tworzeniu nowych obiektów poprzez klonowanie istniejących. Różni się od fasady, ponieważ nie zajmuje się uproszczeniem interfejsów, lecz optymalizacją procesu tworzenia obiektów. Jest używany, gdy klasy instancji mają podobne stany i konieczne jest szybkie ich generowanie z zachowaniem pewnych właściwości. Dekorator natomiast to wzorzec strukturalny umożliwiający dynamiczne dodawanie nowych funkcjonalności do obiektów, bez modyfikacji ich struktury bazowej. Podstawowym celem dekoratora jest rozszerzenie możliwości obiektów, co odróżnia go od fasady, która skupia się na upraszczaniu dostępu do złożonych systemów. Dekorator działa na poziomie pojedynczych komponentów, gdzie fasada dotyczy całego systemu. Kompozyt umożliwia tworzenie hierarchicznych struktur obiektowych, pozwalając na jednolite traktowanie indywidualnych obiektów i ich złożonych struktur. Umożliwia pracę z drzewiastymi strukturami danych, co czyni go bardziej odpowiednim do zastosowań, gdzie istotna jest praca z kolekcjami obiektów jako całością. Wszystkie te wzorce mają odmienne założenia i zastosowania, a błąd w ich rozpoznaniu może wynikać z braku zrozumienia ich specyficznych ról i miejsc w architekturze oprogramowania. Wybór odpowiedniego wzorca wymaga zrozumienia zarówno wymagań systemowych, jak i ich długoterminowych implikacji na projekt i utrzymanie oprogramowania. Każdy z tych wzorców wnosi unikalne wartości, ale ich zastosowanie powinno być zgodne z konkretnymi potrzebami projektowymi i architektonicznymi systemu, nad którym się pracuje.

Pytanie 16

Które z wymienionych sformułowań najlepiej definiuje oprogramowanie typu ransomware?

A. Oprogramowanie stosowane do realizacji ataków DDoS
B. Programy zbierające prywatne dane bez zgody użytkownika
C. Oprogramowanie uniemożliwiające dostęp do danych w celu wymuszenia zapłaty
D. Złośliwe aplikacje wyświetlające reklamy
Oprogramowanie typu ransomware to rodzaj złośliwego oprogramowania, które ma na celu zablokowanie dostępu do danych użytkownika, a następnie wymuszenie okupu w zamian za ich przywrócenie. Ransomware działa na zasadzie szyfrowania plików na zainfekowanym urządzeniu, co uniemożliwia użytkownikowi korzystanie z danych. Po dokonaniu szyfrowania, ofiara otrzymuje wiadomość z żądaniem okupu, zazwyczaj w kryptowalutach, które mają na celu anonimowość transakcji. Przykłady ransomware to oprogramowanie takie jak WannaCry oraz Petya, które spowodowały globalne ataki, skutkując znacznymi stratami finansowymi dla wielu organizacji. Zgodnie z definicjami i standardami, takimi jak NIST (National Institute of Standards and Technology), ransomware jest klasyfikowane jako jedno z najpoważniejszych zagrożeń dla bezpieczeństwa informacji. Warto również zauważyć, że ransomware rozwija się, a jego twórcy stosują różne techniki, aby zwiększyć skuteczność ataków, takie jak wykorzystywanie luk w oprogramowaniu oraz phishing, aby zainfekować systemy użytkowników.

Pytanie 17

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

class Dokument {
    public string nazwa;
    protected string autor;
}
// .... w kodzie funkcji main
Dokument doc = new Dokument();
Console.WriteLine(doc.autor);
A. Inicjalizacja obiektu została błędnie zapisana.
B. Pole autor jest niedostępne z tego poziomu.
C. Argumenty konstruktora powinny być przekazane podczas inicjalizacji obiektu.
D. Brak konstruktora w definicji klasy.
Brak konstruktora w definicji klasy nie jest błędem – jeśli konstruktor nie zostanie jawnie zdefiniowany, kompilator wygeneruje domyślny konstruktor bez parametrów. Błędna inicjalizacja obiektu lub brak argumentów w wywołaniu konstruktora mogą prowadzić do błędów kompilacji, ale nie mają związku z dostępem do prywatnych pól klasy. Problem polega na naruszeniu zasad dostępu do pól prywatnych, co jest rozwiązane poprzez odpowiednie mechanizmy dostępowe i stosowanie konwencji programistycznych, takich jak wzorzec projektowy getter-setter.

Pytanie 18

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

A. AMD Radeon R7 240 - 2GB GDDR5, 64-bit
B. Intel UHD Graphics 630 - zintegrowana
C. NVIDIA GeForce GTX 1050 Ti - 4GB GDDR5, 128-bit
D. AMD Radeon RX 580 - 8GB GDDR5, 256-bit
AMD Radeon RX 580 to karta graficzna, która zapewnia wyższą wydajność w grach komputerowych w porównaniu do innych wymienionych opcji. Wyposażona w 8GB pamięci GDDR5 oraz 256-bitową szynę danych, karta ta jest w stanie obsługiwać bardziej złożone tekstury oraz większe rozdzielczości. Jej architektura Polaris pozwala na lepsze zarządzanie energią oraz wydajność w grach, co czyni ją idealnym wyborem dla graczy. Dzięki obsłudze technologii DirectX 12 i Vulkan, RX 580 jest w stanie wykorzystać najnowsze osiągnięcia w dziedzinie grafiki, co przekłada się na wyższą jakość obrazu oraz płynność animacji. Przykłady gier, w których RX 580 sprawdza się najlepiej to 'Far Cry 5' czy 'Shadow of the Tomb Raider', gdzie karta umożliwia granie w wysokich ustawieniach graficznych z zachowaniem wysokiej liczby klatek na sekundę. Standardy, takie jak PCIe 3.0, zapewniają pełną kompatybilność z nowoczesnymi płytami głównymi, co czyni tę kartę doskonałym wyborem dla entuzjastów gier komputerowych.

Pytanie 19

W przedstawionym filmie ukazano kreator interfejsu użytkownika, dla którego automatycznie powstaje

A. kod Java
B. kod XML
C. obsługa przycisku ekranu dotykowego
D. obsługa wciśniętego przycisku
Kod XML jest obecnie najczęściej stosowanym formatem do definiowania wyglądu interfejsów użytkownika w takich narzędziach jak Android Studio czy różnego rodzaju designery graficzne. Kiedy projektujesz layout aplikacji mobilnej albo desktopowej, duża część nowoczesnych narzędzi tworzy właśnie pliki XML, które następnie są interpretowane przez system w czasie uruchamiania aplikacji. Ułatwia to rozdzielenie logiki aplikacji od jej prezentacji, co wydaje się fundamentalne przy większych projektach. Moim zdaniem takie podejście daje ogromne korzyści – można łatwo modyfikować wygląd bez dotykania kodu źródłowego. W praktyce, jeśli używasz np. Android Studio, zbudujesz interfejs przeciągając przyciski czy pola tekstowe, a pod spodem dostaniesz czytelny plik XML. To przyspiesza pracę, zwiększa czytelność projektu i pozwala na późniejsze automatyczne generowanie dokumentacji albo testów interfejsu. Takie standardy są rekomendowane nie tylko przez Google, ale też szeroko stosowane w innych środowiskach, jak chociażby XAML w Microsoft czy FXML w JavaFX. Przezroczystość działania tych narzędzi sprawia, że łatwiej jest pracować zespołowo, bo każdy może szybko zorientować się w strukturze UI patrząc na XML-a. Samo generowanie kodu XML przez narzędzia graficzne to duży krok w kierunku lepszej organizacji pracy i zgodności ze współczesnymi praktykami branżowymi.

Pytanie 20

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

A. CSS
B. HTML
C. JavaScript
D. PHP
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 21

Jakie jest główne zadanie kontrolera w architekturze MVC (Model-View-Controller)?

A. Obsługa logiki biznesowej i przetwarzanie danych wejściowych od użytkownika
B. Prezentowanie danych użytkownikowi
C. Zarządzanie sesją użytkownika
D. Przechowywanie danych aplikacji
W architekturze MVC kontroler pełni kluczową rolę w procesie przetwarzania danych aplikacji. Jego głównym zadaniem jest obsługa logiki biznesowej oraz przetwarzanie danych, które pochodzą od użytkownika. Kontroler działa jako pośrednik pomiędzy modelem a widokiem, odbierając żądania użytkownika, przetwarzając je (często z wykorzystaniem logiki biznesowej) i decydując, które dane modelu powinny być przekazane do widoku. W praktyce oznacza to, że kontroler interpretuje dane wejściowe, modyfikuje stan modelu na ich podstawie, a następnie wybiera odpowiedni widok do wyświetlenia wyników użytkownikowi. Takie podejście pozwala na lepszą organizację kodu i oddzielenie logiki aplikacji od interfejsu użytkownika, co jest zgodne z dobrymi praktykami projektowania oprogramowania. Dzięki temu aplikacje są bardziej skalowalne i łatwiejsze w utrzymaniu.

Pytanie 22

Wskaż termin, który w języku angielskim odnosi się do "testów wydajnościowych"?

A. unit testing
B. integration testing
C. performance testing
D. security testing
Testy wydajnościowe, czyli performance testing, to coś, co naprawdę warto mieć na uwadze. Dzięki nim możemy sprawdzić, jak nasza aplikacja działa pod dużym obciążeniem i jak szybko odpowiada na różne żądania. Moim zdaniem, to kluczowy aspekt, zwłaszcza jeśli planujemy, żeby nasza aplikacja miała wielu użytkowników. W końcu, nikt nie lubi czekać, aż coś się załaduje!

Pytanie 23

Który z wymienionych mechanizmów umożliwia ograniczenie dostępu do wybranych sekcji aplikacji webowej?

A. Mechanizm renderowania treści
B. System logowania i kontroli dostępu
C. Formularze dynamiczne
D. Pliki CSS statyczne
System logowania i kontroli dostępu to kluczowy mechanizm, który pozwala na ograniczenie dostępu do niektórych części aplikacji webowej. Logowanie umożliwia uwierzytelnienie użytkowników i przypisanie im odpowiednich ról, co definiuje poziom dostępu do zasobów. Dzięki mechanizmom autoryzacji możliwe jest kontrolowanie, które funkcje lub sekcje aplikacji są dostępne dla poszczególnych użytkowników. Kontrola dostępu może być realizowana za pomocą tokenów JWT (JSON Web Token), sesji lub kluczy API, co zapewnia dodatkowe warstwy zabezpieczeń. Wdrożenie takich systemów jest nieodzowne w aplikacjach webowych oferujących różne poziomy funkcjonalności, takich jak panele administracyjne, portale użytkowników czy aplikacje bankowe. Odpowiednie zarządzanie uprawnieniami jest fundamentem bezpieczeństwa aplikacji.

Pytanie 24

Który z wymienionych sposobów może przyczynić się do optymalizacji kodu źródłowego?

A. Zamiana zmiennych globalnych na lokalne
B. Dodanie większej liczby komentarzy w kodzie
C. Eliminacja nieużywanych zmiennych oraz funkcji
D. Zwiększenie ilości instrukcji warunkowych
Usunięcie nieużywanych zmiennych i funkcji to jedna z najskuteczniejszych metod optymalizacji kodu źródłowego. Nadmiarowe zmienne i niepotrzebne funkcje mogą spowalniać aplikację, zwiększać jej zużycie pamięci i powodować problemy z czytelnością kodu. Ich eliminacja upraszcza kod, zmniejsza ryzyko błędów i poprawia wydajność programu. Oczyszczanie kodu to kluczowy element procesu refaktoryzacji, który pozwala na utrzymanie wysokiej jakości oprogramowania oraz lepszą organizację projektu. Dodatkowo, minimalizacja kodu pomaga w szybszym ładowaniu aplikacji webowych, co ma bezpośredni wpływ na doświadczenie użytkownika (UX) oraz pozycjonowanie w wyszukiwarkach (SEO).

Pytanie 25

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

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

Pytanie 26

Jakie są kluczowe etapy resuscytacji krążeniowo-oddechowej?

A. 20 uciśnięć klatki piersiowej na przemian z 5 wdechami ratowniczymi
B. 10 uciśnięć klatki piersiowej bez wdechów
C. 30 wdechów ratowniczych bez uciśnięć
D. 30 uciśnięć klatki piersiowej na przemian z 2 wdechami ratowniczymi
30 uciśnięć klatki piersiowej na przemian z 2 wdechami ratowniczymi to standardowy protokół resuscytacji krążeniowo-oddechowej (RKO) zgodny z wytycznymi Europejskiej Rady Resuscytacji (ERC). Uciśnięcia wykonywane są na głębokość około 5-6 cm w tempie 100-120 uciśnięć na minutę. Po 30 uciśnięciach wykonuje się 2 wdechy ratownicze, które powinny być wykonywane z odpowiednią siłą, aby unieść klatkę piersiową poszkodowanego. Taka sekwencja jest podstawą pierwszej pomocy i może uratować życie osoby, u której doszło do zatrzymania akcji serca. Resuscytację należy kontynuować do momentu przybycia służb ratunkowych lub odzyskania przytomności przez poszkodowanego.

Pytanie 27

Która z poniższych technologii jest używana do tworzenia animacji na stronach internetowych?

A. XML
B. HTTP Headers
C. MySQL
D. CSS Animations
CSS Animations to technologia, która pozwala na tworzenie dynamicznych efektów wizualnych na stronach internetowych. Umożliwia ona animowanie różnych właściwości CSS, takich jak kolor, położenie, rozmiar czy przezroczystość, w prosty sposób. Dzięki CSS Animations, deweloperzy mogą tworzyć płynne przejścia i efekty bez potrzeby używania JavaScriptu, co zwiększa wydajność i responsywność witryn. Przykładem zastosowania CSS Animations może być animowanie przycisków na stronie, które zmieniają kolor po najechaniu na nie kursorem. Z punktu widzenia dobrych praktyk, warto pamiętać o optymalizacji efektów animacyjnych, aby nie obciążały one zbytnio zasobów przeglądarki. CSS Animations są częścią standardu CSS3, co oznacza, że są szeroko wspierane przez różne przeglądarki i można je łatwo implementować w projektach webowych.

Pytanie 28

Które z wymienionych stanowi przykład struktury dziedziczenia?

A. Klasa Pojazd ma dziedziczenie od klasy Samochód
B. Klasa Samochód ma dziedziczenie od klasy Pojazd
C. Klasa Pojazd nie dziedziczy z żadnej klasy
D. Klasa Samochód i Pojazd nie są ze sobą powiązane
Hierarchia dziedziczenia to struktura klas, w której klasa pochodna dziedziczy właściwości i metody klasy bazowej. Klasa 'Samochód' dziedzicząca po klasie 'Pojazd' jest przykładem prawidłowej hierarchii dziedziczenia – klasa 'Samochód' rozszerza klasę 'Pojazd', dziedzicząc ogólne właściwości pojazdu, takie jak prędkość czy typ silnika. Dziedziczenie umożliwia rozszerzanie istniejącej funkcjonalności bez konieczności przepisywania tego samego kodu, co jest jednym z fundamentów programowania obiektowego.

Pytanie 29

Która technologia służy do tworzenia responsywnych stron internetowych?

A. REST API
B. WebSockets
C. Local Storage
D. Media Queries w CSS
Media Queries w CSS to technika, która pozwala na tworzenie responsywnych stron internetowych poprzez dostosowywanie stylów do różnych rozmiarów ekranów i urządzeń. Dzięki zastosowaniu reguł media queries, projektanci mogą definiować, jak elementy na stronie mają się zachowywać w zależności od szerokości ekranu, orientacji urządzenia czy jego rozdzielczości. Na przykład, można ustawić większe marginesy na dużych ekranach desktopowych, a na mniejszych urządzeniach mobilnych zredukować je, aby lepiej wykorzystać ograniczoną przestrzeń. Stosując media queries, można również zmieniać rozmiary czcionek, układ kolumn czy widoczność niektórych elementów, co jest kluczowe dla optymalizacji użytkowania na różnych platformach. Jest to częścią podejścia mobile-first, które stało się standardem w nowoczesnym web designie. Warto również zaznaczyć, że korzystanie z media queries wspiera dostępność i użyteczność stron internetowych, co jest zgodne z dobrymi praktykami branżowymi.

Pytanie 30

Wykorzystując jeden z dwóch zaprezentowanych sposobów inkrementacji w językach z rodziny C lub Java, można zauważyć, że
Zapis pierwszy:

b = a++;
Zapis drugi:
b = ++a;
A. Wartość zmiennej b będzie wyższa po użyciu drugiego zapisu w porównaniu do pierwszego.
B. Tylko przy użyciu pierwszego zapisu zmienna a zostanie zwiększona o 1.
C. Bez względu na zastosowany sposób, w zmiennej b zawsze uzyskamy ten sam rezultat.
D. Drugi zapis nie jest zgodny ze składnią, co doprowadzi do błędów kompilacji.
W językach programowania z rodziny C (w tym C++ i Java) istnieją dwie formy inkrementacji: preinkrementacja (++x) i postinkrementacja (x++). Preinkrementacja zwiększa wartość zmiennej przed jej użyciem w wyrażeniu, natomiast postinkrementacja zwiększa ją dopiero po zakończeniu aktualnej operacji. Oznacza to, że w przypadku postinkrementacji, wartość zmiennej przed zwiększeniem zostanie użyta w bieżącym wyrażeniu, a dopiero potem następuje jej zwiększenie o 1. Ta subtelna różnica ma istotne znaczenie, zwłaszcza w pętlach i wyrażeniach logicznych, gdzie każda iteracja wpływa na wynik. W praktyce preinkrementacja jest nieco bardziej efektywna, ponieważ nie wymaga przechowywania kopii pierwotnej wartości zmiennej, co przekłada się na minimalnie lepszą wydajność w niektórych przypadkach.

Pytanie 31

W zaprezentowanym fragmencie kodu występuje błąd logiczny. Na czym on polega?

int x = 0;
while (x != 0 || x != 5) {
  std::cout << x << " ";
  x++;
}
A. Braku zainicjowania zmiennej x, co powoduje, że zmienna nie ma wartości początkowej.
B. Niepoprawnym użyciu funkcji cout, co skutkuje tym, że zmienna jest wczytywana w pętli.
C. Niewłaściwym warunku pętli, co powoduje, że pętla nigdy się nie wykona.
D. Nieprawidłowym warunku pętli, który sprawia, że pętla jest nieskończona.
Nieprawidłowy warunek pętli powoduje, że staje się ona nieskończona, co jest częstym problemem w programowaniu. W tym przypadku warunek while(x != 0 || x != 5) jest zawsze prawdziwy, ponieważ dla każdej wartości x, która nie jest jednocześnie równa 0 i 5, pętla nigdy się nie zakończy. To logiczny błąd, ponieważ zmienna x nigdy nie osiągnie stanu, w którym oba warunki będą jednocześnie fałszywe. W praktyce powinno się stosować warunki logiczne, które mogą stać się fałszywe dla jakiegoś stanu zmiennych, co pozwala pętli zakończyć działanie. Częstym wzorcem jest użycie operatora && zamiast ||, aby sprawdzić, czy zmienna osiągnęła konkretny zakres wartości. W ten sposób można zagwarantować, że program nie wejdzie w nieskończoną pętlę. Tego typu błędy są często wykrywane podczas testowania i debugowania kodu, a ich unikanie jest kluczowe w zapewnieniu poprawnego działania aplikacji. Dobre praktyki obejmują dokładne przemyślenie warunków pętli i testowanie ich w różnych scenariuszach.

Pytanie 32

Który z poniższych formatów plików jest używany do konfiguracji projektów Node.js?

A. settings.ini
B. node.config
C. package.json
D. config.xml
Wybór innych formatów plików, takich jak 'config.xml', 'settings.ini' czy 'node.config', wskazuje na pewne nieporozumienia związane z funkcjonowaniem projektów Node.js. 'config.xml' jest formatem często stosowanym w aplikacjach mobilnych, zwłaszcza tych opartych na platformie Apache Cordova, i nie ma zastosowania w kontekście Node.js. Z kolei 'settings.ini' to typowy plik konfiguracyjny stosowany w wielu aplikacjach, ale nie jest on specyficzny dla Node.js i nie spełnia roli, jaką pełni 'package.json'. Plik 'node.config', mimo że sugeruje powiązanie z Node.js, nie jest standardowym formatem i nie jest używany w praktyce. Zrozumienie, że 'package.json' pełni centralną rolę w ekosystemie Node.js, jest kluczowe dla efektywnego zarządzania projektami oraz ich zależnościami. Ignorowanie tego faktu może prowadzić do problemów w zarządzaniu bibliotekami oraz ich wersjami, co jest istotne dla stabilności i bezpieczeństwa aplikacji. W praktyce, brak znajomości 'package.json' może skutkować trudnościami w implementacji nowych funkcjonalności czy aktualizacji istniejącego kodu.

Pytanie 33

Które narzędzie służy do automatyzacji procesu budowania aplikacji?

A. Figma
B. Postman
C. Swagger
D. Jenkins
Postman jest narzędziem skoncentrowanym na testowaniu API, które pozwala na wysyłanie żądań do serwerów i analizowanie odpowiedzi. Chociaż Postman jest niezwykle użyteczny w procesie tworzenia i testowania interfejsów API, nie ma funkcji automatyzacji budowy aplikacji. W praktyce, użycie Postmana do tego celu może prowadzić do nieporozumień dotyczących jego rzeczywistego zastosowania, co może skutkować niewłaściwym podejściem do automatyzacji i niewykorzystaniem pełnego potencjału narzędzi CI/CD. Figma jest narzędziem do projektowania interfejsów użytkownika, które pozwala na tworzenie prototypów oraz współpracę zespołową nad projektami graficznymi. Pomimo że Figma jest nieoceniona w procesie tworzenia wizualnych aspektów aplikacji, nie ma nic wspólnego z automatyzacją budowy kodu. Swagger to narzędzie służące do dokumentowania API oraz generowania jego interfejsów. Choć Swagger wspiera dokumentację i umożliwia łatwe zrozumienie, jak działa API, nie jest to narzędzie do automatyzacji procesów budowania aplikacji. Typowe błędy myślowe przy wyborze niewłaściwych narzędzi często wynikają z mylnego przekonania, że każde narzędzie do automatyzacji zadań może obsługiwać każdy aspekt cyklu życia oprogramowania, co nie jest zgodne z rzeczywistością. Właściwe zrozumienie funkcji i przeznaczenia narzędzi jest kluczowe dla efektywnego zarządzania projektem oraz dla optymalizacji procesów developerskich.

Pytanie 34

Co zostanie wyświetlone po wykonaniu poniższego kodu JavaScript?

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('success');
  }, 1000);
});

promise
  .then(res => {
    console.log(res);
    return 'first then';
  })
  .then(res => {
    console.log(res);
  });
A. success, first then
B. first then
C. success
D. first then, success
W przypadku błędnych odpowiedzi można zauważyć kilka typowych nieporozumień dotyczących działania obietnic w JavaScript. Odpowiedzi sugerujące, że najpierw zostanie wyświetlony 'first then' lub że będzie tylko jeden wynik, są wynikiem niezrozumienia, jak działa asynchroniczność oraz jak obietnice przetwarzają wyniki. Obietnice w JavaScript są zaprojektowane tak, aby zarządzać operacjami asynchronicznymi, co oznacza, że kod wewnątrz obietnicy nie blokuje wykonania innych operacji. W momencie, gdy obietnica jest utworzona, kod wykonuje się dalej, a funkcja `setTimeout` działa w tle. Gdy po upływie określonego czasu obietnica jest spełniona, następuje przekazanie wyniku do łańcucha `then`, a nie jakiegokolwiek innego miejsca w kodzie. To oznacza, że wyniki są zwracane w kolejności, w jakiej są zadeklarowane, co w tym przypadku prowadzi do wyświetlenia najpierw 'success', a potem 'first then'. Takie podejście do asynchroniczności jest fundamentalne w JavaScript, a jego zrozumienie jest kluczowe dla każdego programisty. Błędne odpowiedzi pochodzą często z mylnego przekonania, że wyniki obietnic są natychmiastowe lub że działają w tej samej kolejności, co kod synchroniczny. Dlatego ważne jest, aby zrozumieć, że asynchroniczność zmienia sposób, w jaki operacje są wykonywane i jak wyniki są zwracane.

Pytanie 35

Jaką instrukcję należy wykorzystać do poprawnej deklaracji zmiennej typu string w C++?

A. float name = "Jan"
B. string name = "Jan"
C. int name = "Jan"
D. bool name = "Jan"
Ta deklaracja 'string name = "Jan"' to naprawdę dobry sposób na zdefiniowanie zmiennej łańcuchowej w C++. Wiesz, 'string' to typ danych, 'name' to nazwa tej zmiennej, a 'Jan' to wartość, która jest jej przypisana. Typ 'string' jest częścią biblioteki <string> i daje nam wiele możliwości, gdy pracujemy z tekstem. Możemy łączyć, porównywać i modyfikować różne łańcuchy znaków bez większego problemu. To jest mega ważne w aplikacjach, które mają do czynienia z danymi tekstowymi, interfejsami użytkownika czy analizą danych, które wprowadzamy.

Pytanie 36

Który z poniższych problemów jest najczęściej rozwiązywany z zastosowaniem algorytmu rekurencyjnego?

A. Obliczanie sumy elementów w tablicy
B. Generowanie ciągu Fibonacciego
C. Wyszukiwanie binarne w uporządkowanej tablicy
D. Sortowanie za pomocą metody QuickSort
Generowanie ciągu Fibonacciego to klasyczny przykład problemu, który najczęściej rozwiązuje się za pomocą algorytmu rekurencyjnego. Algorytm rekurencyjny wywołuje sam siebie, dzieląc problem na mniejsze podproblemy, aż do osiągnięcia przypadku bazowego. W przypadku Fibonacciego każda liczba jest sumą dwóch poprzednich, a algorytm rekurencyjny odwzorowuje to wprost poprzez wywołania fib(n-1) + fib(n-2). Rekurencja jest intuicyjna i często stosowana w zadaniach matematycznych, takich jak obliczanie silni czy rozwiązywanie problemów związanych z przeszukiwaniem drzew. Choć rekurencja jest elegancka, dla dużych n może prowadzić do nadmiarowych obliczeń, dlatego często optymalizuje się ją za pomocą pamięci podręcznej (memoizacji) lub iteracyjnych wersji algorytmu.

Pytanie 37

Jakie operacje na plikach można uznać za podstawowe?

A. Otwieranie, zapisywanie, odczytywanie, zamykanie
B. Zmiana rozszerzenia plików podczas działania programu
C. Jedynie otwieranie oraz zamykanie plików
D. Usuwanie oraz tworzenie nowych plików
Podstawowe operacje na plikach obejmują otwieranie, zapisywanie, odczytywanie i zamykanie. Te cztery operacje są fundamentem zarządzania plikami w programowaniu i pozwalają na efektywne przechowywanie oraz przetwarzanie danych. Otwarcie pliku umożliwia dostęp do jego zawartości, zapis pozwala na modyfikację lub tworzenie nowych plików, odczyt umożliwia pobieranie danych, a zamknięcie pliku zapewnia integralność danych i zwalnia zasoby systemowe. W wielu językach, takich jak C++, Java czy Python, operacje te są realizowane za pomocą dedykowanych funkcji i klas, co ułatwia ich implementację w kodzie.

Pytanie 38

Na schemacie widoczny jest fragment diagramu blokowego pewnego algorytmu. Ile razy zostanie zweryfikowany warunek n<7?

Ilustracja do pytania
A. 8
B. 5
C. 6
D. 7
Warunek 'n < 7' będzie sprawdzany dokładnie 6 razy. To dlatego, że w klasycznej pętli for czy while liczba powtórzeń jest zawsze o jeden mniejsza niż wartość graniczna. Jak widzisz, w takich schematach liczba porównań idzie w parze z liczbą iteracji, a pętla zatrzymuje się, jak tylko warunek zostanie spełniony.

Pytanie 39

Co oznacza pojęcie TDD w kontekście programowania?

A. Type Definition Document - dokumentacja typów danych w aplikacji
B. Test-Driven Development - praktyka pisania testów przed implementacją kodu
C. Task Deployment Diagram - schemat wdrażania zadań w projekcie
D. Technical Design Document - dokumentacja techniczna projektu
Pojęcia takie jak Type Definition Document, Technical Design Document, czy Task Deployment Diagram są związane z dokumentacją i zarządzaniem projektami, a niekoniecznie z samym procesem programowania, jakim jest TDD. Type Definition Document odnosi się do szczegółowego opisu typów danych używanych w aplikacji, co jest ważne, ale nie wpływa na proces tworzenia kodu i testowania. Z kolei Technical Design Document to dokument, który opisuje architekturę i techniczne aspekty projektu, ale nie stanowi podstawy dla praktyki TDD, w której testy są kluczowym elementem cyklu życia oprogramowania. Task Deployment Diagram to wizualizacja procesu wdrażania zadań w projekcie, co ma zastosowanie w zarządzaniu projektami, lecz nie odnosi się do samego wytwarzania oprogramowania. Takie nieporozumienia mogą wynikać z mylnego przekonania, że dokumentacja jest kluczowym elementem procesu programowania, co nie jest do końca prawdą. W rzeczywistości, TDD skupia się na iteracyjnym rozwoju poprzez testy, co prowadzi do lepszej jakości kodu, a jego podstawą jest koncepcja "testy przed kodem", a nie tworzenie dokumentacji czy schematów. Zrozumienie TDD jako podejścia programistycznego, które koncentruje się na testach, a nie na dokumentowaniu typu danych czy architektury, jest kluczowe dla właściwego podejścia do programowania w nowoczesnych projektach IT.

Pytanie 40

W jaki sposób można ograniczyć problemy społeczne wynikające z nadmiernego używania internetu?

A. Zachować równowagę pomiędzy relacjami w sieci a tymi w rzeczywistości
B. Całkowicie wycofać się z aktywności wirtualnych
C. Zwiększać czas spędzany przy ekranie
D. Unikać spotkań z ludźmi w realnym świecie
Utrzymywanie równowagi między relacjami online i offline to kluczowy element zapobiegania problemom społecznym wynikającym z nadmiernego korzystania z internetu. Przeplatanie kontaktów wirtualnych z interakcjami twarzą w twarz wzmacnia więzi społeczne i poprawia umiejętności komunikacyjne. Równowaga między życiem cyfrowym a rzeczywistym pozwala unikać izolacji społecznej i wspiera rozwój empatii oraz zdolności interpersonalnych. Jest to szczególnie ważne w kontekście młodzieży, która może być bardziej podatna na negatywne skutki nadmiernej ekspozycji na treści online.