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: 27 kwietnia 2026 21:29
  • Data zakończenia: 27 kwietnia 2026 21:33

Egzamin zdany!

Wynik: 24/40 punktów (60,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

Utworzono bazę danych z tabelą mieszkańcy, która zawiera pola: nazwisko, imię oraz miasto. Następnie przygotowano poniższe zapytanie do bazy:
SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' UNION ALL SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Kraków';
Wskaż zapytanie, które zwróci takie same dane.

A. SELECT nazwisko, imie FROM mieszkańcy AS 'Poznań' OR 'Kraków';
B. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' OR miasto='Kraków';
C. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto HAVING 'Poznań' OR 'Kraków';
D. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto BETWEEN 'Poznań' OR 'Kraków';
Wybór odpowiedzi SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' OR miasto='Kraków' jest prawidłowy, ponieważ wykorzystuje operator logiczny OR, który umożliwia filtrowanie danych z tabeli mieszkańcy na podstawie wartości w polu miasto. To zapytanie zwraca wszystkich mieszkańców, którzy są z Poznania lub Krakowa, co odpowiada wymaganiom postawionym w pytaniu. Warto zauważyć, że taka konstrukcja jest efektywna, ponieważ nie używa złożonych zapytań ani nie tworzy zbiorów, które następnie muszą być łączone. Operator OR jest powszechnie stosowany w SQL do łączenia wielu warunków, co czyni go łatwym w użyciu. Dodatkowo, zgodnie z dobrymi praktykami baz danych, unikanie zbędnych operacji, jak UNION, gdy wystarczy proste OR, zwiększa wydajność i czytelność zapytań. Przykładowe zastosowanie tego zapytania może mieć miejsce w aplikacjach, które potrzebują zidentyfikować użytkowników z konkretnego regionu, co jest istotne w przypadku personalizacji treści lub promocji regionalnych.

Pytanie 2

W utworzonej tabeli pole należące do typu BLOB służy do składowania

A. danych binarnych o dużych rozmiarach, takich jak grafika
B. liczb całkowitych, które przekraczają zakres typu INT
C. łańcuchów znaków o nieokreślonej długości
D. danych logicznych takich jak true
Pole typu BLOB (Binary Large Object) jest przeznaczone do przechowywania danych binarnych dużych rozmiarów, co czyni je idealnym do przechowywania plików multimedialnych, takich jak obrazy, wideo lub dźwięki. W bazach danych, BLOB jest używane, gdy dane są zbyt duże, aby mogły być przechowywane w standardowych typach danych, takich jak VARCHAR czy INT. Przykładem zastosowania BLOB może być strona internetowa, która pozwala użytkownikom na przesyłanie zdjęć profilowych. W takim przypadku, zdjęcia są przechowywane w kolumnie typu BLOB w bazie danych, co pozwala na efektywne zarządzanie dużymi plikami binarnymi. Zastosowanie standardów takich jak SQL przy projektowaniu baz danych zapewnia optymalizację przechowywania danych, a użycie BLOB jako typu danych dla dużych plików jest zgodne z najlepszymi praktykami w tej dziedzinie.

Pytanie 3

Jakiego typu mechanizm zabezpieczeń aplikacji jest zawarty w środowisku uruchomieniowym platformy .NET Framework?

A. Mechanizm uruchamiania aplikacji zrealizowany przez frameworki aplikacji webowych (ASP.NET)
B. Mechanizm uruchamiania aplikacji dla bibliotek klas
C. Mechanizm uruchamiania aplikacji realizowany przez funkcję Windows API (Application Programming Interface)
D. Mechanizm uruchamiania aplikacji oparty na uprawnieniach kodu (CAS - Code Access Security) i na rolach (RBS - Role-Based Security)
Mechanizm wykonywania aplikacji oparty na uprawnieniach kodu (CAS - Code Access Security) oraz na rolach (RBS - Role-Based Security) jest kluczowym elementem platformy .NET Framework, który zapewnia odpowiedni poziom bezpieczeństwa dla aplikacji. CAS umożliwia definiowanie poziomów uprawnień dla różnych komponentów kodu, co pozwala na kontrolę, jakie operacje mogą być wykonywane przez dany kod w zależności od jego pochodzenia oraz kontekstu. Na przykład, aplikacja uruchomiona z lokalnego dysku może mieć inne uprawnienia niż ta sama aplikacja uruchomiona z internetu. RBS z kolei umożliwia przypisywanie ról użytkownikom, co pozwala na dalsze graniczenie dostępu do funkcji aplikacji w oparciu o przypisane role. Takie podejście nie tylko zabezpiecza aplikacje przed nieautoryzowanym dostępem, ale także wspiera środowiska wieloużytkownikowe, gdzie różne osoby mogą potrzebować różnych poziomów dostępu. Przykładowo, w aplikacji webowej mogą istnieć role administratora, edytora i widza, gdzie każdy z użytkowników ma różne możliwości interakcji z systemem. Zastosowanie CAS i RBS jest zgodne z najlepszymi praktykami w zakresie zabezpieczeń kodu, co jest istotne w kontekście rosnących zagrożeń w dzisiejszym świecie cyfrowym.

Pytanie 4

Aby wykonać usunięcie tabeli, należy użyć kwerendy

A. UNIQUE
B. DROP TABLE
C. DELETE
D. TRUNCATE TABLE
Poprawna odpowiedź to DROP TABLE, ponieważ jest to standardowa komenda SQL używana do całkowitego usunięcia tabeli z bazy danych. Użycie tej komendy powoduje nie tylko usunięcie samej struktury tabeli, ale również wszystkich danych, które były w niej przechowywane. Przykładowo, jeśli mamy tabelę 'Użytkownicy' i chcemy ją usunąć, piszemy: DROP TABLE Użytkownicy; Należy jednak pamiętać, że po wykonaniu tej operacji nie można odzyskać ani tabeli, ani jej danych, dlatego ważne jest, aby przed takim krokiem wykonać odpowiednie kopie zapasowe lub upewnić się, że dane są już zbędne. W kontekście dobrych praktyk, przed usunięciem tabeli warto przeanalizować wpływ na inne obiekty bazy danych, takie jak klucze obce, które mogą być związane z usuwaną tabelą. Istotne jest również zrozumienie, że DROP TABLE nie można użyć, jeśli w tabeli istnieją aktywne ograniczenia lub jeśli jest ona częścią jakiejś transakcji. W takiej sytuacji, czynności te należy zrealizować w odpowiedniej kolejności, aby uniknąć błędów.

Pytanie 5

Który ze sposobów komentowania kodu nie jest stosowany w kodzie jako komentarz PHP?

A. # komentarz
B. <!-- komentarz -->
C. /* komentarz */
D. // komentarz
Poprawnie wskazano, że zapis <!-- komentarz --> nie jest komentarzem PHP, tylko komentarzem HTML. To jest bardzo ważne rozróżnienie: komentarze PHP muszą być interpretowane przez interpreter PHP, więc używa się składni typowej dla języków z rodziny C. W PHP mamy trzy podstawowe sposoby komentowania kodu: znak # na początku linii, podwójny ukośnik // oraz komentarze blokowe /* ... */. Wszystkie te formy działają tylko wewnątrz bloku PHP, czyli między znacznikami <?php i ?>. Przykład poprawnych komentarzy PHP:<?php # komentarz jednolinijkowy // inny komentarz jednolinijkowy /* komentarz wielolinijkowy */ echo "Hello"; // komentarz obok instrukcji ?>Natomiast <!-- komentarz --> to komentarz HTML, który jest widoczny po stronie przeglądarki jako element kodu źródłowego HTML, ale kompletnie ignorowany przez interpreter PHP. Jeśli wstawisz coś takiego wewnątrz bloku PHP, po prostu dostaniesz błąd składni. Moim zdaniem warto zapamiętać prostą zasadę: komentarze PHP używają #, // lub /* */, a komentarze HTML używają <!-- -->. W praktyce często łączy się oba typy w jednym pliku: w sekcji PHP komentujemy kod logiki serwera, a w sekcji HTML komentujemy strukturę widoku. Dobrą praktyką jest stosowanie // do krótkich, jednowierszowych komentarzy przy instrukcjach oraz /* ... */ do dłuższych opisów funkcji, klas czy bardziej skomplikowanych fragmentów logiki. W dokumentacji PHP (php.net) wszystkie przykłady konsekwentnie używają właśnie tych trzech form, więc warto się tego trzymać, żeby kod był czytelny też dla innych programistów.

Pytanie 6

W zaprezentowanej klasie zdefiniowane zostały

class a {
    public $b;
    public $c;
    public function d() {}
}
A. jedna właściwość
B. dwie właściwości
C. dwie metody
D. dwa obiekty
W przedstawionej klasie w języku PHP zdefiniowano dwie właściwości publiczne: $b oraz $c. Właściwości te są zmiennymi, które mogą przechowywać dane różnego typu i są dostępne z poziomu innych obiektów lub kodu poza klasą dzięki modyfikatorowi dostępu public. W praktyce, właściwości klasy są wykorzystywane do przechowywania stanu obiektu czyli wartości specyficznych dla instancji tej klasy. Należy pamiętać o dobrych praktykach w programowaniu obiektowym, takich jak stosowanie odpowiednich modyfikatorów dostępu (public, private, protected) w celu lepszej enkapsulacji danych oraz korzystanie z metod dostępowych (getterów i setterów) w celu kontroli dostępu i modyfikacji właściwości. Właściwości te mogłyby być użyte na przykład do przechowywania danych użytkownika, takich jak imię i nazwisko, w klasach modelujących obiekty w aplikacjach typu MVC. Zastosowanie właściwości jako mechanizmu przechowywania stanu obiektu jest kluczowym elementem programowania obiektowego i poprawnego projektowania klas.

Pytanie 7

Jaką kwerendę w bazie MariaDB należy zastosować, aby wybrać artykuły z cenami mieszczącymi się w zakresie obustronnie domkniętym <10, 20>?

A. SELECT * FROM Artykuly WHERE Cena LIKE 1%, 2%
B. SELECT * FROM Artykuly WHERE Cena > 10 AND Cena < 20
C. SELECT * FROM Artykuly WHERE Cena BETWEEN 10 AND 20
D. SELECT * FROM Artykuly WHERE Cena IN (10, 20)
Odpowiedź ta jest prawidłowa, ponieważ wykorzystuje operator BETWEEN, który jest idealnym narzędziem do określenia przedziału wartości w bazie danych. W przypadku tego zapytania, operator BETWEEN obejmuje wszystkie wartości z przedziału obustronnie domkniętego od 10 do 20, co oznacza, że zostaną uwzględnione zarówno wartości 10 jak i 20. Tego typu zapytanie jest niezwykle przydatne w praktyce, gdy chcemy szybko wyselekcjonować dane spełniające określone kryteria. Wartością dodaną stosowania BETWEEN jest oszczędność czasu i zwiększenie czytelności zapytań, co jest zgodne z zasadami dobrych praktyk w programowaniu SQL. Przykładem zastosowania może być sytuacja, gdy w firmie potrzebujemy analizować sprzedaż produktów w określonym przedziale cenowym, aby ocenić efektywność promocji. Dzięki temu rozwiązaniu możemy szybko i efektywnie uzyskać potrzebne dane, co ułatwia podejmowanie decyzji biznesowych.

Pytanie 8

Użytkownik podał adres nieistniejącego obiektu na serwerze. Próba nawiązania połączenia spowoduje wystąpienie błędu

A. 400
B. 500
C. 404
D. 503
Odpowiedź 404 jest poprawna, ponieważ oznacza, że serwer nie może znaleźć zasobu, którego żąda klient. W praktyce, gdy użytkownik próbuje uzyskać dostęp do nieistniejącej strony internetowej lub pliku, serwer zwraca kod błędu 404, co sygnalizuje, że dany adres URL jest nieprawidłowy. Jest to standardowy kod odpowiedzi HTTP, który jest powszechnie wykorzystywany w branży internetowej. Dobre praktyki wskazują, że strony 404 powinny być przyjazne użytkownikowi, na przykład poprzez sugerowanie alternatywnych linków lub przycisków do powrotu na stronę główną. Zrozumienie tego błędu jest istotne dla webmasterów oraz deweloperów, którzy pracują nad utrzymaniem strony, ponieważ błędy 404 mogą wpłynąć na doświadczenie użytkownika oraz pozycjonowanie strony w wyszukiwarkach. Regularne monitorowanie i poprawa linków na stronie jest kluczowym aspektem optymalizacji SEO oraz zarządzania treścią.

Pytanie 9

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. element tablicy o wartości $tab[0]
B. największy element tablicy
C. najmniejszy element tablicy
D. elementy, które przewyższają zmienną $liczba
Program w tym pytaniu ilustruje proces wyszukiwania największego elementu w tablicy za pomocą pętli foreach. Na początku zmienna $liczba jest inicjalizowana pierwszym elementem tablicy $tab. Następnie program iteruje przez wszystkie elementy tablicy i porównuje każdy z nich z aktualną wartością $liczba. Jeśli bieżący element jest większy niż $liczba, to wartość $liczba jest aktualizowana do tej większej wartości. Dzięki tej logice na końcu pętli $liczba przechowuje największy element z tablicy. Jest to zgodne z powszechnie stosowanym wzorcem projektowym polegającym na iteracyjnej aktualizacji zmiennej przechowującej ekstremalną wartość, w tym przypadku maksymalną. Taka metoda jest skuteczna i efektywna, ponieważ przeszukuje całą tablicę tylko raz, co jest operacją o złożoności czasowej O(n), gdzie n to liczba elementów w tablicy. Podejście to jest stosowane nie tylko w programach edukacyjnych, ale również w rzeczywistych projektach programistycznych, gdzie optymalne przetwarzanie danych jest kluczowe. Dobrą praktyką jest inicjalizacja zmiennej kontrolnej wartością pierwszego elementu tablicy, co unika niepotrzebnego porównywania z nieistotnymi wartościami, np. minus nieskończonością, i jest zgodne z zasadą KISS (Keep It Simple, Stupid).

Pytanie 10

Jakiego ograniczenia (constraint) używa się do zdefiniowania klucza obcego?

A. AUTO_INCREMENT(ID)
B. PRIMARY KEY(ID)
C. UNIQUE KEY(ID)
D. FOREIGN KEY(ID)
Odpowiedź 'FOREIGN KEY(ID)' jest poprawna, ponieważ klucz obcy służy do definiowania relacji między tabelami w bazach danych. Klucz obcy to atrybut lub zestaw atrybutów w jednej tabeli, który odnosi się do klucza głównego innej tabeli. Przykładowo, w bazie danych, która obsługuje system zarządzania zamówieniami, tabela 'Zamówienia' może zawierać kolumnę 'KlientID', będącą kluczem obcym odnoszącym się do kolumny 'ID' w tabeli 'Klienci'. Użycie kluczy obcych pozwala na zapewnienie integralności referencyjnej, co oznacza, że każdy wpis w tabeli 'Zamówienia' musi odpowiadać istniejącemu klientowi w tabeli 'Klienci'. Dobrym praktykom w projektowaniu baz danych jest stosowanie kluczy obcych jako sposobu na unikanie niezgodności danych oraz na umożliwienie wykonywania zapytań z wykorzystaniem JOIN, co ułatwia uzyskiwanie skonsolidowanych informacji z różnych tabel. Ponadto, w przypadku usunięcia lub aktualizacji rekordów w tabeli źródłowej, można skonfigurować odpowiednie zasady, takie jak 'CASCADE', które automatycznie zaktualizują powiązane dane w tabeli docelowej, co jest istotne dla zachowania spójności danych.

Pytanie 11

Jakie zadania programistyczne należy realizować po stronie serwera?

A. Zmiana stylu HTML na stronie spowodowana ruchem kursora
B. Walidacja danych wpisanych w pole tekstowe w czasie rzeczywistym
C. Ukrywanie oraz odkrywanie elementów strony w zależności od bieżącej pozycji kursora
D. Zapisanie danych pobranych z aplikacji internetowej do bazy danych
Zapis danych z aplikacji internetowej w bazie to super ważna sprawa. Ogólnie mówiąc, to serwer się tym zajmuje. To on trzyma i zarządza informacjami, które wysyłamy, jak się rejestrujemy czy wypełniamy jakieś formularze. Kiedy użytkownik coś wpisuje, te dane muszą lecieć do serwera, gdzie są przetwarzane i lądować w bazie danych. Przykładowo, w relacyjnych bazach danych, jak MySQL czy PostgreSQL, używa się zapytań SQL do zarządzania tymi danymi, co ułatwia ich późniejsze szukanie. Warto też pamiętać o bezpieczeństwie – serwer musi robić walidację danych, żeby nie dać się nabrać na ataki typu SQL Injection. No i architektura MVC świetnie pokazuje, jak ważne jest miejsce serwera dla danych. Zapis danych to po prostu kluczowy element w działaniu aplikacji webowych.

Pytanie 12

Funkcja agregująca MIN w SQL ma na celu obliczenie

A. średniej wartości różnych pól w rekordzie zwróconym przez zapytanie
B. wartości najmniejszej w kolumnie wynikowej kwerendy
C. liczby wierszy, które zostały zwrócone przez kwerendę
D. długości tekstu w rekordach zwróconych przez kwerendę
W odpowiedziach, które nie zostały wybrane, pojawia się szereg błędnych interpretacji dotyczących funkcji agregującej MIN. Wartość długości znaków w rekordach nie ma bezpośredniego związku z funkcją MIN. Funkcje takie jak LENGTH mogą być używane do obliczania długości ciągów znakowych, lecz nie są one związane z MIN, który skupia się na wartościach liczbowych. Liczba wierszy zwróconych przez kwerendę odnosi się do użycia funkcji COUNT, a nie MIN. Liczenie rekordów jest inną operacją, która służy do zliczania wszystkich wierszy spełniających określone kryteria. Z kolei średnia wartości różnych pól rekordu, uzyskiwana przy użyciu funkcji AVG, również jest odmienną operacją, która nie ma związku z działaniem MIN. Te pomyłki mogą wynikać z nieporozumienia dotyczącego podstawowych funkcji agregujących w SQL, które są kluczowe w analizie danych. Każda z tych funkcji ma swoje specyficzne zastosowania i zrozumienie ich różnic jest fundamentalne dla efektywnej pracy z bazami danych. Niezrozumienie, co dokładnie robi funkcja MIN, może prowadzić do błędnych wniosków w analizach oraz do niepoprawnych zapytań w projektach bazodanowych.

Pytanie 13

Debugger to aplikacja przeznaczona do

A. analizowania właściwości oprogramowania
B. identyfikacji błędów w kodzie aplikacji
C. optymalizacji pamięci używanej przez program
D. weryfikacji wydajności programu
Debugger to narzędzie, które odgrywa kluczową rolę w procesie tworzenia oprogramowania, ponieważ umożliwia programistom identyfikowanie i naprawianie błędów w kodzie. Jego główną funkcją jest wyszukiwanie błędów, znanych jako 'bugi', które mogą prowadzić do nieprawidłowego działania aplikacji. Debugger pozwala na analizowanie krok po kroku działania programu, umożliwiając obserwację wartości zmiennych oraz stanu programu w czasie rzeczywistym. Przykładowo, w przypadku, gdy program nie zwraca oczekiwanych wyników, programista może użyć debugggera, aby zatrzymać wykonanie na określonym etapie i zbadać, co dzieje się z danymi. Dobre praktyki w programowaniu zalecają regularne korzystanie z debugggera, zwłaszcza podczas testowania nowych funkcji lub poprawek, ponieważ pozwala to na szybsze zidentyfikowanie problemów i ich rozwiązanie, co w efekcie przyspiesza proces rozwoju oprogramowania i zwiększa jego jakość.

Pytanie 14

W języku skryptowym JavaScript operatory: || oraz && należą do grupy operatorów

A. arytmetycznych.
B. bitowych.
C. przypisania.
D. logicznych.
Operatory || oraz && w JavaScript wielu osobom mylą się z innymi grupami operatorów, bo wizualnie przypominają różne zapisy z innych języków i z niższych poziomów programowania. Warto to sobie dobrze poukładać, bo odróżnianie operatorów logicznych, bitowych, arytmetycznych i przypisania to absolutna podstawa przy pisaniu czytelnego kodu. Wariant bitowy w JavaScript to pojedyncze symbole: | oraz &. One działają na poziomie bitów liczby całkowitej, wykonując operacje OR i AND na poszczególnych bitach. || oraz && to zupełnie inna bajka – nie grzebią w bitach, tylko pracują na logice programu, na warunkach i przepływie sterowania. Typowy błąd myślowy polega na tym, że ktoś zna z elektroniki „AND” i „OR” na bramkach logicznych i wrzuca wszystko do jednego worka z „bitami”. W JavaScript trzeba jednak rozróżniać: podwójne znaki to logika, pojedyncze to operacje bitowe. Mylenie tych dwóch typów operatorów może prowadzić do bardzo dziwnych wyników, szczególnie gdy nagle zaczynamy dostawać liczby zamiast oczekiwanych wartości logicznych. Innym źródłem pomyłek jest utożsamianie || i && z operatorami przypisania. Operator przypisania to w czystej postaci =, a jego rozszerzenia to np. +=, -=, *=, /=, ale również |= czy &=, które łączą przypisanie z operacją bitową. Nie istnieje coś takiego jak ||= w sensie standardowego operatora logicznego przypisania w starszym JavaScript (dopiero nowsze wersje wprowadziły logiczne operatory przypisania, ale to nadal nie to samo, co zwykłe || w warunku). Z kolei operatory arytmetyczne, takie jak +, -, *, /, %, służą do obliczeń matematycznych, nie do podejmowania decyzji w kodzie. Oczywiście można ich użyć w warunku, ale nie pełnią funkcji łączenia wyrażeń logicznych. Dobra praktyka jest taka, żeby w warunkach if, while czy for używać właśnie operatorów logicznych do łączenia prostych porównań, a operatory arytmetyczne zostawić do obliczeń. Moim zdaniem, jasne rozróżnienie tych grup operatorów przekłada się na kod, który jest łatwiejszy do utrzymania i mniej podatny na dziwne, trudne do wykrycia błędy.

Pytanie 15

Instrukcja języka PHP tworząca obiekt pkt dla zdefiniowanej w ramce klasy Punkt ma postać

class Punkt {  public $x;
                public $y;  }
A. pkt Punkt;
B. pkt Punkt();
C. Punkt() pkt;
D. pkt = new Punkt();
Twoja odpowiedź jest prawidłowa, gratuluję! W języku PHP, aby utworzyć nowy obiekt klasy, używamy słowa kluczowego 'new', a następnie nazwy klasy. Poprawna instrukcja, która tworzy obiekt 'pkt' klasy 'Punkt', ma więc postać '$pkt = new Punkt();'. Tę konstrukcję używamy, kiedy chcemy utworzyć nową instancję klasy. Warto pamiętać, że można tworzyć wiele obiektów tej samej klasy, a każdy z nich będzie miał własny zestaw danych (właściwości). Instancje klas są podstawą programowania obiektowego, które pozwala na tworzenie bardziej złożonych i łatwiejszych do zarządzania systemów. Dobre zrozumienie tego konceptu jest kluczowe dla efektywnego programowania w PHP.

Pytanie 16

Jakie skutki wywoła poniższy fragment kodu w języku JavaScript? ```n = "Napis1"; s = n.length;```

A. Wyświetli liczbę znaków napisu z zmiennej n
B. Przypisze zmiennej s wartość odpowiadającą długości tekstu w zmiennej n
C. Przypisze wartość zmiennej n do zmiennej s
D. Przypisze zmiennej s część napisu ze zmiennej n o długości określonej przez zmienną length
Odpowiedzi 1, 2 oraz 4 są niepoprawne z różnych powodów, co wskazuje na nieporozumienia w zakresie działania właściwości length w JavaScript. W przypadku pierwszej odpowiedzi, twierdzenie, że zmienna n zostanie przypisana do zmiennej s, jest błędne. Wartości zmiennych są przypisywane, a nie same zmienne. Odpowiedź ta ignoruje fakt, że w kodzie następuje użycie operatora przypisania, co skutkuje przekazaniem wartości długości napisu. W kontekście drugiej odpowiedzi, należy podkreślić, że chociaż skrypt nie wyświetla bezpośrednio długości napisu, to długość jest przypisana do zmiennej s, co jest kluczowe dla dalszego użycia tej wartości. Ostatnia odpowiedź, mówiąca o przypisaniu fragmentu napisu o określonej długości, jest również myląca, ponieważ length dotyczy całkowitej liczby znaków w napisie, a nie jego fragmentu. Programiści często mylą funkcjonalności związane z długością łańcuchów znakowych z metodami, które pozwalają na wyodrębnienie części tekstu, takimi jak substring lub slice. Zrozumienie różnicy między tymi operacjami jest istotne dla efektywnego programowania i pracy z danymi tekstowymi.

Pytanie 17

Które z wymienionych stwierdzeń na temat zasad programowania w PHP jest prawdziwe?

A. W nazwach zmiennych wielkość liter nie ma znaczenia
B. Nazwy zmiennych poprzedza znak !
C. Jest to język z ograniczoną kontrolą typów
D. Zmienna deklarowana jest po słowie var
Wszystkie podane odpowiedzi są błędne z perspektywy zasad programowania w PHP. Pierwsza niepoprawna informacja sugeruje, że nazwy zmiennych w PHP są poprzedzane znakiem '!'. W rzeczywistości, w PHP zmienne zaczynają się od znaku '$', a nie '!'. To kluczowa zasada, która odróżnia zmienne od innych typów danych w języku. Kolejna informacja, która mówi, że deklaracja zmiennych następuje po słowie 'var', również jest mylna. W PHP nie ma takiej potrzeby; zmienne są automatycznie deklarowane w momencie przypisania im wartości, co sprawia, że użycie słowa kluczowego 'var' jest zbędne. Ostatnia błędna odpowiedź dotyczy kwestii rozróżniania wielkości liter w nazwach zmiennych. W PHP, zmienne są rozróżniane pod względem wielkości liter, co oznacza, że '$Zmienna' i '$zmienna' będą traktowane jako dwie różne zmienne. Ta cecha języka wymaga od programistów staranności w nazewnictwie, aby unikać nieporozumień i błędów w kodzie. W związku z tym, zrozumienie poprawnych zasad dotyczących deklaracji zmiennych i ich typów jest kluczowe dla efektywnego programowania w PHP.

Pytanie 18

Warunek zapisany w PHP wyświetli liczbę, jeśli

if ($liczba % 2 == 0)
{
    echo $liczba;
}
A. jest ona liczbą pierwszą
B. wynik dzielenia liczby przez 2 wynosi 0
C. jest ona dodatnia
D. jest ona parzysta
Wybór odpowiedzi błędnych może wynikać z nieprawidłowego rozumienia operatora modulo i jego zastosowania w języku PHP. Operator ten zwraca resztę z dzielenia dwóch liczb więc wynik dzielenia liczby przez 2 nigdy nie może być bezpośrednio równy 0 co oznacza że odpowiedź dotycząca wyniku dzielenia liczby przez 2 jest niewłaściwie zrozumiana. Również koncepcja dodatnich liczb jako kryterium jest niepoprawna w kontekście przedstawionego kodu ponieważ dodatność liczby nie jest sprawdzana przez operator modulo. Liczby pierwsze to te które mają tylko dwa dzielniki: 1 i samą siebie co nie jest związane z warunkiem w kodzie PHP pokazanym w pytaniu. Typowym błędem jest mieszanie pojęć matematycznych i logicznych co może prowadzić do błędnych konkluzji na temat działania konkretnego fragmentu kodu. Aby uniknąć tego typu pomyłek ważne jest zrozumienie jak działają podstawowe operatory w językach programowania i jakie są ich praktyczne zastosowania w kontekście rozwiązywania problemów logicznych w programowaniu. Rozpoznanie właściwego wykorzystania operatorów takich jak modulo pozwala na bardziej precyzyjne formułowanie warunków w kodzie co jest istotne w kontekście efektywnego programowania i utrzymania wysokiej jakości kodu w projektach informatycznych.

Pytanie 19

W bazie danych księgarni znajduje się tabela ksiazki, która zawiera pola: id, idAutor, tytul, ileSprzedanych, oraz tabela autorzy z polami: id, imie, nazwisko. Jak można utworzyć raport sprzedanych książek zawierający tytuły oraz nazwiska autorów?

A. należy zdefiniować relację 1..1 pomiędzy tabelami ksiazki a autorzy, a następnie stworzyć kwerendę łączącą obie tabele
B. konieczne jest stworzenie kwerendy, która wyszukuje tytuły książek
C. trzeba utworzyć dwie oddzielne kwerendy: pierwsza do wyszukiwania tytułów książek, druga do wyszukiwania nazwisk autorów
D. należy zdefiniować relację l..n pomiędzy tabelami ksiazki a autorzy, a następnie stworzyć kwerendę łączącą obie tabele
Jak się przyjrzysz innym odpowiedziom, to zauważysz, że zdefiniowanie relacji 1..1 dla tabel 'ksiazki' i 'autorzy' to trochę nieporozumienie. Takie założenie sugeruje, że każdy autor mógłby napisać tylko jedną książkę, co jest mało prawdopodobne w rzeczywistości. Przecież jeden autor może mieć na swoim koncie wiele tytułów, więc prawidłowa relacja to l..n. Kwerenda, która tylko wyszukuje tytuły książek, nie bierze pod uwagę autorów, co sprawia, że nie dostajemy pełnych informacji o książkach. Dwie osobne kwerendy na tytuły i nazwiska autorów to jakieś nieporozumienie – jest to nieefektywne i nie pozwala na zebranie wyników w jednej, sensownej formie. Często w takich sytuacjach ludzie mylą się, bo nie rozumieją zasad relacyjnych baz danych i nie mają dobrego podejścia do projektowania schematu. To prowadzi później do problemów z zarządzaniem danymi i ich analizą.

Pytanie 20

W dokumencie HTML zdefiniowano listę oraz dodano do niej formatowanie CSS. Który z efektów odpowiada tej definicji?

<ul>
  <li>Foksterier
  <li>Bokser
  <li>Baset
</ul>
li::after {
  content: " - Pies";
  background-color: teal;
  color: white;
}
Efekt 1
  • Foksterier
  • Bokser
  • Baset
Efekt 2
  • Foksterier
  • Bokser
  • Baset
Efekt 3
  • Foksterier
  • Bokser
  • Baset
Efekt 4
  • Foksterier
  • Bokser
  • Baset
A. Efekt 1.
B. Efekt 4.
C. Efekt 2.
D. Efekt 3.
Wybór każdej z niepoprawnych odpowiedzi wskazuje na niezrozumienie jak działają niektóre elementy CSS. 'Efekt 2', 'Efekt 3' i 'Efekt 1' nie pokazują tekstu '- Pies' dodanego za każdym elementem listy, co jest wynikiem zastosowania pseudoelementu ::after w kodzie CSS. Pseudoelementy w CSS są używane do style'owania określonych części elementu, jak na przykład jego początek lub koniec. W tym konkretnym przypadku, pseudoelement ::after dodaje treść do elementu po jego treści, ale zanim nastąpi jego zamknięcie. Jeżeli nie widzisz tego efektu w wybranym przez Ciebie efekcie, prawdopodobnie nie zrozumiałeś poprawnie jak działają pseudoelementy w CSS. Dodatkowo, jeśli wybrana przez Ciebie odpowiedź nie ma tła w kolorze 'teal' i tekstu w kolorze 'white', prawdopodobnie nie zwróciłeś uwagi na szczegółowe style CSS zastosowane do listy w kodzie. Zachęcamy do dalszego studiowania tematu CSS i HTML, aby zrozumieć, jak te dwie technologie współpracują ze sobą przy tworzeniu stron internetowych.

Pytanie 21

Aby poprawić wydajność strony z grafiką o wymiarach 2000 px na 760 px, konieczne jest zmniejszenie jej rozmiarów

A. za pomocą właściwości CSS, podając rozmiar w pikselach
B. w programie graficznym
C. za pomocą właściwości CSS, podając rozmiar w procentach
D. za pomocą atrybutów HTML
Odpowiedź "w programie graficznym" jest prawidłowa, ponieważ zmniejszenie rozmiaru grafiki w sposób, który rzeczywiście wpływa na jej wielkość pliku oraz jakość wizualną, powinno być przeprowadzane w programie graficznym. Programy takie jak Adobe Photoshop, GIMP czy Canva umożliwiają precyzyjne dostosowanie wymiarów oraz kompresję grafiki, co pozwala na optymalizację jej do użytku w internecie. Przykładowo, zmieniając rozmiar grafiki do wymiarów 1000 px na 380 px i zapisując ją w odpowiednim formacie (np. JPEG lub PNG z odpowiednią jakością), można znacznie zmniejszyć wielkość pliku, co przyczyni się do szybszego ładowania strony. Ponadto, odpowiednia kompresja umożliwia zachowanie dobrego balansu między jakością a rozmiarem pliku, co jest istotne dla doświadczeń użytkowników. W branży internetowej stosuje się różne techniki optymalizacji grafiki, takie jak lazy loading czy formaty WebP, które wspierają szybkie ładowanie stron. Warto również zwrócić uwagę na znaczenie odpowiedniej rozdzielczości grafiki, aby uniknąć zniekształceń i zapewnić optymalną jakość wizualną.

Pytanie 22

Który paragraf w przedstawionym kodzie zostanie wyświetlony czcionką o kolorze niebieskim?

<!DOCTYPE html>
<html>
<head>
<style>
div~p { color: blue; }
</style>
</head>
<body>
  <div>
    <p>pierwszy paragraf</p>
      <div>
        <p>drugi paragraf</p>
        <p>trzeci paragraf</p>
      </div>
    <p>czwarty paragraf</p>
  </div>
</body>
</html>
A. Pierwszy.
B. Trzeci.
C. Czwarty.
D. Drugi.
Poprawnie wskazany został czwarty paragraf, bo dokładnie tak działa selektor CSS użyty w tym przykładzie. Zapis `div~p` to tzw. selektor rodzeństwa (general sibling selector). Oznacza on: „wybierz każdy element `<p>`, który jest młodszym rodzeństwem jakiegokolwiek elementu `<div>` i znajduje się z nim na tym samym poziomie drzewa DOM (ma tego samego rodzica)”. Kluczowe są tu dwie rzeczy: ten sam rodzic oraz to, że dany element musi występować w kodzie **po** elemencie `div`. W podanym fragmencie HTML wszystkie paragrafy znajdują się wewnątrz jednego głównego `<div>`. Jednak tylko „czwarty paragraf” jest rodzeństwem zewnętrznego `<div>` i jednocześnie pojawia się po nim jako element `<p>` na tym samym poziomie zagnieżdżenia. „Pierwszy”, „drugi” i „trzeci” paragraf są zagnieżdżone wewnątrz divów, więc nie są rodzeństwem dla tagu `div`, do którego odnosi się selektor. W praktyce selektor `A~B` często stosuje się np. do stylowania elementów formularza i opisów, które pojawiają się po jakimś polu, albo do tworzenia efektów typu: „wszystkie akapity po tym bloku mają inny kolor”. Warto też znać różnicę między `div p` (wszystkie potomne akapity w divie), `div>p` (tylko bezpośrednie dzieci) oraz `div+p` (tylko pierwszy akapit bezpośrednio po divie). To są podstawowe narzędzia przy precyzyjnym stylowaniu struktury HTML zgodnie z dobrymi praktykami CSS i zaleceniami specyfikacji W3C.

Pytanie 23

Jakiego wyniku można się spodziewać po wykonaniu zapytania na przedstawionej tabeli?

SELECTCOUNT(DISTINCT wykonawca)
FROM`muzyka`;
IDtytul_plytywykonawcarok_nagraniaopis
1Czas jak rzekaCzesław Niemen2005Przyjdź W Taka Noc itp.
2IkonaStan Borys2014
3AerolitCzesław Niemen2017Winylowa reedycja płyty "Aerolit"
4JourneyMikołaj Czechowski2013
A. 4
B. 3
C. 0
D. 1
Zapytanie SQL SELECT COUNT(DISTINCT wykonawca) FROM muzyka; służy do zliczenia unikalnych wartości w kolumnie wykonawca w tabeli muzyka. W kontekście dostarczonej tabeli istnieje trzech różnych wykonawców: Czesław Niemen Stan Borys i Mikołaj Czechowski. Funkcja COUNT w połączeniu z DISTINCT pozwala na zliczenie jedynie unikalnych wystąpień wartości co oznacza że pomimo dwukrotnego wystąpienia Czesława Niemena zostanie on policzony tylko raz. Takie podejście jest kluczowe w analizie danych gdzie istotne jest rozważenie jedynie niepowtarzających się wartości na przykład w analizach raportów dotyczących różnorodności portfolio wykonawców w wytwórni muzycznej. Dobre praktyki w SQL zalecają użycie DISTINCT w sytuacjach wymagających precyzyjnego określenia różnorodności danych w kolumnie co nie tylko wspiera dokładność analiz ale również optymalizuje wydajność zapytań poprzez redukcję ilości danych do przetworzenia. Zrozumienie tego mechanizmu jest istotne w zarządzaniu bazami danych oraz w analizach biznesowych.

Pytanie 24

Wskaż prawidłową definicję funkcji w języku JavaScript?

A. nazwa_funkcji(argumenty) {instrukcje;}
B. new nazwa_funkcji(argumenty) {instrukcje;}
C. typ_funkcji nazwa_funkcji(argumenty) {instrukcje;}
D. function nazwa_funkcji(argumenty) {instrukcje;}
Definicja funkcji w języku JavaScript przy użyciu słowa kluczowego 'function' jest standardowym sposobem deklaracji funkcji. Poprawny zapis 'function nazwa_funkcji(argumenty) {instrukcje;}' jasno wskazuje, że tworzona jest nowa funkcja, której nazwa oraz argumenty są zdefiniowane. Przykładowo, można stworzyć funkcję dodającą dwie liczby: 'function dodaj(a, b) { return a + b; }'. Funkcje w JavaScript mogą być wywoływane w dowolnym miejscu w kodzie, co czyni je niezwykle elastycznymi. Dodatkowo, dzięki temu, że JavaScript obsługuje funkcje jako obiekty pierwszej klasy, można je przekazywać jako argumenty do innych funkcji, przypisywać do zmiennych oraz zwracać z innych funkcji. Warto również zauważyć, że w kontekście dobrych praktyk, używanie funkcji z jasnymi nazwami i dobrze zdefiniowanymi argumentami zwiększa czytelność oraz utrzymanie kodu, co jest istotne w pracy zespołowej oraz przy rozwijaniu większych aplikacji.

Pytanie 25

Jakie imiona spełniają warunki klauzuli LIKE w podanym zapytaniu?

SELECT imie FROM mieszkancy WHERE imie LIKE '_r%';
A. Krzysztof, Krystyna, Romuald
B. Arleta, Krzysztof, Krystyna, Tristan
C. Gerald, Jarosław, Marek, Tamara
D. Rafał, Rebeka, Renata, Roksana
Wybór tych imion, które nie pasują do wzoru z klauzulą LIKE, jest trochę mylący. Te imiona, które zaznaczyłeś, nie mają 'r' na właściwych miejscach, co jest kluczowe. Na przykład, 'Rafał', 'Rebeka', 'Renata' czy 'Roksana' mają 'r' na pierwszej pozycji albo w ogóle! To pokazuje, jak ważne jest rozumienie pozycji znaków w wzorze LIKE, gdzie '_' oznacza jeden znak, a '%' może być niczym lub więcej. No i jak 'r' jest na pierwszej pozycji, to nie ma szans, żeby pasowało do '_r%'. Często błędy we wzorach wynikają z niedopatrzeń w pozycjach znaków. Wiedza na ten temat jest mega ważna, gdy pracujemy z bazami danych, bo bez tego może być bałagan w wyszukiwaniach.

Pytanie 26

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; }
Prawidłowa odpowiedź opiera się na tym, jak działają własności float w CSS i w jakiej kolejności przeglądarka renderuje elementy blokowe. Jeśli w dokumencie HTML kolejność znaczników to np. &lt;aside&gt;, potem &lt;section&gt;, a na końcu &lt;nav&gt;, to bez dodatkowego stylowania wszystkie trzy ustawią się pionowo, jeden pod drugim, w tej właśnie kolejności. Dodanie float zmienia sposób, w jaki elementy „odpływają” od normalnego przepływu dokumentu i jak układają się obok siebie. W stylu nav { float: right; } section { float: right; } sprawiamy, że zarówno nav, jak i section są przesuwane do prawej krawędzi kontenera, natomiast aside (bez float) pozostaje w normalnym przepływie, czyli z lewej strony. Ponieważ przeglądarka układa elementy w kolejności występowania w kodzie, najpierw wyrenderuje aside po lewej, potem section „odpłynie” w prawo, a na końcu nav też „odpłynie” w prawo, ustawiając się po prawej stronie, ale dalej od góry niż section. Efekt wizualny jest taki, że po lewej mamy aside, po prawej nav, a section ląduje między nimi, dokładnie tak jak było pokazane na filmie. Moim zdaniem to zadanie dobrze pokazuje, że przy floatach zawsze trzeba myśleć o trzech rzeczach naraz: kolejności elementów w HTML, kierunku „pływania” (left/right) oraz o tym, które elementy pozostawiamy w normalnym przepływie. W praktyce w nowoczesnych projektach częściej używa się flexboxa albo CSS Grid do takich układów, bo są czytelniejsze i mniej problematyczne. Przykładowo, zamiast kombinować z float, można by użyć display: flex; na kontenerze i ustawić order dla aside i nav. Float nadal jednak pojawia się w starszych layoutach i w zadaniach egzaminacyjnych, więc warto dobrze rozumieć jego zachowanie, choćby po to, żeby poprawnie modyfikować istniejące style lub naprawiać „rozjechane” układy w starszych projektach.

