Wyniki egzaminu

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

Egzamin zdany!

Wynik: 28/40 punktów (70,0%)

Wymagane minimum: 20 punktów (50%)

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

Co to jest Redux?

A. System kontroli wersji dla projektów JavaScript
B. Framework do tworzenia aplikacji mobilnych
C. Biblioteka do zarządzania stanem aplikacji w JavaScript
D. Narzędzie do optymalizacji wydajności aplikacji React
Chociaż odpowiedzi związane z frameworkami do tworzenia aplikacji mobilnych, narzędziami do optymalizacji wydajności czy systemami kontroli wersji mogą być interesujące, nie są one związane z funkcją, jaką pełni Redux. Frameworki do tworzenia aplikacji mobilnych, takie jak React Native, pozwalają na rozwijanie aplikacji mobilnych z użyciem JavaScript, ale nie zarządzają one stanem aplikacji w sposób, w jaki robi to Redux. Optymalizacja wydajności aplikacji React nie jest bezpośrednią funkcją Redux; chociaż biblioteka ta może pośrednio przyczynić się do lepszej wydajności przez poprawne zarządzanie stanem, nie jest narzędziem służącym do optymalizacji. Z kolei systemy kontroli wersji, takie jak Git, służą do zarządzania historią zmian w kodzie źródłowym aplikacji, a nie do zarządzania stanem wykonawczej logiki aplikacji. Wybór niewłaściwego narzędzia wynika często z braku zrozumienia ich funkcji oraz zastosowania w procesie tworzenia aplikacji. Aby skutecznie zarządzać stanem w aplikacji, kluczowe jest zrozumienie różnic między tymi narzędziami oraz ich zastosowaniem w architekturze aplikacji, co jest fundamentalnym elementem współczesnego rozwijania oprogramowania.

Pytanie 2

Jakie czynniki powinny być brane pod uwagę podczas organizacji zasobów ludzkich w projekcie?

A. Jedynie dostępność technologii
B. Wyłącznie techniczne wymagania projektu
C. Umiejętności oraz doświadczenie członków zespołu
D. Budżet projektu, bez uwzględnienia kompetencji zespołu
Podczas planowania zasobów ludzkich w projekcie kluczowe jest uwzględnienie umiejętności i doświadczenia członków zespołu. Odpowiednie dopasowanie kompetencji do wymagań projektu ma ogromny wpływ na jakość i tempo realizacji zadań. Zespół o różnorodnych umiejętnościach jest bardziej elastyczny i lepiej radzi sobie z napotkanymi wyzwaniami. Analiza umiejętności pozwala na efektywne przydzielanie zadań, co zwiększa produktywność i redukuje ryzyko opóźnień.

Pytanie 3

Który z poniższych elementów UI umożliwia graficzną nawigację pomiędzy różnymi sekcjami aplikacji?

A. Obszar tekstowy
B. Rozwijana lista
C. Menu
D. Przycisk opcji
Pasek menu to kluczowy element interfejsu użytkownika, który umożliwia wizualną nawigację pomiędzy różnymi sekcjami aplikacji. Paski menu są powszechnie stosowane w aplikacjach desktopowych i mobilnych, ponieważ pozwalają na szybki dostęp do różnych funkcji oraz ustawień. Dzięki ich hierarchicznej strukturze użytkownicy mogą łatwo odnaleźć potrzebne narzędzia i opcje, co zwiększa intuicyjność i wygodę korzystania z aplikacji.

Pytanie 4

Który z poniższych przykładów ilustruje deklarację złożonego typu w języku C++?

A. class Student {};
B. int wynik = 100;
C. float ocena = 4.5;
D. bool status;
Deklaracja `class Student {};` w języku C++ przedstawia przykład tworzenia typu złożonego w postaci klasy. Klasa to podstawowy element programowania obiektowego, który pozwala na łączenie danych (pól) i funkcji (metod) w jednej strukturze. Klasy umożliwiają modelowanie rzeczywistych obiektów i ich zachowań, co prowadzi do bardziej zorganizowanego i skalowalnego kodu. Klasy mogą być rozszerzane przez dziedziczenie, co jest kluczową zaletą programowania obiektowego.

Pytanie 5

Jakie jest oznaczenie normy międzynarodowej?

A. PN
B. EN
C. ISO
D. CE
ISO (International Organization for Standardization) to międzynarodowa organizacja zajmująca się opracowywaniem i wdrażaniem standardów technicznych. Oznaczenie ISO wskazuje, że produkt lub usługa spełnia międzynarodowe normy jakości i bezpieczeństwa, co ułatwia handel oraz współpracę na arenie międzynarodowej. Normy ISO obejmują szeroki zakres dziedzin, takich jak zarządzanie jakością (ISO 9001), zarządzanie środowiskowe (ISO 14001) czy bezpieczeństwo informacji (ISO 27001). Certyfikacja ISO buduje zaufanie klientów i zwiększa konkurencyjność firmy na rynku globalnym.

Pytanie 6

Jaki rodzaj licencji umożliwia dowolne zmienianie oraz rozpowszechnianie kodu źródłowego?

A. Licencja GNU GPL
B. Licencja OEM
C. Licencja komercyjna
D. Licencja shareware
Licencja komercyjna ogranicza możliwość modyfikacji kodu i zazwyczaj wymaga zakupu oprogramowania na określonych warunkach. Licencja shareware pozwala na testowanie oprogramowania przed zakupem, ale nie uprawnia do modyfikacji ani redystrybucji kodu. Licencja OEM (Original Equipment Manufacturer) jest związana z oprogramowaniem dostarczanym przez producenta sprzętu i ogranicza możliwość instalacji na innym urządzeniu lub modyfikacji kodu źródłowego.

Pytanie 7

Który z etapów umożliwia zwiększenie efektywności aplikacji przed jej wydaniem?

A. Optymalizacja kodu
B. Dodawanie komentarzy do kodu
C. Tworzenie interfejsu graficznego
D. Testowanie jednostkowe
Optymalizacja kodu to kluczowy etap poprawy wydajności aplikacji przed jej publikacją. Polega na eliminacji zbędnych operacji, poprawie algorytmów oraz minimalizacji użycia zasobów, co pozwala na szybsze działanie aplikacji i zmniejszenie jej zapotrzebowania na pamięć. Optymalizacja kodu obejmuje również refaktoryzację, czyli przekształcenie kodu w bardziej czytelną i efektywną formę bez zmiany jego funkcjonalności. Dzięki optymalizacji aplikacje działają płynniej, szybciej się ładują i oferują lepsze doświadczenie użytkownika, co ma kluczowe znaczenie dla SEO oraz pozycjonowania aplikacji w wyszukiwarkach. Dodatkowo, zoptymalizowany kod jest łatwiejszy w utrzymaniu i rozwijaniu, co przekłada się na długoterminowe korzyści dla zespołu deweloperskiego.

