Wyniki egzaminu

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

Egzamin zdany!

Wynik: 39/40 punktów (97,5%)

Wymagane minimum: 20 punktów (50%)

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

Które z wymienionych sytuacji jest przykładem hermetyzacji w programowaniu obiektowym?

A. Tworzenie klasy abstrakcyjnej
B. Wykorzystanie klasy nadrzędnej w innej klasie
C. Tworzenie wielu metod o tej samej nazwie w różnych klasach
D. Ograniczenie dostępu do pól klasy poprzez modyfikatory dostępu
Hermetyzacja (ang. encapsulation) to mechanizm programowania obiektowego, który polega na ukrywaniu wewnętrznych danych obiektu oraz udostępnianiu dostępu do nich tylko za pośrednictwem metod publicznych (gettery i settery). Dzięki hermetyzacji dane klasy są chronione przed bezpośrednią modyfikacją, co zwiększa bezpieczeństwo i stabilność kodu. Przykład w C++: `class Konto { private: double saldo; public: void wplata(double kwota) { saldo += kwota; } }` – saldo jest polem prywatnym, które można modyfikować tylko poprzez metody publiczne, co zapobiega nieautoryzowanemu dostępowi.

Pytanie 2

Podaj przykład incydentu w miejscu pracy?

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

Pytanie 3

Co to jest framework?

A. zbiór procedur, danych oraz złożonych typów danych używanych w kodzie źródłowym aplikacji
B. narzędzie przeznaczone do opracowywania, edytowania, testowania i uruchamiania oprogramowania
C. oprogramowanie, które za pomocą metody drag and drop pozwala na stworzenie interfejsu aplikacji
D. platforma programistyczna oferująca określone komponenty oraz narzucająca szkielet lub metodologię tworzenia aplikacji
Framework to platforma programistyczna, która dostarcza gotowe komponenty i narzuca określony sposób tworzenia aplikacji. Ułatwia rozwój oprogramowania, eliminując potrzebę pisania kodu od zera.

Pytanie 4

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

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
Narzędzie przedstawione w filmie to kreator GUI tłumaczący kod do języka XAML, co pozwala na szybkie projektowanie interfejsów użytkownika w aplikacjach opartych na Windows Presentation Foundation (WPF). Jest to wygodne rozwiązanie umożliwiające dynamiczne tworzenie elementów wizualnych.

Pytanie 5

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

Ilustracja do pytania
A. Zawierają przeciążenie operatora.
B. Zawierają błąd, ponieważ nazwy metod powinny być różne.
C. Są przeciążone.
D. Służą jako konstruktory w zależności od liczby argumentów.
Metody klasy Point są przeciążone, co oznacza, że mogą mieć tę samą nazwę, ale różnią się liczbą lub typem parametrów. Przeciążenie metod to jedna z podstawowych technik programowania obiektowego, która pozwala na bardziej elastyczne projektowanie kodu. Dzięki temu programista może tworzyć metody dostosowane do różnych sytuacji, zachowując spójność nazw i intuicyjność użycia. To zwiększa czytelność i utrzymanie kodu, ponieważ wywołania metod o tej samej nazwie, ale różnych parametrach, są łatwe do zrozumienia i odnalezienia.

Pytanie 6

Zaprezentowany kod zawiera pola danej klasy. Które pole (pola) mogą być osiągnięte z poziomu głównego programu poprzez odwołanie się w formie nazwaObiektu.nazwaPola?

Ilustracja do pytania
A. jedynie p3
B. p1
C. p3 i p4
D. wyłącznie p3, p4, p5
To pole p3 jest publiczne, co oznacza, że możesz je użyć w programie głównym, wywołując nazwaObiektu.p3. Fajne jest to, że pola prywatne i chronione są niewidoczne poza klasą, więc musisz użyć odpowiednich metod, takich jak gettery i settery, żeby się do nich dostać.

Pytanie 7

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 8

Który z wymienionych poniżej wzorców projektowych można zakwalifikować jako wzorzec strukturalny?

A. Fasada (Facade)
B. Metoda szablonowa (Template method)
C. Fabryka abstrakcyjna (Abstract Factory)
D. Obserwator (Observer)
Fasada (Facade) to wzorzec projektowy, który jest przykładem wzorca strukturalnego. Umożliwia on tworzenie uproszczonego interfejsu dla bardziej złożonego systemu, integrując wiele podsystemów i dostarczając jednolity punkt dostępu. Strukturalne wzorce projektowe skupiają się na organizacji klas i obiektów, a Fasada doskonale wpisuje się w tę kategorię, redukując złożoność i zwiększając czytelność kodu. Wzorzec ten jest szeroko stosowany w architekturze aplikacji, gdzie występuje potrzeba uproszczenia dostępu do skomplikowanych bibliotek lub systemów wewnętrznych.

Pytanie 9

