Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 13 stycznia 2025 06:12
  • Data zakończenia: 13 stycznia 2025 06:22

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

W jakim języku został stworzony framework Angular?

A. C#
B. Postscript
C. Typescript
D. PHP
Postscript – Jest to język opisu stron, niepowiązany z Angular. PHP – Używany głównie do tworzenia aplikacji backendowych, nie do frameworków frontendowych. C# – Jest to język Microsoftu, głównie używany do tworzenia aplikacji desktopowych i webowych w technologii ASP.NET, ale nie do Angular.

Pytanie 2

Z analizy złożoności obliczeniowej algorytmów sortowania dla dużych zbiorów danych (powyżej 100 elementów) wynika, że najefektywniejszą metodą jest algorytm sortowania:

Ilustracja do pytania
A. kubełkowego
B. przez zliczanie
C. bąbelkowego
D. przez scalanie
Sortowanie przez zliczanie (Counting Sort) to jeden z najszybszych algorytmów sortowania dla dużych zbiorów danych, jeśli zakres wartości jest ograniczony. Algorytm działa w czasie O(n+k), gdzie n to liczba elementów, a k to zakres wartości. Jest to algorytm stabilny, co oznacza, że zachowuje kolejność elementów o tej samej wartości. Counting Sort jest szczególnie efektywny w przypadku danych numerycznych o ograniczonym przedziale wartości, co czyni go idealnym rozwiązaniem do sortowania dużych zbiorów danych w krótkim czasie.

Pytanie 3

Jakie działanie związane z klasą abstrakcyjną jest niedozwolone?

A. Utworzenie instancji tej klasy
B. Definiowanie pól publicznych
C. Określenie metody wirtualnej
D. Rozszerzanie tej klasy
Deklaracja pól publicznych w klasie abstrakcyjnej jest całkowicie dozwolona i może być używana do udostępniania danych w klasach pochodnych. Wprowadzenie pól publicznych w klasie abstrakcyjnej pozwala na określenie podstawowych atrybutów, które będą współdzielone przez wszystkie klasy dziedziczące. Może to być przydatne w kontekście encapsulacji i zarządzania danymi w aplikacjach. Deklaracja metody wirtualnej również jest prawidłowa, gdyż klasy abstrakcyjne mogą zawierać metody, które są zdefiniowane jako wirtualne, co umożliwia ich nadpisywanie w klasach pochodnych. Dzięki temu, programiści mogą budować bardziej elastyczne i modułowe aplikacje. Dziedziczenie po klasie abstrakcyjnej jest podstawowym stosowaniem tego typu klas, gdyż pozwala na tworzenie hierarchii, w której klasy pochodne muszą implementować abstrakcyjne metody zdefiniowane w klasie bazowej. Dziedziczenie wspiera ponadto zasady programowania obiektowego, takie jak ponowne wykorzystanie kodu i polimorfizm, co czyni je kluczowym elementem nowoczesnego programowania.

Pytanie 4

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

Ilustracja do pytania
A. wiązać właściwości (property) elementu interfejsu użytkownika z danymi lub właściwością innego obiektu
B. wiązanie oraz eksportowanie plików z różnych modułów aplikacji
C. przetwarzanie zdarzeń kontrolek interfejsu użytkownika przez wywoływanie odpowiednich funkcji
D. zarządzanie mechanizmem obietnic (promises) lub obserwatora (observable) w programowaniu asynchronicznym
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 5

W języku Java wyjątek ArrayIndexOutOfBoundsException występuje, gdy następuje próba dostępu do elementu tablicy, którego

A. wartość przewyższa jego indeks
B. indeks jest równy lub większy od rozmiaru tablicy
C. wartość przekracza rozmiar tablicy
D. indeks mieści się w zakresie od 0 do n-1, gdzie n oznacza rozmiar tablicy
Indeks większy niż rozmiar – Indeks równy rozmiarowi również powoduje błąd. Indeks w przedziale 0 do n-1 – To poprawny zakres, nie generujący błędu. Wartość większa niż indeks – Nie wpływa na wystąpienie wyjątku, błąd wynika z odwołania się do nieistniejącego indeksu.

Pytanie 6

Celem mechanizmu obietnic (ang. promises) w języku JavaScript jest

