Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 10 kwietnia 2026 08:26
  • Data zakończenia: 10 kwietnia 2026 08:37

Egzamin zdany!

Wynik: 26/40 punktów (65,0%)

Wymagane minimum: 20 punktów (50%)

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

Jakie z następujących skutków może wystąpić w przypadku naruszenia prawa autorskiego?

A. Obowiązek zamieszczenia publicznych przeprosin
B. Unieważnienie umowy licencyjnej użytkownika końcowego
C. Nałożenie grzywny lub kary więzienia
D. Zakaz korzystania z oprogramowania open-source
Naruszenie prawa autorskiego może skutkować nałożeniem grzywny lub karą więzienia. W zależności od skali naruszenia oraz obowiązujących przepisów, osoba odpowiedzialna za naruszenie może zostać pociągnięta do odpowiedzialności karnej lub cywilnej. Kary mogą obejmować nie tylko grzywny finansowe, ale także konieczność wypłaty odszkodowań na rzecz twórcy lub właściciela praw autorskich. W niektórych przypadkach naruszenie praw autorskich na dużą skalę może prowadzić do kary pozbawienia wolności, co podkreśla wagę przestrzegania przepisów o ochronie własności intelektualnej.

Pytanie 2

Co to jest BEM w kontekście CSS?

A. Bootstrap Element Manager - narzędzie do zarządzania elementami Bootstrap
B. Browser Extension Module - moduł rozszerzeń przeglądarki
C. Backend Encryption Method - metoda szyfrowania danych w backendzie
D. Metodologia nazewnictwa klas CSS: Block, Element, Modifier
Wybór innych odpowiedzi wskazuje na nieporozumienie dotyczące koncepcji BEM oraz jego zastosowania w CSS. Browser Extension Module, czyli moduł rozszerzeń przeglądarki, jest całkowicie niepowiązany z tematyką stylizacji stron internetowych. Takie podejście do ładowania lub tworzenia stylów w przeglądarkach nie dotyczy metodologii organizacji kodu CSS, jaką jest BEM. Backend Encryption Method natomiast odnosi się do bezpieczeństwa i szyfrowania danych w systemach serwerowych, co także nie ma związku z front-endowym podejściem do stylizacji. Pojęcie Bootstrap Element Manager mogłoby sugerować narzędzie do zarządzania komponentami w frameworku Bootstrap, jednak nie odnosi się do BEM, który jest niezależny od konkretnego frameworka i koncentruje się na organizacji kodu CSS. Typowym błędem myślowym przy wyborze tych odpowiedzi jest skupienie się na technologiach związanych z przeglądarką lub backendem, zamiast na metodologii stylistycznej, która ma na celu ułatwienie pracy z CSS. Kluczowe jest zrozumienie, że BEM jest narzędziem używanym do poprawy struktury i czytelności kodu CSS, co jest niezbędne w procesie tworzenia nowoczesnych, skalowalnych aplikacji webowych. Zwracanie uwagi na te różnice jest istotne dla każdej osoby zajmującej się front-endem, aby uniknąć zamieszania w terminologii i użyciu odpowiednich narzędzi do właściwych zadań.

Pytanie 3

Zgodnie z dokumentacją dotyczącą menu Navbar z biblioteki Bootstrap 4, w celu stworzenia menu należy zdefiniować listę

A standard navigation bar is created with the .navbar class, followed by a responsive collapsing class:
.navbar-expand-xl|lg|md|sm (stacks the navbar vertically on extra large, large, medium or small screens).
To add links inside the navbar, use a <ul> element with class="navbar-nav". Then add <li> elements with a
.nav-item class followed by a <a> element with a .nav-link class...
Use any of the .bg-color classes to change the background color of the navbar (.bg-primary, .bg-success,
.bg-info, .bg-warning, .bg-danger, .bg-secondary, .bg-dark and .bg-light)
Tip: Add a white text color to all links in the navbar with the .navbar-dark class, or use the .navbar-light
class to add a black text color.
Źródło: https://www.w3schools.com/bootstrap4
A. < ul class="navbar-nav" > ... < /ul>
B. < ol class="navbar-nav" > ... < /ol>
C. < ul class="a, .nav-item" > ... < /ul>
D. < ol class="a, .nav-item" > ... < /ol>
Wybrałeś dokładnie taki kod, jaki zaleca oficjalna dokumentacja Bootstrapa 4. Użycie <ul class="navbar-nav"> … </ul> jest podstawą do tworzenia nawigacji w tym frameworku. Cała magia polega na tym, że Bootstrap styluje właśnie elementy listy nieuporządkowanej (ul) z klasą "navbar-nav". To pozwala prawidłowo wyświetlić menu poziomo, z zachowaniem responsywności i spójności z resztą interfejsu. Wewnątrz każdej listy dodaje się <li class="nav-item">, a w nich <a class="nav-link"> z linkami – wtedy całość zachowuje się zgodnie z założeniami Bootstrapa. W praktyce widać to na prawie każdej stronie korzystającej z tego frameworka – niezależnie czy robisz prostą wizytówkę, czy rozbudowaną aplikację webową. Takie podejście zapewnia nie tylko poprawne style, ale też dobre wsparcie dla dostępności (a11y), bo listy są dla czytników ekranu czytelniejsze niż np. <div>. Moim zdaniem, trzymanie się tej struktury jest kluczowe, jeśli chcesz, żeby twoje menu działało dobrze na różnych przeglądarkach i urządzeniach. Z moich doświadczeń wynika, że próby modyfikowania tej struktury kończą się często problemami ze stylami, a nawet łamaniem responsywności. Lepiej nie kombinować i stosować to, co już sprawdzone – oszczędza to mnóstwo nerwów przy późniejszym rozwijaniu projektu.

Pytanie 4

Wynik dodawania liczb binarnych 1101 i 1001 to

A. 1001
B. 10111
C. 1110
D. 10110
Dodając liczby binarne 1101 i 1001, otrzymujemy wynik 10110. Wynika to z zasad dodawania bitów, gdzie sumujemy od prawej do lewej, pamiętając o przeniesieniu, gdy suma przekracza 1 (czyli tak jakby pojawia się „dwójka” w systemie dziesiętnym). Tutaj: 1+1=0 i przeniesienie 1, później 0+0+1=1, dalej 1+0=1, potem 1+1=0 i znowu przeniesienie 1, ostatni przeniesiony bit daje nam 1 na początku, więc cały wynik to 10110. Taki sposób sumowania jest podstawą działania procesorów – praktycznie w każdym sprzęcie elektronicznym obliczenia wykonują się właśnie binarnie. To nie tylko teoria – gdy programujesz mikrokontrolery albo pracujesz z układami cyfrowymi, te operacje to chleb powszedni. Moim zdaniem warto ogarnąć ten temat, bo dzięki temu łatwiej zrozumiesz działanie sumatorów w logice cyfrowej czy nawet podstawowe algorytmy komputerowe. W branży IT umiejętność szybkiego przeliczenia binarnego to raczej podstawa, szczególnie jak zabierasz się za elektronikę czy programowanie niskopoziomowe. Dla przykładu – większość protokołów sieciowych, maski IP itp. opiera się właśnie na operacjach binarnych, więc znajomość tego tematu zdecydowanie się przydaje. Poza tym, zgodnie z normami opisu algorytmów (np. IEEE), operacje na bitach są podstawową abstrakcją w projektowaniu sprzętu i oprogramowania.

