Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
Rozpoczęcie: 7 czerwca 2026 22:19
Zakończenie: 7 czerwca 2026 22:37
Egzamin zdany!
Wynik: 34/40 punktów (85,0%)
Wymagane minimum: 20 punktów (50%)
Twój wynik na tle innych
Twój wynik jest lepszy niż 67% podejść do kwalifikacji INF.04.
Porównanie z 22430 zakończonymi podejściami do tej kwalifikacji (dane zbiorcze, bez wyników indywidualnych).
Zachowaj ten wynik na koncie
Załóż darmowe konto albo zaloguj się - ten egzamin przypiszemy do Twojego konta, więc wrócisz do swoich błędów, będziesz śledzić postęp i dostaniesz powtórki dobrane do Twoich odpowiedzi.
Jakie z wymienionych narzędzi służy do testowania aplikacji?
A. Photoshop
B. Git
C. Selenium
D. WordPress
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 2
Polecenia wydane w kontekście repozytorium Git, przy założeniu, że folder projektu jest aktualnie wybrany, mają na celu
gitinitgitadd .gitcommit -m 'first commit'
A. zamknięcie projektu, co spowoduje zarchiwizowanie wszystkich rewizji do lokalnego archiwum pod nazwą first commit
B. utworzenie kopii istniejącego repozytorium z jedynie tą rewizją, która zostanie zapisana pod nazwą first commit
C. rozpoczęcie pracy z nowym repozytorium, dodanie oraz zatwierdzenie kodu projektu jako first commit
D. rozpoczęcie sesji z już istniejącym repozytorium oraz pobranie kodu projektu do lokalnego folderu
Polecenia git init git add . oraz git commit -m 'first commit' są podstawowymi komendami do rozpoczęcia pracy z nowym repozytorium Gita. git init inicjalizuje puste repozytorium w aktualnym katalogu co tworzy podkatalog .git zawierający wszystkie metadane i historię w wersjonowania. Następnie git add . dodaje wszystkie nowe i zmodyfikowane pliki w bieżącym katalogu do indeksu co oznacza że są one gotowe do zatwierdzenia w repozytorium. Kolejne polecenie git commit -m 'first commit' tworzy pierwszy snapshot aktualnego stanu projektu z przypisaną wiadomością 'first commit' co jest dobrą praktyką sygnalizującą początek nowej historii projektu. Taki proces inicjacji jest standardem w zarządzaniu wersjami w branży IT umożliwiając śledzenie zmian w kodzie ułatwiając współpracę zespołową oraz zapewniając kontrolę nad rozwojem oprogramowania. Ważne jest by w pierwszym commicie umieścić podstawowe działające elementy projektu co stanowi solidną bazę do dalszego rozwoju.
Pytanie 3
Jaką wydajność posiada sieć, która przesyła 500 MB danych w czasie 10 sekund?
A. 400 Mbps
B. 40 Mbps
C. 50 Mbps
D. 500 Mbps
Przepustowość sieci to jeden z najważniejszych parametrów, który określa, jak szybko możemy przesyłać dane pomiędzy urządzeniami w danej infrastrukturze. W najprostszych słowach jest to ilość informacji, jaka może zostać przesłana w jednostce czasu, zazwyczaj wyrażana w bitach na sekundę (bps – bits per second). W praktyce często spotykamy skróty takie jak kbps, Mbps czy Gbps, oznaczające kolejno tysiące, miliony i miliardy bitów przesyłanych w ciągu sekundy. Aby poprawnie obliczyć przepustowość, musimy więc znać ilość przesyłanych danych oraz czas, w jakim ta transmisja się odbywa. W naszym przypadku mamy do czynienia z przesyłaniem 500 MB danych w ciągu 10 sekund. Pierwszym krokiem jest przeliczenie megabajtów (MB) na megabity (Mb), ponieważ przepustowość zawsze wyraża się w bitach. Warto przypomnieć, że 1 bajt to 8 bitów, dlatego 500 MB należy pomnożyć przez 8. W wyniku otrzymujemy 4000 megabitów (Mb). Kiedy już mamy dane w odpowiedniej jednostce, możemy przejść do drugiego kroku, czyli obliczenia przepustowości. Dzielimy 4000 megabitów przez 10 sekund, co daje 400 megabitów na sekundę (400 Mb/s). Wynik ten można również zapisać jako 400 Mbps, ponieważ obie formy zapisu oznaczają dokładnie to samo – megabity na sekundę. Ostatecznie można więc stwierdzić, że sieć, która przesyła 500 MB danych w 10 sekund, ma przepustowość 400 Mbps. To całkiem wysoki wynik, świadczący o bardzo dobrej jakości połączenia, typowej dla nowoczesnych sieci światłowodowych lub infrastruktury o dużej przepustowości. Warto też dodać, że przepustowość to nie to samo, co prędkość internetu widoczna w testach online – rzeczywista prędkość może być mniejsza z powodu opóźnień, strat pakietów czy ograniczeń sprzętowych. Mimo to, obliczenia te dobrze ilustrują, jak przeliczać jednostki i w prosty sposób określać, jak wydajna jest dana sieć.
Pytanie 4
Czym jest 'refaktoryzacja' w kontekście inżynierii oprogramowania?
A. Optymalizacja wydajności poprzez zmianę algorytmów
B. Dodawanie nowych funkcji do istniejącego kodu
C. Usuwanie niepotrzebnych funkcji z kodu
D. Proces modyfikowania kodu w celu poprawy jego struktury bez zmiany funkcjonalności
Refaktoryzacja to kluczowy proces w inżynierii oprogramowania pozwalający na modyfikację istniejącego kodu, aby poprawić jego strukturę bez zmieniania zewnętrznego zachowania programu. To podejście jest niezwykle istotne, ponieważ kod, podobnie jak każdy inny twór ludzki, z czasem może stać się trudny do zrozumienia i utrzymania. Refaktoryzacja pomaga utrzymać kod w czystości i zrozumiałości, co jest kluczowe dla długoterminowego rozwoju projektu. Praktyczne przykłady refaktoryzacji obejmują takie działania jak eliminacja powtórzeń w kodzie, zmiana nazw zmiennych na bardziej opisowe, czy też rozdzielanie dużych funkcji na mniejsze, bardziej zrozumiałe fragmenty. Ten proces jest zgodny z zasadami KISS (Keep It Simple, Stupid) i DRY (Don't Repeat Yourself), które są fundamentami dobrych praktyk programistycznych. Moim zdaniem, regularna refaktoryzacja jest jak sprzątanie biurka - początkowo może wydawać się niepotrzebna, ale w dłuższej perspektywie znacznie ułatwia pracę. Warto dodać, że narzędzia takie jak IntelliJ IDEA czy Visual Studio oferują wsparcie dla automatycznej refaktoryzacji, co czyni ten proces bardziej efektywnym.
Pytanie 5
Jak zostanie przedstawiony poniższy kod XAML?
A. Rysunek 1
B. Rysunek 2
C. Rysunek 3
D. Rysunek 4
W przedstawionym kodzie XAML widoczna jest struktura składająca się z kilku elementów UI ułożonych w pionowym StackLayout co skutkuje wyświetleniem ich w pionowej kolejności. Pierwszym elementem jest Entry z placeholderem Imię a kolejnym Entry z placeholderem Nazwisko co determinuje obecność dwóch pól tekstowych tak jak w Rysunku 4. Następnie w kodzie znajduje się poziomy StackLayout z etykietą Zgoda RODO i przełącznikiem ustawionym na wartość true co oznacza że przełącznik jest domyślnie włączony. To również odpowiada widokowi na Rysunku 4. Kolejny element to Slider z ustawionymi kolorami MinimumTrackColor i MaximumTrackColor co pozwala na zmianę koloru paska suwaka co również jest widoczne w Rysunku 4. Na końcu znajduje się Button z tekstem Zapisz i jest to jedyny przycisk w całym układzie co także zgadza się z Rysunkiem 4. Rozumienie kodu XAML i jego renderowania jest kluczowe w tworzeniu aplikacji mobilnych ponieważ pozwala na precyzyjne określenie wyglądu i funkcjonalności interfejsu użytkownika i jest zgodne z najlepszymi praktykami w projektowaniu UI.
Pytanie 6
Ile kilobajtów (KB) znajduje się w jednym megabajcie (MB)?
A. 1000
B. 1024
C. 100
D. 10
W informatyce jednostki pamięci są często używane do określenia pojemności danych. 1 megabajt (MB) równa się 1024 kilobajtom (KB) w systemie binarnym, który jest podstawowym systemem liczbowym używanym w komputerach. Wynika to z faktu, że komputery operują w systemie binarnym, gdzie wartości są potęgami liczby 2. Z definicji, 1 MB to 2 do potęgi 20 bajtów, co daje 1048576 bajtów. Kiedy dzielimy tę wartość przez 1024, otrzymujemy 1024 kilobajty. W praktyce, ta konwersja jest niezwykle istotna w kontekście zarządzania pamięcią oraz określania rozmiarów plików. Na przykład, przy pobieraniu plików z internetu, znając tę konwersję, można lepiej oszacować czas pobierania oraz zarządzanie przestrzenią dyskową. Warto również zauważyć, że niektóre systemy operacyjne i producenci sprzętu używają systemu dziesiętnego, w którym 1 MB to 1000 KB, co prowadzi do nieporozumień. Dlatego znajomość różnic między systemami binarnym i dziesiętnym jest kluczowa dla zrozumienia pojemności pamięci komputerowej i odpowiednich jednostek.
Pytanie 7
Który z wymienionych elementów stanowi przykład zbiorowej ochrony?
A. Ekran akustyczny
B. Kask ochronny
C. Okulary ochronne
D. Zatyczki do uszu
Ekran akustyczny to przykład środka ochrony zbiorowej, który redukuje poziom hałasu w miejscu pracy, chroniąc większą grupę pracowników jednocześnie. Środki ochrony zbiorowej mają na celu eliminowanie zagrożeń u źródła i zabezpieczanie całego środowiska pracy, a nie pojedynczych osób. Ekrany akustyczne są często stosowane w zakładach produkcyjnych, gdzie hałas maszyn może przekraczać dopuszczalne normy. Dzięki nim można zmniejszyć poziom hałasu i poprawić komfort pracy, bez konieczności wyposażania każdego pracownika w ochronniki słuchu. Środki ochrony zbiorowej są bardziej efektywne w długoterminowej perspektywie, ponieważ zmniejszają ryzyko dla wszystkich pracowników na danym stanowisku.
Pytanie 8
Co to jest CSS Grid?
A. Format plików graficznych obsługiwany przez CSS3
B. Metoda optymalizacji plików CSS dla lepszej wydajności strony
C. Dwuwymiarowy system układu elementów na stronie opary na siatkach
D. Biblioteka komponentów wizualnych dla aplikacji webowych
CSS Grid to nowoczesny, dwuwymiarowy system układu elementów na stronie internetowej, który umożliwia projektantom i deweloperom łatwe i elastyczne tworzenie skomplikowanych układów. Dzięki CSS Grid możemy definiować zarówno kolumny, jak i wiersze, co pozwala na precyzyjne umieszczanie elementów w kontekście całego układu. Przykładem zastosowania CSS Grid może być stworzenie responsywnej galerii zdjęć, gdzie można łatwo zmieniać liczbę kolumn w zależności od szerokości ekranu. CSS Grid jest zgodny z najnowszymi standardami W3C i stał się kluczowym elementem w nowoczesnym web designie. Dzięki właściwościom takim jak grid-template-areas, grid-template-columns, czy grid-auto-rows, projektanci mogą w intuicyjny sposób organizować treści, co poprawia zarówno estetykę, jak i użyteczność stron. Ponadto, korzystanie z CSS Grid pozwala na zmniejszenie zależności od zewnętrznych bibliotek JavaScript do układania elementów, co podnosi wydajność i usprawnia proces tworzenia stron.
Pytanie 9
Jaką wartość ma zmienna b po wykonaniu poniższego kodu?
inta=1,b=20,c=3;while(a<=10){b=b-c;a+=2;}
A. 11
B. 5
C. 20
D. 2
Po przeanalizowaniu przedstawionego kodu, możemy zauważyć, że zmienne a b i c są zainicjalizowane odpowiednio wartościami 1 20 i 3. Pętla while jest zależna od warunku a <= 10 co oznacza że będzie się wykonywać dopóki a nie przekroczy 10. W ciele pętli najpierw zmniejszamy wartość b o wartość c czyli b = b - c a następnie zwiększamy a o 2 czyli a += 2. Ponieważ a jest początkowo równe 1 pętla będzie się wykonywać pięć razy zanim a stanie się większe niż 10 (1 3 5 7 9). Podczas każdej iteracji wartość b zmniejsza się o 3 (ponieważ c=3). Po pięciu iteracjach wartość b zostanie zmniejszona o 15 (5*3) z początkowej wartości 20 uzyskując ostatecznie 5. W tym kontekście poprawna odpowiedź to 5. Takie podejście do analizy pętli i zmiennych jest kluczowe podczas programowania ponieważ pozwala zrozumieć jak zmieniają się wartości zmiennych w czasie wykonywania programu. Zrozumienie tych zasad jest fundamentalne w programowaniu proceduralnym oraz w debugowaniu kodu.
Pytanie 10
Który z poniższych elementów jest częścią architektury PWA (Progressive Web App)?
A. Service Worker
B. Media Encoder
C. Virtual Machine
D. DOM Renderer
Service Worker to kluczowy element architektury Progressive Web App (PWA), który umożliwia działania offline, zarządzanie pamięcią podręczną oraz lepsze doświadczenie użytkownika. Działa on jako pośrednik między aplikacją a serwerem, co pozwala na interceptowanie zapytań sieciowych i dostarczanie zasobów z pamięci podręcznej, gdy sieć jest niedostępna. Dzięki temu użytkownicy mogą korzystać z aplikacji nawet w trybie offline. Service Workers są również odpowiedzialne za powiadomienia push, co zwiększa interaktywność aplikacji. W praktyce oznacza to, że można zbudować aplikację, która działa płynnie na różnych platformach (desktop, mobilne), zachowując przy tym szybkość i responsywność. Warto zaznaczyć, że Service Workers muszą być zarejestrowane na stronie obsługiwanej przez HTTPS, co jest jednym z wymogów bezpieczeństwa. Stosowanie Service Workerów jest zgodne z najlepszymi praktykami branżowymi, a ich implementacja znacząco podnosi jakość i użyteczność aplikacji webowych.
Pytanie 11
W wyniku realizacji zaprezentowanego kodu na ekranie pojawią się:
inttablica[10];
for (inti = 0; i < 10; i++) {
if (i % 3 != 0)
std::cout << tablica[i] << ", ";
}
A. elementy z indeksów tablicy, które są podzielne przez 3
B. wszystkie elementy tablicy, które mają wartość nieparzystą
C. elementy tablicy o indeksach: 1, 2, 4, 5, 7, 8
D. wszystkie elementy tablicy, które są wielokrotnością 3
Wiele osób przy tego typu zadaniu potrafi się pomylić przez nieuważne czytanie warunku w instrukcji if albo przez błędne założenie, że chodzi o wartości, a nie indeksy. Kod analizuje tylko indeksy tablicy. Jeżeli założy się, że warunek i % 3 != 0 dotyczy wartości tablicy, a nie samego indeksu, można dojść do wniosku, że na ekranie pojawią się elementy będące wielokrotnościami 3 lub tylko te mające wartości nieparzyste, co jednak jest niezgodne z rzeczywistością, bo tablica nie jest w ogóle inicjalizowana konkretnymi danymi. Zamiast tego, pętla iteruje po i od 0 do 9 i sprawdza, czy indeks nie jest podzielny przez 3. Elementy o indeksach podzielnych przez 3 (czyli 0, 3, 6, 9) są pomijane, więc wyświetlone są tylko te z pozostałych indeksów. Często też popełnia się błąd, myląc warunek „podzielny przez 3” z „niepodzielny przez 3”, co zmienia zupełnie sens działania programu. Dobrą praktyką jest zawsze dokładnie sprawdzać, czy warunek odnosi się do indeksu, czy do wartości oraz jaki jest operator porównania w if-ie. Z mojego doświadczenia wynika, że takie drobiazgi potrafią prowadzić do naprawdę irytujących błędów podczas rozwiązywania większych problemów algorytmicznych. Ważne jest także, by pamiętać, że jeżeli tablica int nie jest zainicjalizowana, nie ma sensu analizować wartości, bo mogą być losowe. Tu liczył się wyłącznie indeks i jego podzielność przez 3, więc każda odpowiedź opierająca się na wartościach elementów zamiast ich położenia jest nietrafiona. Warto na przyszłość dokładnie analizować, czego dotyczy warunek i jakie dane są rzeczywiście dostępne w danej chwili programu.
Pytanie 12
Który język programowania jest używany do stylizacji stron internetowych?
A. JavaScript
B. HTML
C. CSS
D. PHP
CSS, czyli Cascading Style Sheets, jest językiem stylizacji, który służy do opisywania wyglądu dokumentów napisanych w HTML i XML. Umożliwia on oddzielenie treści od prezentacji, co jest kluczowe w tworzeniu nowoczesnych, responsywnych i estetycznie atrakcyjnych stron internetowych. Dzięki CSS można definiować różne aspekty stylów, takie jak kolory, czcionki, marginesy, a także układ elementów na stronie. Przykładowo, za pomocą prostych reguł CSS można zmienić kolor tła na zielony, a tekst na biały, co można osiągnąć przy pomocy następującego kodu: `body { background-color: green; color: white; }`. Współczesne standardy CSS, jak CSS3, wprowadzają także zaawansowane techniki, takie jak animacje czy przejścia, co daje jeszcze większe możliwości w stylizacji stron. Ponadto, dobre praktyki obejmują użycie arkuszy stylów w zewnętrznych plikach, co pozwala na ich ponowne wykorzystanie i lepszą organizację kodu, a także ułatwia zarządzanie stylem w dużych projektach.
Pytanie 13
Które z poniższych jest podstawowym rodzajem testów używanych w testowaniu jednostkowym?
A. Testy integracyjne
B. Testy systemowe
C. Testy jednostkowe
D. Testy akceptacyjne
Testy jednostkowe są kluczowym elementem procesu testowania oprogramowania, szczególnie w kontekście metodologii programowania zwinnego. Polegają one na testowaniu pojedynczych najmniejszych części programu, takich jak funkcje czy metody, w izolacji od reszty systemu. Dzięki temu możemy szybko wykryć błędy i upewnić się, że dany fragment kodu działa zgodnie z oczekiwaniami. W praktyce, testy jednostkowe są często automatyzowane i stanowią podstawę dla procesu ciągłej integracji (CI). Przykładem zastosowania testów jednostkowych może być sprawdzenie, czy funkcja dodająca dwie liczby zwraca poprawny wynik dla różnych zestawów danych wejściowych. Dzięki testom jednostkowym programiści mogą z większą pewnością modyfikować i rozwijać kod, mając pewność, że nie wprowadzają nowych błędów. To właśnie testy jednostkowe pozwalają na szybkie wykrywanie regresji i są fundamentem dla bardziej zaawansowanych form testowania, takich jak testy integracyjne czy systemowe. Dbanie o dobrze zdefiniowany zestaw testów jednostkowych jest uznawane za dobrą praktykę w branży IT i podnosi jakość oprogramowania.
Pytanie 14
Przyjmując, że opisana hierarchia klas właściwie odzwierciedla figury geometryczne i każda figura ma zdefiniowaną metodę do obliczania pola, to w której klasie można znaleźć deklarację metody liczPole()?
A. figura
B. czworokąt
C. trapez
D. trójkąt
Deklaracja metody liczPole() powinna znajdować się w klasie bazowej, czyli w tym przypadku w klasie „figura”. To podejście jest zgodne z zasadami programowania obiektowego i tzw. polimorfizmem. Dzięki temu każda klasa dziedzicząca po „figurze” jest zobowiązana do własnej implementacji tej metody. To bardzo praktyczne rozwiązanie, bo umożliwia tworzenie ogólnych kolekcji (np. List<Figura>), które mogą przechowywać obiekty różnych figur, a następnie wywoływać liczPole() na każdym z nich bez zastanawiania się, jakiego typu to dokładnie obiekt. Z mojego doświadczenia wynika, że tak właśnie projektuje się API i biblioteki geometryczne – klasa bazowa narzuca kontrakt, a szczegóły są po stronie konkretnych figur. Warto dodać, że zgodnie z dobrymi praktykami, do deklarowania takich metod używa się słowa kluczowego „abstract”, co jasno komunikuje, że metoda musi być uzupełniona w klasach potomnych. Takie podejście mocno ułatwia rozbudowę kodu, np. kiedy chcemy dodać nowy typ figury, wystarczy, że nadpiszemy liczPole(). Moim zdaniem to jeden z najfajniejszych przykładów, jak dobrze przemyślana architektura kodu oszczędza czas i nerwy programistom.
Pytanie 15
Który z poniższych formatów plików jest używany do konfiguracji projektów Node.js?
A. package.json
B. config.xml
C. node.config
D. settings.ini
Odpowiedź 'package.json' jest prawidłowa, ponieważ jest to kluczowy plik konfiguracyjny w projektach Node.js. Zawiera on metadane dotyczące projektu, takie jak nazwa, wersja, autorzy, zależności oraz skrypty do uruchamiania różnych zadań związanych z projektem. Na przykład, sekcja 'dependencies' w tym pliku pozwala na zdefiniowanie zewnętrznych bibliotek, które są wymagane do działania aplikacji. Gdy użytkownik uruchamia polecenie 'npm install', system automatycznie instaluje wszystkie zależności określone w 'package.json'. Dodatkowo, plik ten pozwala na łatwe zarządzanie wersjami i aktualizacjami, co jest zgodne z dobrymi praktykami w zarządzaniu projektami oprogramowania, zapewniając lepszą kontrolę nad środowiskiem deweloperskim. Użycie 'package.json' jest standardem w ekosystemie Node.js, co czyni go niezbędnym dla każdego dewelopera pracującego w tym środowisku.
Pytanie 16
Jaki typ złośliwego oprogramowania funkcjonuje w tle, zbierając dane o wprowadzanych hasłach?
A. Trojan
B. Spyware
C. Adware
D. Keylogger
Keylogger to takie złośliwe oprogramowanie, które działa w tle i rejestruje wszystkie naciśnięcia klawiszy. To naprawdę niebezpieczne, bo może przechwytywać hasła i inne ważne dane osobowe. Keyloggery mogą się dostawać na komputer na różne sposoby, na przykład przez zainfekowane pliki, złośliwe reklamy albo w ramach innych niebezpiecznych programów. Przykładami takich keyloggerów są Spyrix czy Perfect Keylogger, które mogą monitorować, co robisz na komputerze. Z punktu widzenia bezpieczeństwa, standardy takie jak ISO/IEC 27001 mówią, jak ważna jest ochrona informacji. Dlatego tak istotne jest, żeby użytkownicy mieli świadomość zagrożeń, jakie niosą keyloggery i używali dobrego oprogramowania antywirusowego, żeby chronić swoje urządzenia i dane.
Pytanie 17
Jaki rodzaj ataku hakerskiego polega na bombardowaniu serwera ogromną ilością żądań, co prowadzi do jego przeciążenia?
A. Man-in-the-Middle
B. DDoS
C. SQL Injection
D. Phishing
Atak DDoS (Distributed Denial of Service) polega na zasypywaniu serwera dużą ilością zapytań, co prowadzi do jego przeciążenia i unieruchomienia. W tym rodzaju ataku, hakerzy wykorzystują sieć skompromitowanych komputerów, znanych jako botnety, aby wysłać ogromne ilości nieautoryzowanych żądań do docelowego serwera w krótkim czasie. Celem DDoS jest spowodowanie, że serwer nie jest w stanie odpowiedzieć na prawidłowe zapytania od autentycznych użytkowników, co skutkuje awarią usługi. Przykłady ataków DDoS obejmują SYN Flood, UDP Flood oraz HTTP Flood, gdzie każdy z tych typów wykorzystuje różne protokoły i metody do zablokowania normalnego ruchu. Standardy takie jak RFC 793 definiują protokół TCP, który może być narażony na ataki SYN Flood. Ważne jest, aby organizacje stosowały odpowiednie środki zabezpieczające, takie jak systemy detekcji intruzów (IDS), firewalle, oraz usługi ochrony DDoS, aby minimalizować ryzyko i skutki tych ataków.
Pytanie 18
W jakiej sytuacji wykorzystanie stosu będzie korzystniejsze niż lista podczas projektowania zestawu danych?
A. Gdy ważne jest szybkie znajdowanie elementów
B. Gdy chcemy usunąć element z końca
C. Gdy kolejność przetwarzania danych jest odwrócona (LIFO)
D. Gdy dane muszą być uporządkowane
Stos to struktura danych działająca na zasadzie LIFO (Last In First Out), co oznacza, że ostatni dodany element jest przetwarzany jako pierwszy. Jest to niezwykle efektywne rozwiązanie w przypadkach, gdy dane muszą być przetwarzane w odwrotnej kolejności niż były dodane. Stos jest szeroko wykorzystywany w implementacji algorytmów rekurencyjnych, obsłudze wywołań funkcji oraz w systemach zarządzania historią (np. w przeglądarkach internetowych lub edytorach tekstu). Stos zapewnia szybki dostęp do ostatnio dodanych danych i efektywne zarządzanie pamięcią, co czyni go niezastąpionym w wielu aplikacjach informatycznych.
Pytanie 19
W przedstawionym filmie ukazano kreator interfejsu użytkownika, dla którego automatycznie powstaje
A. kod XML
B. obsługa przycisku ekranu dotykowego
C. obsługa wciśniętego przycisku
D. kod Java
Kod XML jest obecnie najczęściej stosowanym formatem do definiowania wyglądu interfejsów użytkownika w takich narzędziach jak Android Studio czy różnego rodzaju designery graficzne. Kiedy projektujesz layout aplikacji mobilnej albo desktopowej, duża część nowoczesnych narzędzi tworzy właśnie pliki XML, które następnie są interpretowane przez system w czasie uruchamiania aplikacji. Ułatwia to rozdzielenie logiki aplikacji od jej prezentacji, co wydaje się fundamentalne przy większych projektach. Moim zdaniem takie podejście daje ogromne korzyści – można łatwo modyfikować wygląd bez dotykania kodu źródłowego. W praktyce, jeśli używasz np. Android Studio, zbudujesz interfejs przeciągając przyciski czy pola tekstowe, a pod spodem dostaniesz czytelny plik XML. To przyspiesza pracę, zwiększa czytelność projektu i pozwala na późniejsze automatyczne generowanie dokumentacji albo testów interfejsu. Takie standardy są rekomendowane nie tylko przez Google, ale też szeroko stosowane w innych środowiskach, jak chociażby XAML w Microsoft czy FXML w JavaFX. Przezroczystość działania tych narzędzi sprawia, że łatwiej jest pracować zespołowo, bo każdy może szybko zorientować się w strukturze UI patrząc na XML-a. Samo generowanie kodu XML przez narzędzia graficzne to duży krok w kierunku lepszej organizacji pracy i zgodności ze współczesnymi praktykami branżowymi.
Pytanie 20
Która z wymienionych aplikacji stanowi przykład prostego rozwiązania mobilnego?
A. Aplikacja z rozbudowanym systemem zarządzania projektami
B. Aplikacja do monitorowania użycia pamięci RAM
C. Aplikacja typu zegar
D. Aplikacja do analizy danych finansowych
Aplikacja typu zegar to jeden z najprostszych przykładów aplikacji mobilnej. Jej podstawowa funkcjonalność polega na wyświetlaniu aktualnego czasu oraz alarmów, a dodatkowo może zawierać funkcje takie jak minutnik czy stoper. Tego rodzaju aplikacje charakteryzują się niewielką liczbą funkcji, przejrzystym interfejsem i minimalnym zapotrzebowaniem na zasoby sprzętowe. Dzięki swojej prostocie, aplikacje typu zegar są doskonałym przykładem na to, jak przy użyciu niewielkiej liczby komponentów można stworzyć przydatne narzędzie dla użytkownika.
Pytanie 21
Które z poniższych nie jest językiem programowania?
A. Kotlin
B. HTML
C. Ruby
D. Python
HTML (HyperText Markup Language) jest językiem znaczników, który służy do tworzenia struktury stron internetowych. Jest fundamentalnym elementem w budowie aplikacji webowych, ponieważ umożliwia definiowanie elementów takich jak nagłówki, akapity, obrazy, linki i wiele innych. HTML nie jest językiem programowania w sensie, w jakim są nimi Python, Ruby, czy Kotlin, ponieważ nie obsługuje logiki programowania, takiej jak zmienne, pętle czy warunki. Jego głównym celem jest struktura i prezentacja treści w przeglądarkach internetowych. HTML współpracuje z CSS (Cascading Style Sheets) do stylizacji oraz JavaScript do obsługi logiki i interakcji. Przykładowo, podczas tworzenia strony internetowej można użyć HTML do zbudowania struktury, CSS do nadania jej estetyki, a JavaScript do dodawania dynamicznych elementów, takich jak formularze czy interaktywne mapy. Dobrą praktyką jest również używanie semantycznego HTML, co poprawia dostępność oraz SEO, co jest szczególnie ważne w współczesnym internecie.
Pytanie 22
Programem służącym do monitorowania błędów oraz organizacji projektów jest:
A. Jira
B. Git
C. Jasmine
D. Bugzilla
Jira to narzędzie, które zdecydowanie wyróżnia się w kwestii zarządzania projektami programistycznymi oraz monitorowania błędów. Z mojego doświadczenia wynika, że praktycznie każda większa firma IT używa Jiry do śledzenia zgłoszeń, tzw. ticketów, które mogą dotyczyć zarówno zadań, jak i błędów do naprawienia. Co istotne, Jira pozwala na bardzo rozbudowaną konfigurację – można tworzyć workflow, automatyzować przypisania zadań, integrować ją z repozytoriami kodów (np. GitHub, Bitbucket), testami automatycznymi, a nawet narzędziami do continuous integration. Standardem branżowym jest prowadzenie rejestru błędów (bug tracker) i backlogu zadań właśnie w Jirze, bo wszystko odbywa się w jednym miejscu, a zespół ma przejrzysty widok postępów. Bardzo fajna jest opcja generowania raportów – łatwo można sprawdzić, ile błędów zostało naprawionych, ile czeka na poprawki czy jak poszczególni członkowie zespołu realizują swoje zadania. Jira jest też zgodna z metodykami Agile, np. Scrum czy Kanban, co dodatkowo ułatwia zarządzanie sprintami, planowanie i retrospektywy. Uważam, że znajomość tego narzędzia to podstawa dla każdego, kto myśli o pracy w branży IT na poważnie. Warto też wiedzieć, że Jira obsługuje zarówno małe zespoły, jak i międzynarodowe projekty, bo jest bardzo skalowalna i można ją dostosować praktycznie do każdego procesu.
Pytanie 23
Wykorzystując React.js oraz Angular, stworzono funkcjonalnie równoważne kody źródłowe. Aby móc w metodzie handleSubmit pokazać zawartość kontrolki input w miejscu oznaczonym ???, należy odwołać się do atrybutu o nazwie: React.js:
Wybór atrybutów takich jak nazwa4, nazwa2 czy nazwa3 wynika często z nieporozumienia co do roli poszczególnych atrybutów we współczesnych frameworkach frontendowych. Identyfikator (id), klasa (class) czy nawet for mają swoje konkretne zadania, ale nie służą do powiązania wartości inputów z logiką formularza. Id stosujemy typowo do jednoznacznego oznaczania elementów w DOM-ie, co ułatwia stylowanie lub selektory JavaScript, jednak nie ma bezpośredniego przełożenia na to, jak frameworki typu React czy Angular pobierają wartości pól w formularzach – szczególnie jeśli korzystamy z referencji bądź systemu ngForm. Podobnie atrybut class ma charakter czysto prezentacyjny: używamy go do przypisywania styli CSS, ewentualnie do selektorów w testach automatycznych, ale nie do obsługi zdarzeń związanych z danymi formularza. For natomiast jest przydatny tylko w kontekście etykiet (label), by skojarzyć ją z konkretnym polem po id – nie wpływa na to, jak framework zbiera wartości inputów podczas submitowania formularza. Najczęstszym błędem, który obserwuję, jest zakładanie, że skoro id czy class są unikalne lub opisowe, to można przez nie pobierać wartości pól – to nie jest zgodne ani z dokumentacją Reacta, ani Angulara, ani standardami HTML5. To właśnie atrybut name pełni rolę logicznego identyfikatora wpisu w kontekście formularza: w Angularze ngForm buduje obiekt value na podstawie name każdego inputa, a w React – jeśli korzystasz z refów – również najwygodniej jest konsekwentnie opierać się o te same atrybuty, żeby formularze były czytelne i łatwe do utrzymania. W praktyce, kiedy ktoś wybiera inne atrybuty, ma to zwykle związek z brakiem znajomości architektury pracy z danymi w danym frameworku. Warto więc przeanalizować, jak frameworki mapują dane formularza i co wynika z oficjalnych tutoriali i dokumentacji. W dłuższej perspektywie praca z formularzami staje się wtedy dużo prostsza i mniej podatna na błędy, a kod jest bardziej przewidywalny i skalowalny.
Pytanie 24
Który z poniższych jest popularnym systemem zarządzania bazami danych NoSQL?
A. Oracle
B. PostgreSQL
C. MongoDB
D. MySQL
MongoDB to jeden z najbardziej popularnych systemów zarządzania bazami danych NoSQL, który został zaprojektowany z myślą o elastyczności, skalowalności i prostocie użytkowania. W odróżnieniu od tradycyjnych baz danych SQL, MongoDB przechowuje dane w formacie dokumentów BSON, co umożliwia łatwą integrację z danymi o zmiennej strukturze. Dzięki temu programiści mogą szybko prototypować aplikacje i wprowadzać zmiany w modelu danych bez konieczności przeprowadzania skomplikowanych migracji schematów. MongoDB znajduje zastosowanie w wielu nowoczesnych aplikacjach, od startupów po duże przedsiębiorstwa, w takich dziedzinach jak analiza danych, zarządzanie treścią, czy aplikacje mobilne. W praktyce, dzięki rozproszonej architekturze, możliwe jest łatwe skalowanie poziome, co oznacza dodawanie nowych instancji bazy danych w miarę rosnących potrzeb. Warto również zwrócić uwagę na bogate wsparcie dla technologii chmurowych oraz ekosystem narzędzi analitycznych, co czyni MongoDB świetnym wyborem dla aplikacji wymagających dużej wydajności i elastyczności.
Pytanie 25
Jaką funkcję spełniają atrybuty klasy w programowaniu obiektowym?
A. Zapisują wartości lokalne w funkcjach
B. Umożliwiają przeprowadzanie operacji na obiektach
C. Zawierają informacje opisujące stan obiektu
D. Określają globalne stałe programu
Pola klasy w programowaniu obiektowym to zmienne, które przechowują dane opisujące stan obiektu. Każdy obiekt posiada swoje własne kopie pól, co oznacza, że różne instancje tej samej klasy mogą przechowywać różne wartości. Przykład w C++: `class Samochod { public: string marka; int przebieg; }`. Pola `marka` i `przebieg` przechowują informacje o konkretnym samochodzie. Pola są kluczowym elementem modelowania rzeczywistych obiektów i umożliwiają przechowywanie oraz modyfikowanie danych w trakcie działania programu. Mogą mieć różne poziomy dostępu (`public`, `private`), co pozwala na lepszą kontrolę nad danymi.
Pytanie 26
Jakie są kluczowe etapy realizacji projektu programistycznego?
A. Projektowanie, testowanie, aktualizacja, implementacja
B. Planowanie, analiza, implementacja, wdrożenie
C. Analiza, implementacja, testowanie, aktualizacja
D. Planowanie, projektowanie, debugowanie, konserwacja
Wiele osób myśli, że wystarczy skupić się na kodzie czy testach i sukces przyjdzie sam, ale w praktyce kluczowe jest zachowanie właściwej sekwencji i kompletności działań. Często spotykam się z przekonaniem, że projektowanie albo debugowanie są najważniejszymi krokami, jednak bez wcześniejszego gruntownego planowania i analizy trudno mówić o efektywności czy przewidywalności rezultatów. Przykładowo, debugowanie to bardzo istotny element pracy programisty, ale samo w sobie nie stanowi etapu realizacji projektu – jest raczej czynnością wykonywaną w toku implementacji i testowania. Z kolei aktualizacja i konserwacja, choć ważne, zaliczają się już do utrzymania systemu po wdrożeniu, a nie do pierwotnego cyklu tworzenia oprogramowania. W niektórych odpowiedziach zabrakło chociażby analizy wymagań, co jest podstawowym etapem według standardów takich jak ISO/IEC/IEEE 12207 czy wytycznych PMBOK. Pominięcie wdrożenia lub zamiana jego kolejności z innym etapem, jak projektowanie albo testowanie, prowadzi do problemów z odpowiedzialnością za przekazanie produktu końcowego. Również połączenie implementacji z aktualizacją to pomieszanie faz projektowych z fazami utrzymania. Takie uproszczenia wynikają często z mylenia faz samego developmentu z późniejszymi procesami eksploatacji. W praktyce, żeby uniknąć błędów takich jak niedopracowana architektura czy chaos przy wdrożeniu, trzeba konsekwentnie stosować pełną sekwencję: planowanie, analiza, implementacja, a na końcu wdrożenie. To jest podejście zgodne i z klasycznym waterfall, i z nowszymi praktykami agile, gdzie nawet jeśli fazy się zazębiają, wciąż mają swoje miejsce. Z mojego doświadczenia, skracanie lub pomijanie tych etapów to prosta droga do kosztownych poprawek i niezadowolenia klienta, dlatego warto je znać i stosować świadomie.
Pytanie 27
Która z poniższych technologii służy do tworzenia interaktywnych aplikacji webowych bez przeładowania strony?
A. HTML5
B. AJAX
C. SQL
D. CSS3
HTML5, choć jest potężnym językiem znacznie rozszerzającym możliwości aplikacji webowych, nie jest technologią służącą do asynchronicznego przesyłania danych. HTML5 dostarcza strukturę dla stron internetowych i wprowadza nowe elementy, takie jak <canvas> czy <video>, ale nie ma wbudowanych mechanizmów do zarządzania komunikacją z serwerem bez przeładowania strony. SQL, będący językiem zapytań do baz danych, służy do manipulacji danymi, a nie do tworzenia interaktywnych aplikacji. Umożliwia on wykonywanie operacji takich jak dodawanie, usuwanie czy aktualizowanie danych w bazie danych, ale nie odnosi się do bezpośredniej interakcji z użytkownikami przez przeglądarkę. CSS3, z kolei, to technologia odpowiedzialna za stylizację stron internetowych, co oznacza, że kontroluje wygląd elementów, ale nie wpływa na sposób komunikacji z serwerem. Niektórzy mogą błędnie myśleć, że te technologie mają podobne zastosowania, jednak każda z nich ma swoje specyficzne funkcje i zastosowanie w ekosystemie webowym. Aby zbudować naprawdę interaktywną aplikację, kluczowe jest zrozumienie, że AJAX jest niezbędnym narzędziem do asynchronicznej komunikacji, co pozwala na bardziej płynne i responsywne doświadczenia dla użytkowników.
Pytanie 28
Przedstawione logo praw Creative Commons umożliwia bezpłatne użytkowanie dzieła:
A. w działaniach komercyjnych
B. pod warunkiem zachowania go w oryginalnej formie
C. pod warunkiem udostępnienia go na tej samej zasadzie licencyjnej
D. w celu modyfikacji lub remiksowania
To, że odpowiedź dotycząca modyfikacji i remiksowania jest poprawna, wynika bezpośrednio z zasad licencji Creative Commons, a w tym przypadku – oznaczenia BY-NC. Licencja ta pozwala na używanie utworów, w tym także ich przerabianie i tworzenie nowych dzieł pochodnych, pod warunkiem podania autora i nieużywania do celów komercyjnych. W praktyce oznacza to, że możesz wziąć na przykład czyjąś grafikę na tej licencji, przerobić ją, dodać coś od siebie, zrobić z tego plakat na szkolną wystawę lub użyć fragmentu w prezentacji – o ile tylko przestrzegasz warunków. Z mojego doświadczenia wynika, że wiele osób myli się co do tego, że modyfikacja jest zabroniona – a właśnie Creative Commons daje tutaj spore pole do popisu. Zasada remiksowania jest wręcz promowana, bo pozwala rozwijać kulturę. Oczywiście, cały czas trzeba pamiętać o atrybucji twórcy i nie używać dzieła do zarabiania, bo wtedy łamiesz warunki licencji. W środowisku technicznym to jest bardzo praktyczne – możesz wzorować się na czyjejś pracy, rozwijać ją i poprawiać, co w branży IT, grafiki czy edukacji jest na porządku dziennym. Warto też zerkać do oficjalnych wytycznych Creative Commons: one wprost potwierdzają, że modyfikacja i adaptacja są dozwolone przy BY-NC, pod warunkiem braku komercji. W sumie – świetna opcja na rozwój własnych projektów!
Pytanie 29
Jaką komendę w języku C++ używa się do wielokrotnego uruchamiania tego samego bloku kodu?
A. while
B. if
C. break
D. switch
Instrukcja `while` w języku C++ i innych językach programowania pozwala na wielokrotne wykonanie tego samego fragmentu kodu, dopóki warunek logiczny jest spełniony. Przykład: `while (x < 10) { x++; }` będzie zwiększać zmienną `x` o 1, dopóki jej wartość nie osiągnie 10. Pętle `while` są przydatne, gdy liczba iteracji nie jest z góry znana i zależy od spełnienia określonego warunku w trakcie wykonywania programu.
Pytanie 30
Jedną z zasad standardu WCAG 2.0 jest
A. unikanie przedstawiania informacji w formie uproszczonej
B. używanie jednego, odpowiednio dużego rozmiaru czcionki
C. ograniczanie treści na stronie przez rezygnację z używania alternatywnych tekstów dla obrazów i filmów
D. stosowanie różnych palet kolorystycznych, w tym o wysokim kontraście
Standard WCAG 2.0 opiera się na czterech głównych zasadach: postrzegalność, funkcjonalność, zrozumiałość i solidność. Wiele osób źle interpretuje te zalecenia, myśląc, że wystarczy uprościć treść albo ograniczyć jej ilość, by strona była dostępna. To nie jest prawda – dostępność to nie minimalizm, tylko umożliwienie korzystania z treści każdemu, bez względu na ograniczenia. Na przykład rezygnacja z alternatywnych tekstów dla obrazów i filmów to bardzo poważny błąd – alt teksty są wręcz podstawą dostępności, pozwalają osobom niewidomym korzystać z czytników ekranu. Często też spotykam się z przekonaniem, że wystarczy używać jednego, dużego rozmiaru czcionki, żeby wszystko było czytelne – ale przecież każdy użytkownik ma inne potrzeby, a strony powinny pozwalać na skalowanie tekstu. Trzymanie się jednego rozmiaru wręcz utrudnia życie osobom, które chcą powiększyć sobie tekst według uznania. Również unikanie przedstawiania informacji w sposób uproszczony nie ma nic wspólnego z WCAG – wręcz przeciwnie, prosty, przejrzysty język jest zalecany, żeby jak najwięcej osób rozumiało przekaz. W praktyce najczęściej powtarzany błąd myślowy to przekonanie, że dostępność to coś dodatkowego, co psuje wygląd strony, a tymczasem dobre praktyki pokazują, że można mieć i funkcjonalność, i estetykę, i pełną dostępność. Z mojego punktu widzenia warto patrzeć na WCAG jako na przewodnik ku lepszemu projektowaniu, a nie zbiór ograniczeń. Właśnie dzięki stosowaniu różnych palet kolorystycznych z wysokim kontrastem podnosimy komfort i użyteczność strony dla wszystkich, a nie tylko niektórych użytkowników.
Pytanie 31
Jakie pola powinny być umieszczone w klasie nadrzędnej w strukturze dziedziczenia?
A. Pola, które są tylko prywatne
B. Pola, które są charakterystyczne jedynie dla pojedynczej klasy pochodnej
C. Pola, które są wykorzystywane tylko w funkcjach statycznych
D. Pola, które są wspólne dla wszystkich klas pochodnych
W klasie bazowej w hierarchii dziedziczenia umieszcza się pola, które są wspólne dla wszystkich klas pochodnych. Dzięki temu klasy pochodne mogą dziedziczyć te same właściwości, co eliminuje konieczność ich wielokrotnego definiowania. Jest to jedna z głównych zalet programowania obiektowego, umożliwiająca reużywalność kodu i zwiększenie spójności w projekcie. Przykładem może być klasa 'Pracownik', która zawiera pola takie jak 'imię', 'nazwisko' i 'wynagrodzenie', a klasy pochodne, takie jak 'Inżynier' czy 'Księgowy', mogą dziedziczyć te same pola, dodając jedynie specyficzne właściwości dla swojej roli.
Pytanie 32
Który z wymienionych elementów jest fundamentalny w architekturze klient-serwer?
A. Scentralizowane przechowywanie danych
B. Wyłącznie komunikacja synchroniczna
C. Brak podziału na funkcje klienta i serwera
D. Zdalne wykonywanie aplikacji na urządzeniu klienta
Scentralizowane przechowywanie danych to podstawowy element architektury klient-serwer. W takim modelu dane przechowywane są na serwerze, a klient uzyskuje do nich dostęp na żądanie. Dzięki temu możliwa jest efektywna synchronizacja danych oraz ich ochrona przed nieautoryzowanym dostępem. Architektura klient-serwer jest skalowalna i umożliwia obsługę wielu klientów jednocześnie, co czyni ją fundamentem dla większości nowoczesnych aplikacji webowych i mobilnych.
Pytanie 33
Który z wymienionych typów testów najlepiej ocenia odporność aplikacji na intensywne obciążenie?
A. Testy bezpieczeństwa
B. Testy zgodności
C. Testy funkcjonalne
D. Testy obciążeniowe
Testy obciążeniowe to rodzaj testów, które sprawdzają, jak aplikacja radzi sobie z dużym ruchem użytkowników lub przetwarzaniem dużych ilości danych. Celem testów obciążeniowych jest wykrycie potencjalnych wąskich gardeł, identyfikacja problemów z wydajnością oraz określenie maksymalnej przepustowości aplikacji. Testy te są kluczowe dla aplikacji o wysokim natężeniu ruchu, takich jak sklepy internetowe czy systemy bankowe, gdzie stabilność pod obciążeniem jest krytyczna dla sukcesu.
Pytanie 34
W programie desktopowym stworzono rozwijaną listę oraz przypisano cztery funkcje do obsługi zdarzeń tej kontrolki. Jaki komunikat pojawi się po dokonaniu wyboru w tej liście? W XAML (uproszczona wersja):
Wybrałeś dokładnie to, co trzeba. W tej sytuacji kluczowe jest rozpoznanie, że zdarzenie SelectionChanged jest wywoływane zawsze wtedy, gdy użytkownik wybierze inną pozycję z ComboBoxa. I to właśnie do tego zdarzenia przypisana jest metoda Funkcja1, która wyświetla komunikat "Zdarzenie 1". Trochę to wygląda niepozornie, ale SelectionChanged to jeden z najczęściej obsługiwanych eventów w aplikacjach desktopowych opartych na WPF czy UWP – praktycznie zawsze reagujemy na wybór użytkownika w kontrolkach ComboBox, ListBox albo nawet ListView. Z mojego doświadczenia wynika, że początkujący programiści często mylą to zdarzenie z innymi, jak LostFocus, które odpala się, gdy kontrolka traci fokus, albo z DragEnter (zupełnie inny przypadek, bo dotyczy przeciągania danych). Warto pamiętać, że KeyDown reaguje dopiero na naciśnięcie klawisza, a nie na wybór myszką. Takie rozróżnienie jest codziennością przy tworzeniu bardziej zaawansowanych interfejsów użytkownika. Praktyczna wskazówka: jeśli chcesz reagować na wybór użytkownika i np. ładować dodatkowe dane czy weryfikować coś po stronie aplikacji, to SelectionChanged jest strzałem w dziesiątkę. Standardy branżowe sugerują nie przesadzać z obsługą zbyt wielu eventów jednocześnie dla tej samej kontrolki, bo to może prowadzić do konfliktów i dziwnych zachowań UI. Mocno polecam samemu poeksperymentować – otworzyć Visual Studio, zrobić prostą aplikację WPF, podpiąć te eventy i zobaczyć, które kiedy się odpalają. Dzięki temu dużo szybciej utrwala się ta wiedza niż z samej teorii.
Pytanie 35
Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?
Wynik działania podanego kodu to [2, 4], ponieważ zastosowana funkcja filter tworzy nową tablicę, w której znajdują się tylko te elementy, które spełniają określony warunek. W tym przypadku warunkiem jest to, że element musi być parzysty (num % 2 === 0). Z tablicy arr, która zawiera liczby od 1 do 5, tylko liczby 2 i 4 spełniają ten warunek. Filtracja danych jest bardzo przydatna w programowaniu, zwłaszcza w kontekście pracy z dużymi zbiorami danych, gdzie można łatwo wyodrębnić interesujące nas elementy. Stosowanie takich metod, jak filter, jest zgodne z zasadami programowania funkcyjnego, które promują użycie funkcji do przetwarzania danych w sposób bardziej zwięzły i czytelny. W praktyce, funkcja filter może być używana do filtrowania danych z API, przetwarzania zbiorów danych w aplikacjach, czy też w analizach danych. Takie podejście zwiększa wydajność i czytelność kodu, co jest istotne w długoterminowym utrzymaniu projektów.
Pytanie 36
Który z wymienionych poniżej typów danych stanowi przykład typu stałoprzecinkowego?
A. decimal
B. float
C. double
D. int
Typ danych 'int' (integer) to przykład typu stałoprzecinkowego, który przechowuje liczby całkowite. Stałoprzecinkowe typy danych są podstawą w programowaniu, ponieważ pozwalają na efektywne przechowywanie wartości bez części ułamkowej, co przyspiesza obliczenia i redukuje zużycie pamięci. Typ 'int' jest szeroko stosowany w językach takich jak C, C++, Java i Python, a jego główną zaletą jest szybkość operacji arytmetycznych oraz przewidywalność wyników. Stałoprzecinkowe typy danych znajdują zastosowanie w algorytmach, systemach sterowania i aplikacjach embedded, gdzie precyzja obliczeń jest kluczowa.
Pytanie 37
W jaki sposób definiuje się konstruktor kopiujący w ramach klasy?
A. Inicjuje obiekt klasy na podstawie klasy dziedziczącej
B. Generuje nowy obiekt klasy bez przypisywania wartości
C. Tworzy nowy obiekt jako wierną kopię innego obiektu
D. Generuje nowy obiekt i usuwa wcześniejszy
Tworzenie nowego obiektu bez przypisania wartości to zadanie domyślnego konstruktora, który inicjalizuje obiekt, ale nie kopiuje stanu innego obiektu. Tworzenie obiektu na podstawie klasy pochodnej to proces dziedziczenia, a nie kopiowania – w tym przypadku tworzona jest nowa instancja klasy dziedziczącej, ale nie kopiowany jest stan innego obiektu. Usunięcie obiektu i stworzenie nowego nie jest zadaniem konstruktora kopiującego – za usuwanie odpowiada destruktor, który działa automatycznie podczas niszczenia obiektów.
Pytanie 38
Jednym z elementów, które mają zostać zaimplementowane w aplikacji, jest możliwość cofnięcia ostatnich działań do 20 operacji wstecz (undo). Struktura danych, która jest odpowiednia do tego celu i pozwala na dostęp tylko do ostatnio dodanego elementu, to:
A. kolejka
B. tablica
C. stos
D. drzewo
Stos to struktura danych, która działa na zasadzie LIFO (Last In, First Out), co oznacza, że ostatni dodany element jest pierwszym, który zostaje usunięty. Ta cecha sprawia, że stos jest idealnym rozwiązaniem dla funkcjonalności cofania operacji, ponieważ pozwala na skuteczne zarządzanie historią działań użytkownika. W przypadku aplikacji, która wymaga cofania ostatnich 20 operacji, stos może przechowywać te operacje, dodając nowe elementy na szczyt, a następnie usuwając je z tej samej pozycji. Przykładem zastosowania stosu w praktyce może być edytor tekstu, w którym użytkownik może cofać swoje ostatnie zmiany. Gdy użytkownik wykonuje operację, taka jak dodanie lub usunięcie tekstu, ta operacja jest umieszczana na stosie. Jeśli użytkownik wybiera opcję cofnięcia, ostatnia operacja jest usuwana z góry stosu, co przywraca wcześniejszy stan dokumentu. Warto również zauważyć, że wiele języków programowania oferuje wbudowane klasy lub biblioteki do zarządzania stosami, co ułatwia jego implementację. Stos jest nie tylko efektywny w kontekście czasowym, ale także pamięciowym, co czyni go doskonałym wyborem dla tego typu aplikacji.
Pytanie 39
Jakie zasady stosuje programowanie obiektowe?
A. Rozwiązywanie problemów poprzez modelowanie ich przy pomocy klas i obiektów
B. Tworzenie aplikacji z wykorzystaniem relacyjnych baz danych
C. Zastosowanie wyłącznie algorytmów heurystycznych
D. Podział kodu na funkcje i procedury
Programowanie obiektowe polega na rozwiązywaniu problemów poprzez modelowanie ich za pomocą klas i obiektów. Klasy definiują strukturę i zachowanie obiektów, które są instancjami tych klas. Obiekty przechowują stan (dane) w polach i realizują funkcjonalność poprzez metody. Programowanie obiektowe pozwala na odwzorowanie rzeczywistych systemów, dziedziczenie cech, polimorfizm oraz hermetyzację danych, co prowadzi do bardziej modułowego i skalowalnego kodu. Przykłady języków obiektowych to C++, Java i Python.
Pytanie 40
W przypadku przedstawionych kodów źródłowych, które są funkcjonalnie równoważne, wartość, która zostanie zapisana w zmiennej b po wykonaniu operacji, to
Python:
C++ / C# / Java:
x = 5.96; b = int(x);
double x = 5.96; int b = (int)x;
A. 6
B. 596
C. 5
D. 5.96
W tym zadaniu mamy do czynienia z fajnym przykładem konwersji liczby 5.96 na liczbę całkowitą w różnych językach, takich jak Python czy C++. Kiedy robimy rzutowanie, to po prostu odcinamy część ułamkową, co daje nam 5 w zmiennej b. To jest trochę klasyczne rzutowanie albo konwersja typu, gdzie w większości języków po prostu się to robi. Ciekawostką jest, że w Pythonie działa to przez funkcję int(), która zawsze zaokrągla w dół. A w C++ czy Javie używasz po prostu (int) i efekt jest ten sam. Warto też zwrócić uwagę, że przy liczbach ujemnych rzutowanie działa inaczej, bo zawsze zmierza w stronę zera. Z doświadczenia wiem, że warto być świadomym użycia takich konwersji, bo w niektórych przypadkach, jak operacje finansowe, nawet małe różnice mogą się okazać bardzo istotne.