Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 8 czerwca 2026 22:51
  • Data zakończenia: 8 czerwca 2026 23:07

Egzamin niezdany

Wynik: 19/40 punktów (47,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Jednym z atrybutów tabeli ksiazki jest pole czyWypozyczona, które może mieć dwie wartości: true lub false. Jaki typ danych będzie najbardziej odpowiedni dla tego pola?

A. DOUBLE
B. VARCHAR(5)
C. BOOLEAN
D. CHAR
Wybór typów DOUBLE, CHAR oraz VARCHAR(5) do reprezentowania stanu wypożyczenia książki jest nieadekwatny i może prowadzić do nieefektywnego zarządzania danymi. Typ DOUBLE, będący typem liczbowym zmiennoprzecinkowym, jest przeznaczony do przechowywania wartości numerycznych z wysoką precyzją, co jest całkowicie zbędne w kontekście binaryjnej reprezentacji stanu wypożyczenia. Użycie typu DOUBLE zwiększa obciążenie pamięci i niepotrzebnie komplikuje zapytania, co negatywnie wpływa na wydajność bazy danych. CHAR oraz VARCHAR(5) są typami tekstowymi, które również są niewłaściwe w tym kontekście. W przypadku CHAR, którego długość jest stała, musielibyśmy zarezerwować miejsce na cały ciąg znaków, co jest nieefektywne. Z kolei VARCHAR(5), choć jest dynamiczny, nadal nie odzwierciedla logicznego charakteru pola 'czyWypozyczona'. Zamiast prostego true/false, wprowadzamy zbędne komplikacje przy operacjach porównawczych i filtracji. Tego rodzaju błędne podejście może wynikać z mylenia reprezentacji danych - niektóre osoby mogą sądzić, że tekstowe lub liczbowe reprezentacje zapewniają większą elastyczność, co jest mylnym przekonaniem. Kluczowe w projektowaniu baz danych jest dobieranie typów danych odpowiednio do ich przeznaczenia, a w przypadku wartości logicznych najlepszym wyborem jest typ BOOLEAN.

Pytanie 2

W programie INKSCAPE / COREL, aby uzyskać efekt przedstawiony w napisie, należy

Ilustracja do pytania
A. skorzystać z funkcji wstaw / dopasuj tekst do ścieżki
B. posłużyć się funkcją gradientu
C. zastosować funkcję wykluczenia z kołem
D. wykorzystać funkcję sumy z kołem
Wybierając odpowiednie narzędzia do osiągnięcia skomplikowanych efektów typograficznych ważne jest zrozumienie właściwości każdej funkcji Dostępne odpowiedzi sugerują nieprawidłowe podejścia do problemu Gradient jest narzędziem używanym głównie do tworzenia płynnych przejść między kolorami w obiektach wektorowych Nie wpływa on bezpośrednio na układ tekstu wzdłuż ścieżki Wybór tej opcji może wynikać z błędnego rozumienia że gradient wpływa na formę obiektu w tym przypadku tekstu Funkcja sumy w kontekście programów graficznych takich jak Inkscape czy CorelDraw dotyczy operacji booleowskich na obiektach co prowadzi do łączenia kształtów Wynikowa forma jest sumą obszarów wyjściowych jednak znów nie wpływa to na układ tekstu wzdłuż ścieżki Działanie funkcji wykluczenia z kolei polega na tworzeniu przecięcia dwóch kształtów i usunięciu wspólnego obszaru co jest używane głównie w tworzeniu złożonych kształtów Nie ma to zastosowania przy dopasowywaniu tekstu do ścieżki Myślenie że te operacje booleowskie mogą wpływać na tekst wynika z niezrozumienia jak działają te funkcje w kontekście obiektów i tekstu w programach graficznych Kluczowym błędem jest tutaj założenie że funkcje do manipulacji kształtami mogą być bezpośrednio stosowane do tekstu bez zrozumienia specyfiki narzędzi jakimi są gradient sumowanie czy wykluczanie które nie dotyczą bezpośrednio zarządzania tekstem wzdłuż ścieżki

Pytanie 3

Jak powinien być poprawnie zapisany znacznik <img>, służący do umieszczenia na stronie internetowej obrazu rys.jpg, przeskalowanego do szerokości 120 px oraz wysokości 80 px z tekstem alternatywnym "krajobraz"?

A. <img src="rys.jpg" width="120px" height="80px" alt="krajobraz"/>
B. <img href="rys.jpg" height="120px" width="80px" info="krajobraz"/>
C. <img image="rys.jpg" width="120px" height="80px" alt="krajobraz"/>
D. <img src="rys.jpg" height="120px" width="80px" info="krajobraz"/>
Odpowiedź <img src="rys.jpg" width="120px" height="80px" alt="krajobraz"/> jest poprawna z kilku powodów. Przede wszystkim, atrybut 'src' wskazuje na lokalizację pliku graficznego, co jest kluczowe dla poprawnego wyświetlania obrazu na stronie internetowej. Atrybuty 'width' oraz 'height' pozwalają na precyzyjne określenie rozmiarów obrazu, co jest istotne zarówno dla responsywności strony, jak i dla optymalizacji czasu ładowania. Użycie jednostki 'px' (pikseli) jest poprawne, jednak w HTML5 można pominąć tę jednostkę, wpisując jedynie wartość liczbową. Atrybut 'alt' jest niezwykle ważny dla dostępności, ponieważ dostarcza alternatywny opis obrazu dla użytkowników, którzy nie mogą go zobaczyć, na przykład osób niewidomych korzystających z czytników ekranu. Używanie odpowiednich atrybutów oraz wartości jest zgodne z najlepszymi praktykami w tworzeniu stron WWW oraz standardami W3C, co wpływa na lepszą użyteczność oraz SEO strony. Przykładem praktycznym może być umieszczenie grafiki w nagłówku strony, gdzie obraz jest widoczny, a opis alternatywny wspiera dostępność i kontekst treści.

Pytanie 4

W regule CSS h1 { color: blue } czym jest h1?

A. klasą
B. deklaracją
C. wartością
D. selektorem
Trzeba odróżnić części reguły CSS. To, co w klamrach (np. color: blue), to DEKLARACJA, złożona z właściwości (color) i WARTOŚCI (blue). Klasa zaczyna się od kropki. Element wskazujący cel reguły to selektor, więc h1 jest selektorem.

Pytanie 5

Jakie będzie efektem zastosowanego formatowania CSS dla nagłówka trzeciego stopnia

<style> h3 { background-color: grey; } </style>

<h3 style="background-color: orange;">Rozdział 1.2.2.</h3>

A. tło nagłówka będzie w odcieniu szarości
B. kolor tekstu będzie szary
C. tło nagłówka będzie pomarańczowe
D. kolor tekstu będzie pomarańczowy
Odpowiedź, że tło będzie pomarańczowe, jest jak najbardziej trafna. W kodzie HTML użyto atrybutu "style" w tagu <h3>, który ma wyższy priorytet niż to, co jest zapisane w sekcji <style>. Wartość background-color to "orange", więc tło nagłówka trzeciego stopnia naprawdę będzie pomarańczowe. Znamy zasady kaskadowych arkuszy stylów, które mówią, że style bezpośrednio przypisane do elementów HTML mają pierwszeństwo. Kiedy chcemy, aby nagłówki miały różne kolory w zależności od tego, gdzie są użyte, inline styles są bardzo przydatne – zwłaszcza w prototypach. Ale z drugiej strony, z mojego doświadczenia, nadmiar inline styles może skomplikować późniejsze zarządzanie kodem, dlatego lepiej trzymać się klas CSS, żeby wszystko było bardziej uporządkowane.

Pytanie 6

Wymień dwa sposoby na zabezpieczenie bazy danych w Microsoft Access.

A. Zaszyfrowanie pliku bazy danych oraz wysyłanie SMS-ów z kodem autoryzacyjnym
B. Używanie funkcji anonimowych oraz ustawienie hasła dostępu do bazy danych
C. Określenie hasła do otwarcia bazy danych oraz wprowadzenie zabezpieczeń na poziomie użytkownika
D. Wprowadzenie zabezpieczeń na poziomie użytkownika oraz sesji
Odpowiedzi sugerujące stosowanie funkcji anonimowych oraz SMS-ów z kodem autoryzującym nie są właściwe w kontekście zabezpieczania bazy danych Microsoft Access. Funkcje anonimowe nie istnieją w standardowym pakiecie Access, co czyni tę koncepcję niepraktyczną i mylącą. W praktyce, anonimowość w systemach baz danych nie jest pożądana, ponieważ uniemożliwia identyfikację użytkowników oraz monitorowanie ich działań, co jest kluczowe dla bezpieczeństwa i zgodności z regulacjami prawnymi, takimi jak RODO. Ponadto, pomysł zabezpieczenia bazy danych za pomocą SMS-ów z kodami autoryzującymi jest stosunkowo nieodpowiedni dla tego typu systemu, ponieważ Microsoft Access nie obsługuje natywnie autoryzacji dwuskładnikowej ani nie jest zaprojektowany do integracji z zewnętrznymi systemami SMS. Takie podejście nie tylko wprowadza dodatkowe ryzyko związane z bezpieczeństwem, ale również stwarza problemy praktyczne, takie jak zależność od zewnętrznych usług, co może prowadzić do przestojów w dostępie do danych. Dlatego kluczowe jest zastosowanie sprawdzonych metod zabezpieczeń, takich jak hasła i uprawnienia użytkowników, które są standardem w zarządzaniu danymi i zapewniają właściwą ochronę przed zagrożeniami.

Pytanie 7

W kodzie HTML zdefiniowano hiperłącze: <a href="http://website.com" rel="nofollow">link</a>. Użyty w nim atrybut rel="nofollow" w znaczniku <a>:

A. jest poleceniem dla przeglądarki, aby nie traktowała słowa "link" jako odnośnika
B. oznacza, że kliknięcie w link nie przeniesie użytkownika na stronę website.com
C. oznacza, że kliknięcie w link otworzy go w osobnej karcie przeglądarki
D. jest informacją dla robota wyszukiwarki, aby nie podążał za tym linkiem i nie przekazywał mu wartości rankingowej
Warto rozdzielić dwie rzeczy: działanie linku dla użytkownika i jego interpretację przez wyszukiwarki. Odpowiedź o braku przejścia na website.com oraz ta o renderowaniu słowa "link" mylą atrybut rel="nofollow" z zachowaniem przeglądarki - tymczasem nofollow nie dotyka sposobu, w jaki link działa czy wygląda; kliknięcie nadal otwiera stronę docelową. Odpowiedź o nowej karcie opisuje całkiem inny atrybut: za to odpowiada target="_blank", nie rel. Poprawna jest informacja o robocie wyszukiwarki: nofollow to sygnał dla wyszukiwarek, aby nie podążały za tym odnośnikiem i nie przekazywały mu wartości rankingowej. To narzędzie SEO służące do kontroli, które linki firmujemy autorytetem swojej witryny, a nie sposób na zmianę funkcjonowania samego hiperłącza.

Pytanie 8

Do czego służy w PHP funkcja trim()?

A. do wyświetlania części wspólnej dwóch tekstów
B. do usuwania białych (lub podanych) znaków z obu końców tekstu
C. do skracania tekstu o podaną liczbę znaków
D. do podawania długości tekstu
Funkcja trim() usuwa białe znaki (spacje, tabulatory, znaki nowej linii) z OBU końców tekstu - a po podaniu drugiego argumentu także wskazane znaki. Dlatego trim() usuwa białe lub podane znaki z obu końców tekstu.

Pytanie 9

Pomiędzy jakimi znakami można umieścić komentarz wieloliniowy w kodzie PHP?

A.
/? ... ?/
B.
<? ... ?>
C.
<!-- ... -->
D.
/* ... */
W PHP komentarz wieloliniowy (blokowy) umieszcza się między /* ... */ - wszystko w środku interpreter pomija, nawet jeśli zajmuje kilka wierszy. Dla komentarzy jednoliniowych PHP udostępnia też // oraz #. Komentarze opisują kod i pomagają go zrozumieć, a także pozwalają tymczasowo wyłączyć fragment bez usuwania. Dlatego komentarz wieloliniowy w PHP zapisuje się jako /* ... */.

Pytanie 10

W tabeli uczniowie (kolumny: imie, nazwisko, klasa) wszyscy uczniowie klas 1-5 przeszli do następnej klasy. Które polecenie zwiększy wartość w kolumnie klasa o 1?

A.
SELECT nazwisko, imie FROM uczniowie
B.
SELECT uczniowie WHERE klasa BETWEEN 1 AND 5
C.
UPDATE uczniowie SET klasa = klasa + 1 WHERE klasa >= 1 AND klasa <= 5
D.
UPDATE nazwisko, imie SET klasa = klasa + 1
Do zmiany istniejących danych służy UPDATE: po nazwie tabeli podaje się SET z nowymi wartościami, a WHERE ogranicza zakres zmian. Aby podnieść klasę o 1 tylko uczniom klas 1-5, zapisuje się UPDATE uczniowie SET klasa = klasa + 1 WHERE klasa >= 1 AND klasa <= 5. Dlatego poprawne jest to polecenie UPDATE.

Pytanie 11

W języku JavaScript, w celu przekształcenia specjalnie przygotowanego tekstu w tablicę, można wykorzystać metodę

A. trim()
B. replace()
C. slice()
D. split()
Użycie metod takich jak trim(), replace() czy slice() w kontekście zamiany tekstu na tablicę jest nieprawidłowe z kilku powodów. Metoda trim() służy do usuwania białych znaków (spacji, tabulatorów itp.) z początku i końca ciągu znaków. Choć jest to przydatne w wielu sytuacjach, nie ma ona żadnego wpływu na strukturę samego tekstu, a tym samym nie może być używana do przekształcania ciągu w tablicę. Z kolei replace() jest metodą, która zastępuje podciąg w łańcuchu, ale nie dzieli go na elementy. Na przykład, użycie replace() na ciągu "Jan,Kasia,Piotr" z celem uzyskania tablicy spowoduje, że nadal będziemy mieć jeden łańcuch, w którym nie będą mogły wystąpić oddzielne elementy. Natomiast metoda slice() służy do wycinania określonej części łańcucha, co również nie prowadzi do generowania tablicy. Powszechnym błędem myślowym jest założenie, że te metody mogą spełniać funkcję podziału tekstu, podczas gdy ich rzeczywiste zastosowanie jest zupełnie inne. W praktyce, stosując metody, które nie są przeznaczone do dzielenia tekstu, programiści mogą napotkać problemy z wydajnością i czytelnością kodu, co jest sprzeczne z zasadami dobrego programowania. Zrozumienie różnicy między tymi metodami oraz ich odpowiednim zastosowaniem jest kluczowe dla efektywnej pracy z danymi tekstowymi i zapewnia, że procesy przetwarzania informacji w aplikacjach są zarówno efektywne, jak i łatwe do utrzymania.

Pytanie 12

Aby wprowadzić rekord do tabeli Pracownicy, jakie polecenie SQL należy zastosować?

A. INSERT (Jan, Kowalski) INTO Pracownicy;
B. INSERT VALUES Pracownicy INTO (Jan, Kowalski);
C. INSERT INTO Pracownicy (imie, nazwisko) VALUES (Jan, Kowalski);
D. INSERT VALUES (Jan, Kowalski) INTO Pracownicy;
Odpowiedź 'INSERT INTO Pracownicy (imie, nazwisko) VALUES (Jan, Kowalski);' jest poprawna, ponieważ jest zgodna z ogólną składnią polecenia SQL do dodawania danych do tabeli. W składni tej najpierw wskazujemy, do której tabeli chcemy wprowadzić dane, używając frazy 'INSERT INTO', a następnie w nawiasach podajemy nazwy kolumn, do których mają być wprowadzone wartości. Wartości te umieszczamy po słowie kluczowym 'VALUES', również w nawiasach. Takie podejście jest zgodne z normami SQL i zapewnia, że dane będą poprawnie wstawione. Przykładem praktycznym może być dodanie nowego pracownika do bazy danych firmy, co jest kluczowym elementem zarządzania informacjami o pracownikach. Prawidłowa składnia pozwala również na łatwe wprowadzenie wielu rekordów jednocześnie, co jest efektywne w dużych systemach baz danych. Ponadto, użycie poprawnej składni ułatwia przyszłe modyfikacje oraz optymalizację zapytań, co jest istotne w kontekście dobrą praktyką w programowaniu baz danych.

Pytanie 13

W dokumentacji języka PHP znajduje się informacja dotycząca jednej z jego funkcji:
„Warning. This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.”.
Zgodnie z tą informacją użycie tej funkcji jest:

A. dostępne w wersjach PHP od 5.5.0 do 7.0.0 (włącznie) i niedostępne w innych wersjach.
B. przestarzałe od wersji PHP 5.5.0 i całkowicie usunięte w wersji 7.0.0.
C. niemożliwe w wersjach PHP 5.5.0 lub starszych i dostępne dopiero od wersji 7.0.0.
D. niezalecane w wersji PHP 5.5.0 i dostępne od wersji 7.0.0.
Komunikat z dokumentacji PHP „Warning. This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0.” oznacza dwa różne stany w cyklu życia funkcji/rozszerzenia. „Deprecated” od wersji 5.5.0 znaczy, że funkcja nadal działa, ale jej użycie jest oficjalnie niezalecane. Silnik PHP może generować ostrzeżenia (E_DEPRECATED), a autorzy języka jasno sugerują, żeby migrować kod na nowsze, wspierane rozwiązania. „Removed w PHP 7.0.0” oznacza, że od tej wersji funkcja po prostu nie istnieje – próba jej użycia skończy się błędem typu „undefined function” lub „undefined extension”. Z mojego doświadczenia wynika, że taki status to sygnał alarmowy dla programisty: w nowych projektach nie używamy funkcji oznaczonych jako deprecated, a w istniejących aplikacjach planujemy refaktoryzację, zanim wejdziemy na wyższą wersję PHP. Dobrym przykładem jest stare rozszerzenie mysql_* – od PHP 5.5 było oznaczone jako przestarzałe, a w PHP 7 zostało usunięte i trzeba było przejść na mysqli lub PDO. W praktyce, gdy widzisz w dokumentacji „deprecated od wersji X”, powinieneś: sprawdzić zalecaną alternatywę, włączyć raportowanie błędów i ostrzeżeń na środowisku developerskim, usunąć stopniowo wszystkie wywołania danej funkcji. Branżową dobrą praktyką jest też testowanie aplikacji na docelowej wersji PHP przed aktualizacją produkcji, żeby właśnie takie usunięte funkcje wyłapać automatycznie w logach lub podczas testów jednostkowych. Twoja odpowiedź dokładnie to odczytała: od 5.5 funkcja jest przestarzała (deprecated), a w 7.0 całkowicie znika z języka.

Pytanie 14

Który typ danych obsługiwany przez PHP jest przeznaczony do obsługi zmiennych typu logicznego?

A. Integer
B. Float
C. Boolean
D. String
Typy Float, Integer oraz String nie są odpowiednie do przechowywania informacji logicznych. Float reprezentuje liczby zmiennoprzecinkowe, co oznacza, że przechowuje dane numeryczne z częścią dziesiętną. Używanie typu float do logiki programistycznej może prowadzić do nieścisłości, ponieważ nie potrafi on właściwie reprezentować wartości logicznych, takich jak prawda czy fałsz. Z kolei Integer to typ całkowity, który również nie ma zastosowania w kontekście zmiennych logicznych. Przechowuje tylko liczby całkowite, a jego użycie w decyzjach logicznych może prowadzić do błędnych interpretacji, gdyż wartości całkowite nie są bezpośrednio związane z pojęciem prawdy i fałszu. String, będący typem reprezentującym dane tekstowe, również nie jest odpowiedni do tego celu. Choć można konwertować ciągi tekstowe na zmienne logiczne, takie jak poprzez interpretację 'true' jako prawdy i 'false' jako fałszu, nie jest to efektywne ani zalecane w praktyce ze względu na możliwość wystąpienia błędów. W programowaniu ważne jest, aby stosować odpowiednie typy danych, co zwiększa czytelność oraz jakość kodu, a także ułatwia jego utrzymanie. Prawidłowe stosowanie typów danych, w tym boolean, jest kluczowe dla tworzenia efektywnych i błędoodpornych aplikacji.

Pytanie 15

Na ilustracji przedstawiono schemat rozmieszczenia elementów na stronie WWW. W której z jej sekcji zazwyczaj znajduje się stopka strony?

Ilustracja do pytania
A. 5
B. 1
C. 2
D. 4
Odpowiedź 5 jest poprawna ponieważ w standardach projektowania stron internetowych stopka strony zazwyczaj znajduje się na dole każdej podstrony. Stopka to miejsce gdzie umieszczane są informacje takie jak prawa autorskie prywatność i linki do kontaktu. Dobrze zaprojektowana stopka może także zawierać skróty nawigacyjne które pomagają użytkownikowi szybko przemieszczać się po stronie. W praktyce projektanci stron WWW stosują podejście oparte na responsywnym designie co oznacza że stopka powinna być łatwo dostępna i czytelna na różnych urządzeniach. Wykorzystanie CSS Grid lub Flexbox pozwala na elastyczne zarządzanie układem strony co jest szczególnie przydatne przy projektowaniu stopki. Ponadto stopki są elementami które odpowiadają za spójność wizualną całej strony internetowej zapewniając użytkownikowi intuicyjne doświadczenie. Umieszczanie stopki w dolnej części strony jest zgodne z oczekiwaniami użytkowników co zwiększa użyteczność serwisu i pozytywnie wpływa na jego odbiór. Praktyczne zastosowanie tego podejścia można zauważyć na wielu profesjonalnych stronach gdzie stopka jest wyraźnie oddzielona i przejrzysta co ułatwia użytkownikowi odnalezienie potrzebnych informacji.

Pytanie 16

Którego znacznika użyć, aby przejść do nowej linii tekstu BEZ tworzenia akapitu?

A.
<p>
B.
</b>
C.
</br>
D.
<br>
Trzeba rozróżnić łamanie linii od akapitu. </br> to błędny zapis. </b> zamyka pogrubienie, nie łamie linii. <p> tworzy nowy AKAPIT z odstępem, a nie samo przejście do nowej linii. Złamanie wiersza bez akapitu daje <br>.

Pytanie 17

Co według zasad ACID oznacza wymóg TRWAŁOŚCI (durability) transakcji?

A. dane zatwierdzone przez transakcję pozostają dostępne mimo późniejszych zdarzeń
B. przy naruszeniu spójności transakcja usuwa tabele z kluczami obcymi
C. w trakcie transakcji dane mogą zmieniać inne transakcje
D. transakcję można podzielić na dwa niezależne etapy
Trwałość odnosi się do utrzymania zatwierdzonych danych po awarii. Podział transakcji na dwa etapy to nie jej definicja, lecz element implementacji (np. two-phase commit). Możliwość zmiany danych przez inne transakcje w trakcie opisuje brak IZOLACJI, czyli inną zasadę ACID. Usuwanie tabel przy naruszeniu spójności to mylące ujęcie spójności (consistency). Trwałość to gwarancja, że zatwierdzone dane przetrwają mimo późniejszych awarii.

Pytanie 18

Zakładając, że tablica $tab zawiera liczby naturalne, co program wyświetli?

$liczba = $tab[0];
foreach ($tab as $element)
{
  if ($element > $liczba)
    $liczba = $element;
}
echo $liczba;
A. największy element tablicy
B. element tablicy o wartości $tab[0]
C. elementy, które przewyższają zmienną $liczba
D. najmniejszy element tablicy
Niepoprawne odpowiedzi wynikają z nieporozumień dotyczących działania pętli iteracyjnej oraz logiki porównywania i aktualizowania wartości. Propozycja wyboru najmniejszego elementu tablicy jest błędna, ponieważ w programie brakuje mechanizmu do aktualizacji zmiennej $liczba na mniejszą wartość, co jest kluczowym wymogiem w tym kontekście. Pętla foreach z warunkiem if sprawia, że zmienna $liczba zwiększa swoją wartość tylko wtedy, gdy znajdzie się element większy od aktualnie przechowywanej wartości, eliminując tym samym możliwość identyfikacji najmniejszego elementu. Z kolei opcja dotycząca wypisania elementów większych od zmiennej $liczba również jest nietrafiona, ponieważ program nie zawiera żadnej instrukcji wypisującej takie elementy na ekran, a jedynie aktualizuje zmienną w celu znalezienia największej wartości. Taka funkcjonalność wymagałaby dodatkowej logiki, która przechowywałaby i obsługiwała wiele większych elementów, co nie jest realizowane w obecnym kodzie. Wreszcie, pomysł, że program wypisuje element równy $tab[0], również nie jest poprawny. Chociaż zmienna $liczba jest inicjalizowana wartością $tab[0], to jednak ulega ona zmianom w trakcie iteracji przez tablicę, jeśli znajdzie się większy element, a więc w większości przypadków nie kończy z wartością początkową. Zrozumienie tych mechanizmów jest kluczowe w projektowaniu efektywnego kodu i unikaniu nieporozumień w implementacji algorytmów operujących na zbiorach danych.

Pytanie 19

W programowaniu zmienna o typie integer służy do przechowywania

A. liczby całkowitej
B. liczby rzeczywistej
C. znaku
D. wartości logicznej
Zmienna typu integer w językach programowania jest przeznaczona do przechowywania liczb całkowitych, co oznacza liczby bez części dziesiętnej. To podstawowy typ danych, który jest szeroko stosowany w programowaniu do reprezentowania wartości takich jak liczby porządkowe, ilości, indeksy w tablicach czy inne wartości, które nie wymagają precyzyjnych obliczeń dziesiętnych. Przykładami zastosowania zmiennych typu integer mogą być liczniki w pętlach, które określają liczbę iteracji, lub zmienne przechowujące wiek osoby, liczbę punktów w grze czy numer identyfikacyjny w bazie danych. Warto zaznaczyć, że różne języki programowania mogą oferować różne rozmiary dla typu integer, co wpływa na zakres wartości, jakie mogą być w nim przechowywane. Na przykład w języku C++ standardowy typ int zazwyczaj zajmuje 4 bajty i może przechowywać liczby z przedziału od -2,147,483,648 do 2,147,483,647. W praktyce, znajomość typów danych i ich odpowiedniego używania powinna być kluczową umiejętnością każdego programisty, aby pisać wydajny i prawidłowy kod.

Pytanie 20

Do przechowywania jakich danych służy w tabeli pole typu BLOB?

A. łańcuchów znaków o nieokreślonej długości
B. liczb całkowitych większych od zakresu INT
C. dużych danych binarnych, np. grafiki
D. danych logicznych, np. true
Typ BLOB (Binary Large Object) służy do przechowywania DUŻYCH danych binarnych - np. grafiki, plików audio czy dokumentów zapisanych bezpośrednio w bazie. Trzyma surowe bajty, a nie tekst czy liczby. Dlatego BLOB przechowuje duże dane binarne.

Pytanie 21

Jaki typ danych w MySQL należy zastosować, aby w jednym polu zapisać zarówno datę, jak i czas?

A. TIMESTAMP
B. YEAR
C. DATE
D. BOOLEAN
Odpowiedzi DATE, YEAR i BOOLEAN są niewłaściwe w kontekście przechowywania zarówno daty, jak i czasu w bazie danych MySQL. DATE jest typem danych, który przechowuje tylko datę, bez informacji o godzinie. Użycie DATE oznaczałoby utratę ważnych informacji o czasie, co może być istotne w wielu aplikacjach, na przykład w systemach rejestracji zdarzeń. YEAR, z kolei, jest ograniczonym typem danych, który służy jedynie do przechowywania roku. Oznacza to, że nie może być użyty do rejestrowania pełnej daty ani czasu, co jest niewystarczające w przypadku wielu praktycznych zastosowań. BOOLEAN to typ danych, który przechowuje jedynie wartości logiczne (prawda/fałsz) i nie ma zastosowania w kontekście daty i czasu. Typowe błędy myślowe, które mogą prowadzić do wyboru niewłaściwych typów danych, obejmują myślenie, że daty i czasy można zrealizować oddzielnie, co w praktyce może prowadzić do problemów z synchronizacją i zarządzaniem danymi. Właściwe rozumienie dostępnych typów danych w MySQL jest kluczowe dla efektywnego projektowania baz danych i zapewnienia ich integralności.

Pytanie 22

W języku JavaScript zdefiniowano obiekt. Aby uzyskać wartość atrybutu, można użyć następującego zapisu:

obiekt = { q: 1, w: 2, e: 3, r:4 };
A. obiekt->w
B. obiekt::w
C. obiekt.w
D. obiekt:w
Błędne odpowiedzi opierają się na nieprawidłowej interpretacji sposobu dostępu do właściwości obiektów w JavaScript. Notacja 'obiekt:w' nie jest poprawna, ponieważ nie stosuje się dwukropka do uzyskiwania dostępu do właściwości. Dwukropek jest używany w kontekście tworzenia obiektów, gdzie określa parę klucz-wartość, a nie podczas odczytywania wartości. Z kolei notacja 'obiekt::w' w JavaScript również nie ma zastosowania. Podwójny dwukropek nie jest uznawany za prawidłową operację i nie ma zastosowania w kontekście obiektów. Zresztą, w wielu innych językach programowania, takich jak C++ czy Python, używa się podwójnego dwukropka w zupełnie innym kontekście, co może prowadzić do pomyłek. Ostatnia odpowiedź 'obiekt->w' może sugerować wpływy z języków takich jak C czy C++, gdzie operator strzałki '->' jest używany do dostępu do właściwości wskaźnika na obiekt. W JavaScript jednak nie używa się wskaźników, a dostęp do właściwości obiektu odbywa się przez notację kropkową lub notację indeksu. Właściwe zrozumienie tych koncepcji jest kluczowe dla efektywnego programowania w JavaScript, a błędne podejście do notacji prowadzi do frustracji i błędów w kodzie.

Pytanie 23

Wskaż wynik wykonania skryptu napisanego w języku PHP

<?php
$tablica = array(10 => "Perl", 14 => "PHP", 20 => "Python", 22 => "Pike");
asort($tablica);
print("<pre>");
print_r($tablica);
print("</pre>");
?>
A
Array
(
    [14] => PHP
    [10] => Perl
    [22] => Pike
    [20] => Python
)
B
Array
(
    [0] => PHP
    [1] => Perl
    [2] => Pike
    [3] => Python
)
C
Array
(
    [0] => Python
    [1] => Pike
    [2] => Perl
    [3] => PHP
)
D
Array
(
    [10] => Perl
    [14] => PHP
    [20] => Python
    [22] => Pike
)
A. D.
B. C.
C. A.
D. B.
Widzę, że Twoja odpowiedź nie do końca trafiła w sedno. Wygląda na to, że masz jakieś nieporozumienia z tym skryptem PHP i funkcją asort(). Pamiętaj, że ten skrypt tworzy tablicę asocjacyjną z czterema elementami i potem sortuje je funkcją asort(). Ta funkcja działa na wartościach i zachowuje klucze, więc po sortowaniu powinno być: `[14] => PHP`, `[10] => Perl`, `[22] => Pike`, `[20] => Python`. Jak masz inną kolejność, to może sugerować, że coś poszło nie tak z sortowaniem. Nie zapominaj, że w PHP jest sporo funkcji sortujących, każda z nich ma swoje miejsce i zastosowanie, więc warto to poćwiczyć, żeby lepiej zrozumieć temat.

Pytanie 24

Aby zrealizować opisane czynności w JavaScript, konieczne jest umieszczenie poniższego kodu w znaczniku <script>

Ilustracja do pytania
A. A = prompt("Podaj kwalifikację: ");
document.write("Kwalifikacja: "+A)
B. A = prompt("Podaj kwalifikację: ");
document.write("Kwalifikacja: ".A)
C. A = alert("Podaj kwalifikację: ");
document.write("Kwalifikacja: "+A)
D. A << prompt("Podaj kwalifikację: ");
document.write("Kwalifikacja: "+A)
Rozważając podane odpowiedzi warto zauważyć kilka typowych błędów koncepcyjnych związanych z używaniem funkcji w JavaScript. Po pierwsze, w jednej odpowiedzi użyto kropki zamiast operatora konkatenacji przy próbie łączenia łańcuchów znaków, co jest błędne w JavaScript. W tym języku operator + jest standardowym sposobem na łączenie tekstu z wartościami zmiennych. Użycie kropki w tym kontekście jest błędne, ponieważ odnosi się do operacji obiektowych, nie do konkatenacji łańcuchów. Innym błędem jest wykorzystanie operatora <<, który w rzeczywistości służy do przesunięć bitowych, a nie do przypisywania wartości czy wywoływania funkcji. Takie pomyłki mogą wynikać z niezrozumienia różnic między operacjami bitowymi a przypisaniem wartości. Kolejna opcja sugerowała użycie alert() zamiast prompt(), co oznaczałoby wyświetlenie jedynie komunikatu bez możliwości wprowadzenia danych przez użytkownika, co nie spełnia założeń zadania polegających na pobraniu wartości od użytkownika. Wszystkie te błędne odpowiedzi wynikają z nieznajomości lub niepoprawnego użycia podstawowych funkcji i operatorów języka JavaScript co podkreśla znaczenie dokładnego zrozumienia podstaw języka oraz ich praktycznego zastosowania. Poprawne użycie prompt() i document.write() jest kluczowe w implementacji interaktywnych elementów na stronach internetowych, co pozwala na dynamiczne przetwarzanie danych użytkowników w aplikacjach webowych. Dobrze jest stosować się do standardów i dobrych praktyk, aby unikać podobnych błędów w przyszłości oraz by tworzyć aplikacje, które są zarówno funkcjonalne, jak i bezpieczne.

Pytanie 25

Dokument HTML określa akapit oraz obrazek. Aby obrazek był wyświetlany przez przeglądarkę w tej samej linii co akapit po jego lewej stronie, należy w stylu CSS obrazka uwzględnić właściwość

A. alt: left;
B. style: left;
C. align: left;
D. float: left;
Wybór opcji align: left; nie jest na topie i nie jest zgodny z aktualnymi standardami CSS. To atrybut, który kiedyś używano w HTML do tabel, a nie do stylizacji obrazów. Użycie align nie poprawi układu rysunku w akapicie, więc może to być mylące, bo efekt wizualny nie będzie taki, jakiego byśmy oczekiwali. W CSS style powinny być oddzielone od struktury HTML, a stare atrybuty raczej zaśmiecają kod i utrudniają pracę innym programistom. Podobnie z style: left; – to w ogóle nie jest właściwa deklaracja w CSS. Nie ma takiej właściwości, więc to też czyni tę odpowiedź błędną. Używanie atrybutów, które w ogóle nie mają sensu w CSS, może prowadzić do zamieszania i problemów z utrzymaniem kodu. A alt: left; odnosi się do atrybutu alt w tagu img, który jest używany do opisu zawartości obrazu, ale nie ma wpływu na jego rozmieszczenie. W praktyce, żeby dobrze rozmieścić elementy, trzeba naprawdę zrozumieć, jak działają właściwości CSS i ich zastosowanie, aby unikać błędów i poprawić semantykę strony.

Pytanie 26

Którą właściwość CSS należy zastosować, aby ustawić grubość (pogrubienie) czcionki?

A.
text-weight
B.
text-style
C.
font-weight
D.
font-style
Grubość czcionki ustawia właściwość font-weight. Przyjmuje wartości słowne (normal, bold) lub liczbowe (100-900), np. font-weight: bold. Im wyższa liczba, tym grubsze znaki. Dlatego do pogrubienia tekstu służy font-weight.

Pytanie 27

Instrukcja w języku SQL GRANT ALL PRIVILEGES ON klienci TO pracownik

A. przeniesie uprawnienia z grupy klienci do użytkownika pracownik
B. przyznaje uprawnienie grupie klienci dla tabeli pracownik
C. przyznaje wszystkie uprawnienia do tabeli klienci użytkownikowi pracownik
D. cofa wszystkie uprawnienia pracownikowi do tabeli klienci
Polecenie SQL "GRANT ALL PRIVILEGES ON klienci TO pracownik" jest używane do nadawania pełnych uprawnień do określonej tabeli, w tym przypadku do tabeli "klienci", użytkownikowi o nazwie "pracownik". To polecenie jest kluczowe w zarządzaniu dostępem w bazach danych, ponieważ pozwala administratorom na precyzyjne kontrolowanie, kto i w jakim zakresie może modyfikować dane. W praktyce, nadawanie uprawnień za pomocą komendy GRANT jest standardową praktyką w zarządzaniu bazami danych, pozwalającą na delegowanie odpowiedzialności oraz przydzielanie ról, co zwiększa bezpieczeństwo danych. Warto również zauważyć, że standardową praktyką jest ograniczanie uprawnień do niezbędnego minimum, stosując zasady najmniejszych uprawnień (principle of least privilege). Przykładowo, zamiast nadawania pełnych uprawnień, można przyznać użytkownikowi jedynie prawo do odczytu, co ogranicza ryzyko nieautoryzowanych zmian w danych.

Pytanie 28

W JavaScript utworzono obiekt. Jak zmienić wartość właściwości x tego obiektu w dalszej części kodu?

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: function() { … }
}
A. wsp.x = …
B. obiekt1.x = …
C. x = …
D. obiekt1::x = …
W JavaScript dostęp do właściwości obiektów można uzyskać przy pomocy notacji kropkowej lub nawiasowej. Ale użycie tych notacji musi być właściwe, bo w przeciwnym razie mogą się pojawić błędy. Na przykład zapis obiekt1::x = … nie zadziała, bo JavaScript nie rozumie podwójnego dwukropka do dostępu do właściwości. Może się to mylić, bo niektóre inne języki tak robią, ale nie w JavaScript. Kolejna kwestia z wsp.x = … jest taka, że wsp powinien być obiektem z właściwością x, ale w tym przypadku wsp to właściwość obiektu obiekt1, a nie niezależny obiekt. Próba użycia wsp do dostępu do x byłaby błędna. Ostatnia opcja x = … jest poprawna w kontekście zmiennej, ale nie odnosi się do zmiany właściwości x w obiekcie. Taki zapis zmienia tylko wartość zmiennej x, a nie właściwości obiektu. Więc, mimo że inne odpowiedzi mogą wydawać się sensowne w różnych kontekstach, tylko obiekt1.x = … jest właściwym sposobem na modyfikację właściwości obiektu w JavaScript.