Pytanie 27

W CSS, aby ustalić nietypowe odległości między słowami, używa się właściwości

A. letter-space
B. line-spacing
C. word-spacing
D. white-space
W języku CSS właściwość word-spacing jest używana do definiowania odstępu między wyrazami w elemencie tekstowym. Zwiększenie lub zmniejszenie odstępu między wyrazami może znacznie wpłynąć na czytelność i estetykę tekstu. Wartość tej właściwości można ustawić w jednostkach długości, takich jak piksele (px), em, rem lub procenty. Na przykład, zastosowanie word-spacing: 5px; w kodzie CSS spowoduje zwiększenie odstępu między wyrazami o 5 pikseli. Wartością domyślną tej właściwości jest 0, co oznacza, że odstępy są ustalane przez przeglądarkę na podstawie czcionki i innych parametrów tekstu. Użycie word-spacing może być szczególnie przydatne w przypadku projektowania stron internetowych, gdzie estetyka tekstu ma kluczowe znaczenie dla doświadczeń użytkownika. Dlatego, aby osiągnąć pożądany efekt wizualny, projektanci często manipulują odstępami między wyrazami w swoich stylach CSS, co jest zgodne z wytycznymi W3C dotyczącymi dostępności i czytelności treści na stronach internetowych.

Pytanie 28