Który z wymienionych elementów można zdefiniować jako psychofizyczny?

A. Stres i monotonia pracy
B. Zanieczyszczenie powietrza
C. Nadmiar światła w miejscu pracy
D. Promieniowanie elektromagnetyczne
Czynniki psychofizyczne w środowisku pracy obejmują takie elementy jak stres, monotonia pracy oraz nadmierne obciążenie organizmu. Są to zagrożenia, które mogą prowadzić do wypalenia zawodowego, depresji, spadku koncentracji i zwiększonego ryzyka popełniania błędów. Stres i monotonia pracy to jedne z najczęstszych psychofizycznych zagrożeń, które mogą wpływać nie tylko na zdrowie psychiczne, ale również na fizyczne samopoczucie pracownika. W celu ich minimalizacji organizacje wdrażają programy wsparcia psychologicznego, zapewniają przerwy, rotację obowiązków i dbają o dobrą atmosferę w pracy. Kluczowe jest także odpowiednie zarządzanie czasem pracy i eliminowanie monotonnych zadań na rzecz bardziej zróżnicowanych obowiązków.

Pytanie 10

Który z poniższych elementów jest częścią architektury PWA (Progressive Web App)?

A. DOM Renderer
B. Service Worker
C. Virtual Machine
D. Media Encoder
Service Worker to kluczowy element architektury Progressive Web App (PWA), który umożliwia działania offline, zarządzanie pamięcią podręczną oraz lepsze doświadczenie użytkownika. Działa on jako pośrednik między aplikacją a serwerem, co pozwala na interceptowanie zapytań sieciowych i dostarczanie zasobów z pamięci podręcznej, gdy sieć jest niedostępna. Dzięki temu użytkownicy mogą korzystać z aplikacji nawet w trybie offline. Service Workers są również odpowiedzialne za powiadomienia push, co zwiększa interaktywność aplikacji. W praktyce oznacza to, że można zbudować aplikację, która działa płynnie na różnych platformach (desktop, mobilne), zachowując przy tym szybkość i responsywność. Warto zaznaczyć, że Service Workers muszą być zarejestrowane na stronie obsługiwanej przez HTTPS, co jest jednym z wymogów bezpieczeństwa. Stosowanie Service Workerów jest zgodne z najlepszymi praktykami branżowymi, a ich implementacja znacząco podnosi jakość i użyteczność aplikacji webowych.

Pytanie 11

Jaka jest podstawowa funkcja narzędzia do zarządzania projektami?

A. Produkcja animacji komputerowych
B. Opracowanie bazy danych dla projektu
C. Poprawa wydajności kodu programu
D. Zarządzanie zadaniami i czasem w projekcie
Zarządzanie zadaniami i czasem to naprawdę kluczowa sprawa w projektach. Dzięki narzędziom takim jak Microsoft Project, Jira, Trello, czy Monday, zespoły mogą lepiej planować, przydzielać role i śledzić, co się dzieje. Możliwości tych narzędzi pozwalają ustalać deadline’y, priorytety, a nawet automatycznie przypominają o zbliżających się terminach. To super pomaga w unikaniu opóźnień i pozwala lepiej zorganizować pracę. Wizualizacja projektu w formie osi czasu czy tablicy kanban też jest mega przydatna, bo wszystko staje się bardziej czytelne.

Pytanie 12

Jaką wartość ma zmienna b po wykonaniu poniższego kodu?

Ilustracja do pytania
A. 5
B. 11
C. 20
D. 2
Po przeanalizowaniu przedstawionego kodu, możemy zauważyć, że zmienne a b i c są zainicjalizowane odpowiednio wartościami 1 20 i 3. Pętla while jest zależna od warunku a <= 10 co oznacza że będzie się wykonywać dopóki a nie przekroczy 10. W ciele pętli najpierw zmniejszamy wartość b o wartość c czyli b = b - c a następnie zwiększamy a o 2 czyli a += 2. Ponieważ a jest początkowo równe 1 pętla będzie się wykonywać pięć razy zanim a stanie się większe niż 10 (1 3 5 7 9). Podczas każdej iteracji wartość b zmniejsza się o 3 (ponieważ c=3). Po pięciu iteracjach wartość b zostanie zmniejszona o 15 (5*3) z początkowej wartości 20 uzyskując ostatecznie 5. W tym kontekście poprawna odpowiedź to 5. Takie podejście do analizy pętli i zmiennych jest kluczowe podczas programowania ponieważ pozwala zrozumieć jak zmieniają się wartości zmiennych w czasie wykonywania programu. Zrozumienie tych zasad jest fundamentalne w programowaniu proceduralnym oraz w debugowaniu kodu.

Pytanie 13

Co to jest garbage collection w programowaniu?

