Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 15 maja 2025 10:46
  • Data zakończenia: 15 maja 2025 10:52

Egzamin niezdany

Wynik: 9/40 punktów (22,5%)

Wymagane minimum: 20 punktów (50%)

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

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

A. Zmiana rozdzielczości ekranu
B. Umożliwienie modyfikacji czcionki
C. Ograniczenie liczby grafik na stronie
D. Implementacja czytnika ekranu (screen reader)
Dodanie czytnika ekranu (screen reader) jest kluczowym rozwiązaniem, które znacząco ułatwia osobom niewidomym i słabowidzącym korzystanie z serwisów internetowych. Czytniki ekranu to oprogramowanie przekształcające tekst na stronie internetowej na mowę, co pozwala użytkownikom na interakcję z treścią dostępną w internecie. Technologia ta opiera się na standardach dostępności, takich jak WCAG (Web Content Accessibility Guidelines), które zalecają projektowanie stron przyjaznych dla osób z różnymi niepełnosprawnościami. Przykładem działania czytnika ekranu może być program JAWS, który umożliwia użytkownikom nawigację po stronach internetowych poprzez komendy klawiaturowe oraz odczytywanie treści na głos. Dzięki czytnikom ekranu, osoby niewidome mają możliwość dostępu do informacji, komunikacji oraz interakcji w sieci, co wpisuje się w ideę cyfrowej inkluzji i równości szans. Wprowadzenie czytnika ekranu na stronie internetowej to nie tylko techniczne wsparcie, ale również wyraz odpowiedzialności społecznej, mający na celu zapewnienie, że wszyscy użytkownicy mają równe prawo do korzystania z zasobów w sieci.

Pytanie 2

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

A. Type Definition Document - dokumentacja typów danych w aplikacji
B. Task Deployment Diagram - schemat wdrażania zadań w projekcie
C. Technical Design Document - dokumentacja techniczna projektu
D. Test-Driven Development - praktyka pisania testów przed implementacją kodu
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 3

Ile gigabajtów (GB) mieści się w 1 terabajcie (TB)?

A. 1024
B. 512
C. 1000
D. 2048
No to fajnie, że trafiłeś w temat! 1 terabajt (TB) to 1024 gigabajty (GB), co wynika z systemu binarnego, który w IT jest najczęściej używany. Trochę technicznie mówiąc, 1 TB to tak naprawdę 2^40 bajtów, co daje nam ogromną liczbę – dokładnie 1 099 511 627 776 bajtów. Jak podzielisz to przez 1 073 741 824 bajtów, które to są 1 GB, to wyjdzie 1024 GB. Warto wiedzieć, że w świecie komputerów i systemów operacyjnych operujemy głównie na tym systemie binarnym. Ale uwaga, bo producenci dysków często podają pojemności w systemie dziesiętnym, i wtedy 1 TB to jakby 1 000 GB. To może wprowadzać zamieszanie, więc dobrze jest sprawdzać specyfikacje i mieć to na uwadze, żeby nie było nieporozumień. Większość systemów, jak Windows czy Linux, działa w tym binarnym, więc warto to znać, gdyż to ułatwia pracę zarówno użytkownikom, jak i fachowcom z branży IT.

Pytanie 4

Który komponent systemu komputerowego zajmuje się transferem danych pomiędzy procesorem a pamięcią RAM?

A. Mostek północny (Northbridge)
B. Zasilacz
C. Karta graficzna
D. Kontroler DMA
Mostek północny, znany również jako Northbridge, jest kluczowym elementem architektury komputerowej, który odpowiada za komunikację pomiędzy procesorem a pamięcią RAM. Jego głównym zadaniem jest koordynowanie przepływu danych w systemie oraz zapewnienie szybkiego dostępu do pamięci, co jest niezbędne dla wydajności całego systemu. Mostek północny jest odpowiedzialny za zarządzanie magistralami danych, a także interfejsami, takimi jak PCI Express, które łączą różne komponenty. Dzięki zastosowaniu standardów, takich jak DDR (Double Data Rate), mostek północny umożliwia efektywne przesyłanie danych w wysokiej prędkości. Praktycznym przykładem działania mostka północnego jest sytuacja, kiedy procesor potrzebuje załadować dane z pamięci RAM do rejestrów – mostek północny zarządza tym procesem, minimalizując opóźnienia i maksymalizując wydajność. W nowoczesnych systemach komputerowych mostek północny jest często zintegrowany z procesorem, co dodatkowo zwiększa efektywność komunikacji oraz zmniejsza czas dostępu do danych.

Pytanie 5

Który z wymienionych algorytmów najczęściej wykorzystuje rekurencję?