Jakie znaczenie ma przedstawiony fragment kodu w języku C++?

Ilustracja do pytania
A. Typ strukturalny składający się z trzech pól.
B. Interakcja między zmiennymi globalnymi a lokalnymi.
C. Zbiór zmiennych w hierarchii.
D. Trzy niezwiązane ze sobą zmienne.
W niektórych odpowiedziach widać, że mogłeś źle zrozumieć, jak działa struktura w C++. Ludzie myślą, że hierarchia zmiennych pokazuje zależności, ale w rzeczywistości struktura po prostu grupuje różne dane razem, a nie tworzy hierarchię. Pomyśl też o tym, że te trzy pola to nie są osobne zmienne – one są ze sobą połączone w jeden obiekt. Często myślenie o zmiennych globalnych i lokalnych w kontekście struktury jest mylące, bo struktury same w sobie nie definiują takich relacji. Te pojęcia dotyczą raczej zasięgu zmiennych. Zrozumienie struktury jako jednego typu danych naprawdę pomaga w lepszym zarządzaniu informacjami w kodzie, co jest istotne w programowaniu dzisiaj.

Pytanie 29

W jaki sposób można określić w CSS styl dla hiperłącza, aby link, który nie był odwiedzony, miał kolor żółty, natomiast odwiedzony link był w kolorze zielonym?