A. Automatyczne zarządzanie pamięcią, które zwalnia pamięć zajmowaną przez nieużywane obiekty
B. Metoda kompresji danych w bazach SQL
C. Proces usuwania nieużywanych elementów z interfejsu użytkownika
D. Technika optymalizacji algorytmów sortowania danych
Garbage collection (GC) to kluczowy proces w wielu językach programowania, takich jak Java, C# czy Python, odpowiedzialny za automatyczne zarządzanie pamięcią. Dzięki mechanizmowi GC możliwe jest wykrywanie oraz zwalnianie pamięci zajmowanej przez obiekty, które nie są już używane w aplikacji. W praktyce oznacza to, że programista nie musi ręcznie zarządzać cyklem życia obiektów, co minimalizuje ryzyko wycieków pamięci i poprawia stabilność aplikacji. Mechanizm ten działa zazwyczaj w tle, analizując dostępność obiektów w pamięci oraz ich referencje. Przykładem zastosowania GC jest optymalizacja pamięci w aplikacjach serwerowych, gdzie długotrwałe działanie i efektywne zarządzanie zasobami są krytyczne. Użycie garbage collection zgodnie z dobrymi praktykami pozwala na pisanie bardziej przejrzystego i łatwiejszego w utrzymaniu kodu, co jest szczególnie ważne w projektach realizowanych w zespołach. Warto również wspomnieć, że różne implementacje GC (np. generacyjne kolekcje, inkrementalne zbieranie śmieci) mają różne podejścia do zarządzania pamięcią, co może wpływać na wydajność aplikacji.

Pytanie 14

Zaprezentowany fragment kodu w języku C# tworzy hasło. Wskaż zdanie PRAWDZIWE dotyczące charakterystyki tego hasła:

Ilustracja do pytania
A. Może zawierać małe i wielkie litery oraz cyfry
B. Ma co najmniej 8 znaków oraz zawiera małe i wielkie litery oraz cyfry
C. Jest maksymalnie 7-znakowe, co wynika z wartości zmiennej i
D. Może zawierać zarówno małe, jak i wielkie litery, cyfry oraz symbole
Algorytm generowania hasła w języku C# może zawierać małe i wielkie litery oraz cyfry, co zapewnia większe bezpieczeństwo hasła. Tworzenie haseł w taki sposób zwiększa ich odporność na ataki brute-force i umożliwia spełnienie wymagań dotyczących złożoności. Dobrze skonstruowane hasło powinno zawierać różne typy znaków, by maksymalnie utrudnić jego złamanie.

Pytanie 15

Które z poniższych narzędzi jest używane do zarządzania wersjami kodu?

A. Jenkins
B. Kubernetes
C. Git
D. Docker
Git jest narzędziem służącym do zarządzania wersjami kodu, które zyskało ogromną popularność wśród programistów na całym świecie. Jego podstawową funkcją jest umożliwienie śledzenia zmian w kodzie źródłowym, co jest niezbędne w procesie tworzenia oprogramowania. Dzięki Gitowi możemy w łatwy sposób przechowywać historię zmian, co pozwala na cofanie się do wcześniejszych wersji projektu, a także na pracę zespołową, gdzie wielu programistów może jednocześnie pracować nad różnymi częściami tego samego projektu. Git wspiera również gałęzie (ang. branches), które umożliwiają równoległe rozwijanie nowych funkcji bez zakłócania głównej linii rozwoju. Jest to kluczowe w środowiskach, gdzie rozwój i wydanie nowych funkcji musi być dobrze zorganizowane. Narzędzie to jest nie tylko darmowe, ale również open-source, co oznacza, że każdy może przyczynić się do jego rozwoju. Git jest standardem w branży IT, a jego znajomość jest często wymagana przez pracodawców. Dzięki swojej elastyczności i wszechstronności Git jest stosowany w projektach open-source, komercyjnych i edukacyjnych.

Pytanie 16

Jakie rozwiązanie jest najbardziej odpowiednie przy projektowaniu aplikacji, która ma funkcjonować na różnych systemach operacyjnych?

A. Opracowanie dedykowanego kodu dla każdej platformy
B. Pełne dopasowanie aplikacji do systemu Windows
C. Koncentrowanie się wyłącznie na estetyce aplikacji
D. Wykorzystanie technik responsywnego projektowania interfejsu
Zastosowanie technik responsywnego projektowania interfejsu to najlepsze podejście do tworzenia aplikacji działających na różnych platformach. Responsywne projektowanie umożliwia dostosowanie interfejsu do różnych rozdzielczości ekranów i urządzeń, co zapewnia jednolite doświadczenia użytkownika. Użycie elastycznych siatek (grid), media queries oraz skalowalnych elementów pozwala na automatyczne dostosowanie wyglądu aplikacji, eliminując konieczność tworzenia oddzielnych wersji dla każdej platformy.

Pytanie 17

Który algorytm sortowania opiera się na metodzie "dziel i zwyciężaj"?