A. zarządzanie przechwytywaniem błędów aplikacji
B. zastąpienie mechanizmu dziedziczenia w programowaniu obiektowym
C. ulepszenie czytelności kodu synchronicznego
D. zarządzanie funkcjonalnością związaną z kodem asynchronicznym
Promisy nie zastępują dziedziczenia – dziedziczenie to koncepcja związana z programowaniem obiektowym. Nie poprawiają czytelności kodu synchronicznego, ponieważ są narzędziem dla kodu asynchronicznego. Obsługa błędów w aplikacjach jest realizowana przez bloki try-catch lub specjalne metody, a nie przez promisy bezpośrednio.

Pytanie 7

Która z wymienionych cech dotyczy klasy statycznej?

A. Może być dziedziczona przez klasy potomne
B. Jest automatycznie usuwana po zakończeniu działania programu
C. Nie może zawierać ani zmiennych, ani metod
D. Może zawierać wyłącznie statyczne pola i metody
Klasa statyczna to klasa, która może zawierać tylko statyczne pola i metody. Tego rodzaju klasy są często wykorzystywane do implementacji narzędziowych funkcji, które nie wymagają tworzenia instancji obiektu. Klasy statyczne są typowe dla języków takich jak C# czy Java, gdzie mogą one pełnić rolę kontenerów na metody pomocnicze (np. klasa 'Math' w C#). Główną zaletą klas statycznych jest to, że można je wywoływać bez konieczności tworzenia instancji, co znacząco upraszcza kod i zwiększa jego czytelność. Klasy statyczne zapewniają również bezpieczeństwo w dostępie do danych, ponieważ eliminują ryzyko przypadkowego zmodyfikowania instancji obiektu.

Pytanie 8

Który z wymienionych poniżej przykładów stanowi system informacji przetwarzany przez system informatyczny?

A. System do monitorowania temperatury serwerów
B. System wentylacyjny w biurowcach
C. System PESEL
D. System zarządzania oświetleniem drogowym
System PESEL (Powszechny Elektroniczny System Ewidencji Ludności) jest przykładem systemu informacji przetwarzanym przez system informatyczny, ponieważ gromadzi, przetwarza i udostępnia dane osobowe obywateli Polski. Jest to złożony system, który działa na bazie zintegrowanych baz danych, umożliwiający identyfikację osób, przydzielanie numerów PESEL oraz zarządzanie informacjami o statusie mieszkańców. System ten jest niezbędny dla organów administracji publicznej, umożliwiając im efektywne zarządzanie danymi obywateli w kontekście takich usług, jak wydawanie dowodów osobistych, rejestracja wyborców, a także w kontekście ochrony zdrowia i ubezpieczeń społecznych. PESEL jest zgodny z Europejskim Ogólnochronnym Rozporządzeniem o Ochronie Danych Osobowych (RODO), co dodatkowo podkreśla jego rolę jako kluczowego systemu informacyjnego w obiegu danych w Polsce. Przykłady zastosowań systemu PESEL obejmują obsługę wniosków o świadczenia socjalne oraz dostęp do e-usług, co świadczy o jego fundamentalnym znaczeniu w administrowaniu danymi ludnościowymi.

Pytanie 9

Zmienna o typie logicznym może mieć następujące wartości:

A. 0 oraz każda liczba całkowita
B. true, false
C. 1, -1
D. trzy dowolne liczby naturalne
Typ logiczny (boolean) może przyjąć jedynie dwie wartości: true (prawda) i false (fałsz). Jest to fundamentalna zasada w programowaniu, ponieważ zmienne logiczne są podstawą operacji warunkowych, pętli oraz sterowania przepływem programu. W językach takich jak C++, Java, Python i wielu innych, wartości logiczne pozwalają na budowanie złożonych struktur decyzyjnych. Dzięki nim programista może precyzyjnie kontrolować, które fragmenty kodu zostaną wykonane, co jest kluczowe w implementacji algorytmów oraz walidacji danych.

Pytanie 10

Wskaż algorytm sortowania, który nie jest stabilny?

A. sortowanie przez wstawianie
B. sortowanie bąbelkowe
C. sortowanie przez zliczanie
D. sortowanie szybkie
Sortowanie bąbelkowe (Bubble Sort) jest stabilne, ponieważ nie zmienia kolejności elementów o równej wartości. Sortowanie przez wstawianie (Insertion Sort) również zachowuje stabilność. Sortowanie przez zliczanie (Counting Sort) to algorytm stabilny, szczególnie efektywny dla danych o ograniczonym zakresie wartości.

Pytanie 11