Pytanie 8

Które z poniższych narzędzi służy do analizy wydajności stron internetowych?

A. Lighthouse
B. Postman
C. Docker
D. Webpack
Lighthouse to narzędzie opracowane przez Google, które służy do audytowania wydajności stron internetowych. Jego głównym celem jest analiza jakości strony w kontekście szybkości ładowania, dostępności oraz SEO. Podczas audytu Lighthouse generuje szczegółowy raport, w którym przedstawione są różne metryki, takie jak czas do pierwszego renderowania, czas ładowania zasobów, a także ocena dostępności elementów strony. Narzędzie to doskonale wpisuje się w obecne standardy branżowe, zachęcając programistów do stosowania najlepszych praktyk. Przykładowo, wykorzystanie Lighthouse pozwala na identyfikację problemów, które mogą wpływać na doświadczenia użytkowników, takich jak zbyt duże obrazy, zbyt skomplikowane skrypty czy brak kompresji zasobów. Dzięki tym informacjom, deweloperzy mogą wprowadzać konkretne zmiany, które przyczynią się do poprawy wydajności strony, co jest kluczowe w kontekście SEO oraz satysfakcji użytkowników.

Pytanie 9

Co oznacza skrót CSRF w kontekście bezpieczeństwa aplikacji webowych?

A. Cascading Style Rendering Form
B. Cross-Site Request Forgery
C. Client-Side Rendering Framework
D. Cross-Site Response Filter
CSRF, czyli Cross-Site Request Forgery, to typ ataku, który wykorzystuje zaufanie użytkownika do witryny internetowej. Atakujący może skłonić ofiarę do wysłania niezamierzonego żądania do innej witryny, na przykład za pomocą osadzonego linku w e-mailu lub w złośliwej stronie. W ten sposób można wykonać nieautoryzowane akcje, takie jak zmiana ustawień konta, przelewy finansowe czy inne działania, które powinny być chronione. Aby zabezpieczyć aplikacje przed tym rodzajem ataku, stosuje się różne techniki, takie jak tokeny CSRF, które są weryfikowane przy każdym żądaniu. W praktyce oznacza to, że aplikacja generuje unikalny token dla każdej sesji użytkownika, a ten token musi być dołączony do każdego żądania modyfikującego dane. Warto pamiętać o tym, że nie tylko same aplikacje, ale i przeglądarki muszą mieć odpowiednią konfigurację, aby skutecznie zapobiegać tego typu atakom, co jest zgodne z najlepszymi praktykami bezpieczeństwa w branży. Znajomość CSRF jest kluczowa dla każdego programisty czy specjalisty ds. bezpieczeństwa, ponieważ pozwala na skuteczne zabezpieczanie aplikacji webowych i chronienie danych użytkowników.

Pytanie 10

Który z objawów może sugerować zawał serca?

A. Intensywny ból w klatce piersiowej promieniujący do lewej ręki
B. Spadek nastroju
C. Ból brzucha po spożyciu posiłku
D. Gorączka oraz dreszcze
Silny ból w klatce piersiowej promieniujący do lewej ręki to klasyczny objaw zawału serca (ostrego zespołu wieńcowego). Ból ten często pojawia się nagle, jest intensywny, gniotący lub piekący i może towarzyszyć mu duszność, zawroty głowy, zimne poty i nudności. Zawał serca wynika z zablokowania jednej z tętnic wieńcowych, co prowadzi do niedokrwienia mięśnia sercowego. Szybka reakcja i wezwanie pomocy medycznej mogą uratować życie i zminimalizować uszkodzenia serca. Każda minuta jest kluczowa – nie należy czekać na ustąpienie objawów, lecz natychmiast zadzwonić na numer alarmowy 112 lub udać się do najbliższego szpitala.

Pytanie 11

Która z wymienionych aplikacji stanowi przykład prostego rozwiązania mobilnego?

A. Aplikacja typu zegar
B. Aplikacja z rozbudowanym systemem zarządzania projektami
C. Aplikacja do analizy danych finansowych
D. Aplikacja do monitorowania użycia pamięci RAM
Aplikacja monitorująca zużycie pamięci RAM to narzędzie wymagające bardziej zaawansowanych algorytmów i dostępu do wewnętrznych zasobów systemowych, co wykracza poza definicję prostej aplikacji mobilnej. Aplikacja do analizy danych finansowych to skomplikowane oprogramowanie, które musi przetwarzać duże ilości informacji i często wymaga integracji z bazami danych, co czyni ją bardziej złożoną niż typowy zegar. Aplikacja z systemem zarządzania projektami jest rozbudowana i zawiera wiele funkcji takich jak kalendarze, harmonogramy czy integracja z chmurą, co również przekracza poziom skomplikowania typowej aplikacji zegara.

Pytanie 12

Co to jest zasięg (scope) zmiennej w programowaniu?

A. Maksymalny zakres wartości, jakie może przyjąć zmienna danego typu
B. Obszar kodu, w którym zmienna jest dostępna
C. Czas życia zmiennej podczas wykonywania programu
D. Ilość pamięci, jaką zmienna zajmuje podczas wykonywania programu
Zasięg (scope) zmiennej w programowaniu odnosi się do obszaru kodu, w którym dana zmienna jest dostępna i może być używana. W praktyce oznacza to, że zmienne mogą być zdefiniowane lokalnie w funkcjach lub blokach kodu, co oznacza, że są dostępne tylko w tym określonym kontekście. Na przykład, zmienna zdefiniowana wewnątrz funkcji nie będzie dostępna na zewnątrz tej funkcji. Taki mechanizm sprawia, że kod jest bardziej zorganizowany i zmniejsza ryzyko konfliktów nazw, co jest szczególnie istotne w większych projektach. Zasięg zmiennej można podzielić na zasięg lokalny i zasięg globalny. Zmienne globalne są dostępne w całym kodzie, natomiast lokalne ograniczają swoje działanie do funkcji, w której zostały zadeklarowane. Praktyczne wykorzystanie zasięgu zmiennych pomaga w utrzymaniu porządku w kodzie oraz w unikaniu niezamierzonych błędów wynikających z ponownego użycia nazw zmiennych. Dobrą praktyką jest ograniczanie zasięgu zmiennych do jak najmniejszych bloków, aby zwiększyć czytelność i kontrolę nad kodem. Zrozumienie zasięgu zmiennych jest kluczowe dla programistów, aby tworzyć efektywne i łatwe w utrzymaniu aplikacje.