A. Sortowanie przez wstawianie
B. Sortowanie bąbelkowe
C. Sortowanie przez wybór
D. Sortowanie szybkie (QuickSort)
QuickSort to algorytm sortowania wykorzystujący podejście 'dziel i zwyciężaj', co oznacza, że dzieli tablicę na mniejsze części wokół elementu zwanego pivotem, a następnie rekurencyjnie sortuje każdą z tych części. Ta strategia pozwala na efektywne sortowanie dużych zbiorów danych w czasie O(n log n) w większości przypadków. Dziel i zwyciężaj to potężne narzędzie algorytmiczne, które znajduje zastosowanie w wielu innych algorytmach, takich jak Merge Sort i algorytmy wyszukiwania binarnego. QuickSort jest często używany w aplikacjach wymagających szybkiego przetwarzania dużych ilości danych.

Pytanie 18

Technika konstruowania algorytmu polegająca na rozbiciu na dwa lub więcej mniejszych podproblemów, aż do momentu, gdy ich części będą wystarczająco proste do bezpośredniego rozwiązania, nosi nazwę:

A. najkrótszej trasy
B. komiwojażera
C. dziel i zwyciężaj
D. heurystycznej
Metoda 'dziel i zwyciężaj' polega na podziale problemu na mniejsze podproblemy, aż do osiągnięcia najprostszych przypadków, które można łatwo rozwiązać. To podejście jest stosowane w algorytmach takich jak Merge Sort czy QuickSort.

Pytanie 19

W zamieszczonej ramce znajdują się notatki testera dotyczące przeprowadzanych testów aplikacji. Jakiego typu testy planuje przeprowadzić tester?

Ilustracja do pytania
A. Wydajnościowe
B. Interfejsu
C. Bezpieczeństwa
D. Jednostkowe
Testy wydajnościowe są kluczowe dla zapewnienia, że system działa sprawnie pod różnym obciążeniem. Są one wykonywane, aby zrozumieć, jak aplikacja zachowuje się w warunkach rzeczywistych, kiedy wiele użytkowników korzysta z niej jednocześnie. W pytaniu wymienione zostały zadania takie jak mierzenie czasu logowania się użytkowników oraz sprawdzanie, czy czas ten wzrasta wraz ze wzrostem liczby użytkowników. To typowe aspekty testów wydajnościowych. Takie testy pomagają określić limity skalowalności i zapewniają, że aplikacja może obsługiwać oczekiwaną liczbę użytkowników bez spadku wydajności. Standardy branżowe, takie jak ISO/IEC 25010, zwracają uwagę na konieczność testowania wydajności, by zidentyfikować potencjalne wąskie gardła i zapewnić satysfakcjonujące doświadczenia użytkownikom. Dobrymi praktykami są używanie narzędzi takich jak JMeter czy LoadRunner, które umożliwiają symulację obciążenia i analizę wyników w celu optymalizacji kodu i infrastruktury. Tego typu testy są nieodzowne przed wdrożeniem aplikacji produkcyjnej, aby zapewnić jej niezawodne działanie.

Pytanie 20

Jakie narzędzie umożliwia testowanie API w aplikacjach internetowych?

A. Microsoft Excel
B. Blender
C. Postman
D. Node.js
Postman to jedno z najczęściej wykorzystywanych narzędzi do testowania API aplikacji webowych. Umożliwia wysyłanie żądań HTTP, testowanie endpointów oraz monitorowanie odpowiedzi serwera. Dzięki Postmanowi programiści mogą w łatwy sposób analizować dane przesyłane między frontendem a backendem, co jest kluczowe w trakcie budowania nowoczesnych aplikacji opartych na architekturze REST lub GraphQL. Narzędzie oferuje możliwość automatyzacji testów, co przyspiesza proces wykrywania błędów i zwiększa jakość dostarczanych aplikacji. Postman pozwala także na tworzenie skryptów pre-request i testowych, umożliwiając weryfikację poprawności danych oraz sprawdzanie integralności aplikacji na różnych etapach jej rozwoju.

Pytanie 21

Metoda tworzenia algorytmu polegająca na dzieleniu go na dwa lub więcej mniejszych podproblemów, aż do momentu, gdy ich rozwiązanie stanie się proste, jest techniką

A. najkrótszej ścieżki
B. komiwojażera
C. dziel i zwyciężaj
D. heurystyczną
Strategia znana jako 'dziel i zwyciężaj' to sposób, w jaki można podejść do rozwiązywania problemów w algorytmice. Chodzi o to, żeby rozdzielić większy problem na mniejsze kawałki, które są już łatwiejsze do ogarnięcia. Robimy to, aż każdy z tych kawałków da się rozwiązać bez większego trudu. Jak już mamy rozwiązania tych mniejszych problemów, to je łączymy, żeby uzyskać odpowiedź na nasz pierwotny problem. Przykłady? No to mamy algorytm sortowania szybkiego (Quicksort) oraz Mergesort, które świetnie sobie radzą z porządkowaniem danych, dzieląc je na mniejsze części. Jak patrzy się na to z perspektywy analizy algorytmów, to ta strategia często prowadzi do lepszej złożoności obliczeniowej, co sprawia, że jest naprawdę przydatna w praktyce, zwłaszcza w informatyce. W książce Cormena i innych, 'Introduction to Algorithms', można znaleźć sporo informacji na temat tych metod i ich zastosowań, co czyni je naprawdę istotnymi w obszarze programowania i analizy danych.