A. a:visited { color: yellow; } a:link { color: green; }
B. a:hover { color: green; } a.link { color: yellow; }
C. a:link { color: yellow; } a:visited { color: green; }
D. a:hover { color: yellow; } a:visited { color: green; }
Właściwa odpowiedź definiuje style CSS dla hiperłączy w sposób zgodny z ich rolą i statusami. Selektor `a:link` odpowiada za stylizację nieodwiedzonych linków, a w tym przypadku ustawia kolor tekstu na żółty. Z kolei selektor `a:visited` odnosi się do linków, które użytkownik już odwiedził, i ustawia ich kolor na zielony. Taka separacja stylizacji pozwala na intuicyjne rozróżnienie między linkami, co jest korzystne z punktu widzenia użyteczności i dostępności. Praktyczne zastosowanie tych selektorów pozwala na łatwe dostosowanie wyglądu strony internetowej w zależności od stanu hiperłączy, co może być przydatne w nawigacji. Zgodnie z dobrymi praktykami, zawsze warto testować wygląd strony w różnych przeglądarkach, ponieważ niektóre z nich mogą interpretować style CSS nieco inaczej. Dodatkowo, warto pamiętać o dostępności - kontrastujące kolory mogą znacznie poprawić czytelność i ułatwić nawigację osobom z wadami wzroku.