A. Sortowanie przez wstawianie
B. Wyszukiwanie liniowe
C. Obliczanie liczb Fibonacciego
D. Sortowanie bąbelkowe
Sortowanie bąbelkowe to algorytm iteracyjny, który działa na zasadzie porównywania sąsiednich elementów tablicy i zamiany ich miejscami. Nie korzysta on z rekurencji, ponieważ jego struktura nie wymaga podziału problemu na mniejsze części. Wyszukiwanie liniowe to prosty algorytm iteracyjny, który przeszukuje kolejne elementy tablicy i nie wykorzystuje rekurencji. Sortowanie przez wstawianie również jest algorytmem iteracyjnym, który działa na zasadzie wstawiania kolejnych elementów w odpowiednie miejsca i nie wymaga wywoływania funkcji rekurencyjnych.

Pytanie 6

Jaką strukturę danych można zrealizować, korzystając jedynie z wymienionych metod?

Ilustracja do pytania
A. stos
B. kolejka FIFO
C. drzewo binarne
D. tablica
Kolejka FIFO (First In, First Out) wymaga dodatkowych metod do zarządzania elementami na obu końcach struktury. Tablica pozwala na przechowywanie wielu elementów, ale nie działa na zasadzie LIFO. Drzewo binarne to bardziej skomplikowana struktura danych, wymagająca implementacji rekurencyjnych metod przeszukiwania i dodawania.

Pytanie 7

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

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

Pytanie 8

Jakie jest najważniejsze właściwość algorytmów szyfrowania symetrycznego?

A. Szyfrowanie wyłącznie tekstowych plików
B. Zastosowanie odmiennych kluczy do szyfrowania i deszyfrowania
C. Zastosowanie identycznego klucza do szyfrowania oraz deszyfrowania
D. Funkcjonowanie bez użycia klucza
Algorytmy asymetryczne działają inaczej, bo wykorzystują różne klucze do szyfrowania i deszyfrowania, jak np. RSA. To totalnie różni je od algorytmów symetrycznych. No i są też algorytmy, które nie potrzebują klucza, takie jak hashowanie (MD5, SHA), które robią unikalne skróty danych, ale nie da się ich odwrócić. A jeśli chodzi o szyfrowanie plików tekstowych, to to tylko mały kawałek tego, co algorytmy symetryczne potrafią, bo mogą szyfrować właściwie wszystkie dane, bez względu na to, w jakim formacie są.

Pytanie 9

Który fragment kodu ilustruje zastosowanie rekurencji?

Ilustracja do pytania
A. Blok 4
B. Blok 2
C. Blok 1
D. Blok 3
Blok 2, 3 i 4 mogą zawierać iteracyjne pętle lub inne struktury sterujące, ale nie posiadają wywołań funkcji wewnątrz własnej definicji. Iteracja różni się od rekurencji, ponieważ nie korzysta z wywołań zwrotnych funkcji, co stanowi główną cechę rekurencji.

Pytanie 10

Jakie są różnice między kompilatorem a interpretem?

A. Interpreter konwertuje kod źródłowy na język maszynowy przed jego kompilacją
B. Kompilator przekształca kod źródłowy na język maszynowy przed uruchomieniem aplikacji
C. Interpreter tworzy plik wykonywalny, który funkcjonuje niezależnie od otoczenia
D. Kompilator przetwarza kod na język maszynowy w momencie jego wykonywania
Kompilator nie tłumaczy kodu w trakcie jego działania, bo to już zadanie interpretera. Interpreter przetwarza kod linijka po linijce podczas działania programu. Z tego powodu nie tworzy plików wykonywalnych, program po prostu działa w czasie rzeczywistym, a to sprawia, że działa wolniej. Mówiąc krótko, tłumaczenie kodu przed kompilacją to nie jest to, co się robi – kompilacja to proces, który tworzy plik wykonywalny z kodu źródłowego. Dlatego interpreter nie generuje żadnych niezależnych plików, tylko analizuje i wykonuje kod od razu.

Pytanie 11

Jakie jest podstawowe zadanie funkcji zaprzyjaźnionej w danej klasie?

A. Umożliwienie funkcji dostępu do prywatnych atrybutów klasy
B. Dodawanie nowych instancji do klasy
C. Ograniczenie widoczności atrybutów klasy
D. Generowanie kopii pól obiektu w innej klasie
Dodawanie nowych obiektów do klasy to zadanie konstruktorów, a nie funkcji zaprzyjaźnionych. Tworzenie kopii pól obiektu w innej klasie może być realizowane za pomocą mechanizmów kopiujących lub metod publicznych, ale nie jest to funkcja zaprzyjaźniona. Ograniczenie zakresu widoczności pól klasy to efekt zastosowania modyfikatorów dostępu, takich jak private, protected lub public, a nie przyjaźni klasowej.

Pytanie 12

Z jakiego obiektu można skorzystać, aby stworzyć kontrolkę wskazaną strzałką na ilustracji?