Pytanie 22

Przeprowadzając analizę kodu interfejsu graficznego napisanego w języku XAML, można zauważyć, że:

Ilustracja do pytania
A. przyciski są ustawione poziomo obok siebie
B. obraz znajduje się po lewej stronie, a pozostałe elementy po prawej
C. tekst "Fotograf" znajduje się po prawej stronie obrazu
D. elementy: tekst, obraz, przycisk Like, przycisk Share, tekst są ułożone jeden pod drugim
W analizowanym kodzie XAML widzimy, że element <StackLayout> z atrybutem Orientation="Horizontal" zawiera przyciski <Button> z tekstami "Like" i "Share". W XAML, stosując stack layout z orientacją poziomą, elementy w nim zawarte są umieszczane obok siebie w rzędzie. To sprawia, że przyciski "Like" i "Share" są widoczne na interfejsie użytkownika ułożone poziomo, zgodnie z tym, co jest opisane w poprawnej odpowiedzi. Użycie StackLayout z orientacją poziomą to często spotykana praktyka w projektowaniu interfejsów, gdy chcemy zorganizować elementy w rzędzie, na przykład przyciski na pasku narzędzi. Zrozumienie tego mechanizmu jest istotne, ponieważ pozwala na efektywne zarządzanie przestrzenią w aplikacjach mobilnych i webowych, gdzie dostępne miejsce może być ograniczone. Praktyczne zastosowanie takiego układu można zobaczyć na przykład w projektowaniu formularzy, gdzie grupujemy elementy w logiczny sposób, ułatwiając użytkownikowi interakcję z aplikacją. Dobre praktyki w projektowaniu interfejsów użytkownika zalecają, aby układ elementów był intuicyjny i zgodny z oczekiwaniami użytkowników, co StackLayout z orientacją poziomą doskonale realizuje w wielu przypadkach.

Pytanie 23

Jaką cechę powinien posiadać dobry negocjator?

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

Pytanie 24

Jakie jest wymagane minimalne natężenie światła w biurze na stanowisku pracy?

A. 800 lx
B. 200 lx
C. 100 lx
D. 500 lx
Minimalne natężenie oświetlenia, jakie powinno być w biurze, to 500 lx (luksów). To taki standard, który ustalono w normach BHP i ergonomii. Dzięki temu lepiej się pracuje przy komputerze i łatwiej robić zadania, które wymagają dobrego wzroku. Odpowiednie oświetlenie zdecydowanie zmniejsza zmęczenie oczu i poprawia koncentrację, co jest istotne, żeby uniknąć bólów głowy i być bardziej efektywnym w pracy. Ważne, żeby światło było równomierne i nie odbijało się na monitorze, bo to może rozpraszać. Warto dbać o takie warunki, bo to zmniejsza ryzyko problemów ze wzrokiem, a komfort pracy jest mega ważny, zwłaszcza gdy ktoś spędza dużo czasu przed komputerem.

Pytanie 25

Która metoda tablicy w JavaScript dodaje nowy element na końcu tablicy?

A. unshift()
B. push()
C. shift()
D. pop()
Metoda push() w JavaScript jest kluczowym narzędziem do dodawania nowych elementów na końcu tablicy. Jest to technika powszechnie stosowana w programowaniu, która pozwala na dynamiczne zarządzanie danymi w aplikacjach. Stosując push(), zyskujemy możliwość zwiększania rozmiaru tablicy w locie, co jest szczególnie przydatne w przypadku pracy z danymi, które mogą się zmieniać lub być nieprzewidywalne. Na przykład, jeśli mamy tablicę przechowującą listę zakupów, możemy dodać nowy przedmiot za pomocą metody push: `zakupy.push('jogurt');`. Warto również zauważyć, że metoda ta zwraca nową długość tablicy po dodaniu elementu, co może być użyteczne w kontekście dalszego przetwarzania lub sprawdzania zawartości tablicy. Zastosowanie tej metody jest zgodne z zasadami dobrego programowania w JavaScript, które zaleca efektywne gospodarowanie pamięcią i elastyczne zarządzanie strukturami danych.

Pytanie 26

Co zostanie wypisane w konsoli po wykonaniu poniższego kodu?