Pytanie 29

W pliku konfiguracyjnym serwera Apache httpd.conf linia kodu Listen 120 oznacza

A. czwarty oktet adresu IP serwera.
B. jeden z numerów kodu błędu odpowiedzi HTTP.
C. maksymalną liczbę jednoczesnych połączeń z sieci do serwera.
D. numer portu, na którym nasłuchuje serwer.
Wpis „Listen 120” w pliku httpd.conf informuje serwer Apache, na jakim porcie ma nasłuchiwać przychodzących połączeń TCP. W praktyce oznacza to: jeżeli ktoś wchodzi na serwer, to ich przeglądarka łączy się z adresem IP serwera właśnie na ten numer portu. Standardowo HTTP działa na porcie 80, HTTPS na 443, ale w konfiguracji można ustawić dowolny inny port, np. 8080, 8000 czy właśnie 120. Dzięki dyrektywie Listen Apache „wiąże się” (binduje) z wybranym portem i zaczyna tam czekać na żądania HTTP. To jest podstawowy element konfiguracji warstwy sieciowej serwera WWW. W środowiskach produkcyjnych najczęściej stosuje się Listen 80 i Listen 443, czasem dodatkowe porty dla paneli administracyjnych, środowisk testowych albo aplikacji działających równolegle. Warto też wiedzieć, że można podać razem adres IP i port, np. Listen 192.168.0.10:80, wtedy Apache nasłuchuje tylko na konkretnym interfejsie sieciowym, co jest dobrą praktyką bezpieczeństwa, bo ogranicza ekspozycję usług. W nowoczesnych konfiguracjach często występuje kilka dyrektyw Listen, gdy serwer obsługuje wiele adresów IP lub protokołów. Z mojego doświadczenia porządek w portach i świadome używanie Listen bardzo ułatwia diagnostykę problemów typu „serwer nie odpowiada” czy konflikty z innymi usługami (np. innym serwerem WWW albo kontenerem Docker) działającymi na tej samej maszynie.