Pytanie 30

Do podzbioru DML (ang. Data Manipulation Language) języka SQL należą polecenia:

A. BEGIN, COMMIT, ROLLBACK
B. GRANT, REVOKE, DENY
C. CREATE, DROP, ALTER
D. INSERT, UPDATE, DELETE
Prawidłowo – INSERT, UPDATE i DELETE to klasyczne polecenia z podzbioru DML (Data Manipulation Language) w SQL. DML służy do manipulowania danymi już zapisanymi w tabelach, a nie do tworzenia struktury bazy. Można sobie to skojarzyć z pracą na rekordach: dodajemy nowe wiersze, zmieniamy istniejące, usuwamy niepotrzebne. INSERT wstawia nowe rekordy do tabeli, np. gdy zapisujesz nowego użytkownika w systemie logowania: INSERT INTO users(login, haslo) VALUES ('jan', 'tajne');. UPDATE modyfikuje dane, np. zmianę hasła albo adresu e‑mail: UPDATE users SET email='[email protected]' WHERE id=5;. DELETE usuwa rekordy, np. nieaktywne konta: DELETE FROM users WHERE active=0;. W praktyce webowej te trzy polecenia działają zwykle razem z transakcjami i warunkami WHERE, żeby nie „przestrzelić” i nie ruszyć zbyt wielu wierszy. Standard SQL (ANSI/ISO) właśnie te komendy zalicza typowo do DML, obok instrukcji SELECT, która też jest często traktowana jako część DML, ale w wielu materiałach omawia się ją osobno, jako zapytania wybierające dane. Dobra praktyka jest taka, żeby przy UPDATE i DELETE zawsze podawać sensowny warunek WHERE i często używać LIMIT/TRANSACTION, szczególnie w aplikacjach produkcyjnych. Moim zdaniem warto od początku myśleć o DML w kontekście logiki biznesowej aplikacji: formularz rejestracji to INSERT, edycja profilu to UPDATE, usunięcie konta to DELETE – i nagle wszystko układa się w bardzo logiczną całość.