Użycie modyfikatora abstract w definicji metody w klasie wskazuje, że

A. dziedziczenie po tej klasie jest niedozwolone
B. trzeba zaimplementować tę metodę w tej klasie
C. klasa ta stanowi podstawę dla innych klas
D. klasy pochodne nie mogą implementować tej metody
Modyfikator 'abstract' w definicji klasy oznacza, że klasa ta jest bazowa dla innych klas i nie można jej instancjonować bezpośrednio. Taka klasa zawiera co najmniej jedną metodę abstrakcyjną, którą muszą zaimplementować klasy pochodne.

Pytanie 12

Modyfikator dostępu znajdujący się przed definicją metody Dodaj() w klasie Kalkulator sprawia, że:

Ilustracja do pytania
A. nie jest ona dostępna z poziomu klas, które są zaprzyjaźnione z klasą Kalkulator
B. jest ona dostępna zarówno w samej klasie, jak i w klasach dziedziczących po klasie Kalkulator
C. nie jest ona osiągalna w klasach, które dziedziczą po klasie Kalkulator
D. jest ona możliwa do wykorzystania w programie głównym i można ją wywołać na instancji klasy Kalkulator
Metody, które są prywatne albo chronione, nie dadzą się wywołać w klasach dziedziczących, a publiczne metody są dostępne wszędzie. No i ten modyfikator, który działa tylko w głównym programie, ogranicza, jak pracujesz z kodem. Dziedziczenie natomiast daje ci więcej możliwości, żeby zrobić kod bardziej modularnym.

Pytanie 13

Termin ryzyko zawodowe odnosi się do

A. ciężkości skutków niepożądanych zdarzeń związanych z pracą
B. prawdopodobieństwa, że zdarzenia niepożądane związane z pracą spowodują straty, w szczególności negatywne skutki zdrowotne dla pracowników
C. efektów zagrożeń wypadkowych, jakie występują w miejscu zatrudnienia
D. zagrożenia wypadkowego, które może wystąpić w miejscu pracy
Ryzyko zawodowe to prawdopodobieństwo wystąpienia niepożądanych zdarzeń związanych z pracą, mogących prowadzić do strat zdrowotnych lub materialnych. Ocena ryzyka to kluczowy element zarządzania bezpieczeństwem pracy.

Pytanie 14

Jaki typ pamięci RAM powinno się wybrać do efektywnego komputera do gier?

A. DDR5
B. DDR3
C. DDR4
D. LPDDR4
Wybór pamięci RAM DDR3 jest niewłaściwy dla współczesnych komputerów gamingowych, ponieważ jest to starszy standard, którego prędkość nie przekracza zazwyczaj 2133 MT/s. Oznacza to, że DDR3 nie jest w stanie sprostać wymaganiom nowoczesnych gier i aplikacji, które potrzebują szybkiego transferu danych oraz dużej przepustowości. DDR4, mimo że jest nowszym standardem, również może być niewystarczający w kontekście wydajności gier. Oferuje prędkości od 2400 MT/s do 3200 MT/s, co wciąż może być ograniczone w przypadku gier wymagających intensywnego przetwarzania danych, zwłaszcza w kontekście VR czy gier AAA. LPDDR4, z kolei, jest zaprojektowane z myślą o urządzeniach mobilnych, oferując lepszą efektywność energetyczną, co czyni je odpowiednim do laptopów, ale nie jest odpowiednie do komputerów stacjonarnych przeznaczonych do gier. Wysoka wydajność i prędkości potrzebne dla gamingowych komputerów stacjonarnych są niedostępne w przypadku LPDDR4, co czyni go złym wyborem dla poważnych graczy.

Pytanie 15

Który z warunków logicznych weryfikuje, czy zmienna całkowita x jest dodatnią liczbą składającą się z dwóch cyfr i jest podzielna przez 4?

A. (x > 9 && x < 100) && (x % 4 == 0)
B. (x > 0 && x < 100) || (x / 4 == 0)
C. (x > 9 && x < 100) || (x % 4 == 0)
D. (x > 9 || x < 100) && (x / 4 == 0)
Warunek (x > 9 && x < 100) && (x % 4 == 0) sprawdza, czy zmienna x jest dodatnią liczbą dwucyfrową podzielną przez 4. Dzięki operatorom logicznym && programista może precyzyjnie określić, czy liczba mieści się w odpowiednim zakresie i spełnia wymagania dotyczące podzielności. Tego typu warunki są niezbędne przy filtrowaniu danych i walidacji użytkowych wejść.