Pytanie 30

W CSS zapis w postaci

 h1::first-letter {color: red;} 

spowoduje, że kolor czerwony zostanie zastosowany do

A. pierwszej linii akapitu
B. pierwszej litery nagłówka w drugim stopniu
C. pierwszej litery nagłówka w pierwszym stopniu
D. tekstu nagłówka w pierwszym stopniu
Zapis <span>h1::first-letter {color: red;} </span> jest w porządku, bo korzysta z pseudoelementu :first-letter, który działa na pierwszą literkę w nagłówku h1. To całkiem fajne, bo możemy w ten sposób stylizować tę pierwszą literę i nadać nagłówkom ciekawszy wygląd. Na przykład, jeśli mamy nagłówek h1 z napisem 'Witaj świecie', to dzięki temu kodowi, litera 'W' zrobi się czerwona. W CSS warto ogarnąć, że :first-letter działa tylko na bloki, takie jak nagłówki czy akapity, więc warto to mieć na uwadze, gdy coś stylizujemy. Używanie pseudoelementów to dobre podejście do tworzenia ładnych i funkcjonalnych interfejsów, a przy okazji daje nam większą kontrolę nad tym, jak wyglądają nasze elementy.

Pytanie 31

Którą relację w projekcie bazy danych należy ustalić między tabelami widocznymi na ilustracji zakładając, że każdy klient sklepu internetowego dokona przynajmniej dwóch zamówień?