Pytanie 5

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

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

Pytanie 6

Jakie środowisko deweloperskie jest najczęściej używane do programowania w C#?

A. Visual Studio
B. NetBeans
C. PyCharm
D. Eclipse
Visual Studio to najczęściej wykorzystywane środowisko programistyczne (IDE) do tworzenia aplikacji w języku C#. Oferuje pełne wsparcie dla platformy .NET i umożliwia szybkie tworzenie aplikacji desktopowych, webowych i mobilnych. Visual Studio jest wyposażone w zaawansowane narzędzia do debugowania, projektowania interfejsów oraz integrację z systemami kontroli wersji. Dzięki rozbudowanemu ekosystemowi wtyczek i rozszerzeń Visual Studio jest idealnym rozwiązaniem zarówno dla początkujących, jak i zaawansowanych programistów, którzy tworzą aplikacje na system Windows oraz inne platformy.

Pytanie 7

Co to jest Webpack?

A. System zarządzania bazami danych dla aplikacji Node.js
B. Biblioteka do testowania kodu JavaScript
C. Framework JavaScript do tworzenia aplikacji mobilnych
D. Narzędzie do budowania modułów i zarządzania zależnościami w aplikacjach JavaScript
Webpack to zaawansowane narzędzie do budowania modułów, które znacząco ułatwia zarządzanie zależnościami w aplikacjach JavaScript. Umożliwia on zorganizowane łączenie różnych zasobów, takich jak skrypty JavaScript, style CSS, obrazy i inne pliki, w jeden lub kilka plików wyjściowych. Dzięki temu programiści mogą zoptymalizować czas ładowania aplikacji, minimalizując rozmiar plików i eliminując zbędne zapytania do serwera. Przykładowo, korzystając z Webpacka, można skonfigurować automatyczną kompresję kodu i zastosowanie technik takich jak kod dzielony (code splitting), co znacząco podnosi wydajność aplikacji. Dodatkowo, Webpack wspiera różne wtyczki i loadery, co pozwala na łatwą integrację z narzędziami do kompilacji, takimi jak Babel, umożliwiający użycie nowoczesnych funkcji JavaScript, które mogą nie być jeszcze wspierane przez wszystkie przeglądarki. Standardy branżowe kładą duży nacisk na efektywność i utrzymywalność kodu, a Webpack, będąc częścią ekosystemu JavaScript, skutecznie wspiera te zasady.

Pytanie 8

Która z właściwości przycisków typu Radio-button opisanych w przedstawionym fragmencie dokumentacji jest poprawna?

Radio-button label

... The label can be positioned before or after the radio-button by setting the labelPosition property to 'before' or 'after'.

Radio groups

Radio-buttons should typically be placed inside of an <mat-radio-group> unless the DOM structure would make that impossible ... The radio-group has a value property that reflects the currently selected radio-button inside of the group.

Źródło: https://material.angular.io/components/radio/overview

A. Wartość właściwości value grupy radio przechowuje tekst etykiety dla każdego radio-button
B. Właściwość labelPosition może przyjmować jedną z dwóch opcji
C. Przyciski radio-button są organizowane w elemencie o nazwie <radio-group>
D. Etykieta (label) może być umieszczona wyłącznie po przycisku radio-button
Często się zdarza, że osoby pracujące z radio-buttonami skupiają się na nazwie elementu grupującego albo mieszają pojęcia związane z etykietami i wartościami. No właśnie – typowy błąd to przekonanie, że grupa radio to <radio-group>, podczas gdy np. w Angular Material używa się <mat-radio-group>. Standardy webowe nie definiują takiego elementu jak <radio-group>, to raczej wynalazek niektórych bibliotek. Kolejna kwestia to mechanizm value w grupie radio. On nie przechowuje tekstów etykiet, tylko wartość wybranego przycisku, czyli to, co deweloper przypisał do konkretnego radio-buttona (np. id, liczbę albo string techniczny). Gdyby wartość była powiązana z tekstem etykiety, trudno byłoby obsłużyć przypadki, gdy etykieta i wartość mają się różnić (a to się zdarza bardzo często, chociażby przy tłumaczeniach). Z mojego doświadczenia wynika, że zamieszanie powstaje też wokół samej etykiety – niektórzy sądzą, że label w radiobuttonach zawsze znajduje się po prawej stronie. W rzeczywistości dobre biblioteki dają wybór właśnie poprzez labelPosition – możemy bezproblemowo wyrenderować label z dowolnej strony guzika, wystarczy jeden parametr. Zresztą, to nie tylko kwestia wygody, ale też dostępności i zgodności ze standardami WCAG. Podsumowując: warto rozumieć fundamentalne różnice między etykietą, wartością i sposobem grupowania, bo to eliminuje wiele nieporozumień, które potem skutkują błędami zarówno w kodzie, jak i w interfejsie użytkownika.

Pytanie 9

Który system informatyczny powinien być zastosowany do zarządzania sprzedażą w e-sklepie?

A. System ERP
B. System CMS
C. System e-commerce
D. System CRM
System e-commerce to takie fajne rozwiązanie, które naprawdę ułatwia sprzedaż przez internet. Znajdziesz w nim wszystko, co potrzebne do zarządzania produktami, zamówieniami, a nawet płatnościami. Dzięki temu przedsiębiorcy mogą szybko zakładać i prowadzić sklepy online, co daje super doświadczenie dla klientów. Warto wspomnieć o popularnych systemach, jak Shopify czy WooCommerce – z nich korzystają tysiące sklepów na całym świecie. Te systemy mają też fajne narzędzia, dzięki którym można monitorować sprzedaż czy analizować, co klienci lubią. A bezpieczeństwo? To też ważna sprawa, bo standardy, takie jak PCI DSS, dbają o to, żeby dane klientów były dobrze chronione. W czasach rosnącej konkurencji w internecie, wybór odpowiedniego systemu e-commerce to klucz do sukcesu.

Pytanie 10

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