Pytanie 16

Jakie jest podstawowe użycie metod wirtualnych?

A. Umożliwienie korzystania z metod bezpośrednio z klasy bazowej
B. Umożliwienie wielokrotnego dziedziczenia
C. Umożliwienie dynamicznego wiązania metod w czasie wykonania
D. Zapewnienie, że metoda działa wyłącznie na danych statycznych
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 17

Które z poniższych zdań najlepiej określa funkcję zaprzyjaźnioną w ramach klasy?

A. Funkcja, która ma dostęp do prywatnych pól i metod klasy, z którą jest zaprzyjaźniona
B. Funkcja, która jest statyczna i nie ma możliwości modyfikacji pól klasy
C. Funkcja, która pozwala na dziedziczenie wielokrotne
D. Funkcja, która uruchamia się automatycznie po stworzeniu obiektu
Funkcja zaprzyjaźniona (ang. friend function) to funkcja, która ma dostęp do prywatnych i chronionych pól oraz metod klasy, mimo że nie jest jej częścią. Służy do realizacji operacji wymagających bezpośredniego dostępu do wewnętrznych elementów klasy, ale bez naruszania zasad hermetyzacji. Przykład w C++: `class Konto { private: double saldo; friend void wyswietlSaldo(Konto k); }`. Funkcja `wyswietlSaldo` może odczytać pole `saldo`, mimo że jest ono prywatne. Funkcje zaprzyjaźnione są używane, gdy konieczna jest bliska współpraca między klasami lub funkcjami, ale nie chcemy nadmiernie otwierać interfejsu klasy.

Pytanie 18

Jaką cechę powinien posiadać dobry negocjator?

A. przechwalanie się
B. myślenie tylko o sobie
C. spokój
D. brak pewności
Cechą dobrego negocjatora jest opanowanie, które odgrywa kluczową rolę w procesie negocjacji. Osoba potrafiąca zachować spokój w trudnych sytuacjach może lepiej ocenić sytuację, zrozumieć potrzeby drugiej strony oraz zidentyfikować potencjalne punkty konfliktu. Opanowanie pozwala na skuteczne zarządzanie emocjami, co jest niezbędne w celu osiągnięcia korzystnych rezultatów. Przykładem może być sytuacja, w której negocjator musi zmierzyć się z agresywnym przeciwnikiem; zachowanie zimnej krwi pozwala na analizę sytuacji bez emocjonalnych impulsów. Ponadto, opanowanie wpływa na postrzeganie osoby negocjującej przez innych, budując zaufanie i respekt. W kontekście standardów negocjacyjnych, takich jak BATNA (Best Alternative to a Negotiated Agreement), opanowanie umożliwia lepsze podejmowanie decyzji w trudnych sytuacjach. Dlatego umiejętność zachowania spokoju jest fundamentem skutecznych negocjacji.

Pytanie 19

Jakie znaczenie ma określenie "klasa zaprzyjaźniona" w kontekście programowania obiektowego?

A. Klasa, w której wszystkie komponenty są publiczne
B. Klasa, która nie ma możliwości zawierania metod statycznych
C. Klasa, która może być dziedziczona przez inne klasy
D. Klasa, która ma dostęp do prywatnych i chronionych elementów innej klasy
Klasa zaprzyjaźniona (ang. 'friend class') to klasa, która ma dostęp do prywatnych i chronionych składowych innej klasy, dzięki specjalnej deklaracji 'friend' wewnątrz tej klasy. Jest to kluczowe narzędzie w programowaniu obiektowym, które umożliwia ściślejszą współpracę między klasami, jednocześnie zapewniając hermetyzację kodu w miejscach, gdzie jest to wymagane. Używanie klas zaprzyjaźnionych umożliwia bardziej efektywne zarządzanie zależnościami między klasami, co jest istotne w dużych projektach programistycznych. Klasy zaprzyjaźnione są często stosowane w bibliotekach standardowych i frameworkach, pozwalając na eleganckie rozwiązania problemów związanych z ukrywaniem implementacji i udostępnianiem tylko niezbędnych fragmentów kodu innym komponentom systemu.

Pytanie 20

Który z komponentów interfejsu użytkownika umożliwia użytkownikowi wprowadzanie danych tekstowych?