Ilustracja do pytania
A. Text - dla biblioteki WPF; JText - dla biblioteki Swing
B. Windows - dla biblioteki WPF; JFrame - dla biblioteki Swing
C. TextBox - dla biblioteki WPF; JTextField - dla biblioteki Swing
D. Box - dla biblioteki WPF; JField - dla biblioteki Swing
Windows i JFrame są kontenerami, które przechowują kontrolki, ale same nie umożliwiają bezpośredniego wprowadzania tekstu. Text i JText to klasy wyświetlające tekst, lecz nie pozwalają na jego edycję. Box i JField nie odnoszą się bezpośrednio do komponentów tekstowych, co czyni je nieodpowiednimi w tym kontekście.

Pytanie 13

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

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

Pytanie 14

Jakie cechy posiada kod dopełniający do dwóch?

A. Reprezentuje liczbę w odwrotnej formie binarnej
B. Umożliwia reprezentację liczb ujemnych w systemie binarnym
C. Służy do przekształcania liczb binarnych na dziesiętne
D. Umożliwia konwersję systemu binarnego na szesnastkowy
Kod uzupełnieniowy do dwóch jest powszechnie stosowany w systemach komputerowych do reprezentacji liczb całkowitych, w tym liczb ujemnych. W tym systemie najstarsza cyfra (bit) określa znak liczby, gdzie 0 oznacza liczbę dodatnią, a 1 liczbę ujemną. Aby uzyskać reprezentację liczby ujemnej w systemie binarnym, należy najpierw przedstawić jej wartość bezwzględną w postaci binarnej, a następnie odwrócić wszystkie bity i dodać 1 do wyniku, co daje nam liczbę w kodzie uzupełnieniowym do dwóch. Na przykład, aby uzyskać -5 w systemie 8-bitowym, zaczynamy od 5, co w postaci binarnej to 00000101. Następnie odwracamy bity, co daje 11111010, a dodając 1 uzyskujemy 11111011, co stanowi -5 w kodzie uzupełnieniowym do dwóch. Ta metoda umożliwia łatwe wykonywanie arytmetyki, ponieważ dodawanie i odejmowanie liczb ujemnych i dodatnich można realizować z użyciem tych samych operacji binarnych. Kod uzupełnieniowy do dwóch stał się standardem w większości architektur komputerowych, takich jak x86 czy ARM, dzięki swojej efektywności i prostocie.

Pytanie 15

Jakie zastosowanie ma język Swift w zakresie aplikacji mobilnych?

A. Do zarządzania bazami danych w aplikacjach mobilnych
B. Do tworzenia aplikacji na system Android
C. Do przeprowadzania testów aplikacji mobilnych
D. Do tworzenia aplikacji na system iOS
Java jest językiem programowania przeznaczonym głównie do tworzenia aplikacji na Androida, a nie iOS. Objective-C to starszy język używany przed Swift, ale obecnie Apple zaleca tworzenie nowych aplikacji w Swift. Python, choć może być używany do budowy aplikacji mobilnych, nie jest standardowym językiem w ekosystemie Apple i nie jest wspierany przez XCode jako domyślny język programowania dla iOS.

Pytanie 16

Który z wymienionych frameworków jest charakterystyczny dla aplikacji komputerowych pisanych w C#?

A. WPF (Windows Presentation Foundation)
B. Qt
C. Spring
D. React
Qt to popularny framework do tworzenia aplikacji, ale jest przeznaczony głównie dla języków takich jak C++ i Python, a nie C#. Spring to framework do tworzenia aplikacji webowych i serwerowych w języku Java – nie jest przeznaczony do budowy aplikacji desktopowych na platformie Windows. React to biblioteka JavaScript używana do budowy interfejsów użytkownika aplikacji webowych, głównie w środowisku przeglądarki, co sprawia, że nie nadaje się do tworzenia tradycyjnych aplikacji desktopowych w języku C#.

Pytanie 17

W dwóch przypadkach opisano mechanizm znany jako Binding. Jego celem jest

Ilustracja do pytania
A. przetwarzanie zdarzeń kontrolek interfejsu użytkownika przez wywoływanie odpowiednich funkcji
B. wiązać właściwości (property) elementu interfejsu użytkownika z danymi lub właściwością innego obiektu
C. zarządzanie mechanizmem obietnic (promises) lub obserwatora (observable) w programowaniu asynchronicznym
D. wiązanie oraz eksportowanie plików z różnych modułów aplikacji
Obsługa zdarzeń kontrolki (np. click) to inny mechanizm niż data binding. Binding nie jest związany bezpośrednio z mechanizmem obietnic (promises) ani eksportem plików – dotyczy bezpośrednio interakcji między danymi a interfejsem użytkownika.

Pytanie 18

Po uruchomieniu podanego kodu w języku C++ na konsoli zobaczymy następujący tekst:

Ilustracja do pytania
A. Wynik dodawania: 5+5.12=10.123450
B. dodawania: 5+5.12345=10.123450 Wynik
C. "%s dodawania: %d + %.2f=%f", "Wynik", a, b, w
D. "%s dodawania: %d + %.2f = %f", "Wynik", 5, 5.12345, 10.123450
Tekst w cudzysłowie – Oznacza surowy tekst, który nie jest interpretowany jako kod. Dodawanie – Nie jest sformatowane zgodnie z wymaganiami pytania. Inne formatowanie – Wynika z błędnej interpretacji zmiennych i formatowania.

Pytanie 19

Zestaw operatorów, który został przedstawiony, należy do kategorii operatorów

Ilustracja do pytania
A. porównawczymi
B. przypisania
C. arytmetycznych
D. logicznymi
Przedstawiony zbiór operatorów należy do grupy operatorów arytmetycznych, które wykonują podstawowe operacje matematyczne, takie jak dodawanie, odejmowanie, mnożenie i dzielenie. Są one podstawą obliczeń w większości języków programowania.

Pytanie 20

Fragment kodu w języku JavaScript to

Ilustracja do pytania
A. prototyp metody klasy
B. definicja funkcji strzałkowej
C. prototyp interfejsu
D. definicja zmiennej typu tablicowego
Kod w JavaScript opisuje definicję funkcji strzałkowej, która jest nowoczesnym i bardziej zwięzłym sposobem definiowania funkcji. Funkcje strzałkowe mają też specyficzne zachowanie w kontekście 'this', co czyni je często preferowanymi przy pracy z obiektami i metodami callback.

Pytanie 21

Podana deklaracja zmiennych w języku JAVA zawiera

Ilustracja do pytania
A. jedną zmienną typu tekstowego, jedną rzeczywistą, jedną całkowitą, jedną znakową oraz jedną logiczną
B. dwie zmienne typu tekstowego, dwie całkowite oraz jedną logiczną
C. dwie zmienne o typie strukturalnym
D. jedną zmienną typu tekstowego, dwie całkowite, jedną znakową i jedną logiczną
Deklaracja dwóch zmiennych typu napisowego lub strukturalnego nie odpowiada analizowanemu kodowi, ponieważ liczba i typy zmiennych są inne. Pominięcie zmiennej logicznej lub znakowej prowadzi do błędnej interpretacji deklaracji zmiennych w kodzie.

Pytanie 22

Jakie jest główne zadanie portali społecznościowych?

A. Tworzenie kopii zapasowych plików
B. Zarządzanie handlem produktami i usługami
C. Analiza rezultatów działalności gospodarczej
D. Udostępnianie informacji i interakcja między użytkownikami
Zarządzanie sprzedażą produktów i usług nie jest główną funkcją portali społecznościowych, choć niektóre z nich, jak Facebook, oferują możliwości sprzedaży poprzez sklepy online. Jednakże, ich pierwotnym celem nie jest sprzedaż, lecz interakcja społeczna. Portale społecznościowe skupiają się na budowaniu relacji i angażowaniu użytkowników, a nie na transakcjach handlowych. Tworzenie kopii zapasowych danych to proces związany z archiwizowaniem informacji, które są przechowywane w chmurze lub na serwerach lokalnych. Portale społecznościowe nie pełnią roli narzędzi do tworzenia kopii zapasowych, co jest zadaniem dedykowanych aplikacji i rozwiązań technologicznych. Analiza wyników biznesowych, chociaż istotna w kontekście marketingu i sprzedaży, nie jest funkcją portali społecznościowych. Portale te mogą dostarczać statystyk dotyczących interakcji użytkowników, ale nie oferują kompleksowych narzędzi analitycznych takich jak Google Analytics, które monitorują zachowanie użytkowników na stronach internetowych. Zatem, chociaż te odpowiedzi mogą być związane z działalnością biznesową, nie oddają one kluczowej roli, jaką odgrywają portale społecznościowe w zakresie komunikacji i udostępniania treści.

Pytanie 23

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

A. Prawa pokrewne
B. Własność przemysłowa
C. Autorskie prawa majątkowe
D. Dobra niematerialne
Dobra niematerialne to szersza kategoria obejmująca różne aspekty własności intelektualnej, ale znaki towarowe są formalnie klasyfikowane jako własność przemysłowa. Autorskie prawa majątkowe dotyczą utworów literackich, muzycznych i filmowych, ale nie obejmują znaków towarowych. Prawa pokrewne chronią wykonawców i producentów nagrań, lecz nie odnoszą się do znaków towarowych i brandingu firm.

Pytanie 24

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