let i = 0; while (i < 5) { i++; if (i === 3) continue; console.log(i); }
A. 1, 2, 3, 4, 5
B. 1, 2, 4, 5
C. 0, 1, 2, 3, 4
D. 0, 1, 2, 4, 5
W przedstawionym kodzie mamy do czynienia z pętlą while, która działa, dopóki zmienna i jest mniejsza od 5. Na początku i jest równe 0, a w każdej iteracji pętli i jest zwiększane o 1. Wewnątrz pętli mamy warunek, który sprawdza, czy i jest równe 3. Jeżeli tak, to używamy instrukcji continue, co oznacza, że pomijamy resztę kodu w tej iteracji i wracamy do początku pętli. Przeanalizujmy, co się stanie w kolejnych iteracjach: w pierwszej iteracji i jest 1, więc wypisujemy 1, w drugiej iteracji i jest 2, więc wypisujemy 2. Gdy i osiąga 3, warunek if jest spełniony i przechodzimy do następnej iteracji, nie wypisując nic. Następnie i staje się 4 i 5, które również są wypisywane. W efekcie na konsoli zostanie wypisane 1, 2, 4, 5. Takie podejście pokazuje, jak ważne jest zrozumienie działania pętli i instrukcji sterujących w JavaScript, co jest kluczowe w programowaniu i pozwala na efektywne zarządzanie przepływem kodu.

Pytanie 27

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

A. kifoza
B. dyskopatia
C. zespół cieśni kanału nadgarstka
D. zespół suchego oka
Zespół cieśni kanału nadgarstka to schorzenie występujące często u programistów i innych osób pracujących przy komputerze. Objawia się bólem, mrowieniem i drętwieniem palców, co wynika z ucisku nerwu pośrodkowego w nadgarstku. Długotrwałe korzystanie z klawiatury i myszy bez ergonomicznych przerw może prowadzić do tego schorzenia. Profilaktyka obejmuje ćwiczenia rozciągające, stosowanie ergonomicznych urządzeń oraz regularne przerwy w pracy.

Pytanie 28

Przedstawione kody zawierają realizację funkcji oraz jeden zdefiniowany test automatyczny, który weryfikuje działanie funkcji w przypadku, gdy argumentem jest liczba ujemna. W miejscu kropek trzeba dodać drugi test, który sprawdzi funkcjonalność funkcji, kiedy argumentem jest liczba dodatnia. Który z poniższych kodów jest odpowiedni do tego testu?

Ilustracja do pytania
A. Odpowiedź D
B. Odpowiedź A
C. Odpowiedź C
D. Odpowiedź B
Poprawna odpowiedź to C ponieważ funkcja fun1 zwraca liczbę taką jaka jest z wyjątkiem sytuacji gdy liczba jest ujemna wtedy zwraca jej wartość bezwzględną Test C sprawdza wartość dodatnią 2 gdzie rezultat jest zgodny z oczekiwaniami i funkcja zwraca 2 co jest poprawnym wynikiem To testowanie zgodne z zasadą jednostkowych testów gdzie ważne jest aby funkcje były testowane na różne przypadki brzegowe w tym na wartości ujemne i dodatnie Implementacja jednostkowych testów pozwala na automatyczne sprawdzanie poprawności działania kodu co jest dobrą praktyką w programowaniu Szczególnie ważne jest aby testować funkcje krytyczne i te które mają potencjał do wystąpienia błędów związanych z nieoczekiwanymi danymi wejściowymi Przykład ten pokazuje jak ważne jest aby testy były dokładne i pokrywały różnorodne scenariusze użytkowania co pozwala na wczesne wychwycenie błędów i zapewnienie stabilności aplikacji W tej sytuacji testując wartość 2 zapewniamy że funkcja zachowuje się poprawnie dla wartości dodatnich co jest zgodne z oczekiwaniami programistycznymi

Pytanie 29

Jakie narzędzie programowe jest odpowiedzialne za konwersję kodu źródłowego na formę zrozumiałą dla maszyny, weryfikuje wszystkie polecenia pod kątem ewentualnych błędów, a następnie generuje moduł do wykonania?

A. debugger
B. kompilator
C. dekompilator
D. interpreter
Kompilator to narzędzie, które tłumaczy kod źródłowy na kod maszynowy lub bajtowy, umożliwiając jego późniejsze wykonanie przez komputer. Kompilator analizuje cały kod przed jego uruchomieniem, identyfikując błędy składniowe i logiczne, co pozwala na generowanie pliku wykonywalnego.

Pytanie 30

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