A. Przesyłanie danych
B. Wysyłanie danych
C. Streaming
D. Pobieranie danych
Proces przesyłania danych z komputera lokalnego na serwer nazywany jest wysyłaniem danych. To kluczowy element komunikacji w sieciach komputerowych, który wskazuje na transfer informacji z jednego punktu do drugiego. Wysyłanie danych odbywa się za pomocą różnych protokołów, takich jak FTP (File Transfer Protocol), HTTP (Hypertext Transfer Protocol) czy SFTP (Secure File Transfer Protocol). Przykładem może być przesyłanie plików z komputera na zdalny serwer, co jest powszechnie wykorzystywane w przypadku tworzenia stron internetowych. W kontekście aplikacji, wysyłanie danych może dotyczyć również przesyłania formularzy do bazy danych. Ważne jest, aby dane były odpowiednio pakowane i kodowane w celu zapewnienia ich integralności oraz bezpieczeństwa. Stosowanie protokołów szyfrowania, takich jak SSL/TLS, dodatkowo zabezpiecza proces, co jest istotne w dobie rosnących zagrożeń cybernetycznych. Zbierając wszystkie te elementy, wysyłanie danych jest fundamentalnym procesem w architekturze nowoczesnych systemów informatycznych.

Pytanie 11

Cytat przedstawia charakterystykę metodyki RAD. Pełne znaczenie tego skrótu można przetłumaczyć na język polski jako:

...(RAD)..., is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development.

In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Źródło: https://en.wikipedia.org/

A. środowisko refaktoryzacji aplikacji
B. zintegrowane środowisko programistyczne
C. prototypowanie wsparte testami jednostkowymi
D. środowisko szybkiego rozwoju aplikacji
Skrót RAD w świecie IT to, mimo wielu mylących rozszerzeń, nie „środowisko refaktoryzacji aplikacji”, nie „zintegrowane środowisko programistyczne” i zdecydowanie nie „prototypowanie wsparte testami jednostkowymi”. Każda z tych odpowiedzi odwołuje się do pojęć dobrze znanych w branży, ale nie ma bezpośredniego związku z tym, co oznacza RAD. Refaktoryzacja aplikacji to proces poprawiania istniejącego kodu bez zmiany jego funkcjonalności, czyli bardziej kwestia utrzymania i rozwoju jakości niż szybkiego budowania prototypów. Zintegrowane środowisko programistyczne (IDE) to narzędzia takie jak Visual Studio, Eclipse czy IntelliJ, które wspierają programistów w pisaniu kodu, debugowaniu i zarządzaniu projektami. To są środowiska, ale nie metodyki wytwarzania oprogramowania. Natomiast „prototypowanie wsparte testami jednostkowymi” to raczej fragmentaryczny opis technik stosowanych w różnych procesach projektowych, ale nie oddaje idei RAD. Typowym błędem jest mylenie narzędzi z metodykami – to dwie różne rzeczy, choć często idą w parze. RAD to podejście, które pozwala szybko dostarczać działające wersje aplikacji i testować je z użytkownikami końcowymi, zanim powstanie pełna specyfikacja. Bazuje na adaptacyjności, krótkich cyklach iteracyjnych i intensywnym wykorzystaniu prototypowania. Z mojego doświadczenia wynika, że wiele osób myśli o RAD wyłącznie jako o narzędziu lub środowisku do pisania kodu, a to dużo szersza koncepcja, wpływająca na cały sposób prowadzenia projektu. Warto dostrzegać, kiedy dany termin oznacza proces lub filozofię prowadzenia prac, a nie tylko konkretny zestaw narzędzi czy pojedynczą technikę.

Pytanie 12

Które z poniżej wymienionych afirmacji najtrafniej charakteryzuje proces interpretacji kodu?

A. Tworzenie pliku wykonywalnego
B. Generowanie bibliotek dynamicznych dla programu
C. Tłumaczenie kodu źródłowego na język maszynowy w czasie rzeczywistym
D. Analiza struktury kodu przed tłumaczeniem
Interpretacja kodu to proces tłumaczenia kodu źródłowego na język maszynowy w czasie rzeczywistym, instrukcja po instrukcji. Jest to charakterystyczne dla języków takich jak Python, JavaScript i Ruby, które używają interpreterów. Dzięki temu program jest wykonywany od razu, bez konieczności wcześniejszego generowania pliku wykonywalnego. Zaletą interpretacji jest szybka analiza i możliwość natychmiastowego testowania kodu, co przyspiesza proces debugowania i prototypowania aplikacji.

Pytanie 13

Jakie narzędzie można wykorzystać do tworzenia aplikacji mobilnych typu cross-platform w C#?

A. platformę React Native
B. środowisko XCode
C. platformę Xamarin
D. środowisko Android Studio
XCode to zintegrowane środowisko programistyczne stworzone przez Apple, które służy głównie do tworzenia aplikacji na platformy iOS oraz macOS. Jego użycie ogranicza się do systemów operacyjnych Apple, co wyklucza możliwość tworzenia aplikacji cross-platform. W kontekście programowania w C#, XCode nie oferuje wsparcia ani funkcji, które umożliwiałyby rozwój aplikacji mobilnych na różne platformy. React Native jest frameworkiem stworzonym przez Facebook, który umożliwia tworzenie aplikacji mobilnych w JavaScript, a nie w C#. Choć React Native wspiera wiele platform, to jednak nie jest to technologia zgodna z C#, co czyni ją nieodpowiednią dla deweloperów preferujących ten język. Android Studio to z kolei oficjalne IDE dla systemu Android, oparte na Javie oraz Kotlinie, co również eliminuje możliwość wykorzystania C#. Tak więc, ani XCode, ani React Native, ani Android Studio nie są odpowiednie do tworzenia aplikacji mobilnych w języku C#, co czyni je niepoprawnymi odpowiedziami w kontekście tego pytania.

Pytanie 14

Jakie elementy powinny być uwzględnione w scenariuszu testów aplikacji?

A. Dokładne wytyczne dotyczące realizacji kodu
B. Dokumentacja techniczna oprogramowania
C. Strategia wdrożenia aplikacji w środowisku produkcyjnym
D. Zestaw kroków do testowania, oczekiwanych rezultatów oraz warunków początkowych
Scenariusz testowy aplikacji powinien zawierać szczegółowy opis kroków testowych, oczekiwane wyniki oraz warunki wstępne, które muszą być spełnione przed rozpoczęciem testu. Scenariusz testowy to kluczowy dokument w procesie testowania oprogramowania, który pozwala na systematyczne i dokładne sprawdzenie, czy aplikacja działa zgodnie z oczekiwaniami. Uwzględnienie kroków testowych pozwala na replikację testów, a opis warunków wstępnych zapewnia, że test jest przeprowadzany w odpowiednim środowisku.