Pytanie 13

Co to jest serverless computing?

A. Metoda tworzenia aplikacji bez użycia back-endu
B. Proces kompilacji kodu bezpośrednio w przeglądarce użytkownika
C. Technika projektowania baz danych bez użycia serwera SQL
D. Model wykonywania kodu w chmurze bez konieczności zarządzania infrastrukturą serwerową
Serverless computing nie jest tożsamy z koncepcjami przedstawionymi w pozostałych odpowiedziach. Tworzenie aplikacji bez użycia back-endu nie jest zdefiniowane w ramach serverless computing, ponieważ model ten wciąż zakłada istnienie backendu, który jest zarządzany przez dostawcę usług chmurowych. Użytkownik nie musi się martwić o serwery, ale backend wciąż funkcjonuje, co jest kluczowe dla działania aplikacji. Technika projektowania baz danych bez użycia serwera SQL również nie odnosi się do serverless computing. W rzeczywistości, serverless może wykorzystywać zewnętrzne bazy danych, takie jak DynamoDB, które są w pełni zarządzane przez dostawcę chmury. Również proces kompilacji kodu w przeglądarce użytkownika to odmienna koncepcja, która dotyczy raczej aplikacji webowych i nie ma związku z serverless computing. Pojęcie serverless odnosi się do automatyzacji zarządzania infrastrukturą, co odmienia sposób, w jaki aplikacje są rozwijane i skalowane. Wprowadzenie w błąd w tym kontekście może prowadzić do nieefektywnej architektury oraz niepoprawnego rozumienia aktualnych trendów w inżynierii oprogramowania.

Pytanie 14

Co to jest klasa abstrakcyjna?

A. Klasa, która może zawierać zarówno metody zdefiniowane, jak i niezdefiniowane (czysto wirtualne)
B. Klasa, która nie może posiadać żadnych metod
C. Klasa, która zawsze dziedziczy z klasy bazowej
D. Klasa, która może być dziedziczona, ale nie można jej instancjonować
Odpowiedź „Klasa, która może być dziedziczona, ale nie można jej instancjonować” jest poprawna, ponieważ najtrafniej oddaje istotę klasy abstrakcyjnej w programowaniu obiektowym. Klasa abstrakcyjna służy jako wzorzec lub szablon dla klas pochodnych, określając wspólne cechy i zachowania, które powinny zostać zaimplementowane w klasach dziedziczących. Nie tworzy się z niej bezpośrednio obiektów, ponieważ sama w sobie nie reprezentuje kompletnego bytu, lecz raczej koncepcję lub ogólny typ. Dzięki temu mechanizmowi programista może narzucić strukturę kodu, zwiększyć jego czytelność oraz ułatwić dalsze rozszerzanie aplikacji. Takie podejście sprzyja stosowaniu zasad programowania obiektowego, takich jak dziedziczenie i polimorfizm, a także pomaga w tworzeniu bardziej uporządkowanych i łatwiejszych w utrzymaniu projektów.

Pytanie 15

Co oznacza walidacja kodu programu?

A. Czynnością dotyczącą publikacji aplikacji w sklepie
B. Czynnością polegającą na kompilowaniu kodu
C. Czynnością związaną z tworzeniem dokumentacji kodu
D. Czynnością weryfikującą poprawność i zgodność kodu z założeniami
Walidacja kodu programu to proces sprawdzania jego poprawności i zgodności z założeniami projektowymi oraz standardami programistycznymi. Celem walidacji jest wykrycie błędów logicznych, składniowych i zgodności kodu z wymaganiami aplikacji. Walidacja może obejmować analizę statyczną kodu (bez jego wykonywania) oraz testy jednostkowe i integracyjne, które sprawdzają funkcjonalność aplikacji. Dzięki walidacji programiści mogą uniknąć błędów na późniejszych etapach rozwoju projektu, co znacząco zwiększa niezawodność i stabilność aplikacji. Proces ten jest nieodzowny w metodykach Agile i Continuous Integration, gdzie regularne testowanie kodu stanowi podstawę dostarczania wysokiej jakości oprogramowania.

Pytanie 16

Przedstawione w filmie działania wykorzystują narzędzie

A. debuggera analizującego wykonujący kod
B. kompilatora dla interfejsu graficznego
C. generatora GUI przekształcającego kod do języka XAML
D. generatora kodu java
Wybrana odpowiedź jest trafna, bo faktycznie narzędzie pokazane w filmie to generator GUI, który potrafi przekształcać kod do języka XAML. XAML (czyli Extensible Application Markup Language) jest powszechnie używany do deklaratywnego opisywania interfejsów użytkownika, na przykład w aplikacjach WPF czy UWP na platformie .NET. Jak dla mnie, korzystanie z takich generatorów to ogromna wygoda, bo pozwala błyskawicznie przenosić projekt graficzny do formatu czytelnego dla platformy Microsoftu. Z mojego doświadczenia, wiele zespołów programistycznych stosuje takie rozwiązania, żeby oszczędzić czas na ręcznym pisaniu XAML-a (co potrafi być naprawdę żmudne przy dużych projektach). Co ciekawe, takie narzędzia bardzo dobrze współpracują z designerskimi edytorami UI i potrafią zautomatyzować konwersję nawet z innych formatów graficznych, np. Sketch czy Adobe XD do XAML-a. Branżowe standardy zalecają, by wykorzystywać generatorów GUI właśnie do tego celu, bo minimalizuje to liczbę błędów, przyspiesza wdrożenie zmian i ułatwia współpracę między programistami a projektantami. Warto pamiętać, że XAML jest bardzo elastyczny i umożliwia potem ręczną edycję wygenerowanego kodu – czasem powstają drobne poprawki, ale ogólnie to naprawdę przydatne narzędzie. Ogólnie – jeśli tylko projektujesz UI pod .NET, to automatyczna konwersja do XAML-a to jest coś, co warto znać i wykorzystywać w praktyce.

Pytanie 17

Jakie działania mogą przyczynić się do ochrony swojego cyfrowego wizerunku w sieci?

A. Niepotwierdzanie źródeł publikowanych informacji
B. Weryfikacja ustawień prywatności na platformach społecznościowych
C. Zamieszczanie wszystkich szczegółów dotyczących swojego życia prywatnego
D. Dzieleni się swoimi danymi dostępowymi z przyjaciółmi
Sprawdzanie ustawień prywatności na portalach społecznościowych jest kluczowe dla ochrony cyfrowego wizerunku. Regularne aktualizowanie ustawień prywatności pozwala na kontrolowanie, kto ma dostęp do publikowanych treści, co chroni przed nieuprawnionym wykorzystaniem zdjęć, filmów i informacji osobistych. Dostosowanie widoczności postów oraz ograniczenie udostępniania danych osobowych minimalizuje ryzyko kradzieży tożsamości i cyberprzemocy. To proste działanie znacząco podnosi poziom bezpieczeństwa w sieci i pozwala utrzymać pozytywny wizerunek w internecie.