A. Tworzenie kodu źródłowego
B. Generowanie plików wykonywalnych
C. Kompilowanie kodu źródłowego
D. Analiza i usuwanie błędów w kodzie
Debugger to narzędzie programistyczne służące do analizy i usuwania błędów w kodzie źródłowym. Pozwala na krokowe wykonywanie programu, śledzenie wartości zmiennych i identyfikowanie miejsc, w których występują błędy logiczne lub składniowe. Debugger umożliwia zatrzymanie wykonania programu w dowolnym miejscu, ustawienie tzw. breakpointów (punktów przerwania) i monitorowanie przepływu sterowania. Dzięki temu programista może dokładnie przeanalizować, dlaczego program nie działa zgodnie z oczekiwaniami i szybko znaleźć przyczynę problemu. Debuggery są dostępne w większości zintegrowanych środowisk programistycznych (IDE), takich jak Visual Studio, PyCharm czy IntelliJ IDEA.

Pytanie 31

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

Ilustracja do pytania
A. taką liczbę elementów, ile znajduje się w tablicy books, w każdym punkcie listy umieszczony jest jeden element tablicy
B. tyle elementów, ile znajduje się w tablicy books, w każdym punkcie listy widnieje element o treści {book}
C. jedynie jeden element o treści Harry Potter
D. wyłącznie jeden element o treści Harry Potter, Hobbit, Władca pierścieni
Lista punktowana w Angular i React.js generuje tyle elementów, ile jest w tablicy books. Każdy element listy odpowiada jednemu elementowi tablicy, co pozwala na dynamiczne renderowanie listy w oparciu o dane wejściowe.

Pytanie 32

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

A. DDR4
B. DDR5
C. LPDDR4
D. DDR3
Wybór odpowiedniego rodzaju pamięci RAM jest kluczowy dla osiągnięcia maksymalnej wydajności w komputerze gamingowym. DDR5, najnowszy standard pamięci dynamicznej RAM, oferuje znaczące ulepszenia w porównaniu do swoich poprzedników. Główne różnice dotyczą prędkości, efektywności energetycznej oraz pojemności. DDR5 może oferować prędkości sięgające 8400 MT/s, co przyczynia się do szybszego transferu danych, co ma bezpośredni wpływ na wydajność gier i aplikacji wymagających wysokiej przepustowości. Ponadto, DDR5 wprowadza architekturę, która pozwala na zwiększenie ilości pamięci w jednym module, co umożliwia konfiguracje do 128 GB na pojedynczy moduł, co jest niezwykle korzystne dla graczy korzystających z bardziej wymagających tytułów. Przykłady gier, które potrafią w pełni wykorzystać możliwości DDR5 to Cyberpunk 2077 czy Call of Duty: Warzone, gdzie wydajność pamięci jest kluczowym elementem w uzyskiwaniu płynności rozgrywki. Stosowanie DDR5 nie tylko poprawia wydajność, ale również zwiększa przyszłościowość sprzętu, co sprawia, że jest to najlepszy wybór na dzisiejszym rynku komputerów gamingowych.

Pytanie 33

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

A. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
B. Gwarantuje automatyczną kompilację programu
C. Eliminuje potrzebę korzystania ze zmiennych globalnych
D. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
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 34

W podanym fragmencie kodu Java wskaż, która zmienna może pomieścić wartość "T"

Ilustracja do pytania
A. zm3
B. zm1
C. zm4
D. zm2
Zmienna o nazwie zm3 została zadeklarowana jako typu char co oznacza że może przechowywać pojedynczy znak w tym przypadku wartość T. Typ char w języku Java jest używany do przechowywania znaków Unicode co czyni go idealnym do obsługi liter jako danych. Każdy znak jest przechowywany jako 16-bitowa wartość liczby całkowitej co umożliwia reprezentację szerokiego zakresu symboli w tym litery cyfry i inne znaki specjalne. Przykładowymi zastosowaniami typu char są przypadki gdzie konieczne jest przechowywanie i przetwarzanie liter np. w sytuacjach gdy aplikacja wymaga manipulacji pojedyńczymi znakami w tekście czy analizą ich wartości w kontekście porównywania danych. Dobre praktyki przy pracy z typem char obejmują świadome zarządzanie pamięcią i unikanie niepotrzebnych konwersji do innych typów danych co może prowadzić do strat precyzji lub nieoczekiwanych rezultatów. Ważne jest także zrozumienie jak znaki są kodowane i dekodowane szczególnie w kontekście międzynarodowym gdzie prawidłowa obsługa znaków Unicode jest kluczowa dla zapewnienia kompatybilności i poprawnego działania aplikacji w różnych językach.

Pytanie 35

Jakie z wymienionych narzędzi służy do emulacji mobilnych urządzeń podczas developowania aplikacji?

A. Postman
B. Genymotion
C. TensorFlow
D. Numpy
Genymotion to jedno z najbardziej zaawansowanych narzędzi do emulacji urządzeń mobilnych podczas tworzenia aplikacji na system Android. Umożliwia symulowanie działania aplikacji na różnych urządzeniach i wersjach systemu Android, co pozwala programistom na testowanie kompatybilności i wydajności aplikacji w różnych warunkach. Genymotion oferuje szybkie emulowanie, obsługę GPS, kamery oraz czujników, co czyni go niezwykle przydatnym narzędziem w procesie rozwoju aplikacji mobilnych. Dzięki wsparciu dla integracji z Android Studio, Genymotion jest popularnym wyborem wśród deweloperów tworzących aplikacje na platformę Android.