Pytanie 15

Jakie pola powinny być umieszczone w klasie nadrzędnej w strukturze dziedziczenia?

A. Pola, które są tylko prywatne
B. Pola, które są wspólne dla wszystkich klas pochodnych
C. Pola, które są charakterystyczne jedynie dla pojedynczej klasy pochodnej
D. Pola, które są wykorzystywane tylko w funkcjach statycznych
Pola specyficzne dla jednej klasy pochodnej nie powinny znajdować się w klasie bazowej, ponieważ zwiększałoby to złożoność i naruszało zasadę separacji odpowiedzialności. Prywatne pola są ukryte i nie są dziedziczone przez klasy pochodne – są dostępne wyłącznie w ramach klasy, w której zostały zdefiniowane. Pola używane wyłącznie w metodach statycznych nie muszą znajdować się w klasie bazowej, ponieważ są to elementy niezależne od instancji klasy i są przypisane do samej klasy, a nie jej obiektów.

Pytanie 16

Który z wymienionych programów jest przeznaczony do zarządzania projektami przy pomocy tablic kanban?

A. Word
B. Trello
C. Jira
D. Photoshop
Trello to narzędzie do zarządzania projektami, które wykorzystuje tablice kanban do organizacji i monitorowania zadań. Użytkownicy mogą tworzyć karty reprezentujące poszczególne zadania, które następnie są przenoszone między kolumnami odzwierciedlającymi etapy realizacji. Dzięki swojej prostocie i intuicyjności Trello jest szeroko stosowane zarówno w małych zespołach, jak i dużych organizacjach. Umożliwia efektywne zarządzanie projektami, planowanie sprintów oraz monitorowanie bieżącego statusu prac. Tablice kanban pomagają wizualizować przepływ pracy, co ułatwia identyfikację wąskich gardeł i zarządzanie priorytetami.

Pytanie 17

Przedstawione w filmie działania wykorzystują narzędzie

A. debuggera analizującego wykonujący kod
B. generatora GUI przekształcającego kod do języka XAML
C. generatora kodu java
D. kompilatora dla interfejsu graficznego
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 18

Jaki jest podstawowy cel przystosowania aplikacji do publikacji w sklepie mobilnym?

A. Zmniejszenie rozmiaru aplikacji poniżej 10 MB
B. Dostosowanie aplikacji do wymogów platformy oraz regulacji sklepu
C. Zapewnienie, że aplikacja działa jedynie w trybie offline
D. Dostosowanie kodu aplikacji w celu zwiększenia jej wydajności
Dostosowanie aplikacji do wymagań platformy i przepisów sklepu mobilnego (np. Google Play lub App Store) to kluczowy krok w procesie publikacji aplikacji. Sklepy mobilne wymagają, aby aplikacje spełniały określone standardy dotyczące bezpieczeństwa, dostępności, wydajności oraz zgodności z wytycznymi interfejsu użytkownika. Proces ten obejmuje testowanie aplikacji pod kątem stabilności, optymalizację grafik i ikon, a także dostosowanie opisów i metadanych aplikacji, co zwiększa jej widoczność i atrakcyjność dla użytkowników. Przestrzeganie wytycznych App Store lub Google Play jest niezbędne, aby aplikacja mogła zostać zatwierdzona i udostępniona do pobrania.

Pytanie 19

Jaki będzie wynik działania poniższego kodu JavaScript?

let x = 5;
let y = '10';
console.log(x + y);
A. undefined
B. 15
C. error
D. 510
Niepoprawne odpowiedzi często wynikają z nieporozumień dotyczących operacji w JavaScript, szczególnie związanych z typami danych. W przypadku odpowiedzi, które sugerują, że wynik to 15, może to wynikać z mylnego założenia, że JavaScript traktuje oba operandów jako liczby. Warto zauważyć, że operator + jest niejednoznaczny w JavaScript, ponieważ zarówno łączenie łańcuchów, jak i dodawanie liczb są jego możliwymi zastosowaniami. Dlatego, kiedy operatory działają na różnych typach, jak liczba i łańcuch, JavaScript stosuje konwersję typów, co prowadzi do wyników, które mogą wydawać się sprzeczne z intuicją. Z kolei odpowiedź, która zakłada, że wynik będzie 'error', opiera się na błędnym przekonaniu, że JavaScript nie poradzi sobie z różnymi typami. W rzeczywistości, JavaScript jest zaprojektowany tak, aby radzić sobie z różnymi typami danych i dokonuje konwersji, co może prowadzić do takich wyników jak '510'. Odpowiedź 'undefined' byłaby uzasadniona tylko w przypadku, gdyby kod miał nieprawidłową składnię, co w tym przypadku nie ma miejsca. Zrozumienie zasad działania operatorów w JavaScript, szczególnie dotyczących konwersji typów, jest kluczowe dla unikania tego typu błędów w przyszłości.

Pytanie 20

Który z przedstawionych poniżej przykładów ilustruje prawidłową deklarację zmiennej typu całkowitego w języku C++?

A. char liczba;
B. bool liczba;
C. int liczba;
D. float liczba;
W języku C++ zmienna typu całkowitego jest deklarowana za pomocą słowa kluczowego `int`. Przykładowa poprawna deklaracja to `int liczba;`, co oznacza, że `liczba` jest zmienną, która może przechowywać wartości całkowite, takie jak 1, 42 lub -15. Deklarowanie zmiennych w C++ pozwala na statyczne typowanie, co oznacza, że każda zmienna ma określony typ i nie może przechowywać wartości innego typu. Dzięki temu kod jest bardziej przejrzysty i mniej podatny na błędy związane z niezgodnością typów.

Pytanie 21

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

Ilustracja do pytania
A. Text - dla biblioteki WPF; JText - dla biblioteki Swing
B. TextBox - dla biblioteki WPF; JTextField - dla biblioteki Swing
C. Windows - dla biblioteki WPF; JFrame - dla biblioteki Swing
D. Box - dla biblioteki WPF; JField - dla biblioteki Swing
Wybrałeś dokładnie to, co w praktyce programisty jest najważniejsze, czyli TextBox dla WPF i JTextField dla Swinga. Te dwa komponenty to absolutna podstawa, jeśli chodzi o pola do wprowadzania tekstu, zarówno w aplikacjach .NET, jak i Java. W WPF TextBox pozwala na przyjmowanie danych od użytkownika, obsługę zdarzeń, walidację, formatowanie tekstu – ogólnie wszystko, co potrzeba do pracy z tekstem w GUI. W Swingu JTextField jest odpowiednikiem, bardzo intuicyjnym i prostym w użyciu, świetnie się sprawdza przy prostych formularzach czy interfejsach użytkownika. Co ciekawe, oba te komponenty są bardzo elastyczne, można je stylizować, podłączać do systemów walidacji czy nawet rozbudowywać o własne mechanizmy autouzupełniania. Spotkałem się wielokrotnie z sytuacją, gdzie poprawne zastosowanie TextBoxa lub JTextFielda znacząco podnosiło jakość aplikacji – bo jednak wygoda użytkownika i poprawność danych są kluczowe. Takie wybory są zgodne z dokumentacją Microsoftu oraz Oracla, więc trzymasz się dobrych praktyk. Z mojej perspektywy, jeśli chcesz pisać nowoczesne, użytkowe aplikacje desktopowe, znajomość tych kontrolek to absolutny must-have.