Ilustracja do pytania
A.
B.
C.
D.
Pole tekstowe z ukrytymi znakami () służy do wprowadzania hasła. Ale suwak () działa trochę inaczej, bo wybierasz wartość z pewnego zakresu. No i Stepper to już całkiem inna bajka, bo pozwala na stopniowe zmniejszanie lub zwiększanie wartości. Każdy z tych elementów ma swoje zastosowanie i nie można ich mylić z przełącznikiem.

Pytanie 25

W jaki sposób procesor nawiązuje komunikację z pamięcią podręczną (cache)?

A. Bezpośrednio, omijając mostki systemowe
B. Za pomocą systemu przerwań
C. Używając wyłącznie pamięci RAM
D. Poprzez linie danych w magistrali systemowej
Komunikacja między procesorem a pamięcią podręczną nie odbywa się poprzez system przerwań, ponieważ przerwania są mechanizmem umożliwiającym procesorowi reagowanie na zdarzenia zewnętrzne, a nie transfer danych między pamięcią a procesorem. Przerwania są używane głównie do komunikacji z urządzeniami peryferyjnymi, które informują procesor o konieczności przetworzenia danych, a nie do bezpośredniej interakcji z pamięcią podręczną. Ponadto stwierdzenie, że procesor komunikuje się z pamięcią podręczną, wykorzystując jedynie pamięć RAM, jest błędne, ponieważ pamięć RAM i pamięć podręczna to różne typy pamięci, o różnych szybkościach i funkcjach. Pamięć podręczna jest znacznie szybsza i działa jako pośrednik między procesorem a wolniejszą pamięcią RAM, co oznacza, że procesor nie korzysta z pamięci RAM do komunikacji z pamięcią podręczną. Warto również zaznaczyć, że komunikacja bezpośrednia z pominięciem mostków systemowych jest niepraktyczna i technicznie niemożliwa. Mostki systemowe są niezbędne do zarządzania ruchem danych między różnymi komponentami w architekturze komputerowej, a ich pominięcie mogłoby prowadzić do chaosu w komunikacji oraz znacznie obniżyć wydajność systemu.

Pytanie 26

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

console.log(typeof null); console.log(typeof undefined); console.log(typeof []); console.log(typeof NaN);

A. null, undefined, object, NaN
B. object, undefined, array, number
C. null, undefined, array, number
D. object, undefined, object, number
Typowe błędy związane z błędnymi odpowiedziami wynikają często z mylnych koncepcji dotyczących typów danych w JavaScript. Warto zauważyć, że odpowiedź sugerująca, że null jest typem 'null' nie jest zgodna z rzeczywistością. Null nie jest odrębnym typem, lecz jest klasyfikowany jako obiekt, co jest wynikają z tego, że w JavaScript wszystko jest obiektowe z wyjątkiem prostych typów. Również opinia, że NaN powinien być uznawany za typ 'NaN' jest myląca. NaN jest specjalnym przypadkiem liczby, co można zobaczyć przy użyciu typeof. Tablica z kolei nie ma własnego typu w JavaScript, jest traktowana jako obiekt. To jest powód, dla którego typeof zwraca 'object' dla tablic. Niezrozumienie tych zasad prowadzi do błędnych konkluzji i może wpływać na jakość kodu. W praktyce powinno się zawsze stosować typeof do sprawdzania typów zmiennych, co zapewnia lepszą kontrolę nad danymi i eliminuje potencjalne błędy podczas wykonywania operacji na różnych typach. Warto zwracać uwagę na te aspekty, ponieważ wpływają one na wydajność i stabilność aplikacji.

Pytanie 27

Co to jest GraphQL?

A. Biblioteka do tworzenia grafów i diagramów w aplikacjach webowych
B. Język zapytań do API oraz środowisko wykonawcze do obsługi tych zapytań
C. System zarządzania bazami grafowymi
D. Format danych podobny do JSON używany w komunikacji między aplikacjami
Wybór odpowiedzi, która sugeruje, że GraphQL jest biblioteką do tworzenia grafów i diagramów w aplikacjach webowych, jest mylący, ponieważ nie uwzględnia fundamentalnych cech i funkcji tego narzędzia. GraphQL nie jest narzędziem graficznym, lecz technologią służącą do efektywnego zarządzania zapytaniami w API. Odpowiedź wskazująca na system zarządzania bazami grafowymi również nie odzwierciedla rzeczywistości, ponieważ GraphQL nie jest systemem bazodanowym, lecz interfejsem do komunikacji z różnymi źródłami danych, które mogą być zrealizowane przy użyciu różnych baz danych, w tym relacyjnych, NoSQL czy grafowych. Ponadto, w przypadku odpowiedzi sugerującej, że GraphQL to format danych podobny do JSON, należy podkreślić, że choć GraphQL używa JSON do przesyłania danych, jego istotą jest definicja zapytań oraz struktura danych, a nie tylko ich format. Często mylone to jest z protokołami komunikacyjnymi, takimi jak REST, które również mogą wykorzystywać JSON, ale nie oferują takiej elastyczności w zakresie kształtowania odpowiedzi, jaką zapewnia GraphQL. Takie nieporozumienia mogą prowadzić do niewłaściwego zrozumienia architektury aplikacji oraz potencjalnych ograniczeń w wydajności i użyteczności implementacji API.