Ilustracja do pytania
A. 1:1
B. 1:n, gdzie 1 jest po stronie Klienta, a wiele po stronie Zamówienia
C. n:n
D. 1:n, gdzie 1 jest po stronie Zamówienia, a wiele po stronie Klienta
Poprawnie wskazana relacja 1:n (jeden do wielu), gdzie „1” jest po stronie tabeli Klient, a „n” po stronie tabeli Zamówienie, dokładnie odzwierciedla opisany przypadek biznesowy: jeden klient sklepu internetowego może złożyć wiele zamówień, a każde zamówienie należy do jednego, konkretnego klienta. W praktyce projektowania relacyjnych baz danych oznacza to, że w tabeli Zamówienie umieszczamy klucz obcy (np. kolumnę id_klienta), który wskazuje na klucz główny w tabeli Klient (np. id_klienta jako PRIMARY KEY). To jest klasyczny przykład relacji nadrzędny–podrzędny (parent–child). Z mojego doświadczenia w systemach e‑commerce taka struktura jest standardem, bo pozwala łatwo wykonywać typowe kwerendy: wyszukiwanie wszystkich zamówień danego klienta, liczenie wartości zamówień na klienta, analizę historii zakupów. Dodatkowo założenie, że każdy klient dokona co najmniej dwóch zamówień, wpływa na tzw. krotność minimalną po stronie Zamówienia (min 2), ale nie zmienia samego typu relacji – nadal jest to 1:n. W modelu logicznym i fizycznym realizujemy to przez odpowiednie więzy integralności: klucz główny w tabeli Klient i klucz obcy w tabeli Zamówienie z ON DELETE RESTRICT lub CASCADE (w zależności od polityki biznesowej). Taka relacja ułatwia normalizację danych: dane klienta trzymamy w jednym miejscu, unikamy duplikacji w wielu zamówieniach, a w razie zmiany np. adresu e‑mail aktualizujemy tylko jeden rekord. W dobrze zaprojektowanych schematach (np. zgodnych z 3NF) dokładnie tak modeluje się powiązanie Klient–Zamówienie.