Pytanie 36

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

A. RAD umożliwia szybsze prototypowanie i rozwój aplikacji dzięki narzędziom wizualnym
B. RAD nie wspiera żadnych języków backendowych
C. RAD funkcjonuje tylko w systemach Windows
D. RAD koncentruje się wyłącznie na budowie frontendu aplikacji
Rapid Application Development (RAD) to metodologia, która koncentruje się na szybkim prototypowaniu i iteracyjnym tworzeniu aplikacji. Dzięki narzędziom wizualnym RAD umożliwia programistom i projektantom szybkie budowanie interfejsów użytkownika oraz testowanie funkcjonalności aplikacji na wczesnym etapie rozwoju. RAD skraca czas potrzebny na dostarczenie gotowego produktu, co czyni go idealnym rozwiązaniem w dynamicznie zmieniających się projektach webowych. Narzędzia RAD umożliwiają także automatyczne generowanie kodu, co znacznie przyspiesza proces programowania.

Pytanie 37

Co oznacza operator '===' w JavaScript?

A. Porównanie wartości i typów
B. Porównanie wartości
C. Przypisanie wartości
D. Konkatenacja stringów
Operator '===' w JavaScript jest używany do porównania wartości oraz ich typów. To znaczy, że aby dwa elementy uznano za równe, muszą mieć zarówno tę samą wartość, jak i ten sam typ. Przykładowo, porównanie liczby 5 i stringa '5' zwróci false, ponieważ różnią się typem. Używanie '===' jest zalecane w dobrych praktykach programistycznych, ponieważ eliminuje niejednoznaczności związane z równością luźną (operator '=='), która może prowadzić do nieprzewidywalnych wyników. Na przykład, '5' == 5 zwróci true, co może być mylące. Dlatego w sytuacjach, gdzie zależy nam na ścisłym porównaniu, powinno się zawsze stosować '===' dla jasności kodu i uniknięcia błędów. W kontekście profesjonalnego programowania, korzystanie z '===' zapewnia lepszą kontrolę typów danych, co jest kluczowe w większych projektach, gdzie błędy typów mogą prowadzić do poważnych problemów z debugowaniem i utrzymywaniem kodu.

Pytanie 38

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

let x = 5; let y = '10'; console.log(x + y);
A. 15
B. 510
C. undefined
D. error
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 39

Która z poniższych nie jest zasadą czystego kodu (clean code)?

A. Konsekwentne nazewnictwo
B. Maksymalna złożoność funkcji
C. Jedna odpowiedzialność funkcji
D. Samodokumentujący się kod
Maksymalna złożoność funkcji to pojęcie, które odnosi się do zasady, że funkcje powinny być jak najmniej złożone, aby były zrozumiałe i łatwe w utrzymaniu. Czysty kod promuje ideę, że każda funkcja powinna mieć jasno określoną odpowiedzialność, co w praktyce oznacza ograniczenie jej złożoności. Przykładem może być rozdzielenie złożonej logiki biznesowej na kilka prostszych funkcji, co ułatwia ich testowanie i ponowne wykorzystanie. Warto zwrócić uwagę, że zgodnie z zasadą KISS (Keep It Simple, Stupid) dąży się do prostoty w projektowaniu kodu, co nie tylko zwiększa jego czytelność, ale także minimalizuje ryzyko błędów. Dobrze napisany kod powinien być również samodokumentujący się, co oznacza, że jego struktura i nazwy zmiennych powinny jasno wskazywać na ich funkcjonalność. Przestrzeganie zasady maksymalnej złożoności funkcji jest kluczowe w kontekście długoterminowego utrzymania aplikacji, ponieważ zmniejsza koszty związane z modyfikacjami oraz poprawkami.

Pytanie 40

Którego nagłówka używamy w C++ do obsługi plików?

A. <fstream>
B. <fileio.h>
C. <iostream>
D. <stdio.h>
Nagłówek '<fstream>' w języku C++ jest używany do pracy z plikami, umożliwiając odczyt i zapis danych na dysku. Biblioteka fstream udostępnia klasy 'ifstream', 'ofstream' i 'fstream', które pozwalają na operacje wejścia i wyjścia plików. 'ifstream' służy do odczytu plików, 'ofstream' do zapisu, a 'fstream' umożliwia zarówno odczyt, jak i zapis. Praca z plikami jest kluczowa w wielu aplikacjach, od prostych narzędzi do przetwarzania danych po złożone systemy zarządzania plikami i bazami danych. Dzięki 'fstream' programiści mogą efektywnie zarządzać danymi na różnych poziomach aplikacji.