Pytanie 31

Tabele Klienci oraz Zgloszenia są związane relacją jeden do wielu. Jakie polecenie należy wydać, aby uzyskać tylko opis zgłoszenia oraz odpowiadające mu nazwisko klienta dla zgłoszenia numer 5?

Ilustracja do pytania
A. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.id WHERE Zgloszenia.id = 5
B. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.Klienci_id WHERE Klienci.id = 5
C. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci WHERE Klienci.id = 5
D. SELECT opis, nazwisko FROM Zgloszenia JOIN Klienci ON Klienci.id = Zgloszenia.Klienci_id WHERE Zgloszenia.id = 5
W przypadku nieprawidłowych odpowiedzi często występuje błędne rozumienie relacji i składni SQL. W pierwszym przykładzie, klauzula WHERE Klienci.id = 5 próbuje filtrować według identyfikatora klienta zamiast zgłoszenia, co nie jest zgodne z celem zapytania. Taki zapis prowadzi do niepoprawnych wyników, ponieważ zamiarem jest uzyskanie danych dla konkretnego zgłoszenia, a nie wszystkich zgłoszeń danego klienta. Innym częstym błędem jest pominięcie klauzuli ON w zapytaniu, co widać w trzeciej odpowiedzi. Bez określenia warunku łączenia, SQL nie ma informacji, jak powiązać rekordy z dwóch tabel, co może skutkować błędem lub zwróceniem niepoprawnych danych. W czwartym przypadku, klauzula ON jest błędnie skonstruowana, używając Klienci.id = Zgloszenia.id, co nie odpowiada relacji klucz główny-klucz obcy. Takie błędy wynikają z niezrozumienia struktury bazy danych i jej modeli relacyjnych. W praktyce, takie niepoprawne zapytania mogą prowadzić do błędnych wniosków, utraty integralności danych i problemów z wydajnością systemu. Aby tego uniknąć, istotne jest zrozumienie logicznej struktury bazy danych oraz poprawne stosowanie składni SQL, co jest kluczowe w pracy z relacyjnymi bazami danych. W profesjonalnym środowisku, testowanie i walidacja zapytań pomogą zidentyfikować i poprawić takie błędy przed wdrożeniem w produkcji.