Pytanie 32

Kolor Chartreuse przedstawiony w formie heksadecymalnej jako #7FFF00 odpowiada wartości RGB wynoszącej

A. rgb(128, 255, 0)
B. rgb(192, 255, 0)
C. rgb(127, 255, 0)
D. rgb(64, 255, 0)
Odpowiedź rgb(127, 255, 0) jest poprawna, ponieważ odpowiada wartościom RGB z koloru Chartreuse zapisanego w postaci heksadecymalnej #7FFF00. W systemie heksadecymalnym, pierwsze dwa znaki (7F) odpowiadają wartości czerwonej (R), drugie dwa znaki (FF) wartości zielonej (G), a ostatnie dwa znaki (00) wartości niebieskiej (B). Przekształcając te wartości na system dziesiętny, 7F w heksadecymalnym to 127 w dziesiętnym, FF to 255, a 00 to 0. Użycie tego koloru w projektach graficznych, web designie czy w aplikacjach mobilnych jest szerokie, zwłaszcza w kontekście tworzenia interfejsów użytkownika, gdzie Chartreuse może być wykorzystany jako kolor akcentujący, przyciągający uwagę. Dobrą praktyką jest stosowanie kolorów o wysokim kontraście dla elementów interaktywnych, co sprawia, że korzystanie z tak żywego koloru jak Chartreuse może poprawić użyteczność oraz estetykę projektu. Warto również zaznaczyć, że znajomość konwersji kolorów między różnymi modelami (HEXA, RGB, CMYK) jest kluczowa dla każdego projektanta wizualnego, z uwagi na różne zastosowania w druku i w mediach cyfrowych.