A. Pasek narzędziowy
B. Dialog wyboru pliku
C. Pole tekstowe
D. Przycisk
Pole tekstowe to element interfejsu użytkownika, który pozwala użytkownikowi na wprowadzanie danych tekstowych. Jest to jeden z najczęściej używanych komponentów UI w aplikacjach desktopowych, mobilnych i webowych. Pole tekstowe umożliwia wprowadzanie haseł, adresów e-mail, wiadomości i innych danych. W nowoczesnych aplikacjach często zawiera walidację, która sprawdza poprawność wpisywanych danych w czasie rzeczywistym. Dzięki swojej elastyczności, pola tekstowe mogą być wykorzystywane w różnorodnych formularzach, ankietach i systemach rejestracji użytkowników, co czyni je nieodzownym elementem aplikacji o dowolnym przeznaczeniu.

Pytanie 21

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

Ilustracja do pytania
A. kolejka
B. tablica
C. stos
D. drzewo binarne
Kolejki działają na zasadzie FIFO (First In, First Out), a tablice umożliwiają dostęp do elementów za pomocą indeksów. Drzewa binarne natomiast to bardziej złożone struktury, służące do reprezentowania hierarchicznych danych i wyszukiwania.

Pytanie 22

W obrębie klasy pracownik zdefiniowano przedstawione metody. Którą z nich można zgodnie z jej funkcją rozszerzyć o element diagnostyczny o treści: cout << "Obiekt został usunięty";

Ilustracja do pytania
A. ~pracownik
B. pracownik
C. wypisz
D. operator==
Operator== porównuje obiekty, ale nie jest odpowiedzialny za ich usuwanie. Konstruktor (pracownik) służy do inicjalizacji obiektów, a nie ich niszczenia. Metoda wypisz służy do wyświetlania informacji, ale nie zajmuje się zarządzaniem cyklem życia obiektu.

Pytanie 23

Aplikacje webowe stworzone z użyciem frameworka Angular lub biblioteki React, działające na standardowych portach, można uruchomić na lokalnym serwerze, wpisując w przeglądarkę

A. localhost:5001 (React) lub localhost:8080 (Angular)
B. localhost:8080 (React) lub localhost:8000 (Angular)
C. localhost:3000 (React) lub localhost:4200 (Angular)
D. localhost:8000 (React) lub localhost:49887 (Angular)
Domyślne porty dla aplikacji tworzonych w React to localhost:3000, a dla Angular to localhost:4200. Te ustawienia pozwalają na szybkie uruchomienie aplikacji na lokalnym serwerze podczas fazy deweloperskiej. React i Angular to popularne technologie do budowy nowoczesnych aplikacji webowych, a korzystanie z domyślnych portów upraszcza proces testowania i wdrażania.

Pytanie 24

Która z wymienionych bibliotek pozwala na obsługę zdarzeń związanych z myszą w aplikacjach desktopowych?

A. Qt
B. Numpy
C. TensorFlow
D. Django
Numpy to biblioteka do obliczeń numerycznych w języku Python i nie posiada narzędzi do obsługi zdarzeń graficznych w aplikacjach desktopowych. Django to framework do budowy aplikacji webowych w Pythonie, koncentrujący się na backendzie, a nie na tworzeniu GUI czy interakcji z myszą. TensorFlow to biblioteka do uczenia maszynowego i przetwarzania danych, nieprzystosowana do tworzenia aplikacji desktopowych obsługujących zdarzenia myszki i klawiatury.

Pytanie 25

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

A. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
B. Eliminuje potrzebę korzystania ze zmiennych globalnych
C. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
D. Gwarantuje automatyczną kompilację programu
Usunięcie komentarzy w kodzie nie ma wpływu na podział programu na funkcje. Komentarze pełnią rolę informacyjną dla programistów i nie wpływają na działanie kodu. Automatyczna kompilacja programu to proces wykonywany przez kompilator i nie ma związku z dzieleniem programu na funkcje – kompilator przetwarza kod niezależnie od tego, czy program jest podzielony na funkcje czy napisany jako jeden blok. Eliminacja zmiennych globalnych to dobra praktyka, ale dzielenie programu na funkcje nie eliminuje automatycznie potrzeby ich stosowania. W rzeczywistości funkcje mogą nadal korzystać ze zmiennych globalnych, jeśli nie zostaną odpowiednio zaprojektowane.

Pytanie 26

Działania przedstawione w filmie korzystają z narzędzia