Pytanie 32

W dokumencie XHTML znajduje się fragment kodu, w którym występuje błąd walidacyjny. Co jest przyczyną tego błędu?

Ilustracja do pytania
A. Znacznik <br> musi być zamknięty
B. Nie ma nagłówka szóstego poziomu
C. Znaczniki powinny być pisane dużymi literami
D. Znacznik <b> nie może być umieszczany wewnątrz znacznika <p>
Wybór odpowiedzi, że nie istnieje nagłówek szóstego stopnia, jest błędny, ponieważ w specyfikacji XHTML nagłówek szóstego stopnia <h6> jest jak najbardziej dopuszczalny i służy do oznaczania najmniej ważnych nagłówków, w hierarchii od <h1> do <h6>. Pisanie znaczników wielkimi literami nie jest wymogiem XHTML. Chociaż XHTML jest wrażliwy na wielkość liter, co oznacza, że nazwy znaczników i atrybutów muszą być pisane małymi literami, odpowiedź sugerująca, że tylko wielkie litery są poprawne, jest błędna. Użycie <b> jako zagnieżdżonego w <p> jest standardową praktyką i jest zgodne z normami XHTML, ponieważ <b> służy do pogrubienia tekstu wewnątrz elementu blokowego, jakim jest <p>. Problem z tą odpowiedzią polega na błędnym zrozumieniu struktury HTML, gdzie zagnieżdżanie elementów inline w elementach blokowych jest dozwolone. Ważnym aspektem jest umiejętność rozpoznania, które elementy są inline, a które blokowe, i jak mogą być poprawnie zagnieżdżane w kontekście specyfikacji XHTML. Poprawne zrozumienie tych zasad pomaga w tworzeniu wydajniejszych i bardziej zgodnych dokumentów internetowych.

Pytanie 33

W skrypcie JavaScript, aby uzyskać dane od użytkownika, można wykorzystać okno wyświetlane przez funkcję

A. confirm()
B. alert()
C. documet.write()
D. prompt()
Funkcja prompt() w JavaScript jest specjalnie zaprojektowana do pobierania danych od użytkownika i wyświetlania okna dialogowego, które pozwala wprowadzić tekst. W przeciwieństwie do alert(), który jedynie wyświetla informacje, prompt() umożliwia użytkownikowi wprowadzenie danych, które mogą być później wykorzystane w kodzie. Na przykład, można zainicjować zmienną i przypisać do niej wartość wprowadzaną przez użytkownika: var imie = prompt('Podaj swoje imię:');. Tego rodzaju interakcje są niezwykle ważne w dynamicznych aplikacjach internetowych, gdzie potrzeba elastyczności i użytkownika jako aktywnego uczestnika w procesie. Dobrą praktyką jest zapewnienie, że zapytania są jasne i zrozumiałe, a także, że walidujemy dane wejściowe, aby uniknąć błędów. Warto również mieć na uwadze, że z uwagi na estetykę i funkcjonalność, w nowoczesnym podejściu do interakcji użytkownika, lepszym rozwiązaniem mogą być formularze HTML z JavaScript, które oferują większą kontrolę nad danymi i lepsze możliwości stylizacji."

Pytanie 34

W języku SQL, dla dowolnych zbiorów danych w tabeli Uczniowie, aby uzyskać rekordy zawierające tylko uczennice o imieniu "Aleksandra", które urodziły się po roku "1998", należy sformułować zapytanie

A. SELECT * FROM Uczniowie WHERE imie="Aleksandra" AND rok_urodzenia > "1998"
B. SELECT * FROM Uczniowie WHERE imie="Aleksandra" OR rok_urodzenia > "1998"
C. SELECT * FROM Uczniowie WHERE imie ="Aleksandra" OR rok_urodzenia < "1998"
D. SELECT * FROM Uczniowie WHERE imie="Aleksandra" AND rok_urodzenia < "1998"
Zapytanie SQL 'SELECT * FROM Uczniowie WHERE imie="Aleksandra" AND rok_urodzenia > "1998";' jest całkiem w porządku. Dobrze wyciąga dane o uczennicach nazywających się Aleksandra, które przyszły na świat po 1998 roku. W tym zapytaniu używasz operatora AND, co oznacza, że obydwa warunki muszą być spełnione, żeby coś się pokazało. Fajnie jest korzystać z operatora AND w SQL, gdy potrzebujesz ograniczyć wyniki do takich, które pasują do więcej niż jednego kryterium. Cała ta logika pozwala na lepsze filtrowanie danych, co jest mega ważne, zwłaszcza w edukacji, gdzie chcemy uzyskać konkretne informacje o uczniach. Pamiętaj też, że używanie cudzysłowów do oznaczania tekstu jest kluczowe, bo wtedy system wie, że to jest tekst, a nie coś innego. A jak chcesz, żeby daty były bardziej precyzyjne, to można też wykorzystać różne funkcje datowe, żeby uzyskać jeszcze lepsze wyniki.

Pytanie 35

Aby strona internetowa była dostosowana do różnych urządzeń, należy między innymi określać

A. tylko znane fonty, takie jak Arial
B. wymiary obrazów w procentach
C. wymiary obrazów jedynie w pikselach
D. układ strony wyłącznie przy pomocy tabel
Różne podejścia do definiowania rozmiarów obrazów na stronach WWW mogą prowadzić do poważnych problemów z responsywnością. Używanie wyłącznie tabel do rozkładu strony to przestarzała metoda projektowania, która nie sprzyja elastyczności ani skalowalności layoutu. Tabele są statyczne i nie adaptują się do zmieniających się rozmiarów ekranów, co może powodować, że strona będzie wyglądać nieestetycznie na urządzeniach mobilnych. Z kolei definiowanie rozmiarów obrazów wyłącznie w pikselach ogranicza ich zdolność do dostosowywania się do różnych rozdzielczości. Przy stałych wartościach w pikselach obrazy mogą być zbyt małe na dużych ekranach lub zniekształcone na mniejszych urządzeniach, co negatywnie wpływa na użytkowanie. Ponadto, ograniczenie się do znanych czcionek, takich jak Arial, nie sprzyja różnorodności projektowej i może prowadzić do wizualnej monotonii strony. Współczesne praktyki projektowania zachęcają do korzystania z szerszej gamy czcionek oraz do technik takich jak @font-face, co pozwala na większą elastyczność estetyczną. Kluczowym błędem w myśleniu o responsywności jest brak zrozumienia, że wszystkie elementy strony powinny być traktowane w sposób dynamiczny i elastyczny, co jest podstawą nowoczesnego podejścia do tworzenia stron internetowych.

Pytanie 36

Który z formatów plików używa kompresji stratnej?