Pytanie 18

Jak określa się proces transferu danych z lokalnego komputera na serwer?

A. Wysyłanie danych
B. Pobieranie danych
C. Przesyłanie danych
D. Streaming
Pojęcia takie jak pobieranie danych, przesyłanie danych oraz streaming są często mylone z wysyłaniem danych, jednak każde z nich ma swoją unikalną definicję i zastosowanie. Pobieranie danych odnosi się do procesu ściągania informacji z serwera na komputer lokalny. Jest to operacja odwrotna do wysyłania danych i jest kluczowa dla użytkowników, którzy chcą uzyskać dostęp do plików lub zasobów umieszczonych na serwerze. Przykładowo, podczas przeglądania internetu, przeglądarka pobiera dane z serwerów, aby wyświetlić stronę użytkownikowi. Przesyłanie danych, z kolei, to termin ogólny, który można wykorzystać do opisania dowolnej wymiany informacji między lokalnym a zdalnym systemem. Obejmuje zarówno wysyłanie, jak i pobieranie danych, co sprawia, że użycie go w kontekście konkretnej operacji może być mylące. Wreszcie, streaming odnosi się do strumieniowego przesyłania danych, które umożliwia użytkownikom nieprzerwaną transmisję multimediów, takich jak filmy czy muzyka, w czasie rzeczywistym. W tym przypadku, dane są przesyłane w małych partiach, co pozwala na ich natychmiastowe odtwarzanie, a nie przechowywanie lokalnie. W związku z tym, choć wszystkie te procesy dotyczą transferu danych, to tylko wysyłanie danych odnosi się do przesyłania informacji z komputera lokalnego na serwer.

Pytanie 19

Która grupa typów zawiera wyłącznie typy złożone?

A. class, struct, union
B. char, struct, union
C. unsigned, struct, float
D. class, struct, float
W tej odpowiedzi trafiłeś w sedno, bo class, struct oraz union to typowe przykłady typów złożonych w językach programowania takich jak C++ czy C. Każdy z nich służy do przechowywania bardziej skomplikowanych struktur danych niż zwykłe typy proste jak int czy float. Klasa (class) to podstawa programowania obiektowego. Pozwala łączyć dane i funkcje w jeden byt – obiekt. Z mojego doświadczenia korzystanie z klas daje ogromne możliwości, bo można ukrywać szczegóły implementacji czy stosować dziedziczenie – co jest nieocenione przy większych projektach. Struktura (struct) to taki trochę prostszy wariant klasy, szczególnie w C, gdzie nie obsługuje ona metod czy hermetyzacji, ale w C++ różnice się zacierają. Union natomiast pozwala na oszczędność pamięci – kilka pól dzieli ten sam obszar pamięci, czyli tylko jedno z nich jest aktywne w danej chwili. To się przydaje np. w programowaniu niskopoziomowym, obsłudze różnych protokołów czy pracy z rejestrami sprzętowymi. Według standardów ISO/IEC dla języka C++ (np. 14882:2017), właśnie te trzy typy należą bezdyskusyjnie do grupy złożonych, bo są zbudowane z innych typów i pozwalają lepiej modelować rzeczywistość. Warto pamiętać, że typy złożone są podstawą nowoczesnych technik projektowania oprogramowania. W praktyce, nawet w prostych aplikacjach, korzystanie z tych struktur podnosi czytelność i ułatwia przyszłą rozbudowę kodu.

Pytanie 20

Co to jest Cypress?

A. Biblioteka komponentów UI dla React
B. Narzędzie do kompilacji kodu TypeScript
C. System zarządzania bazami danych dla aplikacji mobilnych
D. Framework do testowania end-to-end aplikacji webowych
Odpowiedzi, które wskazują na inne funkcje niż testowanie aplikacji webowych, prowadzą do nieporozumień związanych z rolą i zastosowaniem narzędzi w procesie tworzenia oprogramowania. Na przykład, biblioteki komponentów UI dla React są narzędziem, które ułatwia tworzenie interaktywnych interfejsów użytkownika, ale nie zajmują się automatyzowaniem testów. Systemy zarządzania bazami danych są odpowiedzialne za przechowywanie i organizację danych, a nie za testowanie aplikacji. Podobnie, narzędzia do kompilacji kodu TypeScript koncentrują się na konwersji kodu źródłowego z TypeScript do JavaScript, co jest zupełnie inną funkcjonalnością. Kluczowym błędem jest mylenie różnych aspektów cyklu życia aplikacji; testowanie end-to-end, które oferuje Cypress, jest krytycznym krokiem zapewniającym jakość i niezawodność aplikacji, podczas gdy inne wymienione opcje mają odmienny cel i zastosowanie. Zrozumienie różnicy między tymi narzędziami jest kluczowe dla właściwego doboru technologii w projekcie informatycznym.

Pytanie 21

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 w składni
B. Niekompatybilność typów danych w kodzie
C. Błąd dzielenia przez zero
D. Błąd kompilacyjny
W języku C++ wyjątki pozwalają na obsługę błędów wykonania, takich jak dzielenie przez zero. Jest to klasyczny przykład błędu, który może prowadzić do nieprzewidywalnych rezultatów lub awarii programu. Dzięki użyciu wyjątków można zapobiec katastrofalnym skutkom takich błędów, przekierowując sterowanie do odpowiedniego bloku 'catch', gdzie można podjąć działania naprawcze lub zakończyć program w kontrolowany sposób. Obsługa błędów takich jak dzielenie przez zero jest kluczowa w programowaniu niskopoziomowym i aplikacjach wymagających wysokiej niezawodności.

Pytanie 22

Jak oddziaływanie monotonnego środowiska pracy może wpłynąć na organizm człowieka?

A. Obniżenie koncentracji oraz zwiększone ryzyko popełniania błędów
B. Wzrost poziomu motywacji
C. Poprawa kondycji fizycznej
D. Zwiększenie odporności na stres
Kiedy w pracy ciągle powtarzamy te same czynności, to może nas to naprawdę zniechęcać. Zauważyłem, że takie monotonne środowisko potrafi sprawić, że gorzej się skupiamy i łatwiej popełniamy błędy. Jeśli pracownicy cały czas robią to samo bez żadnych zmian, to szybko tracą zapał i nie są zadowoleni z tego, co robią. Moim zdaniem, warto czasem zmieniać zadania, żeby wprowadzić trochę świeżości i wyzwań. Dobrze jest też organizować przerwy, bo to pomaga nabrać energii oraz zadbać o fajną atmosferę w pracy.