Pytanie 33

W języku PHP znajduje się poniższa instrukcja pętli. Ile iteracji wykona ta pętla, zakładając, że zmienna kontrolna nie jest zmieniana w jej wnętrzu i nie zastosowano instrukcji przerywającej pętlę typu break?

for ($i = 10; $i <= 100; $i += 10)
A. 100 iteracji
B. 11 iteracji
C. 10 iteracji
D. 9 iteracji
Podana pętla w języku PHP jest zdefiniowana jako: for ($i = 10; $i <= 100; $i += 10). W tym przypadku, zmienna sterująca $i jest inicjalizowana na wartość 10 i jest inkrementowana o 10 w każdej iteracji, aż osiągnie wartość 100 włącznie. Zatem, możliwe wartości zmiennej $i podczas powtórzeń pętli będą: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100. W sumie daje to 10 powtórzeń, ponieważ pętla wykonuje się także dla wartości 100. W praktyce, znajomość struktur pętli w PHP jest kluczowa, szczególnie podczas przetwarzania dużych zbiorów danych, gdzie efektywność i precyzyjne kontrolowanie liczby iteracji mogą znacznie wpłynąć na wydajność skryptów. Przy implementacji pętli, warto również pamiętać o standardach czystości kodu oraz zasadach DRY (Don't Repeat Yourself), co pozwala na utrzymanie czytelności i ułatwia przyszłe modyfikacje kodu.

Pytanie 34

Co można powiedzieć o przedstawionym zapisie języka HTML5?

<title>Strona o psach</title>
A. Pojawi się na karcie dokumentu w przeglądarce.
B. Jest jedynie informacją dla robotów wyszukiwarek i nie jest wyświetlany przez przeglądarkę.
C. Zostanie wyświetlony w treści strony, na samej górze.
D. Jest opcjonalny w języku HTML5 i nie musi występować w dokumencie.
Niektóre z proponowanych odpowiedzi zawierają nieprawidłowe informacje na temat znacznika tytułu w języku HTML 5. Pierwsza błędna koncepcja, która pojawiła się, to twierdzenie, że znacznik tytułu jest zapisywany w treści strony, na samej górze. Nie jest to prawda, tytuł jest wyświetlany na karcie przeglądarki, a nie na stronie. Kolejne nieprawidłowe twierdzenie to, że znacznik tytułu jest jedynie informacją dla robotów wyszukiwarek i nie jest wyświetlany przez przeglądarkę. Choć roboty wyszukiwarek korzystają z tytułów stron w celu indeksowania, tytuły są również wyświetlane użytkownikom na kartach przeglądarek. Ostatnia nieprawidłowa odpowiedź sugeruje, że znacznik tytułu jest opcjonalny dla języka HTML 5 i nie musi wystąpić w dokumencie. Jest to błędne, ponieważ każda strona powinna mieć tytuł dla lepszej identyfikacji i optymalizacji SEO. Omitowanie tytułu może prowadzić do problemów z indeksacją strony przez wyszukiwarki.

Pytanie 35

Zgodnie z zasadami ACID, które odnoszą się do realizacji transakcji, wymóg trwałości (ang. durability) oznacza, że

A. w trakcie wykonywania transakcji dane mogą być zmieniane przez inne transakcje
B. w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi
C. transakcja może w pewnych okolicznościach być podzielona na dwa niezależne etapy
D. dane zatwierdzone przez transakcję powinny być dostępne niezależnie od wydarzeń, które nastąpią po jej zakończeniu
Wybranie odpowiedzi, że w przypadku naruszenia spójności bazy danych transakcja usuwa tabele z kluczami obcymi, nie jest zbyt mądre. Usuwanie tabel mogłoby naprawdę zaszkodzić strukturze danych i doprowadzić do poważnych problemów. Spójność baz danych to jeden z elementów ACID, ale to nie znaczy, że w razie kłopotów można po prostu rzucać się na tabele. W kontekście trwałości (durability) warto unikać działań, które mogą skutkować utratą danych. Zauważyłem też, że druga opcja sugeruje, że dane mogą być zmieniane przez inne transakcje w trakcie trwania jednej. To jest naruszenie zasady izolacji, która mówi, że każda transakcja powinna działać niezależnie. Zmiany równocześnie mogą prowadzić do chaosu, a zasady ACID starają się temu zapobiegać. Co do podziału transakcji na dwa etapy, to też jest niezgodne z zasadami ACID, zwłaszcza w kontekście trwałości i izolacji. Takie coś może tylko skomplikować sprawę i doprowadzić do niespójności. Dlatego, żeby dobrze zarządzać transakcjami w bazach danych, trzeba naprawdę zrozumieć zasady ACID i wdrażać strategie, które pomogą unikać błędów i zapewnić porządek.

Pytanie 36

W kodzie CSS użyto stylizacji dla elementu listy, a żadne inne reguły CSS nie zostały ustalone. To zastosowane formatowanie spowoduje, że

Ilustracja do pytania
A. tekst wszystkich elementów, którym nadano id „hover”, będzie w kolorze Maroon
B. kolor Maroon obejmie co drugi element listy
C. po najechaniu myszką na element listy, kolor tekstu zmieni się na Maroon
D. tekst wszystkich elementów listy będzie miał kolor Maroon
W przypadku innych odpowiedzi występuje pewne nieporozumienie dotyczące zasad działania selektorów CSS. Pierwsza odpowiedź sugeruje, że wszystkie elementy z przypisanym id hover zmienią kolor, co jest nieprawidłowe, ponieważ w podanym kodzie nie ma odwołania do id, ale do pseudoklasy :hover. Przypisywanie stylów z użyciem id wymagałoby użycia selektora z hashtagiem, jak na przykład #hover. Kolejna koncepcja sugeruje, że wszystkie elementy listy będą miały kolor maroon. Aby to było prawdziwe, deklaracja CSS musiałaby dotyczyć selektora li bez pseudoklasy :hover. Innymi słowy, aby wszystkie elementy listy były stale w kolorze maroon, kod powinien wyglądać jak li { color: maroon; }. Ostatnia opcja zakłada, że co drugi element listy zmieni kolor. Do takiego działania niezbędne byłoby użycie selektora nth-child w połączeniu z :hover i odpowiednim stylem, na przykład li:nth-child(even):hover { color: maroon; }, co nie jest obecne w dostarczonym kodzie. W związku z tym, prawidłowe zrozumienie funkcji pseudoklas i selektorów CSS jest kluczowe do właściwego interpretowania kodu stylów i unikania typowych błędów w zastosowaniach praktycznych. Dlatego ważne jest, by projektanci stron internetowych dobrze rozumieli różne aspekty CSS, aby efektywnie wykorzystywać możliwości, jakie oferuje ten język stylów, jednocześnie dążąc do osiągnięcia optymalnej funkcjonalności i estetyki w projektach webowych. Poprawne stosowanie selektorów umożliwia tworzenie intuicyjnych i responsywnych interfejsów użytkownika, co stanowi jedno z głównych celów nowoczesnego web designu. Rozumienie tych zasad minimalizuje także ryzyko błędów i nieporozumień w zespole projektowym, przyczyniając się do lepszej współpracy i realizacji projektów.

Pytanie 37

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: right; }
B. nav { float: left; } aside { float: left; }
C. aside {float: left; }
D. nav { float: right; } section { float: right; }
W tym zadaniu kluczowe jest zrozumienie, jak naprawdę działa float, a nie tylko samo skojarzenie, że „left to lewo, right to prawo”. Wiele osób myśli, że wystarczy ustawić jeden element na lewo, drugi na prawo i wszystko magicznie się poukłada. W praktyce przeglądarka trzyma się bardzo konkretnych reguł: najpierw liczy kolejność elementów w HTML, potem dopiero stosuje float i układa je możliwie jak najwyżej i jak najbliżej odpowiedniej krawędzi.