Pytanie 22

Jakie jest źródło błędu w podanym kodzie przez programistę?

class Dokument {
    public string nazwa;
    protected string autor;
}
// .... w kodzie funkcji main
Dokument doc = new Dokument();
Console.WriteLine(doc.autor);
A. Inicjalizacja obiektu została błędnie zapisana.
B. Pole autor jest niedostępne z tego poziomu.
C. Argumenty konstruktora powinny być przekazane podczas inicjalizacji obiektu.
D. Brak konstruktora w definicji klasy.
Błąd związany z polem 'autor' wynika z problemu dostępu do pól prywatnych w klasie. W programowaniu obiektowym, pola prywatne (oznaczone jako private) są dostępne tylko wewnątrz danej klasy i nie mogą być bezpośrednio modyfikowane lub odczytywane z zewnątrz. Aby umożliwić dostęp do takich pól, programista powinien utworzyć odpowiednie metody dostępowe – tzw. gettery i settery. Jest to przykład hermetyzacji (encapsulation), jednego z filarów programowania obiektowego, który pozwala na kontrolę nad tym, jak dane są przechowywane i modyfikowane. Hermetyzacja zwiększa bezpieczeństwo aplikacji i zapobiega przypadkowym zmianom wartości pól obiektu.

Pytanie 23

Liczba A4 w zapisie heksadecymalnym ma odpowiadający jej zapis binarny

A. 1011100
B. 1010100
C. 10100010
D. 10100100
Temat zamiany liczb z systemu szesnastkowego na binarny wraca na różnych etapach nauki elektroniki czy informatyki i z mojego doświadczenia właśnie tutaj pojawia się sporo zamieszania. Problem najczęściej polega na tym, że próbując zamienić liczbę A4 na binarną, niektórzy traktują całość jako liczbę dziesiętną (np. 1010100 to 84 dziesiętnie), nie wiedząc, że każdy znak heksadecymalny to dokładnie cztery bity. Taka pomyłka prowadzi do niepoprawnych wyników – w efekcie powstają binarne reprezentacje za krótkie lub za długie, nieodzwierciedlające rzeczywistego układu bitów. Zdarza się też, że przeliczając ręcznie, ktoś zamienia jedynie ostatnią cyfrę (np. 4 na 100), zapominając, że litery A-F mają swoje konkretne wartości (A=1010). To bardzo częsty błąd, szczególnie na początku nauki, bo intuicyjnie łatwiej pracować tylko z cyframi 0-9. Można też spotkać się z sytuacją, gdy ktoś próbuje połączyć bity w niewłaściwej kolejności, przez co uzyskuje np. 10100010 – to połączenie 1010 (A) i 0010 (2), a nie 0100 (4). Z punktu widzenia profesjonalisty, każda taka pomyłka może skutkować bardzo poważnymi konsekwencjami w praktyce – wystarczy źle zinterpretować adres czy wartości rejestru i cały algorytm się wywraca. Dlatego warto wyrobić nawyk dzielenia każdej cyfry heksadecymalnej na osobne grupy czterech bitów i dopiero potem sklejać całość. Standardy branżowe, np. w dokumentacji układów cyfrowych czy protokołach komunikacyjnych, zawsze prezentują dane w jednym z tych systemów, dlatego bez tej umiejętności trudno przejść na wyższy poziom. Sam kiedyś parę razy na tym poległem i teraz wiem, że warto się zatrzymać i dokładnie przemyśleć każdy krok zamiany.

Pytanie 24

Na równoważnych pod względem funkcjonalnym listingach fragmentów aplikacji Angular oraz React.js utworzono listę punktowaną, która zawiera:

Definicja typu:

books = ["Harry Potter", "Hobbit", "Władca pierścieni"];

Kod Angular:
<ul>
    <li *ngFor = "let book of books"> {{book}} </li>
</ul>

Kod React.js:
<ul>
    {this.books.map(book => <li key={book}> book </li>)}
</ul>
A. Tyle elementów, ile znajduje się w tablicy books; w każdym punkcie listy widnieje element o treści {book}.
B. Wyłącznie jeden element o treści Harry Potter, Hobbit, Władca pierścieni.
C. Jedynie jeden element o treści Harry Potter.
D. Taką liczbę elementów, ile znajduje się w tablicy books; w każdym punkcie listy umieszczony jest jeden element tablicy.
W pytaniu chodziło o bardzo fundamentalny mechanizm w nowoczesnych frameworkach frontendowych: dynamiczne generowanie elementów listy na podstawie danych z tablicy. Częstym błędem jest doszukiwanie się w kodzie magicznych wartości lub mylenie sposobu działania szablonów z faktycznym efektem końcowym. Przykładowo, jeśli ktoś uzna, że pojawi się jeden element z wypisaną całą tablicą jako tekst, to prawdopodobnie nie rozumie, że każda iteracja *ngFor (w Angularze) czy metoda map (w React.js) generuje fizycznie osobny <li> dla każdego wpisu. To nie jest jedno pole tekstowe, ale wiele autonomicznych elementów. Kolejna rzecz to myślenie, że pojawi się tylko pierwszy element – takie podejście wynika często z niezrozumienia zasady działania pętli w szablonach, gdzie proces rozpoczyna się dla każdego elementu po kolei. Często też myli się składnię Reacta i widzi w niej coś na kształt szablonu z placeholderem {book}, zapominając, że to wyrażenie jest oceniane w JavaScript i renderuje konkretną wartość, a nie dosłowny napis z nawiasami klamrowymi. Moim zdaniem to jeden z najpopularniejszych błędów – traktowanie składni szablonów lub JSX zbyt dosłownie, bez zrozumienia, że to dynamiczne narzędzia. Warto pamiętać, że we współczesnych aplikacjach webowych takie podejście jest normą: nie piszesz ręcznie każdego <li>, tylko generujesz je ze źródła danych. Pominięcie tego mechanizmu prowadzi do kodu nieelastycznego, trudnego w utrzymaniu i skalowaniu. Z doświadczenia wiem, że zrozumienie tej zasady znacznie przyspiesza naukę zarówno Angulara, jak i Reacta, bo ten wzorzec powtarza się praktycznie wszędzie tam, gdzie masz do czynienia z kolekcjami danych i ich wizualizacją w interfejsie użytkownika.