Pytanie 23

Reguła zaangażowania i konsekwencji jako jedna z zasad wpływania na innych odnosi się

A. do odwzajemniania się osobie, która nam pomogła
B. do kierowania się zdaniem danej grupy
C. do uległości wobec autorytetów
D. do doprowadzania spraw do końca
Reguła zaangażowania i konsekwencji, o której tu mowa, faktycznie odnosi się do potrzeby doprowadzania spraw do końca. To jedna z podstawowych zasad psychologicznych wykorzystywanych w wpływaniu na decyzje i zachowania ludzi, szczególnie w sprzedaży czy negocjacjach. Kiedy już się na coś zgodzimy lub podejmiemy pierwsze, nawet drobne zobowiązanie, automatycznie pojawia się w nas silna potrzeba zachowania spójności z wcześniejszymi deklaracjami — tak po prostu działa ludzka psychika. Z mojego doświadczenia wynika, że firmy bardzo często to wykorzystują, np. prosząc klienta o drobną przysługę, podpis czy mikroakceptację, bo potem jest większa szansa, że pójdzie za ciosem i zdecyduje się na większy krok. W psychologii społecznej ten mechanizm uznaje się za bardzo skuteczny – zresztą Robert Cialdini w swoich książkach szeroko o tym pisze. Na rynku pracy też to widać, bo pracodawcy chętniej powierzają ważne zadania osobom, które mają zwyczaj kończyć to, co zaczęły. W praktyce, jeśli ktoś raz się w coś zaangażuje — nawet formalnie nie podpisując żadnej umowy — to potem z dużym prawdopodobieństwem wytrwa przy swojej decyzji. Dlatego znajomość tej zasady jest nie tylko teoretycznie ciekawa, ale daje konkretne narzędzia do skuteczniejszego działania w relacjach międzyludzkich, marketingu czy zarządzaniu projektami.

Pytanie 24

Jakie obliczenia można wykonać za pomocą poniższego algorytmu, który operuje na dodatnich liczbach całkowitych?

Ilustracja do pytania
A. największy wspólny dzielnik wprowadzonej liczby
B. liczbę cyfr w wprowadzonej liczbie
C. sumę cyfr wprowadzonej liczby
D. sumę wprowadzonych liczb
Wybierając odpowiedź dotyczącą liczby cyfr w wprowadzonej liczbie, pokazujesz dobre zrozumienie tego, jak działa prezentowany algorytm. W praktyce bardzo często spotyka się podobne rozwiązania, gdy trzeba np. zliczyć, ile znaków ma PESEL, numer telefonu lub numer identyfikacyjny w bazie danych. Algorytm wykonuje bardzo prostą, ale jednocześnie sprytną operację – dzieli podaną liczbę przez 10 (zawsze całkowicie, bez reszty), aż ta liczba się wyzeruje. Za każdym obrotem pętli zwiększa licznik, więc po zakończeniu działania licznik wskazuje, ile razy można było podzielić liczbę przez 10, czyli ile było w niej cyfr. To dokładnie odpowiada liczbie cyfr w zapisie dziesiętnym. Podejście to jest bardzo efektywne, bo nie wymaga konwersji liczby na tekst ani używania dodatkowych struktur danych. W profesjonalnym kodzie często preferuje się takie rozwiązania – są szybkie i niezawodne. Moim zdaniem warto znać ten wzorzec, bo przydaje się zarówno w algorytmice, jak i analizie danych czy podczas implementacji walidacji pól liczbowych w bazach danych lub formularzach. Dodatkowo, zgodnie z dobrymi praktykami, algorytm nie ulega błędom związanym z nietypowymi danymi – działa dla każdej dodatniej liczby całkowitej. Warto zapamiętać takie sztuczki, bo potem życie programisty jest łatwiejsze.

Pytanie 25

Który z poniższych jest popularnym systemem zarządzania bazami danych NoSQL?

A. MySQL
B. MongoDB
C. PostgreSQL
D. Oracle
MySQL, PostgreSQL i Oracle to systemy zarządzania bazami danych, które opierają się na tradycyjnym modelu relacyjnym, co oznacza, że są zoptymalizowane do pracy z danymi, które mają ustaloną strukturę, często w postaci tabel. W tym kontekście, ich architektura i sposób przechowywania danych różnią się znacznie od systemów NoSQL, takich jak MongoDB. MySQL i PostgreSQL są znane jako bazy danych SQL, co oznacza, że wykorzystują język zapytań SQL do interakcji z danymi. Dzięki temu są one szczególnie skuteczne w przypadkach, gdzie dane mają ściśle zdefiniowaną strukturę i relacje między nimi są kluczowe, ale mogą być mniej elastyczne w obsłudze danych o zróżnicowanej strukturze. Oracle to z kolei jeden z najbardziej rozbudowanych i kompleksowych systemów zarządzania bazami danych, jednak jego złożoność oraz koszty mogą być barierą dla mniejszych projektów. Wybierając system zarządzania bazą danych, warto zwrócić uwagę na specyfikę wymagań aplikacji oraz rodzaj przechowywanych danych. Przyjęcie błędnych założeń co do modelu danych może prowadzić do trudności w skalowaniu, ograniczonej wydajności oraz większych kosztów utrzymania. Dlatego kluczowe jest zrozumienie, że wybór między systemami SQL a NoSQL powinien być uzależniony od charakterystyki danych i wymagań projektowych.

Pytanie 26

W jakiej fazie cyklu życia projektu informatycznego następuje integracja oraz testowanie wszystkich modułów systemu?

A. Faza wdrożenia
B. Etap planowania
C. Faza analizy
D. Etap implementacji
Planowanie to faza początkowa, w której określane są cele projektu, harmonogram i zasoby, ale nie jest to etap integracji systemu. Analiza skupia się na zbieraniu wymagań i definiowaniu specyfikacji technicznej, ale nie obejmuje łączenia modułów ani testowania gotowego produktu. Wdrożenie to końcowy etap cyklu życia projektu, który następuje po pełnej integracji i testowaniu – polega na uruchomieniu systemu w środowisku produkcyjnym i udostępnieniu go użytkownikom końcowym.

Pytanie 27

Co to jest API w kontekście programowania?