A. generatora kodu java
B. kompilatora dla interfejsu graficznego
C. debuggera analizującego wykonujący kod
D. generatora GUI przekształcającego kod do języka XAML
Debugger analizuje wykonywany kod, ale nie zajmuje się tworzeniem interfejsów graficznych. Kreator kodu Java jest narzędziem wspomagającym generowanie kodu aplikacji, a nie GUI. Kompilator interfejsu graficznego odpowiada za przekształcanie gotowego kodu, ale nie za tworzenie interaktywnych elementów wizualnych w czasie rzeczywistym.

Pytanie 27

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 Samochód i Pojazd nie są ze sobą powiązane
D. Klasa Pojazd nie dziedziczy z żadnej klasy
Klasa 'Pojazd' dziedzicząca po klasie 'Samochód' jest błędnym przykładem hierarchii – bardziej ogólne pojęcia powinny znajdować się wyżej w hierarchii dziedziczenia. Klasa 'Pojazd' nie dziedzicząca po żadnej klasie jest podstawową klasą bazową, ale to nie stanowi przykładu hierarchii dziedziczenia. Brak powiązań między klasami 'Samochód' i 'Pojazd' oznacza brak hierarchii – są to niezależne klasy, co eliminuje korzyści wynikające z dziedziczenia i ponownego użycia kodu.

Pytanie 28

W zaprezentowanym wideo przedstawiono narzędzie do tworzenia interfejsu użytkownika, dla którego automatycznie generuje się

A. obsługa przycisku ekranu dotykowego
B. obsługa wciśniętego przycisku
C. kod Java
D. kod XML
W kreatorze interfejsu użytkownika automatycznie generowany jest kod XML, który opisuje układ i właściwości elementów interfejsu. XML jest standardem w tworzeniu interfejsów dla aplikacji na platformy Android i WPF.

Pytanie 29

Które z wymienionych poniżej błędów podczas wykonywania programu można obsłużyć poprzez zastosowanie wyjątków?

A. Błąd dzielenia przez zero
B. Błąd w składni
C. Niekompatybilność typów danych w kodzie
D. Błąd kompilacyjny
Błędy składniowe są wykrywane na etapie kompilacji i nie mogą być obsługiwane za pomocą wyjątków – kompilator generuje komunikat o błędzie, zanim program zostanie uruchomiony. Błędy kompilacji, takie jak niezgodność typów danych, również są wychwytywane na etapie kompilacji i wymagają poprawienia kodu źródłowego. Wyjątki są przeznaczone do obsługi błędów, które występują w czasie wykonywania programu, a nie błędów wykrywanych przez kompilator. Dlatego obsługa błędów składniowych i kompilacyjnych wymaga innego podejścia niż mechanizm wyjątków.

Pytanie 30

Jakie wyrażenie logiczne powinno być użyte, aby zweryfikować, czy zmienna x zawiera wartości ujemne lub znajduje się w zakresie (10, 100)?

A. x > 10 || x < 100 || x < 0
B. (x > 10 || x < 100) && x < 0
C. x > 10 || x < 100 || x < 0
D. (x > 10 && x < 100) || x < 0
Poprawnym wyrażeniem logicznym sprawdzającym, czy zmienna x przechowuje wartości ujemne lub z przedziału (10, 100) jest (x > 10 && x < 100) || x < 0. Logika ta gwarantuje, że wartość x spełnia jeden z dwóch warunków: mieści się w przedziale lub jest ujemna.

Pytanie 31

Podaj przykład incydentu w miejscu pracy?

A. złe samopoczucie spowodowane przewlekłą chorobą zatrudnionego, które wystąpiło w biurze
B. kontuzja stawu skokowego, która zdarzyła się w trakcie bezpośredniej drogi do miejsca zatrudnienia
C. oparzenie dłoni, które miało miejsce podczas nieobowiązkowego szkolenia w czasie prywatnym pracownika
D. złamanie nogi w trakcie urlopu wypoczynkowego przyznanego przez pracodawcę
Jak dla mnie, to uraz stawu skokowego w drodze do pracy jak najbardziej można uznać za wypadek przy pracy. Wiesz, nawet jeśli to się wydarzy poza firmą, to jeśli szedłeś prosto do niej, to masz prawo do ochrony i świadczeń z ubezpieczenia. To ważne, żeby to wiedzieć.

Pytanie 32

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