Jeśli nada się float tylko dla aside albo tylko dla nav, to zmienia się ich pozycja, ale układ trzech bloków nie spełni warunku z zadania: aside i nav nie zamienią się miejscami z pozostawieniem section w środku. Przykładowo, samo float: left na aside niczego nie „zamieni”, bo element i tak pojawia się jako pierwszy w kodzie, więc będzie u góry, tylko że „przyklejony” do lewej. Z kolei ustawienie nav na prawą stronę bez odpowiedniego floatowania section prowadzi do sytuacji, gdzie section nadal zachowuje się jak normalny blok, zwykle ląduje pod elementami pływającymi albo obok nich w sposób mało przewidywalny dla początkującego.

Częsty błąd myślowy polega też na tym, że ktoś próbuje wszystkim elementom dać float: left, licząc na to, że przeglądarka „ułoży je po swojemu”. Wtedy jednak wszystkie te bloki ustawiają się w jednym kierunku, w kolejności z HTML, więc nie ma mowy o świadomym „zamienianiu miejsc”. Brak zrozumienia, że float wyjmuje element z normalnego przepływu i wpływa na to, jak kolejne elementy zawijają się wokół niego, prowadzi właśnie do takich błędnych odpowiedzi. Z mojego doświadczenia lepiej jest najpierw narysować sobie prosty schemat: w jakiej kolejności idą znaczniki i które z nich mają pływać w prawo, a które zostać w naturalnym układzie. Dopiero wtedy dobiera się konkretne deklaracje CSS. Takie myślenie przydaje się nie tylko przy float, ale też przy nauce flexboxa czy grida, gdzie kolejność w DOM i własności układu też grają ogromną rolę.

