Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 10 maja 2026 22:51
  • Data zakończenia: 10 maja 2026 23:03

Egzamin zdany!

Wynik: 28/40 punktów (70,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

Jakie narzędzie jest wykorzystywane do zgłaszania błędów w projektach IT?

A. Photoshop
B. Git
C. Blender
D. JIRA
JIRA to jedno z najczęściej wykorzystywanych narzędzi do zarządzania projektami i raportowania błędów w projektach informatycznych. JIRA umożliwia śledzenie błędów, zarządzanie zadaniami oraz efektywne monitorowanie postępów prac nad projektem. Dzięki integracji z innymi narzędziami, takimi jak Confluence czy Bitbucket, JIRA stanowi kompleksowe rozwiązanie wspierające zespoły deweloperskie. Raportowanie błędów w JIRA pozwala na łatwe przypisywanie ich do odpowiednich członków zespołu, dodawanie załączników i komentarzy oraz monitorowanie statusu danego problemu, co usprawnia proces zarządzania jakością oprogramowania.

Pytanie 2

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

A. obsługa wciśniętego przycisku
B. kod Java
C. obsługa przycisku ekranu dotykowego
D. kod XML
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 3

Po wykonaniu poniższego kodu na konsoli zostanie wyświetlona liczba:

int a = 0x73;
cout << a;
A. 115
B. 73
C. 108
D. 0
Wiele osób myli się, gdy widzi zapis 0x73, uznając, że to po prostu liczba 73 w dziesiętnym, bo tak wygląda najprościej. Jednak w rzeczywistości ten prefiks „0x” informuje kompilator, że mamy do czynienia z liczbą zapisaną w systemie szesnastkowym (heksadecymalnym), a nie dziesiętnym. To jest taki bardzo charakterystyczny zapis w językach programowania (C, C++, Java, czasem nawet Python), który pozwala programiście jasno określić, w jakim systemie podaje liczbę. Zakładając, że ktoś wybierze 108 lub 73, można podejrzewać, że ta osoba nie przeliczyła heksadecymalnej liczby na dziesiętną lub po prostu nie zwróciła uwagi na prefiks. 0x73 to w rzeczywistości (7 * 16) + 3, czyli 112 + 3, co daje 115. Niektórym może się też wydawać, że heksadecymalne 0x73 to 73 dziesiętnie, ale to typowy błąd początkujących. Wybór zera z kolei może wynikać z nieporozumienia – być może ktoś pomyślał, że a nie zostało zainicjalizowane lub kod nie wypisuje nic, ale tutaj jawnie inicjujemy a wartością heksadecymalną. Praktyka pokazuje, że podobne nieporozumienia pojawiają się na początku nauki programowania, szczególnie gdy nie ma jeszcze „wyczucia” systemów liczbowych. Tak naprawdę, jeśli chcemy być profesjonalni, trzeba od razu nauczyć się, że każda liczba z 0x na początku jest heksadecymalna, a cout zawsze wypisze jej dziesiętną reprezentację, o ile nie zmienimy flagi strumienia (std::hex itd.). To takie podstawy, które potem pozwalają pewniej obracać się w kodzie, gdzie często występują maski bitowe czy operacje na rejestrach. Moim zdaniem, wielu początkujących inżynierów właśnie przez nieuwagę na takie detale traci sporo czasu na debugowanie prostych błędów. Warto więc na przyszłość za każdym razem zatrzymać się na chwilę i zastanowić, czy na pewno dobrze rozpoznajemy system liczbowy wykorzystywany w danym fragmencie kodu.

Pytanie 4

W zamieszczonym fragmencie kodu Java wskaż nazwę zmiennej, która może przechować wartość 'T'.

int zm1;
float zm2;
char zm3;
boolean zm4;
A. zm3
B. zm2
C. zm4
D. zm1
Poprawnie wskazana została zmienna 'zm3', której typ to 'char'. To właśnie zmienne typu 'char' w Javie służą do przechowywania pojedynczych znaków, takich jak na przykład litera 'T'. Zmienna 'char' przechowuje znak jako wartość liczbową zgodnie z kodowaniem Unicode, co pozwala na obsługę szerokiego zakresu znaków z różnych alfabetów. W praktyce często spotyka się sytuacje, gdzie potrzebujemy przechować czy odczytać pojedynczy znak – np. literę przy przetwarzaniu tekstu, analizowaniu plików, czy nawet w prostych grach tekstowych, gdzie np. sterowanie postacią opiera się o pojedyncze litery wciskane na klawiaturze. Moim zdaniem dobre zrozumienie typu 'char' to podstawa, bo łatwo pomylić go z typem 'String', który przechowuje jednak całe ciągi znaków, a nie pojedyncze znaki. Z punktu widzenia dobrych praktyk, zawsze warto dobierać możliwie najwęższy typ danych do zadania – jeżeli chcemy przechować jedną literę, typ 'char' jest po prostu najefektywniejszy. Nawiasem mówiąc, w Javie znak umieszczamy w pojedynczych apostrofach (np. 'T'), co jednoznacznie odróżnia je od tekstów (podwójne cudzysłowy). Osobiście zdarzało mi się kiedyś pomylić te typy i potem szukać błędów, więc warto zapamiętać tę różnicę. Warto też wiedzieć, że typ 'char' przydaje się np. do operacji na znakach w tablicach, przy konwersjach kodów ASCII czy nawet szyfrowaniu prostych tekstów. Zdecydowanie jest to typ, którego nie można pominąć w nauce Javy.

Pytanie 5

Jakie cechy powinien posiadać skuteczny negocjator?

A. dobra reputacja, przekora, porywczość
B. lojalność, nieśmiałość, uczciwość
C. asertywność, pesymizm, buta
D. intuicja, cierpliwość, asertywność
Skuteczny negocjator powinien mieć zestaw cech, które pozwolą mu osiągać kompromisy, rozwiązywać konflikty i dążyć do korzystnych rozwiązań dla obu stron. Intuicja pozwala wyczuć nastroje rozmówcy, wychwycić niewerbalne sygnały i przewidywać możliwe zagrożenia czy okazje jeszcze zanim druga strona je wprost zasygnalizuje. Cierpliwość jest kluczowa, bo proces dochodzenia do porozumienia bywa żmudny, a presja czasu często prowadzi do pochopnych decyzji. Często miałem okazję obserwować, że ci, którzy potrafią zaczekać na ruch drugiej strony, zyskują przewagę negocjacyjną. Asertywność natomiast pozwala jasno wyrażać swoje oczekiwania i granice, bez agresji i bez uległości – to klasyka wśród dobrych praktyk negocjacyjnych, choć nadal niedoceniana w wielu branżach. Asertywność pomaga uniknąć niedomówień i manipulacji, a także buduje szacunek. W praktyce, na sali negocjacyjnej czy nawet przy codziennych rozmowach z klientami, zestaw tych trzech cech daje naprawdę mocną pozycję. Moim zdaniem nie ma jednego uniwersalnego szablonu, ale właśnie intuicja, cierpliwość i asertywność pojawiają się prawie zawsze w podręcznikach czy na szkoleniach dedykowanych profesjonalistom. Warto je ćwiczyć na co dzień, nawet poza pracą, bo to się po prostu opłaca.

Pytanie 6

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

A. Gdy poszkodowany jest nieprzytomny, ale oddycha
B. Gdy poszkodowany cierpi na krwotok zewnętrzny
C. Gdy poszkodowany nie oddycha
D. Gdy poszkodowany jest świadomy, lecz ma uraz kończyny
Pozycja bezpieczna (czyli pozycja boczna ustalona) to jedno z kluczowych narzędzi w udzielaniu pierwszej pomocy. Stosuje się ją wtedy, gdy poszkodowany jest nieprzytomny, ale oddycha samodzielnie i nie ma podejrzenia urazu kręgosłupa. Chodzi przede wszystkim o zabezpieczenie dróg oddechowych przed ewentualnym zadławieniem np. przez ślinę, krew czy wymiociny. Niby proste, ale w praktyce często ludzie mają wątpliwości, czy powinni ruszać nieprzytomną osobę. Ja sam widziałem jak ktoś bał się tego zrobić, bo nie był pewny, czy to bezpieczne. Moim zdaniem lepiej tu działać niż zwlekać – oczywiście, jeśli nie podejrzewasz złamania kręgosłupa. Ważne jest, by pozycję bezpieczną stosować dopiero po sprawdzeniu oddechu – to naprawdę podstawa i tak uczą na wszystkich szkoleniach BLS według standardów Europejskiej Rady Resuscytacji. Przykład z życia: ktoś zasłabł na przystanku, jest nieprzytomny, ale oddycha. Przekręcasz go na bok, głowa odchylona, żeby język nie zablokował gardła – i masz spokój, dużo zmniejszone ryzyko uduszenia. Warto też pamiętać, że trzeba regularnie monitorować stan poszkodowanego, bo sytuacja może się pogorszyć, wtedy przechodzisz do resuscytacji. Pozycja bezpieczna to taki złoty środek kiedy nie musisz jeszcze reanimować, ale musisz chronić życie przez zabezpieczenie oddechu.

Pytanie 7

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

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

Pytanie 8

Która technologia jest używana do tworzenia animacji na stronach internetowych?

A. HTTP Headers
B. CSS Animations
C. SQL Queries
D. XML Schema
CSS Animations to technologia, która umożliwia tworzenie zaawansowanych efektów animacyjnych na stronach internetowych, bez konieczności użycia JavaScriptu. Dzięki CSS Animations, projektanci mogą definiować kluczowe klatki (keyframes), które określają stany stylów w określonym czasie. Przykładem praktycznego zastosowania może być animacja przycisku, który zmienia kolor i rozmiar po najechaniu na niego myszką. Tego rodzaju animacje są wspierane przez wszystkie nowoczesne przeglądarki i są zgodne z W3C, co czyni je standardem w branży. Dobrze zaprojektowane animacje poprawiają doświadczenia użytkowników, ułatwiając im interakcję z elementami strony. Warto również wspomnieć, że użycie CSS do animacji jest bardziej efektywne pod względem wydajności, ponieważ procesor graficzny (GPU) może lepiej obsługiwać animacje niż tradycyjne metody, takie jak JavaScript. W kontekście projektowania responsywnego, CSS Animations pozwala na płynniejsze i bardziej estetyczne przejścia między różnymi stanami interfejsu, co jest kluczowe dla utrzymania zaangażowania użytkowników.

Pytanie 9

Zalecenia standardu WCAG 2.0 dotyczące percepcji koncentrują się na

A. zrozumieniu i wiarygodności prezentowanych treści na stronie
B. umożliwieniu interakcji między komponentami użytkownika za pomocą klawiatury
C. prezentacji elementów interfejsu użytkownika
D. zapewnieniu odpowiedniej ilości czasu na przeczytanie i zrozumienie treści
Pierwsza z niepoprawnych odpowiedzi odnosi się do zrozumienia i rzetelności w dostarczonych treściach na stronie, co jest ważnym aspektem, ale nie dotyczy bezpośrednio percepcji komponentów interfejsu użytkownika. Zrozumienie treści jest związane z czytelnością tekstu oraz jego strukturalną formą, co nie jest bezpośrednio związane z interfejsem. Kolejna niepoprawna odpowiedź, dotycząca zapewnienia wystarczającej ilości czasu na przeczytanie i przetworzenie treści, odnosi się bardziej do zasad dostępności dotyczących czasu, które są istotne dla użytkowników z różnymi zdolnościami przetwarzania informacji, ale nie dotyczą samej percepcji komponentów interfejsu. Ostatnia odpowiedź, dotycząca zapewnienia interakcji pomiędzy komponentami użytkownika przy użyciu klawiatury, również nie odnosi się bezpośrednio do percepcji, a bardziej do interakcji użytkownika z systemem. Choć interakcja jest istotna, kluczowe jest zrozumienie, że percepcja skupia się na sposobie, w jaki użytkownicy dostrzegają i interpretują te komponenty, a nie na ich interakcji. Dlatego też, te odpowiedzi, choć dotyczą ważnych kwestii dostępności, nie są zgodne z istotą pytania.

Pytanie 10

Błędy w interpretacji kodu stworzonego za pomocą React.js lub Angular można wykryć dzięki

A. narzędziom zainstalowanym po stronie serwera aplikacji
B. konsoli przeglądarki internetowej
C. wbudowanemu debuggerowi w danym środowisku
D. kompilatorowi języka JavaScript
Wbudowany debugger w IDE jest całkiem pomocny, zwłaszcza w debugowaniu, ale czasami może nie zauważać błędów, które wybuchają później, jak działasz w przeglądarce. Narzędzia serwerowe są bardziej nastawione na błędy backendu, a więc nie pomogą, gdy zamierzasz analizować, co się dzieje w frontendzie. No i tak, JavaScript jest interpretowany, nie kompilowany, więc nie ma tradycyjnego kompilatora.

Pytanie 11

Który z wymienionych poniżej typów danych stanowi przykład typu stałoprzecinkowego?

A. decimal
B. float
C. int
D. double
Typ 'float' przechowuje liczby zmiennoprzecinkowe, co oznacza, że może reprezentować wartości z częściami dziesiętnymi, ale nie jest to typ stałoprzecinkowy. Typ 'double' to również typ zmiennoprzecinkowy, charakteryzujący się większą precyzją niż 'float'. Typ 'decimal' służy do przechowywania liczb zmiennoprzecinkowych z dużą dokładnością, głównie w aplikacjach finansowych, gdzie precyzja jest kluczowa, ale nie zalicza się do typów stałoprzecinkowych.

Pytanie 12

Która z poniższych właściwości odnosi się do sieci bezprzewodowej?

A. Jest bardziej narażona na zakłócenia w przesyłaniu danych
B. Wymaga zastosowania przewodów do łączenia urządzeń
C. Nie funkcjonuje w obszarach z dużą liczbą urządzeń
D. Nie potrzebuje zabezpieczeń, ponieważ jest domyślnie chroniona
Sieci bezprzewodowe charakteryzują się tym, że wykorzystują fale radiowe do transmisji danych, co sprawia, że są bardziej podatne na zakłócenia. Zakłócenia te mogą pochodzić z różnych źródeł, takich jak inne urządzenia bezprzewodowe, mikrofalówki, czy nawet fizyczne przeszkody, takie jak ściany. W przypadku sieci Wi-Fi, które są powszechnie stosowane w domach i biurach, sygnał radiowy może być osłabiony przez metalowe obiekty oraz inne materiały budowlane. To zjawisko można zminimalizować, stosując nowoczesne standardy, takie jak IEEE 802.11ac, które oferują lepszą wydajność i stabilność sygnału. Praktycznym przykładem jest sytuacja, w której użytkownicy znajdują się w gęsto zabudowanym obszarze miejskim, gdzie wiele sieci Wi-Fi działa jednocześnie, co zwiększa ryzyko zakłóceń i wpływa na jakość połączenia. Zrozumienie tej cechy sieci bezprzewodowych jest kluczowe dla ich efektywnego użytkowania oraz projektowania.

Pytanie 13

Który z operatorów w Pythonie umożliwia sprawdzenie, czy dany element należy do listy?

A. ==
B. in
C. and
D. is
Operator `in` w języku Python służy do sprawdzania, czy element należy do listy, zbioru, krotki lub innego obiektu iterowalnego. Przykład: `if 5 in lista` sprawdza, czy liczba 5 znajduje się w liście. Operator `in` jest niezwykle przydatny w przeszukiwaniu danych, a jego zastosowanie skraca kod i zwiększa jego czytelność. W Pythonie jest on szeroko stosowany do iteracji i filtrowania danych, co czyni go jednym z najbardziej intuicyjnych operatorów języka.

Pytanie 14

Algorytm przedstawiony powyżej może zostać zaimplementowany w języku Java z wykorzystaniem instrukcji:

Ilustracja do pytania
A. if
B. switch
C. while
D. try
Instrukcja 'while' w Javie działa tak, że powtarza blok kodu, aż warunek, który podasz, będzie prawdziwy. To jedna z podstawowych rzeczy w programowaniu i super przydaje się, kiedy nie wiesz z góry, ile razy coś ma się powtórzyć. Na przykład, możesz to wykorzystać, gdy szukasz czegoś w danych albo gdy chcesz, żeby coś wydarzyło się wielokrotnie, jak obsługa kliknięć na stronie.

Pytanie 15

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

A. Sortowanie za pomocą metody QuickSort
B. Wyszukiwanie binarne w uporządkowanej tablicy
C. Obliczanie sumy elementów w tablicy
D. Generowanie ciągu Fibonacciego
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 16

Na ilustracji pokazano fragment emulacji iOS z elementem kontrolnym. Który fragment kodu XAML opisuje ten element?

Ilustracja do pytania
A. <Switch IsToggled= "true" />
B. <Entry IsPassword= "true" />
C. <Slider Maximum= "255" />
D. <Stepper Increment= "1" />
Kontrolka <Switch IsToggled= "true" /> w XAML to taki przełącznik. Ma dwa stany: włączony (true) i wyłączony (false). Można to porównać do zwykłego włącznika, tylko że w aplikacjach. Fajnie się z tego korzysta, bo pozwala szybko zmieniać ustawienia, nie trzeba nic więcej wpisywać. To jest dosyć intuicyjne dla użytkowników, więc można nim łatwo zarządzać funkcjami aplikacji.

Pytanie 17

Modyfikator dostępu, który znajduje się przed definicją metody Dodaj() w klasie Kalkulator, powoduje, że

protected void Dodaj() {}
A. jest ona dostępna zarówno wewnątrz klasy, jak i w klasach dziedziczących po klasie Kalkulator
B. nie jest ona dostępna w klasach, które dziedziczą po klasie Kalkulator
C. jest ona dostępna w programie głównym i może być wywoływana na rzecz instancji klasy Kalkulator
D. nie jest ona dostępna z poziomu klas zaprzyjaźnionych z klasą Kalkulator
Modyfikator dostępu protected jest kluczowym elementem programowania obiektowego, umożliwiającym kontrolę nad widocznością i dostępem do składników klasy. Gdy metoda jest oznaczona jako protected, jak w przypadku metody Dodaj() w klasie Kalkulator, oznacza to, że jest ona dostępna nie tylko w ramach tej klasy, ale również w dowolnych klasach, które dziedziczą po klasie Kalkulator. To podejście wspiera koncepcję dziedziczenia, umożliwiając klasom potomnym korzystanie z funkcjonalności klasy bazowej bez konieczności ponownego definiowania metod. Na przykład, jeśli stworzymy klasę DziecięcyKalkulator dziedziczącą po Kalkulator, metoda Dodaj() będzie dostępna w tej klasie potomnej. Takie rozwiązanie jest często stosowane w projektach, gdzie istnieje potrzeba rozszerzania funkcjonalności bazowych klas bez naruszania ich enkapsulacji. Dobre praktyki programistyczne sugerują stosowanie protected tam, gdzie chcemy umożliwić dziedziczenie oraz uniknąć nadmiernego udostępniania elementów klasy zewnętrznym użytkownikom. Dzięki temu kod staje się bardziej modularny i elastyczny, co jest istotne w dużych projektach programistycznych. Zrozumienie roli modyfikatorów dostępu, takich jak protected, jest kluczowe dla efektywnego projektowania i implementacji systemów obiektowych.

Pytanie 18

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

A. NVIDIA GeForce GTX 1050 Ti - 4GB GDDR5, 128-bit
B. AMD Radeon R7 240 - 2GB GDDR5, 64-bit
C. AMD Radeon RX 580 - 8GB GDDR5, 256-bit
D. Intel UHD Graphics 630 - zintegrowana
NVIDIA GeForce GTX 1050 Ti, mimo że jest popularną kartą graficzną, nie zapewnia takiej samej wydajności w grach jak RX 580. Z jedynie 4GB pamięci GDDR5 i 128-bitową szyną danych, GTX 1050 Ti ma ograniczone możliwości w obsłudze nowoczesnych gier, co prowadzi do niższej jakości obrazu oraz ograniczonej liczby klatek na sekundę, szczególnie w bardziej wymagających tytułach. Kolejną nieodpowiednią opcją jest Intel UHD Graphics 630, która jest zintegrowaną kartą graficzną, co oznacza, że jest bardziej odpowiednia do podstawowych zadań, takich jak przeglądanie internetu czy oglądanie filmów, niż do grania w gry komputerowe. Tego typu GPU nie ma dedykowanej pamięci, co znacznie ogranicza jego wydajność w aplikacjach wymagających intensywnej obróbki graficznej. Również AMD Radeon R7 240 z 2GB pamięci GDDR5 i 64-bitową szyną danych jest najsłabszym wyborem do gier. Ta karta graficzna, przeznaczona raczej do podstawowych zastosowań multimedialnych, nie ma mocy obliczeniowej potrzebnej do efektywnego działania w nowoczesnych grach, co prowadzi do niskiej wydajności oraz problemów z płynnością. Sumując, wszystkie trzy karty graficzne nie spełniają wymagań współczesnych gier, co czyni AMD Radeon RX 580 najlepszym wyborem dla graczy.

Pytanie 19

Który z wymienionych elementów interfejsu użytkownika jest charakterystyczny dla aplikacji działającej na komputerze?

A. Strona HTML
B. Routing
C. API REST
D. Przycisk (Button)
Strona HTML to element bardziej webowy niż desktopowy, więc nie do końca pasuje tu. Jasne, teraz są technologie jak Electron, które pozwalają na robienie desktopów z HTML, ale to nie jest typowy sposób. Co do API REST, to jest do komunikacji aplikacji z serwerami, a nie do interfejsu użytkownika. A routing? No cóż, to działa w webowych aplikacjach, żeby ogarnąć nawigację między stronami, ale w klasycznych desktopach raczej tego nie znajdziesz, bo nie potrzebują trasowania adresów URL.

Pytanie 20

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

A. Jenkins
B. Swagger
C. Postman
D. Figma
Jenkins to jeden z najpopularniejszych narzędzi do automatyzacji procesów budowania aplikacji, znany z integracji ciągłej (Continuous Integration, CI) oraz dostarczania ciągłego (Continuous Delivery, CD). Dzięki swojej elastycznej architekturze oraz bogatej bibliotece wtyczek, Jenkins umożliwia automatyzację wielu zadań związanych z budowaniem, testowaniem i wdrażaniem oprogramowania. W praktyce, z Jenkins można skonfigurować zadania, które uruchamiają skrypty budujące po każdej zmianie w kodzie źródłowym, co pozwala na szybkie wykrywanie błędów i zapewnienie jakości. Dobrą praktyką jest definiowanie pipeline'ów (pipelining), które integrują różne etapy, takie jak budowanie, testowanie i wdrożenie w jeden zautomatyzowany proces. Jenkins wspiera wiele języków programowania i środowisk, a także integruje się z narzędziami do zarządzania wersjami, co czyni go niezastąpionym narzędziem w procesie DevOps.

Pytanie 21

W frameworkach do budowy aplikacji mobilnych lub desktopowych znajduje zastosowanie wzorzec MVVM, oznaczający Model-View-ViewModel. Te podejście do programowania oznacza, że

A. w aplikacji obecny jest jedynie interfejs użytkownika
B. interfejs użytkownika oraz logika aplikacji są oddzielone
C. interfejs użytkownika i logika aplikacji są umieszczone w jednym pliku
D. kontrolki i widoki interfejsu użytkownika są zintegrowane z logiką aplikacji
Pierwsza odpowiedź sugeruje, że interfejs użytkownika oraz logika aplikacji są kodowane w jednym pliku. Taki sposób organizacji kodu prowadzi do chaotyczności oraz trudności w zarządzaniu projektem. Łączenie tych dwóch warstw w jednym miejscu nie tylko utrudnia testowanie poszczególnych komponentów, ale również zwiększa ryzyko wprowadzenia błędów, gdyż zmiany w jednej części mogą niezamierzenie wpływać na drugą. Druga odpowiedź wskazuje, że kontrolki i widoki interfejsu użytkownika są zaszyte w logice aplikacji, co jest również sprzeczne z ideą MVVM. Kiedy interfejs jest bezpośrednio związany z logiką, programiści nie mogą łatwo modyfikować lub wymieniać elementów UI, co ogranicza elastyczność aplikacji. Czwarta odpowiedź twierdzi, że w aplikacji występuje tylko interfejs użytkownika, co jest niepoprawne, ponieważ każda dobrze zaprojektowana aplikacja wymaga zarówno logiki, jak i interfejsu do funkcjonowania. W kontekście MVVM, brak modelu i ViewModel prowadzi do zastosowania jedynie warstwy prezentacji, co jest nieefektywne i niezgodne z najlepszymi praktykami programistycznymi, które promują separację odpowiedzialności i modularność.

Pytanie 22

W jakim przypadku należy umieścić poszkodowanego w pozycji bocznej bezpiecznej?

A. gdy wystąpi omdlenie i brak tętna
B. w przypadku omdlenia, gdy osoba jest przytomna
C. w przypadku urazu kręgosłupa
D. w sytuacji urazu pleców, gdy osoba jest świadoma
Ułożenie poszkodowanego w pozycji bocznej bezpiecznej jest kluczowym krokiem w sytuacjach medycznych, zwłaszcza w przypadku omdlenia, gdy osoba jest przytomna i oddycha. Ta pozycja ma na celu zapewnienie drożności dróg oddechowych, co jest niezbędne, aby uniknąć zadławienia się własnymi wymiotami lub śliną. W sytuacji, gdy osoba traci przytomność, lecz nadal oddycha, ułożenie jej na boku minimalizuje ryzyko aspiracji i wspiera naturalne funkcje oddechowe. Ważne jest, aby przyjąć tę pozycję, ale również monitorować stan poszkodowanego, sprawdzając jego oddech i reakcje. Zgodnie z wytycznymi Europejskiej Rady Resuscytacji, w takich sytuacjach kluczowe jest, aby osoba była w pełni zabezpieczona i nie mogła się przewrócić. Przykłady zastosowania tej techniki obejmują sytuacje, gdzie osoba straciła przytomność na skutek omdlenia związanego z nagłym spadkiem ciśnienia krwi lub innymi czynnikami. Wykorzystanie pozycji bocznej bezpiecznej jest standardem w pierwszej pomocy i jest szkolone w ramach kursów dla ratowników oraz medyków.

Pytanie 23

Wartości składowych RGB koloru #AA41FF zapisane w systemie szesnastkowym po przekształceniu na system dziesiętny są odpowiednio

A. 170, 65, 255
B. 160, 64, 255
C. 160, 65, 255
D. 170, 64, 255
Przy przekształcaniu wartości szesnastkowych RGB na system dziesiętny łatwo popełnić błąd, bo wystarczy źle podstawić którąś cyfrę albo zmieszać kolejność. W przypadku koloru #AA41FF każda para znaków odpowiada jednej składowej: AA to czerwona, 41 to zielona, a FF to niebieska. Najczęściej błędy pojawiają się, gdy niepoprawnie zinterpretujemy cyfry szesnastkowe jako dziesiętne lub po prostu pomylimy kolejność składowych. Przykładowo, '160' w odpowiedzi zamiast '170' wynika być może z błędnego odczytania AA – bo łatwo pomylić literę A (10) z cyfrą 6 czy 0, zwłaszcza jeśli ktoś nie jest przyzwyczajony do liczb szesnastkowych. Podobnie, '64' zamiast '65' dla 41 to typowy efekt nieuwagi w liczeniu: 4*16+1 daje 65, a nie 64, co pokazuje, jak ważna jest precyzja w prostych działaniach matematycznych. Z kolei zamiana AA na 160 może świadczyć o mechanicznej zamianie liter na liczby bez uwzględnienia ich pozycji w zapisie szesnastkowym. Powszechnym błędem jest też zamiana kolejności składowych lub skupianie się tylko na końcowych cyfrach, przez co mylnie przyjmuje się, że na przykład AA to 160, bo pierwsza cyfra to 1, a nie 10. W praktyce branżowej takie niedokładności prowadzą do złych efektów wizualnych – np. kolor na stronie mocno różni się od zamierzonego lub nie pasuje do reszty projektu. Moim zdaniem takie błędy wynikają zwykle z braku nawyków w przeliczaniu systemów liczbowych. Warto zawsze pamiętać, że każda cyfra szesnastkowa ma swoją wagę, a zamiana wymaga precyzyjnego policzenia: pierwsza cyfra razy 16 plus druga cyfra. W codziennej pracy z grafiką cyfrową czy webdesignem taka pomyłka bardzo rzuca się potem w oczy użytkownikowi, więc lepiej od początku ćwiczyć dokładność niż potem szukać, gdzie zniknęła ta właściwa barwa.

Pytanie 24

Wynikiem wykonania poniższego fragmentu kodu jest wyświetlenie liczb z zakresu od 2 do 20, które są

for (let number = 2; number <= 20; number++) {
    let check = true;
    for (let test = 2; test < number; test++) {
        if (number % test === 0) {
            check = false;
            break;
        }
    }
    if (check) console.log(number);
}
A. parzyste.
B. podzielne przez wartość zmiennej test.
C. podzielne przez wartość zmiennej check.
D. pierwsze.
Podzielność przez zmienną test lub check oznacza, że liczby są wielokrotnościami określonej wartości, ale niekoniecznie są liczbami pierwszymi. Liczby parzyste to liczby dzielące się przez 2, co oznacza, że tylko 2 jest liczbą pierwszą w tym zbiorze. Algorytmy wykrywające liczby parzyste lub wielokrotności nie są używane do znajdowania liczb pierwszych, ponieważ ich zakres i zastosowanie są zupełnie inne.

Pytanie 25

Zaprezentowany symbol odnosi się do

Ilustracja do pytania
A. praw autorskich
B. prawa cytatu
C. Creative Commons
D. domeny publicznej
Wiele osób zaczyna od skojarzenia tego symbolu z prawami autorskimi, Creative Commons albo prawem cytatu, jednak to prowadzi na manowce. Po pierwsze, standardowy symbol praw autorskich to samo „C” w kółku, bez przekreślenia – i on oznacza, że utwór jest objęty ochroną z mocy prawa i wszelkie wykorzystanie wymaga zgody twórcy lub spełnienia warunków ustawowych wyjątków. Natomiast tutaj mamy przekreślone „C”, co jednoznacznie sugeruje brak ochrony. Creative Commons to zupełnie inny zestaw symboli, z typowymi oznaczeniami: CC i różnymi dodatkami jak BY, SA, NC, ND, które precyzują warunki korzystania z utworu. Te licencje nadal wprowadzają ograniczenia, chociaż są dużo bardziej elastyczne niż klasyczne prawa autorskie – ale nigdy nie oznaczają całkowitego braku praw. Prawo cytatu z kolei to wyjątek w ustawie o prawie autorskim, który pozwala na ograniczone wykorzystywanie fragmentów cudzych utworów w określonych sytuacjach, ale nie oznacza, że cały utwór można wykorzystywać dowolnie i bez ograniczeń. Typowy błąd polega na utożsamianiu każdego oznaczenia związanych z literą C z szeroko rozumianą „wolnością” korzystania – a to nieprawda. Domena publiczna jest zupełnie oddzielną kategorią, gdzie utwór jest trwale wyjęty spod ochrony prawnej i można go używać naprawdę dowolnie. W praktyce, nieznajomość tych niuansów może prowadzić do błędów prawnych, np. nieświadomego naruszenia czyichś praw, albo niewłaściwego oznaczenia własnej pracy. W środowisku profesjonalnym bardzo ważne jest właśnie rozróżnianie tych pojęć i symboli – to wpływa na bezpieczeństwo prawne projektów i buduje zaufanie do twórcy.

Pytanie 26

Przedstawiono funkcjonalnie równoważne fragmenty kodu aplikacji Angular oraz React.js.

Angular
submit(f) {
    console.log(f.value); 
}
<form #f="ngForm" (ngSubmit)="submit(f)">
    <input ngModel name="tytul" type="text" id="tytul">
    <button>Dodaj</button>
</form>
React
handleSubmit = e => {
    e.preventDefault();
    console.log('tytul: ' + e.currentTarget.tytul.value);
};
render() {
    return (
        <div>
            <form onSubmit={this.handleSubmit}>
                <input type="text" id="tytul" />
                <button>Dodaj</button>
            </form>
        </div>
    );
}
A. wyświetlanie w konsoli przeglądarki danych pobranych z pól formularza w czasie rzeczywistym, gdy użytkownik je wypełnia
B. funkcję, która wypełnia dane w formularzu podczas jego inicjalizacji
C. obsługę zdarzenia przesłania formularza
D. funkcję, która zapisuje do zmiennych f lub e dane z pola <input> formularza
Oba fragmenty kodu, zarówno w Angularze jak i React.js, pokazują obsługę zdarzenia zatwierdzenia formularza. W Angularze zdarzenie submit jest obsługiwane poprzez przypisanie funkcji submit do atrybutu ngSubmit. Ta funkcja otrzymuje jako argument obiekt formularza, a następnie wypisuje jego wartość w konsoli za pomocą f.value. Jest to zgodne z dobrymi praktykami Angulara, gdzie korzysta się z dwukierunkowego wiązania danych i obiektu formularza do zarządzania danymi wejściowymi. W przypadku React.js funkcja handleSubmit jest przypisywana do zdarzenia onSubmit formularza. W tej funkcji nie tylko logujemy dane wejściowe, ale również używamy e.preventDefault(), aby zapobiec domyślnemu działaniu formularza, co jest standardową praktyką w React.js, gdzie zarządzamy stanem komponentów samodzielnie. W obu przypadkach kluczową czynnością jest reakcja na zdarzenie wysłania formularza, co pozwala na dalsze przetwarzanie danych wejściowych, walidację lub wysyłanie ich do serwera.

Pytanie 27

Ergonomiczną oraz właściwą pozycję do pracy przy komputerze zapewni fotel, którego

A. podłokietniki są 30 cm powyżej blatu
B. podłokietniki znajdują się 20 cm poniżej blatu
C. oparcie w rejonie szyi jest nachylone do przodu o 40ᵒ
D. oparcie wspiera lordozę w dolnym odcinku pleców
Prawidłowa i ergonomiczna pozycja pracy przy komputerze jest kluczowa dla zdrowia i komfortu użytkownika. Oparcie krzesła, które zapewnia lordozę w odcinku lędźwiowym, jest niezbędne, ponieważ pozwala na zachowanie naturalnej krzywizny kręgosłupa. Lordoza lędźwiowa to naturalne wygięcie kręgosłupa w dolnej części pleców, które wspiera prawidłowe ułożenie ciała podczas siedzenia. Krzesło powinno być zaprojektowane tak, aby oparcie przylegało do krzywizny ciała, co minimalizuje ryzyko bólu pleców oraz przeciążeń. Praktycznym przykładem ergonomicznej pozycji jest ustawienie oparcia w taki sposób, aby jego dolna część była dostosowana do odcinka lędźwiowego. Zgodnie z normami ISO 9241, które dotyczą ergonomii miejsc pracy przy komputerze, krzesło powinno umożliwiać użytkownikowi przyjęcie wygodnej pozycji z podparciem dla dolnej części pleców. W odpowiedniej pozycji stopy powinny spoczywać płasko na podłodze, a kolana powinny być na poziomie bioder, co wspiera prawidłowe krążenie krwi oraz redukuje napięcia mięśniowe.

Pytanie 28

Jaka jest podstawowa funkcja narzędzia do zarządzania projektami?

A. Produkcja animacji komputerowych
B. Poprawa wydajności kodu programu
C. Opracowanie bazy danych dla projektu
D. Zarządzanie zadaniami i czasem w projekcie
Zarządzanie zadaniami i czasem to naprawdę kluczowa sprawa w projektach. Dzięki narzędziom takim jak Microsoft Project, Jira, Trello, czy Monday, zespoły mogą lepiej planować, przydzielać role i śledzić, co się dzieje. Możliwości tych narzędzi pozwalają ustalać deadline’y, priorytety, a nawet automatycznie przypominają o zbliżających się terminach. To super pomaga w unikaniu opóźnień i pozwala lepiej zorganizować pracę. Wizualizacja projektu w formie osi czasu czy tablicy kanban też jest mega przydatna, bo wszystko staje się bardziej czytelne.

Pytanie 29

W pokazanych fragmentach kodu zdefiniowano funkcję o nazwie fun1. W tej funkcji należy zaimplementować obsługę. Fragment kodu interfejsu użytkownika (XAML):

<RadioButton Content="opcja1" />
<RadioButton Content="opcja2" />
<Button Content="OK" Width=75 Click="fun1"/>
Fragment kodu logiki programu (C#):
private void fun1(object sender, RoutedEventArgs e) { ... }
A. usunięcia kontrolek z pamięci RAM
B. naciśnięcia przycisku zatwierdzającego dialog
C. inicjacji elementów interfejsu użytkownika
D. aplikacji po wystąpieniu zdarzenia utraty fokusu przez pole opcji
Obsługa zdarzeń związanych z przyciskami zatwierdzającymi dialogi jest kluczową częścią interakcji użytkownika z aplikacją. W wielu środowiskach programistycznych, takich jak JavaScript, C# czy Java, przyciski te wywołują funkcje obsługi zdarzeń (event handlers), które mogą walidować dane, przetwarzać informacje lub wykonywać inne działania po naciśnięciu przycisku. Implementacja funkcji obsługującej przycisk jest nieodzowna w aplikacjach graficznych, gdzie interakcja z użytkownikiem wymaga dynamicznego reagowania na jego działania. Dzięki temu aplikacje stają się bardziej interaktywne i responsywne, co zwiększa komfort użytkownika i poprawia ogólną użyteczność oprogramowania.

Pytanie 30

Który z operatorów w języku C++ służy do pobierania adresu zmiennej?

A. &amp;
B. delete
C. &gt;
D. *
Wielka sprawa, że wiesz, że operator '&' w C++ jest do przypisywania adresów zmiennych. Dzięki temu możesz stworzyć wskaźnik, który wskazuje na konkretne miejsce w pamięci, co daje ci dużą moc do manipulowania wartościami. Używając tego operatora, możesz naprawdę dobrze zarządzać pamięcią i poprawić wydajność swojego kodu. Jest to kluczowe, zwłaszcza, gdy pracujesz z dynamiczną alokacją pamięci, albo kiedy iterujesz przez tablice czy tworzysz takie struktury jak listy czy drzewa. To narzędzie jest po prostu super ważne w programowaniu!

Pytanie 31

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. Unikać spotkań z ludźmi w realnym świecie
C. Zwiększać czas spędzany przy ekranie
D. Całkowicie wycofać się z aktywności wirtualnych
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.

Pytanie 32

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

A. Objective-C
B. C#
C. C++
D. Java
C# to język programowania szeroko stosowany w tworzeniu aplikacji desktopowych, w tym do budowy interfejsów użytkownika przy użyciu XAML. XAML (Extensible Application Markup Language) to język znaczników wykorzystywany w środowisku WPF (Windows Presentation Foundation) oraz UWP (Universal Windows Platform) do projektowania graficznych interfejsów użytkownika. C# i XAML doskonale się uzupełniają, pozwalając na tworzenie nowoczesnych, interaktywnych aplikacji desktopowych, w których logika (C#) jest oddzielona od warstwy wizualnej (XAML). Dzięki tej separacji możliwe jest szybkie prototypowanie i łatwa rozbudowa aplikacji, co czyni je preferowanym wyborem dla deweloperów pracujących w ekosystemie Microsoftu.

Pytanie 33

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

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

Pytanie 34

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

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

Pytanie 35

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

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

Pytanie 36

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

A. 30 uciśnięć klatki piersiowej na przemian z 2 wdechami ratowniczymi
B. 30 wdechów ratowniczych bez uciśnięć
C. 10 uciśnięć klatki piersiowej bez wdechów
D. 20 uciśnięć klatki piersiowej na przemian z 5 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 37

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

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

Pytanie 38

Programista tworzy system zarządzania buforem drukowania dokumentów. Najnowsze zlecenie drukowania dodawane jest na koniec kolejki, a najstarsze z nich są przekazywane do drukarki. Jaką strukturę danych najłatwiej zastosować w tej sytuacji?

A. FIFO
B. Sterta
C. LIFO
D. Stos
Stos (LIFO - Last In, First Out) działa odwrotnie – najnowsze zadanie jest przetwarzane jako pierwsze, co nie odpowiada kolejności drukowania. Sterta to inna struktura danych używana głównie do dynamicznej alokacji pamięci, a nie do zarządzania kolejkami zadań. LIFO nie nadaje się do implementacji kolejki wydruku, ponieważ najstarsze zadania mogą pozostawać nieprzetworzone, co prowadzi do nieefektywności i dezorganizacji procesów drukowania.

Pytanie 39

Co należy do zadań interpretera?

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

Pytanie 40

Jak wygląda kod uzupełnienia do dwóch dla liczby -5 w formacie binarnym przy użyciu 8 bitów?

A. 00000101
B. 11111011
C. 10000101
D. 11111101
Pierwsza z niepoprawnych odpowiedzi, która przedstawia wartość 00000101, jest błędna, ponieważ jest to binarna reprezentacja liczby 5, a nie -5. Kod uzupełnieniowy do dwóch wymaga przedstawienia liczby ujemnej poprzez inwersję bitów i dodanie jedynki. Ta odpowiedź nie ma zastosowania przy obliczaniu liczb ujemnych, stąd jest niewłaściwa. Kolejna odpowiedź, 11111101, również jest nieprawidłowa. W przypadku tej liczby, zainwersowanie bitów liczby 5 dawałoby 11111010, a dodanie 1 do tej wartości prowadziłoby do 11111011, co wskazuje, że ta odpowiedź nie jest zgodna z zasadą uzupełnienia do dwóch. Ostatnia z niepoprawnych odpowiedzi, 10000101, jest również błędna, ponieważ nie odpowiada żadnej z reprezentacji liczby -5. Gdybyśmy spróbowali konwertować ją z powrotem na wartość dziesiętną, otrzymalibyśmy 133, co jest zdecydowanie niepoprawne. Warto zauważyć, że każda z tych niepoprawnych odpowiedzi wskazuje na brak zrozumienia zasad konwersji liczb ujemnych w systemie binarnym, co jest kluczowe w informatyce i programowaniu, a ich użycie w praktycznych aplikacjach mogłoby prowadzić do poważnych błędów w obliczeniach.