A. Inicjuje nowy wyjątek podczas działania aplikacji
B. Zgłasza wyjątek, który można przechwycić za pomocą bloku catch
C. Przerywa działanie programu, gdy wystąpi wyjątek
D. Ogranicza zasięg zmiennych w bloku try
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.

Pytanie 33

W jaki sposób definiuje się konstruktor kopiujący w ramach klasy?

A. Generuje nowy obiekt klasy bez przypisywania wartości
B. Inicjuje obiekt klasy na podstawie klasy dziedziczącej
C. Tworzy nowy obiekt jako wierną kopię innego obiektu
D. Generuje nowy obiekt i usuwa wcześniejszy
Konstruktor kopiujący to specjalny typ konstruktora, który tworzy nowy obiekt będący dokładną kopią innego obiektu tej samej klasy. Jest to niezwykle przydatne, gdy chcemy zduplikować istniejący obiekt, zachowując jego stan i wartości wszystkich składowych. Konstruktor kopiujący przyjmuje jako argument referencję do obiektu tej samej klasy, co pozwala na kopiowanie zarówno podstawowych typów danych, jak i dynamicznie alokowanych zasobów. Jego zastosowanie jest kluczowe w sytuacjach, gdy musimy pracować z obiektami dynamicznymi lub kopiować obiekty zarządzające wskaźnikami, aby uniknąć problemów związanych z wielokrotnym zwalnianiem tej samej pamięci.

Pytanie 34

Zamieszczony fragment kodu w Android Studio wdraża metodę nasłuchującą dla obsługi zdarzenia:

Ilustracja do pytania
A. naciśnięcia przycisku
B. wybierania daty
C. zmiany stanu kontrolki Switch
D. zmiany w polu tekstowym
Kod implementuje nasłuchiwanie zdarzenia naciśnięcia przycisku (ang. Button Click). W środowisku Android Studio jest to jedna z podstawowych metod obsługi interakcji użytkownika. Kiedy użytkownik naciśnie przycisk, wywoływana jest określona metoda, co umożliwia np. uruchomienie nowej aktywności, walidację danych lub wywołanie zapytania do bazy danych. Obsługa zdarzeń tego typu jest kluczowa w budowie responsywnych aplikacji mobilnych, zapewniając użytkownikowi płynne i intuicyjne działanie.

Pytanie 35

W jakiej topologii sieciowe wszystkie urządzenia są bezpośrednio powiązane z każdym innym?

A. Topologia pierścienia
B. Topologia magistrali
C. Topologia gwiazdy
D. Topologia siatki
Topologia siatki to jedna z najbardziej wydajnych i wszechstronnych struktur sieciowych, w której każde urządzenie (węzeł) jest połączone bezpośrednio z każdym innym węzłem. Tego typu topologia zapewnia wysoką dostępność i odporność na awarie, ponieważ awaria jednego połączenia nie wpływa na komunikację pozostałych węzłów. W praktyce ma to zastosowanie w dużych, zaawansowanych sieciach komputerowych, takich jak sieci miejskie (MAN) czy sieci szerokopasmowe. Istnieją dwie główne formy topologii siatki: siatka pełna, gdzie każde urządzenie ma bezpośrednie połączenia z wszystkimi innymi, oraz siatka częściowa, gdzie nie wszystkie węzły są ze sobą bezpośrednio połączone, ale komunikacja jest możliwa przez inne węzły. Topologia siatki, z uwagi na swoje zalety, jest często wykorzystywana w standardach sieciowych, takich jak Ethernet, oraz w systemach rozproszonych, gdzie kluczowe są niezawodność i efektywność przesyłania danych. Dodatkowo, w kontekście Internetu rzeczy (IoT), topologia siatki umożliwia efektywne zarządzanie dużą liczbą urządzeń, co jest kluczowe w inteligentnych miastach i automatyzacji domowej.

Pytanie 36

Programista aplikacji mobilnych pragnie zmienić swoją ścieżkę kariery na Full-Stack Developera. Wskaż kurs, który powinien wybrać, żeby to osiągnąć?

A. Raster and Vector Graphics with Adobe
B. Ultimate C# Serier from Beginner to Advanced
C. Complete JavaScript React, SQL, Node.js Cource
D. Mastering Cross-platform Developping
Kurs 'Complete JavaScript React, SQL, Node.js Course' obejmuje naukę pełnego stosu technologii webowych, umożliwiając przejście z roli developera mobilnego na stanowisko Full-Stack Developer. Kurs ten pokrywa zarówno frontend (React), jak i backend (Node.js, SQL), co jest kluczowe dla pracy full-stack.