Pytanie 38

Metoda i zmienna są widoczne tylko dla innych metod tej samej klasy. Który modyfikator dostępu odpowiada temu opisowi?

A.
private
B.
static
C.
public
D.
protected
Gdy metoda i zmienna mają być widoczne wyłącznie dla innych metod TEJ SAMEJ klasy, używa się modyfikatora private. Ukrywa on składowe przed kodem spoza klasy, wymuszając dostęp przez publiczny interfejs (np. metody „get/set”). Zapamiętaj: private = składowa zamknięta w obrębie własnej klasy.

Pytanie 39

Uprawnienia obiektowe nadawane użytkownikom bazy danych mogą zezwalać lub zabraniać:

A. wykonywania instrukcji typu tworzenie kopii zapasowej
B. dziedziczenia uprawnień
C. wykonywania operacji na danych, np. wstawiania lub modyfikowania
D. zmiany ról i kont użytkowników
Uprawnienia OBIEKTOWE odnoszą się do operacji na danych w konkretnych obiektach (np. tabelach) - pozwalają lub zabraniają m.in. SELECT, INSERT, UPDATE czy DELETE. Dlatego dotyczą wykonywania operacji na danych, jak wstawianie czy modyfikowanie.

Pytanie 40

SELECT miasto, AVG(pensja) FROM pracownicy GROUP BY miasto;
Podane zapytanie wybierze:
A. nazwy miast z powtórzeniami oraz średnią pensję dla każdego z nich.
B. nazwy miast z powtórzeniami oraz sumę pensji dla każdego z nich.
C. nazwy miast bez powtórzeń oraz sumę pensji dla każdego z nich.
D. nazwy miast bez powtórzeń oraz średnią pensję dla każdego z nich.
Zapytanie z klauzulą GROUP BY i funkcją AVG bywa mylone z sumowaniem danych lub zwykłym wybieraniem rekordów jeden po drugim. W tym konkretnym przypadku bardzo łatwo pomylić średnią z sumą albo nie zauważyć, że grupowanie usuwa powtórzenia wartości w kolumnie grupującej. Warto to uporządkować. Funkcja AVG(pensja) jest klasyczną funkcją agregującą, której zadaniem jest obliczenie średniej arytmetycznej z wartości w danej grupie rekordów. Nie dodaje ona wszystkich pensji „na kupę” tak jak SUM, tylko dzieli ich sumę przez liczbę rekordów w grupie. Jeżeli ktoś spodziewa się sumy, to patrzy bardziej w stronę SUM(pensja), a nie AVG(pensja). To jest typowy błąd: widzimy funkcję agregującą i automatycznie myślimy „to pewnie suma”, bez dokładnego przeczytania nazwy funkcji. Druga kwestia to powtórzenia miast. Klauzula GROUP BY miasto mówi silnikowi bazy danych: pogrupuj wszystkie wiersze według wartości w kolumnie miasto. W efekcie wszystkie rekordy z tym samym miastem są łączone w jedną grupę. Dla każdej takiej grupy zwracany jest dokładnie jeden wiersz wyniku. To oznacza, że w rezultacie zapytania nie ma powtórzonych nazw miast, nawet jeśli w tabeli jest tysiąc pracowników z Warszawy czy Krakowa. Częsty błąd myślowy polega na przenoszeniu intuicji z prostego SELECT bez GROUP BY, gdzie miasto faktycznie się powtarza, na zapytanie z agregacją, gdzie logika jest już inna. W odpowiedziach, które sugerują „z powtórzeniami”, ignorowane jest działanie GROUP BY. Z kolei odpowiedzi mówiące o „sumie pensji” mylą AVG z SUM, co w praktyce może prowadzić do bardzo poważnych błędów analitycznych – wyobraź sobie raport płacowy, w którym zamiast średniej ktoś pokaże sumę wynagrodzeń i na tej podstawie będzie porównywał miasta. Moim zdaniem dobrą praktyką jest zawsze czytanie zapytania fragment po fragmencie: najpierw jakie kolumny są wybierane, potem jakie funkcje agregujące są użyte, a na końcu po czym następuje grupowanie. Taka metoda pozwala uniknąć właśnie takich nieporozumień i lepiej rozumieć, co dokładnie zwróci baza danych, co jest kluczowe przy pracy z realnymi systemami produkcyjnymi.