Pytanie 25

Który z wymienionych elementów NIE stanowi części instrukcji dla użytkownika programu?

A. Opis metody instalacji aplikacji
B. Opis testów jednostkowych
C. Instrukcje dotyczące obsługi poszczególnych funkcji aplikacji
D. Rozwiązywanie problemów związanych z użytkowaniem aplikacji
Instrukcja użytkownika programu zawiera opisy dotyczące sposobu instalacji aplikacji, konfiguracji oraz obsługi poszczególnych funkcji. Jest to kluczowy dokument pomagający użytkownikom w szybkim wdrożeniu się w pracę z oprogramowaniem. Zawiera również sekcje dotyczące rozwiązywania typowych problemów oraz wskazówki, jak efektywnie korzystać z narzędzi i funkcji aplikacji. Instrukcja użytkownika może być dostępna w formie elektronicznej (PDF, strony WWW) lub papierowej, a jej celem jest uproszczenie procesu wdrażania oraz ograniczenie liczby zgłoszeń do działu wsparcia technicznego. Dokumentacja tego typu stanowi również ważny element budowania pozytywnego doświadczenia użytkownika (UX).

Pytanie 26

Jaki jest kluczowy zamysł wzorca "Kompozyt" (Composite)?

A. Danie możliwości dynamicznej zmiany zachowania obiektu
B. Stworzenie jednej klasy do zarządzania wieloma obiektami tego samego rodzaju
C. Określenie interfejsu komunikacji pomiędzy składnikami systemu
D. Umożliwienie klientom obsługi obiektów oraz ich zbiorów w spójny sposób
Zarządzanie wieloma obiektami tego samego typu to cecha wzorca Fabryka (Factory) lub Builder, a nie Kompozyt. Definiowanie interfejsu komunikacji między komponentami systemu to rola wzorca Mediator, który organizuje interakcje między różnymi obiektami. Umożliwienie dynamicznej zmiany zachowania obiektu jest domeną wzorca Strategia (Strategy) lub Dekorator (Decorator), które oferują elastyczność w zakresie modyfikacji zachowania podczas działania programu.

Pytanie 27

Jakiego kwalifikatora powinno się użyć dla metody, aby umożliwić do niej dostęp jedynie z wnętrza tej klasy oraz klas dziedziczących, a także, by metoda ta nie była dostępna w żadnej funkcji?

A. reinterpret_cast
B. protected
C. public
D. private
Słowo kluczowe protected to w programowaniu obiektowym zdecydowanie ciekawa sprawa – i, szczerze mówiąc, bardzo przydatne narzędzie, jeśli chodzi o kontrolę dostępu do metod i pól w klasach. Wybierając protected, dajesz znać kompilatorowi, że dana metoda ma być dostępna tylko wewnątrz tej klasy i przez klasy pochodne, czyli dziedziczące. To oznacza, że kod spoza tej hierarchii (na przykład zwykłe funkcje czy metody innych klas) nie będzie mógł się do niej „dobrać”, nawet jeśli bardzo by chciał. W praktyce często korzysta się z protected, gdy projektujesz klasy bazowe i chcesz, żeby pewne operacje były do dyspozycji tylko dla klas dziedziczących, ale już nie dla całego świata. Przykładowo, możesz mieć klasę Figure i w niej metodę protected calculateArea(), którą nadpisują konkretne figury, ale nie chcesz, żeby ktoś poza tym drzewem dziedziczenia się do niej odwołał. To podejście daje większą elastyczność niż private (bo pozwala na dostęp potomkom), ale jednocześnie lepszą kontrolę niż public. Moim zdaniem, stosowanie protected to bardzo dobra praktyka, gdy wiesz, że chcesz zabezpieczyć metody, ale nie chcesz ich zupełnie „zamykać” tylko dla pojedynczej klasy. Warto też pamiętać, że to rozwiązanie promuje tzw. hermetyzację – czyli jedną z kluczowych zasad OOP, co jest mocno doceniane w profesjonalnych projektach.

Pytanie 28

Jakie zagrożenie związane z użytkowaniem cyberprzestrzeni ma wpływ na zdrowie fizyczne?

A. Uzależnienie od gier komputerowych
B. Depresja spowodowana cyberprzemocą
C. Rozpowszechnianie nieprawdziwych informacji
D. Problemy z kręgosłupem wynikające z długotrwałego siedzenia
Trochę mylące może być to pytanie, bo na pierwszy rzut oka każda z tych odpowiedzi jest związana z zagrożeniami cyberprzestrzeni, ale nie wszystkie dotyczą zdrowia fizycznego. Na przykład depresja spowodowana cyberprzemocą – to oczywiście poważny problem, tylko że należy do kategorii zdrowia psychicznego. Wbrew pozorom, różnica jest bardzo istotna, bo objawy somatyczne wynikają tu z zaburzeń emocjonalnych, a nie z bezpośredniego oddziaływania środowiska cyfrowego na ciało. Uzależnienie od gier komputerowych to też szeroki temat – psychiatrzy i psychologowie podkreślają, że uzależnienie dotyka przede wszystkim psychiki, choć rzeczywiście może mieć też pośredni wpływ na ciało, ale nie jest to bezpośrednie zagrożenie fizyczne powiązane z samym korzystaniem z cyberprzestrzeni jako takiej. Jeżeli chodzi o rozpowszechnianie nieprawdziwych informacji, to bardziej mowa tu o zagrożeniach społecznych, manipulacji czy nawet szkodach gospodarczych, ale nie o zdrowiu fizycznym. To, co często gubi ludzi, to utożsamianie wszystkich negatywnych skutków internetu z zagrożeniami zdrowotnymi, podczas gdy podział na aspekty fizyczne i psychiczne jest kluczowy. Takie rozróżnienie jest podstawą w edukacji cyberbezpieczeństwa i BHP przy pracy z komputerem – nawet w normach ISO/IEC dotyczących ergonomii stanowisk komputerowych kładzie się nacisk na oddzielenie zagrożeń fizycznych (np. przeciążenia układu ruchu) od psychicznych (stres, uzależnienia). Myślę, że warto na to zwracać uwagę, bo łatwo o drobne przeoczenia, które mogą prowadzić do powielania fałszywych przekonań o cyberzagrożeniach.

Pytanie 29

Co to jest Docker?