A. Interfejs programistyczny aplikacji, który definiuje sposób komunikacji między różnymi komponentami oprogramowania
B. System zarządzania relacyjnymi bazami danych
C. Narzędzie do testowania interfejsu użytkownika aplikacji
D. Metoda kompresji danych w aplikacjach webowych
API, czyli Interfejs Programistyczny Aplikacji, to zestaw reguł i protokołów, które umożliwiają różnym komponentom oprogramowania komunikację ze sobą. W praktyce API działa jako most między różnymi systemami, pozwalając na wymianę danych oraz funkcji. Na przykład, API może być wykorzystywane do integracji z zewnętrznymi serwisami, takimi jak systemy płatności, co pozwala na łatwe wdrożenie funkcji zakupów online w aplikacji. Stosowanie API zgodnie z zasadami RESTful czy GraphQL jest powszechną praktyką, ponieważ ułatwia rozwój i utrzymanie aplikacji, umożliwiając tworzenie skalowalnych rozwiązań. Co więcej, dobrze zdefiniowane API zwiększa bezpieczeństwo aplikacji, ograniczając bezpośredni dostęp do wewnętrznych mechanizmów oraz danych. Firmy często tworzą dokumentację API, aby programiści mogli szybko zrozumieć, jak z niego korzystać, co jest zgodne z zasadami dobrych praktyk w branży programistycznej.

Pytanie 28

Jakie działania można podjąć, aby uniknąć pogorszenia wzroku podczas korzystania z komputera?

A. Używać filtrów przeciwodblaskowych na ekranie
B. Stosować ergonomiczne podkładki pod ręce
C. Korzytać ze słuchawek tłumiących dźwięki
D. Zachować stałą temperaturę w biurze
Stosowanie filtrów przeciwodblaskowych na monitorze to skuteczny sposób na zapobieganie pogorszeniu wzroku podczas pracy przy komputerze. Filtry te redukują odbicia światła, zmniejszając zmęczenie oczu i poprawiając komfort pracy. Długotrwała praca przy komputerze bez odpowiedniej ochrony może prowadzić do zespołu suchego oka, bólu głowy i problemów z widzeniem. Filtry przeciwodblaskowe to prosty, ale bardzo efektywny sposób na poprawę ergonomii stanowiska pracy. W połączeniu z odpowiednim ustawieniem monitora, regularnymi przerwami oraz ćwiczeniami wzrokowymi, pomagają one w utrzymaniu zdrowia oczu.

Pytanie 29

Wskaż poprawny komentarz jednoliniowy, który można dodać w linii 3 w miejscu znaków zapytania, aby był zgodny ze składnią i opisywał operację przeprowadzaną w tej linii?

string[] langs = {"C++", "C#", "Java", "Python"};
foreach (string i in langs) {
    Console.WriteLine(i);    ???
}
A. # wyświetlenie elementu tablicy
B. # wypełnienie elementu tablicy
C. // wyświetlenie elementu tablicy
D. // wypełnienie elementu tablicy
Odpowiedź // wyswietlenie elementu tablicy jest poprawna, ponieważ komentarze jednoliniowe w języku C# rozpoczynają się od dwóch ukośników: //. W tym przypadku linia Console.WriteLine(i); odpowiedzialna jest za wyświetlenie elementu tablicy na konsoli. Komentarz ten poprawnie opisuje, co robi dana linia kodu, co jest dobrą praktyką w programowaniu, ponieważ ułatwia zrozumienie funkcji kodu innym programistom lub nawet nam samym w przyszłości. Komentarze są szczególnie przydatne, gdy kod jest skomplikowany i wymaga wyjaśnień. Warto zawsze stosować komentarze, by opisywały one istotne fragmenty kodu, co znacząco zwiększa jego czytelność i utrzymywalność. Praktyka dodawania takich opisów jest zgodna z zasadami czystego kodu, które promują czytelność i zrozumiałość. Dzięki takim komentarzom osoby przeglądające kod mogą szybko zorientować się, jakie funkcje pełnią poszczególne jego fragmenty, co usprawnia proces debugowania i dalszego rozwoju oprogramowania.

Pytanie 30

Który z wymienionych frameworków służy do budowy aplikacji webowych w C#?

A. React.js
B. Django
C. ASP.NET Core
D. Angular
ASP.NET Core to nowoczesny, wydajny i skalowalny framework opracowany przez Microsoft, który jest przeznaczony do budowy aplikacji webowych w języku C#. ASP.NET Core umożliwia tworzenie dynamicznych stron internetowych, API oraz aplikacji mikroserwisowych. Jego modularność i wsparcie dla kontenerów (Docker) oraz chmury sprawiają, że jest to jeden z najczęściej wybieranych frameworków w środowiskach enterprise. ASP.NET Core obsługuje zarówno aplikacje serwerowe, jak i aplikacje klient-serwer, a dzięki technologii Razor Pages i Blazor pozwala na budowanie aplikacji, w których logika biznesowa jest ściśle zintegrowana z warstwą prezentacji. Dodatkowo ASP.NET Core oferuje wbudowane mechanizmy do zarządzania tożsamością użytkowników, autoryzacji i autentykacji, co czyni go doskonałym wyborem do tworzenia aplikacji biznesowych oraz korporacyjnych.

Pytanie 31

Złośliwe oprogramowanie stworzone w celu przyznania hakerom uprawnień administracyjnych do komputera ofiary bez jej świadomości, to

A. rootkit
B. keylogger
C. wirus
D. robak
Czasem łatwo się pogubić w terminologii dotyczącej malware, bo wirusy, keyloggery czy robaki pojawiają się w mediach tak często, że wszystko wydaje się jednym wielkim zagrożeniem. Wirus komputerowy to program, który potrafi się samoreplikować i infekować pliki, ale nie chodzi tu o uzyskiwanie uprawnień administracyjnych samych w sobie. Jego głównym celem zazwyczaj jest rozprzestrzenianie się i ewentualnie niszczenie danych, raczej nie jest zaprojektowany do ukrywania się na poziomie jądra systemu czy przejmowania kontroli nad systemem operacyjnym. Keylogger z kolei to narzędzie do przechwytywania klawiszy – świetne do wykradania haseł czy innych poufnych informacji, ale sam keylogger nie daje przywilejów administratora, raczej działa w tle jako zwykły program. Robak natomiast to kolejna ciekawa kategoria – potrafi się rozprzestrzeniać po sieci bez potrzeby ingerencji użytkownika, ale jego głównym zadaniem jest infekowanie kolejnych maszyn, a nie uzyskiwanie wysokich uprawnień czy ukrywanie się głęboko w systemie. W praktyce wiele osób wrzuca te terminy do jednego worka „złośliwe oprogramowanie”, ale każde z nich ma inny mechanizm działania i inne miejsce w strategii ataku. Największym błędem jest myślenie, że każdy malware od razu daje pełny dostęp do komputera – w rzeczywistości tylko nieliczne, jak rootkity, są zbudowane właśnie po to, żeby przejąć i ukryć się na poziomie systemu operacyjnego, często modyfikując nawet sterowniki czy jądro. To jest powód, dla którego standardowe narzędzia bezpieczeństwa mogą je przegapić. Moim zdaniem warto na spokojnie przejrzeć różnice między rodzajami malware, bo to podstawa, żeby dobrze zrozumieć jak się bronić – a przy okazji nie dać się złapać na branżowe uproszczenia.