Pytanie 28

Który z poniższych elementów nie jest związany z architekturą mikroserwisów?

A. Monolityczny kod źródłowy
B. Niezależne wdrażanie usług
C. Skalowalność poszczególnych usług
D. Komunikacja przez API
Każda z pozostałych odpowiedzi na pytanie odnosi się do kluczowych aspektów architektury mikroserwisów. Niezależne wdrażanie usług jest jednym z głównych założeń mikroserwisów, ponieważ umożliwia autonomiczne aktualizacje i rozwój poszczególnych komponentów systemu bez konieczności przerywania działania całej aplikacji. Komunikacja przez API jest niezbędna dla współpracy między mikroserwisami, ponieważ pozwala na wymianę danych i poleceń w sposób zorganizowany i niezależny. Wreszcie, skalowalność poszczególnych usług oznacza, że można dostosować zasoby do zmieniających się potrzeb i obciążenia systemu, co jest kluczowe w dzisiejszych dynamicznych środowiskach IT. Typowym błędem jest zrozumienie architektury mikroserwisów jako jedynie rozdzielenia kodu. W rzeczywistości wymaga to zmiany podejścia do projektowania, wdrażania i zarządzania systemami. Nieprawidłowa interpretacja tych pojęć może prowadzić do stworzenia systemu, który nie wykorzystuje pełnych korzyści płynących z mikroserwisów, takich jak elastyczność, łatwość w skalowaniu i efektywne zarządzanie zespołami. Zamiast tego można wprowadzić architekturę, która jest jedynie zbiorem monolitów, co nie spełnia oczekiwań nowoczesnych aplikacji internetowych i mobilnych.

Pytanie 29

Wskaź kod, który spowoduje wyświetlenie okna dialogowego przedstawionego na ilustracji. Dla uproszczenia kodu, zrezygnowano z atrybutów znaczników

Ilustracja do pytania
A. kod 1
B. kod 3
C. kod 4
D. kod 2
W przypadku niepoprawnych odpowiedzi, wygląda na to, że coś poszło nie tak w rozmieszczeniu elementów. Kod 1, na przykład, ma Label, ale zamiast TextBoxa, co nie zgadza się z tym, co widzimy na obrazku. Label to tylko tekst, a TextBox to to, co pozwala na interakcję. Potem mamy kod 3, który ma ListBox. To nie jest to, czego szukamy, bo ListBox wyświetla listę, a tu go nie było. Kod 4 z ComboBoxem też nie jest odpowiedni, bo ten komponent ma rozwijaną listę, a to się nie zgadza z naszym oknem. To mogą być typowe pułapki, gdy nie do końca rozumie się różnice między kontrolkami. Dlatego warto przyjrzeć się jeszcze raz wszystkim wymaganiom wizualnym i funkcjonalnym, żeby dobrze dobrać elementy. Zrozumienie tych różnic jest naprawdę ważne, jak się projektuje interfejsy.

Pytanie 30

Mobilna aplikacja przedstawia listę, w której każdy element można dotknąć palcem, aby zobaczyć jego detale. Zdarzenie, które odpowiada tej czynności, to

A. toggled.
B. value changed.
C. button clicked.
D. tapped.
Zdarzenie 'toggled' mówi o przełącznikach, czyli o tych małych suwakach, co zmieniają stan. 'Value changed' to w sumie zmiana wartości w różnych kontrolkach, takich jak suwaki czy pola tekstowe. A 'Button clicked' dotyczy przycisków, a nie elementów z listy. Każde z tych zdarzeń ma swój cel w interfejsie, więc warto o tym pamiętać.

Pytanie 31

W jakich sytuacjach zastosowanie rekurencji może być bardziej korzystne niż użycie iteracji?

A. Kiedy program jest uruchamiany w środowisku wielowątkowym
B. Gdy kod źródłowy ma być zoptymalizowany dla starszych kompilatorów
C. Kiedy liczba iteracji przewyższa maksymalny zakres zmiennej licznikowej
D. Gdy algorytm wymaga naturalnego podziału na mniejsze podproblemy
Przekroczenie zakresu zmiennej licznikowej nie jest powodem, dla którego rekurencja jest bardziej efektywna. Problemy z zakresami zmiennych licznikowych można rozwiązać poprzez odpowiedni dobór typów danych, a nie przez zastosowanie rekurencji. Programowanie wielowątkowe nie jest bezpośrednio związane z rekurencją – chociaż niektóre algorytmy rekurencyjne mogą być implementowane w środowisku wielowątkowym, nie jest to ich główne zastosowanie. Optymalizacja kodu dla starszych kompilatorów nie ma związku z rekurencją, ponieważ starsze kompilatory mogą mieć ograniczoną obsługę rekurencji lub generować mniej efektywny kod rekurencyjny.