A. System zarządzania bazami danych
B. Narzędzie do automatyzacji procesu tworzenia dokumentacji
C. Framework JavaScript do tworzenia aplikacji mobilnych
D. Platforma do tworzenia, wdrażania i uruchamiania aplikacji w kontenerach
Docker to platforma, która umożliwia tworzenie, wdrażanie i uruchamianie aplikacji w kontenerach. Kontenery to lekkie, przenośne jednostki, które zawierają wszystko, co potrzebne do uruchomienia aplikacji, w tym kod źródłowy, biblioteki i zależności. Dzięki Dockerowi programiści mogą łatwo tworzyć środowiska, które są zgodne z produkcją, co zmniejsza ryzyko błędów związanych z różnicami między tymi środowiskami. Przykładowo, jeśli tworzysz aplikację webową, możesz użyć Dockera do uruchomienia bazy danych w kontenerze, co pozwala na łatwe zarządzanie jej wersjami oraz konfiguracją. Docker staje się standardem w wielu firmach i projektach open source, ponieważ umożliwia szybsze wdrażanie aplikacji oraz automatyzację wielu procesów. Dzięki konteneryzacji można również łatwo skalować aplikacje, co jest niezwykle ważne w przypadku rosnącego ruchu użytkowników.

Pytanie 30

Co to jest choroba związana z wykonywaniem zawodu?

A. Choroba występująca tylko w sektorze przemysłowym
B. Choroba wynikająca z warunków pracy lub związanych z nimi czynników
C. Każda choroba, która występuje w czasie pracy
D. Stan zdrowia, który uniemożliwia pracę przez okres krótszy niż tydzień
Choroba zawodowa to stan zdrowotny spowodowany warunkami pracy lub czynnikami związanymi z wykonywaną profesją. Najczęściej wynika z długotrwałego narażenia na szkodliwe substancje, hałas, promieniowanie, pyły lub wykonywanie powtarzalnych czynności. Przykładem chorób zawodowych są pylica płuc, głuchota zawodowa czy zespół cieśni nadgarstka. Kluczowym elementem w zapobieganiu chorobom zawodowym jest odpowiednia profilaktyka, szkolenia BHP oraz dostosowanie środowiska pracy do zasad ergonomii. Pracodawcy są zobowiązani do monitorowania warunków pracy i wdrażania rozwiązań minimalizujących ryzyko wystąpienia chorób zawodowych.

Pytanie 31

Który z języków programowania jest najczęściej wykorzystywany do budowania aplikacji internetowych po stronie serwera?

A. PHP
B. CSS
C. HTML
D. JavaScript
PHP to jeden z najczęściej używanych języków programowania do tworzenia aplikacji webowych po stronie serwera. Jest to język skryptowy, który umożliwia dynamiczne generowanie treści stron internetowych, zarządzanie sesjami użytkowników, obsługę formularzy oraz integrację z bazami danych. PHP napędza popularne systemy zarządzania treścią (CMS), takie jak WordPress, Joomla czy Drupal. Dzięki swojej prostocie, szerokiemu wsparciu społeczności oraz dużej liczbie gotowych bibliotek i frameworków (np. Laravel), PHP pozostaje jednym z czołowych języków backendowych. PHP pozwala również na szybkie wdrażanie aplikacji i jest kompatybilny z wieloma serwerami WWW, co czyni go uniwersalnym wyborem w budowie aplikacji webowych.

Pytanie 32

Jaką wartość zwróci poniższa funkcja dla argumentu n = 5?

function silnia(n) {
  if (n <= 1) return 1;
  return n * silnia(n - 1);
}
A. 120
B. 60
C. 24
D. 5
Podczas analizy funkcji silnia(n) dla wartości n = 5, wiele osób może błędnie wnioskować o jej wyniku. Często zdarza się, że ludzie próbując obliczyć silnię, mylą się w kolejności mnożenia lub nie uwzględniają właściwego przeliczenia. Na przykład, odpowiedź 24 mogłaby wynikać z obliczenia silnia(4) zamiast silnia(5). To błędne myślenie opiera się na zrozumieniu, że silnia n to suma wszystkich poprzednich silni, co jest nieprawdziwe. Silnia to operacja mnożenia, nie sumowania, co jest kluczowe do poprawnego zrozumienia tej funkcji. Ponadto, odpowiedzi 60 i 5 również wynikają z niedokładności w obliczeniach lub mylnego zrozumienia, co oznacza silnia. Na przykład, 60 mogłoby powstać z błędnego pomnożenia, jak 5 * 12, a 5 wydaje się być po prostu nieprawidłowym zrozumieniem, że silnia(n) zwraca n samo w sobie. Dlatego ważne jest, aby pamiętać, że silnia to produkt wszystkich liczb naturalnych od 1 do n, a nie pojedyncza liczba. Dobrze jest również przetestować naszą wiedzę poprzez praktyczne przykłady i weryfikację z działającym kodem, co pozwala na uniknięcie tych typowych pułapek myślowych i lepsze zrozumienie zasadności obliczeń matematycznych w programowaniu.

Pytanie 33

W standardzie dokumentacji testów oprogramowania IEEE 829-1998 opisany jest dokument, który zawiera dane o tym, jakie przypadki testowe były wykorzystane, przez kogo i czy zakończyły się sukcesem. Co to jest?

A. Raport Podsumowujący Testy
B. Specyfikacja Procedury Testowej
C. Plan Testów
D. Dziennik Testów
Pojęcie dokumentacji testowej według IEEE 829-1998 jest bardzo precyzyjne, ale często właśnie myli się niektóre pojęcia. Plan Testów to taki ogólny, strategiczny dokument – mówi, co, kiedy i jak będziemy testować, jakie są założenia, jakie środowisko i narzędzia, ale nie przechowuje szczegółowych informacji o tym, które przypadki były faktycznie realizowane danego dnia przez daną osobę. Trochę jak plan meczu przed rozgrywką, a nie jego protokół. Z kolei Specyfikacja Procedury Testowej to szczegółowy opis kroków, jakie należy wykonać, żeby przeprowadzić dany test – taki „przepis na testowanie”, który daje testerowi konkretną instrukcję działania. Ona nie zbiera jednak danych o tym, kto wykonał, kiedy i z jakim skutkiem – raczej mówi „jak” niż „kto/co/kiedy”. Raport Podsumowujący Testy natomiast to taki końcowy dokument na podsumowanie całego cyklu testowego – zestawia wyniki, ilość znalezionych defektów, procent pokrycia, rekomendacje dotyczące dalszych działań; nie zawiera jednak szczegółowych wpisów o przebiegu pojedynczych przypadków. Typowym nieporozumieniem jest myślenie, że to właśnie raport podsumowujący będzie zawierał „wszystko”, ale on służy bardziej do ogólnego przeglądu i prezentacji wyników, a nie do śledzenia przebiegu każdego testu z osobna. Często też błędnie utożsamia się Specyfikację Procedury z rzeczywistym wykonaniem – a przecież można mieć procedurę, której wcale nie wykonano lub wykonano ją tylko częściowo. To właśnie Dziennik Testów jest tym bieżącym zapisem z pola bitwy, gdzie widać realny przebieg procesu testowego, kto się czym zajmował, czy pojawiły się jakieś nieprzewidziane sytuacje. W praktyce brak tego dziennika często prowadzi do chaosu i problemów z rozliczalnością – a przecież to klucz do profesjonalnego testowania, zgodnie z branżowymi standardami.