Pytanie 32

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

$x = 5; $y = '5'; var_dump($x == $y); var_dump($x === $y);
A. bool(false) bool(true)
B. bool(true) bool(true)
C. bool(true) bool(false)
D. bool(false) bool(false)
Odpowiedź bool(true) bool(false) jest prawidłowa, ponieważ w PHP porównania używane w tym kodzie różnią się pod względem operatorów. Pierwsze porównanie z użyciem operatora == jest porównaniem luźnym, co oznacza, że PHP dokonuje konwersji typów przed porównaniem. W tym przypadku zmienna $x o wartości 5 (typ integer) jest porównywana z $y, która ma wartość '5' (typ string). Po konwersji typów oba są interpretowane jako liczba 5, więc wynik to true. W drugim porównaniu operator === sprawdza zarówno wartość, jak i typ zmiennych. W tym przypadku $x jest integerem, a $y jest stringiem, więc ich typy się różnią. W związku z tym wynik to false. W praktyce, używanie operatora === jest zalecane, ponieważ pozwala uniknąć niespodzianek związanych z automatyczną konwersją typów, co jest często źródłem błędów w kodzie. Warto mieć to na uwadze przy pisaniu bardziej skomplikowanych skryptów, aby zapewnić, że porównania są jednoznaczne i wiarygodne.

Pytanie 33

Jaka będzie złożoność czasowa wyszukiwania w posortowanej tablicy przy użyciu algorytmu binarnego?

A. O(n log n)
B. O(n)
C. O(log n)
D. O(n²)
Wybierając inne odpowiedzi, można napotkać typowe błędy w myśleniu o złożoności algorytmów wyszukiwania. Odpowiedź O(n) sugeruje, że czas wyszukiwania rośnie liniowo z liczbą elementów w tablicy, co jest charakterystyczne dla prostego algorytmu liniowego. Taki algorytm przeszukuje każdy element, co jest czasochłonne, zwłaszcza w przypadku dużych zbiorów danych. Z kolei O(n²) reprezentuje złożoność czasową, która mogłaby wystąpić w algorytmach sortujących, takich jak sortowanie bąbelkowe, a nie w wyszukiwaniu. Takie zrozumienie złożoności może prowadzić do nieefektywnych rozwiązań w praktyce. Odpowiedź O(n log n) wskazuje na złożoność czasową algorytmów sortujących, co również nie ma zastosowania w kontekście samego wyszukiwania. Warto zauważyć, że przy wyborze algorytmu do wyszukiwania danych, kluczowe jest zrozumienie, jakie operacje są wykonywane na danych i jakie są ich struktury, co wpływa na wybór najlepszej strategii. Wysoka złożoność algorytmów wyszukiwania może prowadzić do znacznych opóźnień w aplikacjach wymagających szybkiej reakcji. Dlatego tak ważne jest zrozumienie zasadności wykorzystania algorytmu binarnego w odpowiednich kontekstach.

Pytanie 34

W językach C++ bądź C# termin virtual można wykorzystywać w kontekście

A. funkcji zaprzyjaźnionych
B. metod klasy
C. atrybutów klasy
D. destruktorów
Słowo kluczowe 'virtual' w C++ i C# służy przede wszystkim do deklarowania metod w klasach, które mogą być nadpisywane przez klasy pochodne. Dzięki temu mechanizmowi możliwa jest polimorfizm, czyli jedna z najważniejszych cech programowania obiektowego. Przykład z życia: gdy masz klasę bazową 'Zwierze' z wirtualną metodą 'DajGlos()', to możesz nadpisać tę metodę w klasach potomnych, takich jak 'Pies' czy 'Kot', i każdy z tych obiektów zareaguje inaczej po wywołaniu tej samej funkcji. To jest bardzo przydatne na co dzień, szczególnie gdy projektujesz rozbudowane systemy, w których klasy dziedziczą po sobie zachowania i interfejsy. Moim zdaniem, w C# sprawa jest trochę bardziej uporządkowana niż w C++, bo tam wszystko z tym 'virtual' i 'override' jest jasno określone. W C++ można się czasem nieźle pomylić, jeśli się zapomni o 'virtual', zwłaszcza przy złożonych hierarchiach dziedziczenia. Dobrą praktyką jest zawsze dodawać 'virtual' do tych metod w klasach, które przewidujesz jako bazowe, nawet jeśli na początku nie planujesz dziedziczenia. To z czasem bardzo ułatwia utrzymanie i rozwijanie kodu. Jeszcze taka ciekawostka – w C++ także destruktory mogą być wirtualne i czasem o tym się zapomina, ale na tym poziomie podstawowym, to właśnie metody klasy są tym, do czego 'virtual' najczęściej się stosuje.

Pytanie 35

Jakie środowisko developerskie służy do tworzenia aplikacji na platformę iOS?

A. Visual Studio Code
B. XCode
C. Studio Androida
D. Eclipse
XCode to oficjalne środowisko programistyczne (IDE) firmy Apple, które jest wykorzystywane do tworzenia aplikacji na systemy iOS, macOS, watchOS i tvOS. XCode oferuje pełne wsparcie dla języków Swift i Objective-C oraz narzędzia do projektowania interfejsów użytkownika (Storyboard), debugowania aplikacji, testowania wydajności i optymalizacji kodu. XCode posiada także symulatory urządzeń Apple, co umożliwia testowanie aplikacji na różnych modelach iPhone’ów, iPadów oraz Apple Watch. XCode jest niezbędnym narzędziem dla deweloperów tworzących aplikacje na ekosystem Apple i pozwala na łatwą publikację aplikacji w App Store.

Pytanie 36

Wskaż typy numeryczne o stałej precyzji