A. BMP
B. PNG
C. GIF
D. JPEG
Poprawnie – spośród podanych formatów to właśnie JPEG wykorzystuje kompresję stratną. Oznacza to, że podczas zapisu obrazu część informacji o pikselach jest bezpowrotnie usuwana, żeby zmniejszyć rozmiar pliku. Algorytm JPEG analizuje obraz, rozkłada go na składowe (m.in. za pomocą DCT – dyskretnej transformacji cosinusowej), a następnie odrzuca te detale, których ludzkie oko zazwyczaj i tak nie zauważa, szczególnie w przejściach tonalnych i drobnych teksturach. Dzięki temu zdjęcie może ważyć np. 10 razy mniej niż w BMP, przy akceptowalnej jakości. W praktyce JPEG jest standardem do zapisu fotografii na stronach WWW, w mediach społecznościowych, w aparatach cyfrowych czy telefonach. Stosuje się go tam, gdzie ważniejszy jest mały rozmiar pliku niż idealna, bezstratna jakość – np. galerie produktowe w sklepach internetowych, blogi, portfolia. Dobrą praktyką w webdevie jest używanie JPEG do zdjęć i skomplikowanych obrazów, a PNG lub SVG do grafiki z ostrymi krawędziami, logotypów, ikon. Warto też pamiętać o ustawianiu rozsądnego poziomu kompresji: zbyt mocna kompresja JPEG powoduje widoczne artefakty (blokowe kwadraty, rozmycia krawędzi), zbyt słaba – niepotrzebnie duże pliki. Moim zdaniem sensownie jest testować kilka poziomów jakości (np. 60–80%) i wybierać kompromis między wagą a wyglądem, bo to dokładnie ta decyzja, z którą spotykasz się później w realnych projektach WWW.

Pytanie 37

W notacji szesnastkowej kolor zielony reprezentowany jest jako #008000. Jaką wartość przyjmuje on w notacji RGB?

A. rgb(0, 80, 0)
B. rgb(0, 160, 0)
C. rgb(0, 100, 0)
D. rgb(0, 128, 0)
Wartości rgb(0, 80, 0), rgb(0, 160, 0) oraz rgb(0, 100, 0) są niepoprawnymi reprezentacjami koloru zielonego w notacji RGB, ponieważ nie odwzorowują one prawidłowej kombinacji składowych odpowiadających wartości szesnastkowej #008000. Wartość ta jest wyrażona jako sześć cyfr, gdzie dwie pierwsze reprezentują składową czerwoną, dwie kolejne składową zieloną, a ostatnie dwie składową niebieską. W przypadku #008000, składowa czerwona wynosi 0, składowa zielona wynosi 128, a składowa niebieska również wynosi 0. Typowym błędem, prowadzącym do błędnych odpowiedzi, jest mylenie zakresu wartości składowych. Na przykład, rgb(0, 80, 0) sugeruje, że składowa zielona wynosi 80, co jest znacznie niższą wartością niż 128, przez co kolor staje się ciemniejszy i mniej nasycony. Podobnie, rgb(0, 160, 0) i rgb(0, 100, 0) modyfikują intensywność koloru zielonego, co prowadzi do zupełnie innych odcieni, które nie odpowiadają standardowemu zielonemu. Znajomość konwersji między tymi formatami oraz ich zastosowanie w praktyce, np. w grafikach komputerowych czy web designie, jest kluczowa dla uzyskania pożądanych efektów wizualnych. Dobrą praktyką jest zawsze sprawdzanie wartości za pomocą narzędzi do wyboru kolorów, które mogą pomóc uniknąć takich pomyłek.

Pytanie 38

Strona internetowa została napisana w języku XHTML. Który z poniższych kodów przedstawia implementację zamieszczonego fragmentu strony, przy założeniu, że nie zdefiniowano żadnych stylów CSS?

Ilustracja do pytania
A. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<hr /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
B. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
C. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<i>prototyp hipertekstowego systemu informacyjnego - <b>ENQUIRE</b></i></p>
D. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
Wybory, które nie używają <h1> do tytułu, nie oddają poprawnej struktury semantycznej wymaganej w XHTML. Oznaczenie nagłówka jako <b> jest niewłaściwe, ponieważ <b> jest znacznikiem stylizującym tekst jako pogrubiony, ale nie semantycznie nie mówi, że jest to nagłówek. XHTML, będąc bardziej restrykcyjną wersją HTML, wymaga ścisłego trzymania się hierarchii nagłówków, co pomaga w czytelności dokumentu przez oprogramowanie wspomagające i wyszukiwarki. Użycie <hr /> w odpowiedzi trzeciej jako linia pozioma jest semantycznie mylące, gdyż nie oddziela to części tekstu, a jedynie wizualnie dzieli fragmenty, co w XHTML, gdzie semantyka jest kluczowa, nie jest zalecane. Strona zapisana w XHTML powinna używać tagów zgodnie z ich przeznaczeniem, co poprawia dostępność i zrozumienie kodu. Dodatkowo, nieprawidłowo ustrukturyzowane znaczniki mogą prowadzić do problemów z parsowaniem przez przeglądarki, co jest niepożądane w profesjonalnym tworzeniu stron internetowych. Dlatego odpowiednia semantyka i poprawna struktura są kluczowe w projektowaniu stron zgodnych z XHTML.

Pytanie 39

Hermetyzacja to zasada programowania obiektowego, która wskazuje, że

A. pola oraz metody, które są używane wyłącznie przez daną klasę lub obiekt, są ograniczane zasięgiem private lub protected.
B. klasy i obiekty mogą dzielić się funkcjonalnością.
C. klasy i obiekty mogą mieć zdefiniowane metody wirtualne, które są realizowane w klasach lub obiektach pochodnych.
D. typy pól w klasach i obiektach mogą być zmieniane dynamicznie w zależności od przypisywanych danych.
Pierwsza z zaproponowanych odpowiedzi, dotycząca współdzielenia funkcjonalności przez klasy i obiekty, odnosi się bardziej do dziedziczenia i polimorfizmu, a nie hermetyzacji. W programowaniu obiektowym, dziedziczenie pozwala klasom na wykorzystanie metod i właściwości innych klas, co nie jest bezpośrednio związane z hermetyzacją, która koncentruje się na ograniczaniu dostępu do wewnętrznych komponentów obiektu. Kolejna odpowiedź, mówiąca o metodach wirtualnych, dotyczy koncepcji polimorfizmu, gdzie klasy dziedziczą po sobie i mogą nadpisywać metody. Choć jest to istotny element programowania obiektowego, nie ma związku z hermetyzacją, która skupia się na prywatności danych wewnętrznych. Ostatnia odpowiedź, dotycząca dynamicznej zmiany typów pól w klasach, odnosi się do dynamicznego typowania, co również nie jest związane z hermetyzacją. Hermetyzacja koncentruje się na bezpieczeństwie i izolacji danych, a zmiana typów pól dotyczy raczej sposobu przechowywania danych i ich przetwarzania w czasie działania programu. Te niepoprawne odpowiedzi pokazują różnorodność koncepcji w programowaniu obiektowym, ale żadna z nich nie odnosi się bezpośrednio do istoty hermetyzacji.

Pytanie 40

W MS SQL Server instrukcja RESTORE DATABASE jest używana do

A. aktualizacji bazy danych z kontrolą więzów integralności
B. przywrócenia bazy danych z kopii zapasowej
C. usunięcia bazy danych z głównego serwera subskrybenta
D. reorganizacji bazy danych na podstawie zapisanych danych
Zgłębiając swoją odpowiedź, dobrze zrozumieć, czemu inne odpowiedzi były błędne. Mówiąc o „przebudowywaniu bazy danych o buforowane dane”, to w sumie nie ma sensu w kontekście polecenia RESTORE DATABASE. Buforowe dane to coś zupełnie innego, są tymczasowe i w ogóle nie pasują do tematu przywracania bazy. Właściwie to takie „przebudowanie” nie jest w ogóle techniką zarządzania danymi. A usunięcie bazy danych z serwera? To już w ogóle inna sprawa; chodzi tu o DROP DATABASE, które po prostu ją likwiduje, a nie przywraca. Przymiarki do „odświeżenia bazy z kontrolą więzów integralności” mogą być mylące, bo to nie ma z tym nic wspólnego. Więzy integralności są ważne, ale nie są bezpośrednio związane z procesem przywracania. Warto zrozumieć różnice między backupem, przywracaniem danych a ich zarządzaniem, bo to kluczowe dla każdego, kto zajmuje się administrowaniem baz danych.