Pytanie 34

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

A. Eliminuje potrzebę korzystania ze zmiennych globalnych
B. Gwarantuje automatyczną kompilację programu
C. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
D. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
Dzielenie programu na funkcje (lub metody) jest jedną z kluczowych zasad programowania strukturalnego i obiektowego. Funkcje pozwalają na podzielenie dużych bloków kodu na mniejsze, łatwiejsze do zarządzania i ponownego wykorzystania fragmenty. Dzięki temu kod jest bardziej czytelny, zrozumiały i łatwiejszy do testowania. Ułatwia to także proces debugowania, ponieważ błędy można izolować w konkretnych funkcjach, zamiast przeszukiwać cały program. Ponadto funkcje umożliwiają wielokrotne używanie tego samego fragmentu kodu, co zwiększa efektywność i eliminuje konieczność powielania kodu, zmniejszając ryzyko błędów.

Pytanie 35

Jak określa się proces, w trakcie którego klasa przejmuje właściwości innej klasy w programowaniu obiektowym?

A. Dziedziczenie
B. Abstrakcja
C. Hermetyzacja
D. Polimorfizm
Dziedziczenie to kluczowa cecha programowania obiektowego (OOP), która pozwala jednej klasie (klasie pochodnej) przejmować cechy i zachowania innej klasy (klasy bazowej). Dzięki dziedziczeniu można wielokrotnie wykorzystywać kod, co prowadzi do większej modularności i zmniejszenia redundancji. Dziedziczenie umożliwia rozszerzanie funkcjonalności klas bazowych poprzez dodawanie nowych metod lub modyfikowanie istniejących, bez konieczności ingerencji w oryginalny kod. Przykład w C++: `class Pojazd { ... }; class Samochod : public Pojazd { ... };` – `Samochod` dziedziczy wszystkie publiczne i chronione (protected) elementy klasy `Pojazd`.

Pytanie 36

Algorytm zaprezentowany w zadaniu można zrealizować w języku Java wykorzystując instrukcję

Ilustracja do pytania
A. try
B. while
C. switch
D. if
Pętla while w języku Java jest idealna do implementacji algorytmów, które wymagają wielokrotnego wykonywania bloku kodu dopóki określony warunek logiczny pozostaje prawdziwy. W przedstawionym schemacie blokowym widzimy iteracyjny proces, który zaczyna się od przypisania wartości 2 do zmiennej number, a następnie kontynuuje dodawanie 2 do tej zmiennej tak długo, jak długo jej wartość nie osiągnie 10. Struktura ta jest typowym przykładem problemu, który najlepiej rozwiązać za pomocą pętli while. Wyrażenie warunkowe number != 10 jest sprawdzane przed każdą iteracją pętli, co umożliwia zakończenie pętli w momencie, gdy warunek przestaje być prawdziwy. To podejście jest zgodne z dobrymi praktykami programistycznymi, które zalecają minimalizowanie niepotrzebnych obliczeń i zwiększanie czytelności kodu. Pętle while są często stosowane w sytuacjach, gdy liczba iteracji nie jest z góry znana i zależy od dynamicznie zmieniających się warunków, co czyni je wszechstronnym narzędziem w wielu aplikacjach, od przetwarzania danych po kontrolę przepływu w symulacjach komputerowych. Praktyczna znajomość pętli pozwala na efektywne rozwiązywanie problemów w złożonych projektach informatycznych.

Pytanie 37

Jakie oprogramowanie służy do monitorowania błędów oraz zarządzania projektami?

A. Git
B. Jira
C. Bugzilla
D. Jasmine
Jira to zaawansowane oprogramowanie do zarządzania projektami oraz śledzenia błędów, stworzone przez firmę Atlassian. Jest powszechnie stosowane w zespołach zajmujących się rozwijaniem oprogramowania, ale również znajduje zastosowanie w różnych dziedzinach, takich jak zarządzanie projektami, wsparcie techniczne oraz śledzenie zadań. Jira oferuje bogaty zestaw funkcji, które umożliwiają planowanie sprintów, monitorowanie postępów prac, zarządzanie backlogiem oraz raportowanie wydajności zespołu. Użytkownicy mogą tworzyć niestandardowe workflow, co pozwala dostosować procesy pracy do specyficznych potrzeb organizacji. Dzięki integracji z innymi narzędziami Atlassian, takimi jak Confluence czy Bitbucket, Jira jest elementem ekosystemu, który wspiera współpracę w zespołach. Przykładem zastosowania Jira może być zarządzanie cyklem życia produktu, gdzie zespół deweloperski wykorzystuje to narzędzie do śledzenia błędów, zarządzania wymaganiami oraz planowania wydań. Korzystanie z Jira wspiera podejście Agile, co jest zgodne z nowoczesnymi standardami zarządzania projektami.

Pytanie 38

Jaką rolę odgrywa program Jira?

A. Produkcja grafik 3D
B. Zarządzanie edycjami systemu operacyjnego
C. Planowanie, śledzenie oraz raportowanie zadań projektowych
D. Modyfikowanie arkuszy kalkulacyjnych
Jira to jedno z najpopularniejszych narzędzi do zarządzania projektami, wykorzystywane głównie w metodykach Agile i Scrum. Umożliwia planowanie, monitorowanie i raportowanie zadań projektowych na różnych etapach ich realizacji. Dzięki elastycznym tablicom kanban i sprintom, Jira pozwala zespołom programistycznym śledzić postępy, zarządzać backlogiem oraz efektywnie przydzielać zasoby. Funkcjonalności takie jak automatyzacja procesów, śledzenie błędów (bug tracking) i integracja z innymi narzędziami (np. GitHub, Bitbucket) sprawiają, że Jira jest wszechstronnym rozwiązaniem do zarządzania nawet najbardziej złożonymi projektami. Dzięki generowanym raportom i wykresom burndown, menedżerowie mogą dokładnie analizować tempo pracy i podejmować decyzje w oparciu o dane.

Pytanie 39

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

A. O(n²)
B. O(log n)
C. O(n)
D. O(n log 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 40

Które z wymienionych stanowi przykład struktury dziedziczenia?

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