A. float, double
B. long long, long double
C. int, short, long
D. bool char, string
Typy numeryczne o stałej precyzji (czyli tzw. typy całkowite) to na przykład int, short, long – dokładnie te, które wskazałeś. Działają one trochę jak liczniki – przechowują liczby całkowite w określonym zakresie, bez przecinka. Moim zdaniem to podstawa, jeśli chodzi o reprezentowanie wartości typu liczba sztuk, indeks, identyfikator – wszędzie tam, gdzie nie potrzebujemy części ułamkowej. Ich precyzja wynika z tego, że są zdefiniowane w standardzie (np. w C++ czy Javie) jako liczby całkowite reprezentowane przez określoną liczbę bitów. Dla przykładu, 32-bitowy int zawsze pomieści wartości od -2 147 483 648 do 2 147 483 647 i każdy bit jest tu ważny. W praktyce, programując mikrokontrolery albo systemy wbudowane, właściwy wybór typu o stałej precyzji potrafi decydować o stabilności i wydajności całego programu. Warto też wiedzieć, że typy te – int, short, long – nie mają błędu zaokrągleń, co często zdarza się przy operacjach na liczbach zmiennoprzecinkowych. No i jeszcze takie małe spostrzeżenie: dobrym zwyczajem jest wybieranie najmniejszego typu całkowitego, który pokryje wymagany zakres, żeby zoptymalizować zużycie pamięci. Takie podejście mocno się przydaje, zwłaszcza jak się pracuje nad większym projektem, gdzie każda optymalizacja jest na wagę złota.

Pytanie 37

Do czego służy operator spread (...) w JavaScript?

A. Do łączenia dwóch różnych typów danych
B. Do konwersji liczby na string
C. Do rozwinięcia tablicy lub obiektu na poszczególne elementy
D. Do sprawdzania typu danych
Operator spread (...) w JavaScript jest niezwykle użytecznym narzędziem, które pozwala na łatwe rozwijanie tablic i obiektów do ich poszczególnych elementów lub właściwości. Umożliwia to na przykład przekazywanie elementów tablicy jako argumentów do funkcji lub łączenie wielu obiektów w jeden. Przykładowo, jeśli mamy tablicę `const arr = [1, 2, 3];` to używając operatora spread, możemy przekazać te elementy do funkcji tak: `Math.max(...arr)`, co zwróci 3. Dodatkowo, operator ten jest często używany przy tworzeniu nowych obiektów na podstawie istniejących. Na przykład, mając obiekt `const obj = { a: 1, b: 2 };`, możemy stworzyć nowy obiekt z dodatkową właściwością: `const newObj = { ...obj, c: 3 };` co da `newObj = { a: 1, b: 2, c: 3 };`. Operator spread jest zgodny z ES6 i stał się standardem w praktykach programistycznych, ułatwiając pisanie czystszych i bardziej elastycznych kodów. Warto go stosować, aby poprawić czytelność i efektywność swojego kodu.

Pytanie 38

Metoda przeszukiwania w uporządkowanych tablicach, która polega na podzieleniu tablicy na kilka części i wykonywaniu wyszukiwania liniowego tylko w tej części, gdzie może znajdować się poszukiwany element, w języku angielskim jest określana jako

A. Binary search
B. Exponential search
C. Ternary search
D. Jump search
Wydaje się, że wybór padł na inną metodę wyszukiwania niż jump search – spróbuję wyjaśnić, skąd mogły się wziąć takie wątpliwości. Exponential search rzeczywiście działa na posortowanych tablicach, ale jego główna idea to szybkie znajdowanie zakresu, w którym może się znajdować poszukiwany element, poprzez wykładnicze zwiększanie indeksu (czyli 1, 2, 4, 8 itd.), a dopiero później użycie binary search do finalnego wyszukiwania w wykrytym przedziale. To nie jest metoda z dzieleniem tablicy na kilka części i szukaniem liniowo po „bloku”. Ternary search z kolei jest spotykany głównie tam, gdzie szukamy ekstremum (minimum lub maksimum) funkcji unimodalnej, a nie konkretnego elementu w tablicy. Tutaj tablica jest dzielona na trzy części, ale to zupełnie inna idea niż jump search – chodzi o ciągłe zawężanie przedziału na podstawie wartości funkcji, a nie liniowe przeszukiwanie fragmentu tablicy. Binary search jest chyba najbardziej znaną metodą dla uporządkowanych tablic: dzieli zbiór na pół i eliminuje połowę elementów w każdej iteracji. Jednak tutaj nie ma podziału na „bloki” i nie wykonuje się wyszukiwania liniowego, tylko zawsze korzysta z bezpośrednich porównań środkowego elementu. Z mojego doświadczenia, najczęstszy błąd przy tego typu pytaniach to mylenie mechanizmów dzielenia tablicy i przyspieszania wyszukiwania – nie każda metoda, która coś „dzieli” albo „przeskakuje”, działa tak samo. W praktyce jump search jest czymś dość specyficznym i bardzo łatwo można go pomylić z innymi klasykami, zwłaszcza jeśli nie miało się okazji widzieć jego działania na żywo. Warto zapamiętać, że to właśnie ten algorytm łączy w sobie blokowe przeskoki i liniowe przeszukiwanie tylko wybranego fragmentu – i to go wyróżnia spośród pozostałych popularnych metod branżowych.

Pytanie 39

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

A. Gdy algorytm wymaga naturalnego podziału na mniejsze podproblemy
B. Kiedy program jest uruchamiany w środowisku wielowątkowym
C. Kiedy liczba iteracji przewyższa maksymalny zakres zmiennej licznikowej
D. Gdy kod źródłowy ma być zoptymalizowany dla starszych kompilatorów
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 40

Jak w CSS definiuje się element, który ma reagować na najechanie kursorem?

A. :click
B. :mouse
C. :over
D. :hover
Odpowiedź :hover jest poprawna, ponieważ w CSS pseudo-klasa :hover jest używana do definiowania stylów elementu, gdy kursor myszy znajduje się nad tym elementem. Jest to niezwykle przydatne w tworzeniu interaktywnych stron internetowych, ponieważ umożliwia twórcom zwiększenie responsywności elementów, takich jak przyciski, linki czy obrazy. Przykładowo, można zastosować :hover do zmiany koloru tła przycisku, co wskazuje użytkownikom, że dany element jest aktywny i gotowy do interakcji. Zastosowanie tej pseudo-klasy nie tylko poprawia estetykę strony, ale również zwiększa jej użyteczność oraz dostępność, co jest zgodne z dobrymi praktykami w projektowaniu UI/UX. Należy pamiętać, że :hover działa tylko w przeglądarkach obsługujących CSS, a efekty związane z tą pseudo-klasą są natychmiastowe, co sprawia, że są one bardzo efektywne w zastosowaniu. Warto również zaznaczyć, że w przypadku urządzeń dotykowych, takich jak smartfony, reakcja na najechanie może być symulowana poprzez dotknięcie ekranu, co sprawia, że ta technika jest uniwersalna.