Pytanie 37

Który z wymienionych parametrów dysku twardego ma największy wpływ na jego wydajność?

A. Ilość pamięci podręcznej (Cache)
B. Prędkość obrotowa talerzy (RPM)
C. Pojemność dysku
D. Rodzaj złącza (SATA/PCIe)
Pojemność dysku jest istotnym parametrem, ale nie wpływa bezpośrednio na jego szybkość działania. Większa pojemność oznacza, że na dysku można przechowywać więcej danych, jednak nie przyspiesza to operacji odczytu i zapisu. Wydajność jest bardziej związana z tym, jak szybko dane mogą być przesyłane do i z dysku, co nie jest bezpośrednio związane z jego pojemnością. Rodzaj złącza, takiego jak SATA czy PCIe, również ma swoje znaczenie, ale w przypadku dysków HDD to prędkość obrotowa jest kluczowa dla szybkości pracy. Złącza PCIe, które są znacznie szybsze od SATA, są bardziej relevantne w kontekście dysków SSD, gdzie czas dostępu i szybkość transferu są znacznie wyższe niż w przypadku talerzowych dysków HDD. Na koniec, ilość pamięci podręcznej (Cache) dysku, choć ma znaczenie w usprawnieniu operacji odczytu i zapisu, to jej wpływ jest marginalny w porównaniu do prędkości obrotowej. Cache działa jako bufor, ale nie zastąpi wyższej prędkości obrotowej talerzy, która decyduje o tym, jak быстро można uzyskać dostęp do danych przechowywanych na dysku.

Pytanie 38

Jakie są różnice pomiędzy środowiskiem RAD a klasycznym IDE w kontekście aplikacji webowych?

A. RAD funkcjonuje tylko w systemach Windows
B. RAD koncentruje się wyłącznie na budowie frontendu aplikacji
C. RAD umożliwia szybsze prototypowanie i rozwój aplikacji dzięki narzędziom wizualnym
D. RAD nie wspiera żadnych języków backendowych
RAD nie ogranicza się jedynie do tworzenia frontendu aplikacji – obejmuje cały proces budowy aplikacji, zarówno frontend, jak i backend. Twierdzenie, że RAD działa tylko w systemach Windows, jest błędne, ponieważ wiele narzędzi RAD (np. OutSystems, Mendix) działa w środowisku wieloplatformowym. RAD obsługuje języki backendowe i umożliwia pełną integrację z serwerami, bazami danych oraz API, co czyni go kompleksowym rozwiązaniem do tworzenia aplikacji webowych.

Pytanie 39

Jakie rezultaty pojawią się po uruchomieniu poniższego kodu napisanego w języku C++?

Ilustracja do pytania
A. Pochodna. Bazowa.
B. Pochodna. Pochodna.
C. Bazowa. Bazowa.
D. Bazowa. Pochodna.
Kod wyświetla 'Pochodna. Pochodna.', co wskazuje, że metody klasy pochodnej przejęły kontrolę nad tymi z klasy bazowej. To fajny przykład polimorfizmu, jaki mamy w C++. Tutaj metoda w klasie pochodnej jest lepsza od metody w klasie bazowej. To, jakie wywołanie się wykona, zależy od konkretnego obiektu, a nie od tego, jaką metodę zdefiniowaliśmy w klasie bazowej.

Pytanie 40

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

A. RAD koncentruje się tylko na testowaniu programów
B. RAD funkcjonuje tylko w systemach operacyjnych Linux
C. RAD nie oferuje żadnych narzędzi do debugowania
D. RAD pozwala na szybkie tworzenie prototypów i rozwijanie aplikacji przy minimalnej ilości kodu
Twierdzenie, że RAD skupia się wyłącznie na testowaniu kodu, jest błędne – jego głównym celem jest szybkie tworzenie aplikacji, a nie jedynie testowanie. Brak narzędzi do debugowania to również nieprawdziwa informacja, ponieważ narzędzia RAD oferują pełne wsparcie dla debugowania i testowania aplikacji w trakcie ich rozwoju. Stwierdzenie, że RAD działa tylko na systemach operacyjnych typu Linux, jest niezgodne z rzeczywistością – narzędzia RAD działają zarówno na Windows, macOS, jak i Linux, co czyni je uniwersalnym rozwiązaniem dla szerokiej gamy deweloperów.