Pytanie 32

Jakie jest podstawowe użycie metod wirtualnych?

A. Umożliwienie wielokrotnego dziedziczenia
B. Zapewnienie, że metoda działa wyłącznie na danych statycznych
C. Umożliwienie dynamicznego wiązania metod w czasie wykonania
D. Umożliwienie korzystania z metod bezpośrednio z klasy bazowej
Umożliwienie korzystania z metod bezpośrednio z klasy bazowej nie jest funkcją metod wirtualnych – to raczej standardowa cecha metod publicznych. Metody działające wyłącznie na danych statycznych nie mogą być wirtualne, ponieważ ich działanie nie jest zależne od instancji klasy. Umożliwienie wielokrotnego dziedziczenia jest funkcją konstrukcji dziedziczenia w językach takich jak C++, ale samo w sobie nie wymaga metod wirtualnych, chociaż mogą one być używane w kontekście wielokrotnego dziedziczenia.

Pytanie 33

Jaką istotną właściwość ma algorytm rekurencyjny?

A. Funkcjonuje tylko w przypadku tablic dynamicznych
B. Jest podzielony na wiele niezwiązanych funkcji
C. Zawiera wywołanie samego siebie
D. Wywołuje się wielokrotnie w jednej iteracji
Wywołanie funkcji wielokrotnie w jednej iteracji jest charakterystyczne dla algorytmów iteracyjnych, a nie rekurencyjnych. Podział algorytmu na wiele niezależnych funkcji to część modularności i nie wskazuje jednoznacznie na rekurencję. Algorytmy działające wyłącznie na tablicach dynamicznych mogą być zarówno iteracyjne, jak i rekurencyjne, jednak to rekurencyjne wywołanie samego siebie stanowi kluczowy wyróżnik rekurencyjnego podejścia do problemów.

Pytanie 34

Jakie jest główne zadanie debuggera w środowisku programowania?

A. Tworzenie kodu źródłowego
B. Generowanie plików wykonywalnych
C. Kompilowanie kodu źródłowego
D. Analiza i usuwanie błędów w kodzie
Pisanie kodu źródłowego jest podstawową funkcją edytora kodu, a nie debuggera. Tworzenie plików wykonywalnych odbywa się za pomocą kompilatora, a nie debuggera. Kompilowanie kodu to proces tłumaczenia kodu źródłowego na język maszynowy i również nie jest funkcją debuggera, choć debugger może współpracować z kompilatorem w trakcie analizy błędów. Pominięcie debuggera w procesie tworzenia aplikacji mogłoby prowadzić do błędów w finalnym produkcie, dlatego jego rola jest kluczowa na etapie testowania i optymalizacji kodu.

Pytanie 35

Jakie są różnice między konstruktorem a zwykłą metodą w klasie?

A. Konstruktor można wywołać bez konieczności tworzenia obiektu
B. Konstruktor powinien zwracać jakąś wartość
C. Konstruktor zawsze nosi tę samą nazwę co klasa i nie zwraca wartości
D. Konstruktor jest uruchamiany jedynie przez destruktor
Konstruktor różni się od zwykłych metod klasy tym, że nosi taką samą nazwę jak klasa i nie zwraca żadnej wartości, nawet `void`. Konstruktor jest wywoływany automatycznie podczas tworzenia obiektu i nie można go wywołać ręcznie jak zwykłą metodę. Jego zadaniem jest inicjalizacja pól obiektu i przygotowanie go do działania. Przykład w C++: `class Samochod { public: Samochod() { marka = "Ford"; } }`. W przeciwieństwie do innych metod konstruktor nie wymaga deklaracji typu zwracanego, co jest jedną z jego najbardziej charakterystycznych cech.

Pytanie 36

Co to jest polimorfizm w programowaniu obiektowym?

A. Zdolność klasy do posiadania wielu konstruktorów
B. Mechanizm ukrywania szczegółów implementacji przed zewnętrznymi klasami
C. Proces tworzenia nowej klasy na podstawie istniejącej
D. Zdolność obiektów różnych klas do reagowania na tę samą metodę w sposób odpowiedni dla ich klasy
W programowaniu obiektowym pojawia się wiele koncepcji, które mogą być mylone z polimorfizmem, niemniej żadna z nich w pełni nie oddaje istoty tego pojęcia. Na przykład ukrywanie szczegółów implementacji, czyli enkapsulacja, to proces, który ma na celu zabezpieczenie danych obiektu przed nieautoryzowanym dostępem, ale nie ma związku z możliwością różnych klas do reagowania w ten sam sposób na jedną metodę. Z kolei dziedziczenie, które polega na tworzeniu nowej klasy na bazie istniejącej, to mechanizm, który pozwala na rozszerzanie funkcjonalności, ale wcale nie zapewnia, że obiekty klas dziedziczących będą miały tę samą metodę, ani że będą się zachowywały w sposób zgodny z polimorfizmem. Kolejnym błędnym podejściem jest myślenie, że polimorfizm odnosi się do posiadania wielu konstruktorów w tej samej klasie. Choć nadmiarowość konstruktorów jest ważna, to nie ma ona nic wspólnego z elastycznością obiektów i ich zdolnością do reagowania na te same metody. Zazwyczaj błędne rozumienie polimorfizmu wynika z niejasności w zakresie dziedziczenia i interfejsów, co może prowadzić do niepoprawnego projektowania systemów w programowaniu obiektowym. W praktyce polimorfizm oznacza, że obiekty różnych klas mogą być traktowane jako obiekty tej samej klasy, co jest istotne dla realizacji wielu wzorców projektowych.

Pytanie 37

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

SELECT COUNT(*) FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);

A. Liczba pracowników z najwyższą pensją
B. Błąd składni SQL
C. Liczba pracowników z pensją powyżej średniej
D. Średnia pensja wszystkich pracowników
Inne odpowiedzi sugerują mylne interpretacje funkcji i logiki zapytania SQL. Odpowiedź wskazująca na średnią pensję wszystkich pracowników nie uwzględnia faktu, że zapytanie nie zwraca wartości średniej, lecz liczbę pracowników, którzy zarabiają powyżej tej wartości. Odpowiedź odnosząca się do liczby pracowników z najwyższą pensją również jest niepoprawna, ponieważ w zapytaniu nie ma żadnych odniesień do konkretnego wynagrodzenia, a jedynie do wartości średniej. Ponadto, stwierdzenie, że zapytanie generuje błąd składni SQL, jest błędne, ponieważ składnia jest poprawna i zgodna z standardami SQL. Kluczową kwestią jest zrozumienie, że zapytania SQL mogą wykorzystywać zagnieżdżone zapytania do dynamicznego obliczania wartości w kontekście zbioru danych. Często popełnianym błędem jest mylenie funkcji agregujących z prostymi operacjami na kolumnach. Warto więc zaznajomić się z różnymi typami zapytań oraz ich zastosowaniem w praktyce, aby zwiększyć efektywność analizy danych. Zrozumienie logiki działania zagnieżdżonych zapytań oraz funkcji agregujących jest kluczowe dla skutecznej pracy z bazami danych.

Pytanie 38

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

Ilustracja do pytania
A. Zawierają przeciążenie operatora.
B. Są przeciążone.
C. Zawierają błąd, ponieważ nazwy metod powinny być różne.
D. Służą jako konstruktory w zależności od liczby argumentów.
Metody przeciążone mogą mieć tę samą nazwę – różnią się sygnaturą, czyli liczbą i typami argumentów, co jest zgodne z zasadami programowania obiektowego. Przeciążenie metod to nie to samo co przeciążenie operatorów, które polega na definiowaniu nowego sposobu działania operatorów (np. +, -, *). Pełnienie funkcji konstruktorów to inny mechanizm i dotyczy głównie klas i ich instancjonowania, nie przeciążania metod.

Pytanie 39

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

A. Postman
B. Chrome DevTools
C. Git
D. Blender
Git jest systemem kontroli wersji, który pomaga zarządzać kodem źródłowym i śledzić zmiany, ale nie służy do debugowania aplikacji webowych. Postman to narzędzie do testowania API, które pozwala na wysyłanie zapytań HTTP, ale nie umożliwia debugowania interfejsów webowych ani modyfikacji DOM. Blender jest narzędziem do modelowania 3D i animacji, nie mającym związku z debugowaniem aplikacji webowych.

Pytanie 40

Jaką rolę pełni instrukcja throw w języku C++?

A. Ogranicza zasięg zmiennych w bloku try
B. Inicjuje nowy wyjątek podczas działania aplikacji
C. Zgłasza wyjątek, który można przechwycić za pomocą bloku catch
D. Przerywa działanie programu, gdy wystąpi wyjątek
Tworzenie nowego wyjątku to nieco inne zastosowanie – 'throw' zgłasza wyjątek, ale jego utworzenie odbywa się wcześniej (np. przez wywołanie 'new Exception()'). Kończenie działania programu to skutek nieprzechwyconego wyjątku, ale samo 'throw' nie kończy programu – pozwala na jego kontynuację, jeśli wyjątek zostanie przechwycony. Ograniczenie zakresu zmiennych w bloku 'try' nie jest funkcją instrukcji 'throw' – to raczej wynik działania samego bloku 'try', który wprowadza ograniczony zakres zmiennych do czasu obsługi wyjątku.