Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 27 kwietnia 2026 01:31
  • Data zakończenia: 27 kwietnia 2026 01:31

Egzamin niezdany

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

Formularze do zarządzania bazami danych są tworzone w celu

A. wyszukiwania rekordów, które spełniają określone kryteria
B. ułatwienia wprowadzania, edytowania i usuwania danych
C. tworzenia powiązań w relacyjnych bazach danych
D. generowania raportów z danych
Wiele osób może pomylić funkcję formularzy w bazach danych z ich rolą w raportowaniu danych. Chociaż formularze mogą być używane do generowania raportów, ich głównym celem nie jest prezentacja danych, ale ułatwienie ich wprowadzania oraz zarządzania. Raporty zazwyczaj są generowane na podstawie danych już istniejących w bazie i wymagają analizy, co wykracza poza funkcję formularzy. Z kolei wyszukiwanie wierszy spełniających określone kryteria, choć istotne, również nie jest głównym zadaniem formularzy. Wyszukiwanie to proces związany z kwerendami SQL, który pozwala na wydobycie danych na podstawie różnych warunków, co także nie jest bezpośrednio związane z funkcjonalnością formularzy, które skupiają się na interakcji użytkownika z danymi. Ponadto, wprowadzanie powiązań w relacyjnych bazach danych to bardziej zaawansowany proces projektowania bazy, który wymaga zrozumienia struktury danych i zastosowania kluczy głównych oraz obcych. Powiązania są definiowane na etapie projektowania bazy danych, a nie podczas korzystania z formularzy. Dlatego, chociaż wszystkie wymienione funkcje są istotne w kontekście zarządzania danymi, formularze skupiają się głównie na uproszczeniu interakcji użytkownika z procesem wprowadzania i modyfikacji danych.

Pytanie 2

W SQL, aby uniemożliwić stworzenie konta przy wykonywaniu kwerendy CREATE USER, gdy konto już istnieje, można zastosować następującą składnię

A. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedzi, które nie zawierają klauzuli 'IF NOT EXISTS', nie są optymalne, ponieważ mogą prowadzić do błędów, gdy próbuje się utworzyć konto, które już istnieje. W przypadku polecenia 'CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';', jeśli konto 'anna' jest już w systemie, użytkownik otrzyma błąd, co skutkuje niepowodzeniem całego skryptu. W kontekście administracji baz danych, jest to szczególnie problematyczne, gdy skrypty są uruchamiane automatycznie, ponieważ mogą one przerywać dalsze operacje. Natomiast składnia 'CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest nieprawidłowa, ponieważ nie istnieje w standardzie SQL. Użytkownicy mogą mylić 'DROP' z opcją usunięcia konta, co w praktyce nie powinno być podejmowane bez wyraźnej intencji. Ostatecznie, 'CREATE OR REPLACE USER...' działa odmiennie, ponieważ nie jest standardową operacją w SQL dla użytkowników; bardziej odpowiednie byłoby jej zastosowanie w kontekście obiektów, takich jak procedury czy widoki. Kluczowe jest zrozumienie, że błędne podejście do tworzenia użytkowników może prowadzić do chaosu w zarządzaniu bazą danych i stwarzać potencjalne zagrożenia dla bezpieczeństwa. Dlatego tak istotne jest stosowanie klauzuli 'IF NOT EXISTS', co jest zgodne z najlepszymi praktykami w branży zarządzania systemami baz danych.

Pytanie 3

Wskaź na właściwą sekwencję tworzenia aplikacji?

A. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, wdrażanie, testowanie
B. Analiza potrzeb klienta, specyfikacja wymagań, tworzenie, testowanie, wdrażanie
C. Specyfikacja wymagań, analiza potrzeb klienta, tworzenie, wdrażanie, testowanie
D. Tworzenie, analiza potrzeb klienta, specyfikacja wymagań, wdrażanie, testowanie
Nieprawidłowe odpowiedzi w kwestii kolejności tworzenia aplikacji bazują na błędnych założeniach dotyczących etapów procesu. W pierwszej z tych odpowiedzi, pominięcie analizy wymagań klienta na rzecz specyfikacji powoduje, że projekt może nie spełniać oczekiwań użytkowników, co prowadzi do nieefektywnego wykorzystania zasobów oraz czasu. Specyfikacja wymagań musi być tworzona na podstawie dokładnej analizy potrzeb, a nie odwrotnie. Kolejna odpowiedź zaczyna się od tworzenia aplikacji bez wcześniejszej analizy i specyfikacji, co jest nie tylko technicznie błędne, ale również wiąże się z ogromnym ryzykiem powstawania błędów w kodzie i funkcjonalności, które nie odpowiadają na realne potrzeby użytkowników. W ostatnim przypadku, pomimo że analiza wymagań oraz specyfikacja są na początku, przed wdrożeniem powinny być przeprowadzone testy, aby upewnić się, że produkt działa zgodnie z oczekiwaniami. Etap testowania jest niezbędny przed wdrożeniem, ponieważ pozwala na identyfikację i naprawę błędów, co jest kluczowe dla osiągnięcia wysokiej jakości końcowego produktu. Wszelkie zmiany w tej kolejności mogą prowadzić do kosztownych błędów oraz niezadowolenia użytkowników.

Pytanie 4

Standard kodowania ISO-8859-2 jest używany do poprawnego wyświetlania

A. znaków specjalnych dla języka kodu strony
B. polskich liter, takich jak: ś, ć, ń, ó, ą
C. symboli matematycznych
D. znaków zarezerwowanych dla języka opisu strony
Wybór odpowiedzi dotyczący znaków specjalnych dla języka kodu strony sugeruje, że ISO-8859-2 byłoby używane do obsługi elementów związanych z kodowaniem strony, co jest mylące. Chociaż kodowanie znaków jest istotne dla wyświetlania treści, odnosi się ono głównie do sposobu, w jaki znaki są reprezentowane w kodzie komputerowym, a nie do języka kodu strony. Z kolei odpowiedź dotycząca znaków zarezerwowanych dla języka opisu strony wprowadza dodatkowy zamęt, ponieważ zarezerwowane znaki nie mają związku z kodowaniem znaków, lecz dotyczy to specyficznych symboli i elementów w języku HTML, które mogą być interpretowane przez przeglądarki. Ostatnia odpowiedź sugerująca, że ISO-8859-2 jest używane dla symboli matematycznych nie ma podstaw, ponieważ ten standard koncentruje się na znakach używanych w językach europejskich. Takie nieprawidłowe podejścia mogą wynikać z braku zrozumienia specyfikacji standardów kodowania, co prowadzi do nieporozumień w zakresie ich zastosowania w praktyce. Należy pamiętać, że w kontekście tworzenia stron internetowych kluczowe jest wykorzystanie odpowiedniego kodowania, które zapewnia prawidłowe wyświetlanie treści, a nie symboli specyficznych dla danej dziedziny. Dlatego, dla zrozumienia znaczenia kodowania znaków, niezbędne jest zapoznanie się z dokumentacją oraz standardami, które definiują, jak różne znaki są reprezentowane w różnych kodowaniach.

Pytanie 5

Definicja stylu przedstawiona w języku CSS dotyczy odnośnika, który

Ilustracja do pytania
A. jeszcze nie był odwiedzany
B. ma wskaźnik myszy ustawiony nad nim
C. posiada niepoprawny adres URL
D. był już odwiedzany
W języku CSS selektor a:visited odnosi się do linków, które użytkownik już odwiedził. To pseudo-klasa, która umożliwia projektantom stron internetowych kontrolowanie wyglądu linków po ich kliknięciu, co poprawia doświadczenia użytkownika i umożliwia łatwiejszą nawigację. W przykładzie a:visited{color:orange;} wszystkie odwiedzone linki zostaną pokolorowane na pomarańczowo, co wizualnie odróżnia je od nieodwiedzonych linków. To podejście jest zgodne z zasadami dostępności, które sugerują, aby odwiedzone linki były w jakiś sposób wyróżnione. Praktycznym zastosowaniem tej wiedzy jest tworzenie stron, które są bardziej przejrzyste i intuicyjne dla użytkowników. Dobre praktyki zalecają, by różnica między odwiedzonymi a nieodwiedzonymi linkami była subtelna, ale zauważalna. Ustawianie różnych kolorów dla tych stanów linków jest popularnym rozwiązaniem. Prawidłowe użycie pseudo-klasy :visited wspiera także budowanie stron responsywnych, które poprawiają UX i spełniają standardy nowoczesnego designu, jednocześnie biorąc pod uwagę kwestie związane z prywatnością użytkowników, ponieważ CSS nie pozwala na stylizowanie niektórych właściwości odwiedzonych linków.

Pytanie 6

Dla dowolnego a z przedziału (0, 99) zadaniem funkcji zapisanej w języku JavaScript jest

function fun1(a)
{
    for (n = a; n <= 100; n++)
        document.write(n);
    return n;
}
A. zwrócenie liczb z przedziału a .. 99
B. wypisanie wartości zmiennej a oraz zwrócenie wartości zmiennej n
C. wypisanie liczb z przedziału a .. 99 i zwrócenie wartości 100
D. wypisanie liczb z przedziału a .. 100 i zwrócenie wartości zmiennej n
Wybrane przez Ciebie odpowiedzi są niepoprawne, gdyż nie odzwierciedlają w pełni działania pętli for w JavaScript. Pętla for jest używana do iterowania tyle razy, ile wynosi różnica między 100 a wartością argumentu a, wypisując każdą iterację. Następnie funkcja zwraca wartość o 1 większą niż warunek kończący pętlę (100), co wynosi 101. Błędem było zakładanie, że funkcja zwraca wartości w inny sposób. Przykładowo, jedna z nieprawidłowych odpowiedzi sugerowała, że funkcja zwraca liczby z przedziału a do 99 - jednakże zwracana jest liczba 101. Inna błędna odpowiedź sugerowała, że funkcja wypisuje wartość zmiennej a i zwraca wartość zmiennej n - jednakże wypisywane są liczby od a do 100, a zwracana jest wartość 101. Kolejnym błędem było zakładanie, że funkcja zwraca wartość 100 - co jest nieprawdą, gdyż funkcja zwraca wartość 101. Zrozumienie działania pętli for i funkcji zwracających wartości jest kluczowe dla programowania w JavaScript, dlatego warto poświęcić więcej czasu na praktykę i naukę tych konceptów.

Pytanie 7

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 WHERE miasto BETWEEN 'Poznań' OR 'Kraków';
B. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto HAVING 'Poznań' OR 'Kraków';
C. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' OR miasto='Kraków';
D. SELECT nazwisko, imie FROM mieszkańcy AS 'Poznań' OR 'Kraków';
Wybór błędnych odpowiedzi wynika z nieprawidłowego zrozumienia podstawowych zasad użycia operatorów w SQL oraz sposobu, w jaki warunki filtracji danych powinny być konstruowane. Zapytanie, które wykorzystuje BETWEEN, jest stosowane do porównywania wartości w określonym zakresie, ale w tym przypadku nie jest możliwe wskazanie dwóch różnych wartości, jak w przypadku miast. Operator OR w kontekście BETWEEN nie ma zastosowania, co sprawia, że ta koncepcja jest fundamentalnie błędna. Z drugiej strony, użycie HAVING jest niewłaściwe, ponieważ służy do filtrowania wyników po agregacji danych, a nie do bezpośredniej filtracji na podstawie wartości. Dodatkowo, konstrukcja SELECT z aliasem 'Poznań' OR 'Kraków' jest syntaktycznie niepoprawna, ponieważ operator OR nie może być użyty w tym kontekście. Typowym błędem w myśleniu jest mylenie operatorów logicznych i ich zastosowania w różnych kontekstach zapytań SQL. Zrozumienie, kiedy używać WHERE, HAVING oraz jak działa składnia zapytań, jest kluczowe dla poprawnego pisania i optymalizacji zapytań baz danych.

Pytanie 8

Określ rezultat wykonania skryptu stworzonego w języku PHP

Ilustracja do pytania
A. D
B. A
C. C
D. B
Odpowiedzi B, C i D są niepoprawne z kilku powodów związanych z błędnym zrozumieniem działania funkcji asort() w PHP. Po pierwsze, funkcja ta sortuje tablicę według wartości w porządku rosnącym, ale co ważne, zachowuje oryginalne klucze. Odpowiedź B ukazuje tablicę z kluczami zresetowanymi do wartości całkowitych, co wskazuje na zastosowanie innej funkcji sortującej jak sort() zamiast asort(). Taki wynik wskazuje brak zrozumienia kluczowej cechy asort(), która jest istotna w pracy z tablicami asocjacyjnymi, gdzie zachowanie kluczy jest konieczne do prawidłowego odwzorowania danych. W odpowiedzi C klucze są także zresetowane, a wartości są w niewłaściwej kolejności, co mogłoby sugerować użycie sort() na tablicy o zmienionym indeksowaniu. Odpowiedź D pokazuje tablicę posortowaną poprawnie, ale w niewłaściwej kolejności, co sugeruje błędne użycie funkcji sortującej, być może zakładające odwrotną kolejność lub błędne przypisanie wartości. Kluczowe jest zrozumienie, jak różne funkcje sortujące w PHP wpływają na klucze i wartości tablic, aby unikać takich błędów i poprawnie wykorzystywać funkcje jak asort() do manipulacji danymi w kontekście ich praktycznego zastosowania, jak konfigurowanie ustawień czy analiza danych, gdzie zachowanie oryginalnych kluczy jest kluczowe. Niewłaściwe zastosowanie może prowadzić do błędnych interpretacji danych i problemów z zachowaniem integralności aplikacji.

Pytanie 9

W języku JavaScript funkcja matematyczna Math.pow() jest wykorzystywana do obliczania

A. pierwiastka kwadratowego z liczby
B. przybliżonej wartości liczby
C. bezwzględnej wartości liczby
D. potęgi liczby
Funkcja Math.pow() w języku JavaScript służy do obliczania potęgi liczby, co oznacza, że zwraca wynik mnożenia danej liczby przez siebie określoną liczbę razy. Jej składnia to Math.pow(base, exponent), gdzie 'base' to liczba, którą chcemy podnieść do potęgi, a 'exponent' to wykładnik potęgi. Przykładowo, Math.pow(2, 3) zwróci 8, ponieważ 2^3=2*2*2=8. Użycie tej funkcji jest niezwykle powszechne w programowaniu, zwłaszcza w obliczeniach matematycznych, grafice komputerowej oraz w algorytmach naukowych. Zastosowanie Math.pow() jest zgodne z najlepszymi praktykami, ponieważ pozwala na klarowność i czytelność kodu. Warto dodać, że w ES6 możemy również używać operatora potęgowania **, co jest syntaktycznie prostsze i bardziej intuicyjne, np. 2 ** 3 również da nam 8.

Pytanie 10

W instrukcji CREATE TABLE zastosowanie klauzuli PRIMARY KEY przy definiowaniu pola tabeli spowoduje, że to pole stanie się

A. kluczem obcym
B. indeksem klucza
C. indeksem unikalnym
D. kluczem podstawowym
Wybór klucza obcego jako odpowiedzi jest błędny, ponieważ klucz obcy to inny typ atrybutu, który służy do tworzenia powiązań między tabelami. Klucz obcy odnosi się do klucza podstawowego w innej tabeli, co pozwala na utrzymanie relacyjnych danych. Nie jest to struktura, która jednoznacznie identyfikuje rekord w swojej tabeli, lecz odnosi się do rekordów w innej tabeli. Z kolei indeks klucza to struktura danych, która przyspiesza operacje wyszukiwania na kolumnach tabeli, ale nie pełni funkcji zapewnienia unikalności danych, co jest kluczowe dla klucza podstawowego. Indeks unikalny także różni się od klucza podstawowego; chociaż zapewnia unikalność wartości, może zawierać wartości NULL, podczas gdy klucz podstawowy ich nie dopuszcza. Typowym błędem myślowym jest mylenie tych pojęć, co prowadzi do nieporozumień w projektowaniu baz danych. Kluczowe jest zrozumienie ról, jakie poszczególne elementy struktury bazy danych odgrywają, aby efektywnie zarządzać danymi oraz zapewniać ich integralność. Właściwe zrozumienie tych koncepcji jest niezbędne do tworzenia prawidłowo działających systemów baz danych.

Pytanie 11

Funkcja
fun1(a,b) {
  if(a % 2 != 0) a++;
  for(let n = a; n <= b; n+=2) document.write(n);
}
ma na celu

A. sprawdzenie, czy liczba a jest nieparzysta; w przypadku pozytywnej odpowiedzi, jej wypisanie
B. zwrócenie parzystych wartości liczb od a do b
C. wypisanie liczb parzystych w zakresie od a do b
D. wypisanie wszystkich liczb w przedziale od a do b
W przypadku pierwszej błędnej odpowiedzi, najważniejszy błąd to myślenie, że funkcja zwraca wartości parzyste jak zwykły wynik. W rzeczywistości funkcja wypisuje te liczby na stronie za pomocą document.write(), więc to jest kluczowy szczegół. Druga niepoprawna odpowiedź jest na dobrej drodze, ale myli się w interpretacji 'wypisania liczb parzystych z przedziału od a do b'. Funkcja nie tylko wypisuje liczby parzyste, ale też sprawdza, czy a jest nieparzyste, i wtedy zmienia tę wartość. Co do trzeciej błędnej odpowiedzi, sugeruje ona, że funkcja wypisuje wszystkie liczby między a a b, co jest zupełnie błędne, bo pętla for zwiększa n o 2, więc tylko parzyste liczby się pojawią. Rozumienie jak działa pętla for oraz operator modulo jest kluczowe, żeby dobrze zrozumieć tę funkcję. Jeśli nie ogarniasz tych podstaw, ciężko będzie analizować kod w JavaScript i pisać lepsze programy.

Pytanie 12

Który fragment definicji dwukolumnowej tabeli odpowiada efektowi scalenia komórki 1 i 3, przedstawionemu na ilustracji?

Ilustracja do pytania
A. <td rowspan="3">komórka1+3</td>
B. <td colspan="2">komórka1+3</td>
C. <td rowspan="2">komórka1+3</td>
D. <td colspan="3">komórka1+3</td>
W tym zadaniu kluczowe jest rozróżnienie dwóch atrybutów HTML: colspan i rowspan. Oba służą do scalania komórek w tabeli, ale działają w zupełnie różnych kierunkach. Colspan łączy komórki w poziomie, czyli wzdłuż kolumn, natomiast rowspan scala komórki w pionie, wzdłuż wierszy. Na ilustracji widać, że „komórka1+3” zajmuje całą pierwszą kolumnę w dwóch pierwszych wierszach. To oznacza, że jedna komórka rozciąga się na dwa wiersze, a nie na dwie kolumny. Stąd logicznie wynika, że użycie colspan w ogóle nie pasuje do tej sytuacji. Gdybyśmy wpisali <td colspan="2">, przeglądarka potraktowałaby tę komórkę jako rozciągającą się na dwie kolumny w jednym wierszu. Efekt byłby taki, że komórki z drugiej kolumny zostałyby przesunięte, a układ z obrazka zupełnie by się rozjechał. Z kolei wartość colspan="3" w dwukolumnowej tabeli jest po prostu nielogiczna: próbujemy zająć trzy kolumny, gdy istnieją tylko dwie. W praktyce takie nadmiarowe wartości często kończą się chaotycznym renderowaniem tabeli, bo przeglądarka stara się „naprawić” błędny kod. Zostaje jeszcze rowspan z wartością 3. To też nie pasuje do przykładu, bo nasza scalona komórka obejmuje tylko dwa wiersze, nie trzy. Ustawienie rowspan="3" spowodowałoby, że komórka próbowałaby zająć miejsce również w trzecim wierszu, co zaburzyłoby pozycję „komórki5”. Typowym błędem myślowym jest mylenie liczby kolumn z liczbą wierszy: wiele osób patrzy na liczbę pól, które wizualnie wydają się połączone, i automatycznie wybiera colspan, bo kojarzy im się to z „większą szerokością”. Tymczasem trzeba zawsze zadać sobie jedno proste pytanie: czy komórka ma być szersza (więcej kolumn – colspan), czy wyższa (więcej wierszy – rowspan). W tym zadaniu odpowiedź jest jednoznaczna: chodzi o połączenie komórek pionowo w dół, więc poprawne może być tylko rowspan z wartością równą liczbie wierszy, które faktycznie zajmuje scalona komórka, czyli 2.

Pytanie 13

Dane z pola input o typie number zostały zapisane do zmiennej a, a następnie przetworzone w kodzie JavaScript w sposób następujący: ```var x = parseFloata);``` Jakiego typu będzie zmienna x?

A. zmiennoprzecinkowego
B. liczbowego, całkowitego
C. napisowego
D. NaN
Wybór odpowiedzi, w której mówisz, że zmienna x będzie NaN, jest trochę nietrafiony. NaN dostaniesz tylko wtedy, jak parseFloat nie da rady przetworzyć jakiejś wartości. Jeśli a zawiera dobry numer, na przykład '123.45', to musisz wiedzieć, że parseFloat zwróci liczbę zmiennoprzecinkową, a nie NaN. A to, że x będzie miała typ napisowy, to też nie jest prawda. Czy wiesz, że parseFloat zmienia stringi na liczby? Więc typ, który dostajesz, to liczba, a nie tekst. No i na końcu, mówienie, że zmienna x będzie typu liczbowego całkowitego, to błąd. Funkcja parseFloat daje liczby zmiennoprzecinkowe, a nie całkowite. Nawet jak wpiszesz '5', to dostaniesz 5.0. Różnica między tymi dwoma typami jest naprawdę istotna, bo wpływa na to, jak komputer z tym pracuje oraz jak obliczenia są dokładne.

Pytanie 14

Styl ten generuje pojedyncze obramowanie, które charakteryzuje się następującymi właściwościami:

border: solid 1px;
border-color: red blue green yellow;
A. krawędź lewa ma kolor czerwony, krawędź dolna jest w kolorze niebieskim, krawędź prawa jest koloru zielonego, krawędź górna ma kolor żółty
B. krawędź prawa jest koloru czerwonego, krawędź dolna ma kolor niebieski, krawędź lewa ma kolor zielony, krawędź górna ma kolor żółty
C. krawędź górna jest czerwonego koloru, krawędź lewa jest w kolorze niebieskim, krawędź dolna ma kolor zielony, krawędź prawa ma kolor żółty
D. krawędź górna ma kolor czerwony, krawędź prawa jest w kolorze niebieskim, krawędź dolna ma kolor zielony, krawędź lewa jest koloru żółtego
Podana odpowiedź jest prawidłowa, ponieważ opisuje właściwe przypisanie kolorów do krawędzi obramowania według standardów CSS. W zapisie border-color: red blue green yellow; kolory są przypisywane zgodnie z kierunkiem wskazówek zegara, zaczynając od góry. Zatem krawędź górna jest koloru czerwonego, prawa koloru niebieskiego, dolna zielonego, a lewa żółtego. Jest to zgodne z praktykami projektowania stron internetowych, gdzie priorytetem jest zrozumiała i spójna struktura kodu. W praktyce takie zrozumienie pozwala na efektywne tworzenie stylów w CSS, przyspieszając proces tworzenia responsywnych i estetycznych interfejsów użytkownika. Wiedza o przypisywaniu kolorów do krawędzi jest przydatna w tworzeniu zaawansowanych układów graficznych, pozwalając na lepsze wykorzystanie przestrzeni wizualnej i wprowadzenie unikalnych elementów stylistycznych. Takie podejście do CSS jest zgodne z nowoczesnymi standardami projektowania, które kładą nacisk na czytelność i efektywność kodu oraz zapewniają lepsze doświadczenia użytkownika.

Pytanie 15

Co oznacza w języku C++ przedstawiony fragment kodu?

struct CONTACT
{
std::string nazwisko;
std::string telefon;
int numer;
};
A. Interakcję między zmiennymi lokalnymi a globalnymi
B. Organizację zmiennych
C. Trzy niezależne zmienne
D. Typ strukturalny składający się z trzech pól
Fragment kodu, który przedstawiłeś, dotyczy struktury CONTACT w C++. W sumie fajnie, że w jednym miejscu udało się zebrać różne dane, bo struktury właśnie do tego służą. Mają one trzy pola: dwa typu std::string, czyli nazwisko i telefon, oraz jedno pole typu int, które nazywa się numer. To pole int służy do przechowywania liczb, na przykład identyfikatorów kontaktów. Struktury są super przydatne, bo pozwalają w łatwy sposób zarządzać danymi, które są ze sobą powiązane. W programowaniu obiektowym, jak w C++, to bardzo ważne, by mieć ładnie zorganizowane dane, bo to znacznie ułatwia życie przy większych projektach. Używanie struktur nie tylko poprawia czytelność kodu, ale też pozwala na łatwiejsze przekazywanie danych do funkcji. Różne konwencje, jak ta, że struktury reprezentują obiekty rzeczywiste, naprawdę mogą zwiększać modularność i elastyczność naszego kodu.

Pytanie 16

Jak powinna wyglądać odpowiednia sekwencja procesów przetwarzania dźwięku z analogowego na cyfrowy?

A. kwantyzacja, kodowanie, próbkowanie
B. próbkowanie, kwantyzacja, kodowanie
C. próbkowanie, kodowanie, kwantyzacja
D. kwantyzacja, próbkowanie, kodowanie
Wybór niepoprawnych odpowiedzi pokazuje, że pewnie nie do końca zrozumiałeś, jak te procesy przetwarzania dźwięku powinny przebiegać. Pierwszy błąd to pominięcie jednego z kluczowych kroków, co może mylić, bo nie jest jasne, jak właściwie przekształcamy sygnał analogowy w cyfrowy. Jeśli byś kodował dane przed kwantyzacją, to mogłoby to zniekształcić informacje przez brak zaokrągleń, co sprawiłoby, że dane nie oddają oryginału. Z kolei, jeśli nie rozumiesz, że kwantyzacja ma być po próbkowaniu, to może się wydawać, że dźwięk przechodzi w formę cyfrową w dziwny sposób. W efekcie, może się zdarzyć, że nie oddasz właściwego zakresu dynamiki, co znacznie pogorszy jakość dźwięku. Może być tak, że dźwięk będzie zniekształcony albo straci ważne szczegóły, przez co będzie trudny do słuchania. Fajnie by było, żebyś lepiej zrozumiał te procesy, bo są mega ważne dla każdego, kto działa w inżynierii dźwięku lub produkcji muzycznej.

Pytanie 17

Definicja formularza została użyta na stronie internetowej, która przesyła dane do pliku napisanego w języku PHP. W jakiej tablicy będą dostępne dane z tego formularza?

Ilustracja do pytania
A. $_ACTION
B. $_GET
C. $_COOKIE
D. $_POST
Tablica $_POST w PHP służy do przechwytywania danych przesyłanych za pomocą metody POST. Jest to standardowa praktyka w przypadku formularzy, które zawierają dane wrażliwe lub dużą ilość informacji. Metoda POST przesyła dane w treści żądania HTTP, co oznacza, że nie są one widoczne w adresie URL, co zwiększa bezpieczeństwo w porównaniu do metody GET. Przykładem zastosowania mogą być formularze logowania czy przesyłania plików. W PHP dostęp do danych z formularza można uzyskać poprzez prostą składnię, na przykład $_POST['nazwa_pola']. Ważne jest, aby zawsze walidować i filtrować dane wejściowe, aby zabezpieczyć aplikację przed atakami typu SQL Injection czy XSS. Zastosowanie metody POST jest zgodne z ogólnymi zasadami bezpieczeństwa i standardami projektowania aplikacji webowych, które zalecają ograniczanie widoczności danych przesyłanych przez użytkownika. Dobre praktyki obejmują również stosowanie HTTPS, aby dodatkowo zaszyfrować dane przesyłane pomiędzy klientem a serwerem.

Pytanie 18

W PHP w konstrukcji switch konieczne jest użycie

A. instrukcji break po każdym przypadku case
B. konstrukcji switch(wyrażenie)
C. przynajmniej dwóch instrukcji case
D. instrukcji default
Wiele osób może mylnie sądzić, że każda opcja wymieniona w pytaniu jest konieczna do prawidłowego działania instrukcji switch. Na przykład, powszechnym błędem jest przekonanie, że instrukcja default jest niezbędna. W rzeczywistości jest to sekcja opcjonalna, która jest wykonywana, jeśli żaden z przypadków case nie pasuje do wyrażenia. W przypadku, gdy instrukcja default nie jest użyta, program po prostu przejdzie do następnej instrukcji po switch, jeśli żaden z przypadków nie został spełniony. Również nie jest konieczne posiadanie przynajmniej dwóch case. Można mieć jedną sekcję case, a nawet żadną, ale w tym ostatnim przypadku kod nie będzie zawierał żadnego działania w switch. Innym częstym nieporozumieniem jest myślenie, że instrukcja break musi znajdować się po każdej sekcji case. Choć break jest zalecany, aby uniknąć tzw. 'fall-through', czyli niezamierzonego przejścia do kolejnych sekcji case, jego brak nie czyni switch niepoprawnym. Program wciąż działa, ale może nie zachowywać się zgodnie z oczekiwaniami, co może prowadzić do trudnych do zdiagnozowania błędów. W praktyce, dla czytelności i przewidywalności kodu, stosowanie break jest uznawane za dobrą praktykę. Zrozumienie tych zasad jest kluczowe dla efektywnego korzystania z konstrukcji switch w PHP.

Pytanie 19

W języku PHP znak "//" wskazuje na

A. początek komentarza jednoliniowego
B. operator dzielenia całkowitego
C. początek skryptu
D. operator alternatywny
Pojęcia zawarte w trzech niepoprawnych odpowiedziach nie są poprawne w kontekście użycia znaku '//' w PHP. Pierwsza odpowiedź sugeruje, że znak ten oznacza początek skryptu. W rzeczywistości, skrypt PHP rozpoczyna się od tagu otwierającego '<?php', a nie od komentarza. Znak '//' nie ma nic wspólnego z inicjacją skryptu, jego rola jest ograniczona tylko do umożliwienia dodawania komentarzy. Druga odpowiedź wskazuje na operator alternatywny. W PHP nie istnieje operator alternatywny oznaczany przez '//' - operator alternatywny jest używany w kontekście konstrukcji kontrolnych, takich jak if, i nie ma z komentarzami nic wspólnego. Ostatnia odpowiedź odnosi się do operatora dzielenia całkowitego, co jest również nieprawdziwe. W PHP operator dzielenia całkowitego to 'intdiv()', a nie '//' - ten symbol używany jest do wprowadzania komentarzy. Zrozumienie tych różnic jest kluczowe dla efektywnego programowania w PHP i uniknięcia błędów w kodzie.

Pytanie 20

Po wydaniu polecenia użytkownik Jacek będzie mógł

GRANT SELECT, INSERT ON baza1.mojaTabela TO 'Jacek'@'localhost';
A. przeglądać dane w tabeli i wstawiać nowe dane.
B. usuwać dane z tabeli i przeglądać dane.
C. zmieniać strukturę tabeli i wstawiać nowe dane.
D. usuwać tabelę i tworzyć nową.
Twoja odpowiedź jest poprawna. Użytkownik Jacek po wydaniu polecenia SQL 'GRANT SELECT, INSERT ON baza1.mojaTabela TO 'Jacek'@'localhost';' zyskuje możliwość przeglądania (SELECT) oraz wstawiania (INSERT) danych do tabeli 'mojaTabela' znajdującej się w bazie danych 'baza1'. Jest to zgodne ze standardami SQL i dobrymi praktykami zarządzania uprawnieniami w systemach baz danych. Uprawnienie SELECT pozwala na odczyt danych z tabeli, co jest niezbędne do analizy danych, a uprawnienie INSERT umożliwia dodawanie nowych rekordów do tabeli, co jest kluczowe dla utrzymywania aktualności danych. Pamiętaj, że kontrola dostępu do danych jest kluczowym elementem zarządzania bazami danych, zarówno pod względem bezpieczeństwa, jak i zgodności z regulacjami prawnymi.

Pytanie 21

<form>
  <input type="email" id="addr" required>
  <input type="submit" value="Zapisz">
</form>
Na podstawie przedstawionego kodu formularza HTML można powiedzieć, że pole edycyjne:
A. może być puste.
B. nie powinno zawierać znaków numerycznych.
C. nie może być puste i wymaga wpisania tekstu ze znakiem @.
D. wymaga wpisania jedynie znaków alfanumerycznych.
Kod formularza, który został pokazany w pytaniu, wykorzystuje dwa mechanizmy walidacji wbudowane w HTML5: typ pola ustawiony na email oraz atrybut required. Jeśli się je dobrze rozumie, to łatwo odrzucić wszystkie błędne interpretacje. Spójrzmy na to bardziej od strony tego, co faktycznie robi przeglądarka. Pomysł, że pole może być puste, jest sprzeczny z działaniem atrybutu required. Ten atrybut wprost oznacza, że użytkownik musi coś wpisać. Jeżeli zostawi pole puste i kliknie przycisk „Zapisz”, przeglądarka zablokuje wysłanie formularza i wyświetli swój komunikat, np. „Wypełnij to pole”. To nie jest kwestia „dobrej praktyki”, tylko twardej reguły zapisanej w specyfikacji HTML. W praktyce to bardzo przydatne, bo od razu na froncie wymusza uzupełnienie danych. Stwierdzenie, że pole nie powinno zawierać znaków numerycznych, też jest błędne. Pole typu email dopuszcza cyfry, bo wiele poprawnych adresów e‑mail zawiera liczby, np. [email protected]. Przeglądarka nie ma żadnego zakazu cyfr w takim polu, patrzy tylko na ogólny format adresu. Nieprawidłowy jest też pogląd, że wymagane są „jedynie znaki alfanumeryczne”. Adres e‑mail zawiera zwykle kropki, znak @, czasem myślniki, podkreślenia i inne dopuszczalne znaki. Gdyby przeglądarka pozwalała tylko na litery i cyfry, większość realnych adresów zostałaby odrzucona. Walidacja typu email jest skoncentrowana na strukturze (część przed @, znak @, część po @), a nie na tak prymitywnym ograniczeniu jak „tylko litery i cyfry”. Typowy błąd myślowy przy takich pytaniach to mylenie różnych poziomów walidacji: jedni zakładają, że HTML w ogóle nie sprawdza formatu, inni z kolei wyobrażają sobie zbyt restrykcyjne reguły, które w praktyce by uniemożliwiły wpisanie normalnego adresu. Dobrym nawykiem jest patrzenie na to, co gwarantuje przeglądarka: w tym wypadku wymagane jest, żeby pole nie było puste (required) oraz żeby wpisany tekst przypominał adres e‑mail, czyli zawierał m.in. znak @ w odpowiednim miejscu. Wszystkie inne interpretacje wychodzą poza to, co naprawdę wynika z kodu formularza.

Pytanie 22

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. liczby wierszy, które zostały zwrócone przez kwerendę
C. długości tekstu w rekordach zwróconych przez kwerendę
D. wartości najmniejszej w kolumnie wynikowej kwerendy
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 23

Jakie polecenie umożliwia pokazanie konfiguracji serwera PHP, w tym między innymi informacji o: wersji PHP, systemie operacyjnym serwera oraz wartościach przedefiniowanych zmiennych?

A. print_r(ini_get_all());
B. phpcredits();
C. phpinfo();
D. echo phpversion();
Kiedy deweloperzy szukają sposobów na wyświetlenie konfiguracji serwera PHP, mogą łatwo pomylić różne funkcje, które mają różne zastosowania. Na przykład funkcja phpcredits() nie dostarcza informacji o konfiguracji serwera, lecz wyświetla informacje o twórcach PHP oraz licencjach. Jest to przydatne w kontekście weryfikacji historii rozwoju języka, ale nie dostarcza żadnych merytorycznych danych na temat aktualnej konfiguracji serwera czy środowiska. Z kolei echo phpversion() zwraca jedynie wersję zainstalowanego PHP, co jest informacją ograniczoną i nie daje pełnego obrazu konfiguracji, jak ma to miejsce w przypadku phpinfo(). print_r(ini_get_all()) z kolei zwraca tablicę wszystkich dostępnych ustawień konfiguracyjnych, ale nie formatuje ich w przejrzysty sposób, jak czyni to phpinfo(). Takie podejście, jak wykorzystanie print_r(), może prowadzić do trudności w interpretacji wyników, zwłaszcza w dużych projektach, gdzie trzeba szybko uzyskać dostęp do konkretnych informacji. Typowym błędem jest zakładanie, że każda z tych funkcji dostarcza takich samych lub porównywalnych informacji, co nie jest prawdą. Używanie niewłaściwej funkcji w sytuacji, gdy potrzebne są szczegółowe i kompleksowe informacje o konfiguracji serwera, może prowadzić do frustracji i opóźnień w pracy nad projektem. Kluczowym jest zrozumienie, że każda z wymienionych funkcji ma swoje specyficzne przeznaczenie i różne konteksty zastosowania.

Pytanie 24

W programie Audacity, podczas edytowania dźwięku pozyskanego z płyty analogowej, konieczne jest usunięcie pojedynczych trzasków typowych dla płyt winylowych. Jakie narzędzie jest do tego celu przeznaczone?

A. Usuwanie stukotu (Click Removal)
B. Normalizuj (Normalize)
C. Obwiednia (Envelope)
D. Redukcja szumu (Noise Reduction)
Wybór narzędzi takich jak 'Obwiednia (Envelope)', 'Normalizuj (Normalize)' oraz 'Redukcja szumu (Noise Reduction)' wskazuje na nieporozumienie dotyczące funkcji tych opcji w programie Audacity. Narzędzie 'Obwiednia' służy do dynamicznej regulacji głośności dźwięku w czasie, co nie ma zastosowania w przypadku usuwania pojedynczych trzasków. Chociaż może być użyteczne w kontekście ogólnej edycji utworu, nie jest odpowiednie do eliminacji krótkotrwałych zakłóceń. Z kolei 'Normalizuj' ma na celu podniesienie poziomu głośności całego nagrania do maksymalnego poziomu bez zniekształceń, co może skutkować wzmocnieniem trzasków zamiast ich eliminacji. Używanie tego narzędzia przed usunięciem trzasków może sprawić, że będą one bardziej wyraźne, co jest przeciwnym efektem do zamierzonego. 'Redukcja szumu' jest narzędziem, które usuwa szumy tła, a nie krótkotrwałe dźwięki, takie jak trzaski. Chociaż może być użyta w procesie poprawy jakości nagrania, nie jest ona w stanie skutecznie rozwiązać problemu z trzaskami, które mają inną charakterystykę. W praktyce, nieodpowiedni wybór narzędzi prowadzi do nieefektywnej obróbki dźwięku, co może skutkować niezadowalającą jakością finalnego nagrania.

Pytanie 25

Aby ustanowić relację jeden do wielu, w tabeli reprezentującej stronę "wiele", konieczne jest zdefiniowanie

A. klucza obcego odnoszącego się do klucza obcego tabeli po stronie "jeden"
B. klucza obcego wskazującego na klucz podstawowy tabeli po stronie "jeden"
C. klucza podstawowego wskazującego na klucz podstawowy tabeli po stronie "jeden"
D. klucza sztucznego odnoszącego się do kluczy podstawowych obydwu tabel
Definiowanie relacji w bazach danych to dosyć skomplikowana sprawa. Jakby nie patrzeć, jak zrobisz coś źle z kluczami obcymi czy podstawowymi, to mogą być duże problemy z danymi. Klucz sztuczny, który odnosi się do kluczy podstawowych w obu tabelach, może wydawać się prosty, ale nie rozwiązuje faktycznego problemu, którym jest jasna relacja między danymi. To wprowadza dodatkowe zamieszanie, a to nie jest dobra praktyka. Jak zdefiniujesz klucz obcy, który wskazuje na inny klucz obcy w tabeli po stronie 'jeden', no to może być tylko mętlik, bo ciężko wtedy utrzymać spójność danych. Klucz podstawowy, który wskazuje na klucz podstawowy z tabeli po stronie 'jeden', to również zły wybór, bo klucz podstawowy ma być unikalny dla każdej tabeli. Kluczowe jest, żeby klucze obce były używane w odpowiedni sposób, bo inaczej struktura danych robi się nieczytelna i trudna do zarządzania, a to na pewno nie idzie w parze z dobrym projektowaniem baz danych.

Pytanie 26

W zaprezentowanym fragmencie kodu HTML zdefiniowano pole input, które można opisać jako

<input type="password" name="pole">
A. zawiera domyślny tekst „pole”
B. ukrywa znaki, które zostały do niego wprowadzone
C. dopuszcza jedynie wprowadzanie wartości liczbowych
D. pokazuje znaki, które zostały do niego wprowadzone
W formularzach HTML często spotykamy różne typy pól input, mające specyficzne zastosowania. Pole input z atrybutem type="text" pozwala na wpisywanie dowolnego tekstu, co sprawia, że jest ono bardziej elastyczne, ale nie zapewnia żadnej ochrony dla wprowadzanych danych. Problematyczne mogą być sytuacje, gdzie takie pole jest używane dla danych wrażliwych, ponieważ nie oferuje ono żadnego poziomu prywatności. Wprowadzenie domyślnego tekstu w polu input jest realizowane poprzez atrybut value, który ustawia początkową wartość, widoczną dla użytkownika. To rozwiązanie bywa mylone z placeholderem, który służy jako podpowiedź wewnątrz pola, ale nie jest domyślną wartością samego pola. Input o typie "number" w HTML ogranicza wprowadzane dane wyłącznie do liczb, co jest przydatne w przypadku pól wymagających wartości liczbowych, takich jak wiek czy ilość. Choć to ograniczenie jest zasadne i chroni przed błędami użytkownika, nie ma zastosowania w kontekście ochrony prywatności danych. Typ password natomiast nie tylko ogranicza wprowadzone dane, ale również ukrywa je przed wglądem, co jest kluczowe dla zapewnienia bezpieczeństwa. Tym samym, zrozumienie różnic w funkcjonalności i zastosowaniu tych różnych typów pól pozwala na lepsze projektowanie bezpiecznych i funkcjonalnych formularzy w aplikacjach webowych. Błędem jest zakładanie, że każde pole input domyślnie zabezpiecza dane, co często prowadzi do niepoprawnych implementacji, które mogą narazić użytkowników na ryzyko wycieku danych.

Pytanie 27

Który typ danych SQL należy użyć, jako optymalny, do zapisania numeru PESEL?

A. TINYINT
B. BLOB
C. CHAR(11)
D. FLOAT(11)
W przypadku numeru PESEL kluczowe jest zrozumienie, że mamy do czynienia z identyfikatorem, a nie z liczbą, na której będziemy wykonywać obliczenia. To rozróżnienie jest bardzo ważne w projektowaniu baz danych, bo prowadzi do innego doboru typów danych. Częsty błąd polega na tym, że skoro PESEL składa się tylko z cyfr, to „na logikę” powinien być przechowywany jako typ liczbowy. W praktyce to podejście generuje więcej problemów niż pożytku. Typ TINYINT jest zdecydowanie zbyt mały – w większości systemów pozwala przechować zakres od 0 do 255 lub podobny, a PESEL ma 11 cyfr, więc nawet nie ma fizycznej możliwości, żeby taki typ pomieścił pełną wartość. To jest po prostu zupełnie nieadekwatny zakres. Z kolei użycie typu zmiennoprzecinkowego, takiego jak FLOAT(11), jest jeszcze gorszym pomysłem. Typ FLOAT służy do przybliżonego zapisu liczb rzeczywistych i może wprowadzać błędy zaokrągleń. W przypadku identyfikatora, który musi być zapisany dokładnie co do cyfry, jakikolwiek błąd reprezentacji jest niedopuszczalny. Dodatkowo typy zmiennoprzecinkowe nie gwarantują zachowania wszystkich cyfr w sposób bezstratny przy dużych wartościach, a PESEL ma ich 11. Można też natknąć się na problem utraty zer wiodących, bo liczby w SQL nie „pamiętają” formatu, tylko samą wartość liczbową. BLOB natomiast służy do przechowywania danych binarnych: plików, obrazów, dokumentów, zaszyfrowanych bloków danych. Używanie BLOB‑a do trzymania prostego tekstowego identyfikatora jest sprzeczne z dobrymi praktykami projektowania. Utrudnia to indeksowanie, wyszukiwanie, sortowanie i walidację, a do tego zużywa niepotrzebnie więcej zasobów. W profesjonalnych projektach baz danych przyjmuje się zasadę: dane tekstowe o znanej długości przechowujemy w typach znakowych (CHAR/VARCHAR), liczby do obliczeń w typach numerycznych, a typy binarne zostawiamy na pliki i dane nieustrukturyzowane. Błędne odpowiedzi wynikają zwykle z automatycznego kojarzenia „cyfry = liczba” i z braku rozróżnienia między wartością liczbową a identyfikatorem, który tylko składa się z cyfr, ale nie jest przeznaczony do liczenia. Właśnie dlatego optymalnym i zgodnym z dobrymi praktykami wyborem dla PESEL jest typ znakowy o stałej długości, czyli CHAR(11).

Pytanie 28

Jaką metodę zastosowano do dodania arkusza stylów do dokumentu HTML w pokazanym kodzie?

Ilustracja do pytania
A. Styl wpisany, lokalny
B. Styl zewnętrzny
C. Styl alternatywny, zewnętrzny
D. Styl wewnętrzny
Styl zewnętrzny to metoda dołączania arkusza stylów do dokumentu HTML poprzez linkowanie pliku CSS zewnętrznego w sekcji head dokumentu. Jest to najbardziej powszechna i zalecana metoda stylizacji dużych projektów ponieważ pozwala na oddzielenie logiki prezentacyjnej od struktury dokumentu HTML co ułatwia zarządzanie i ponowne wykorzystanie kodu. Tymczasem styl wewnętrzny umieszczany jest w sekcji head jako blok <style> i stosuje się go gdy chcemy zdefiniować style dla całego dokumentu bez tworzenia dodatkowego pliku CSS. Jest to rozwiązanie kompromisowe ale wciąż nie tak elastyczne jak style zewnętrzne. Styl alternatywny zewnętrzny to mechanizm dołączania alternatywnych arkuszy stylów umożliwiający użytkownikowi wybór różnych stylów podczas przeglądania strony jednak nie jest to to samo co styl wpisany lokalny. Błędne myślenie może polegać na utożsamianiu stylów wewnętrznych z wpisanymi ze względu na ich lokalny charakter lecz zasadniczo różnią się one zakresem działania i sposobem implementacji. Styl wpisany jako atrybut elementu HTML działa tylko na ten konkretny element zaś style wewnętrzne i zewnętrzne mogą wpływać na wiele elementów jednocześnie co daje większą kontrolę i spójność w projektowaniu strony. Zrozumienie tych różnic jest kluczowe dla tworzenia efektywnych i dobrze zarządzanych aplikacji webowych. Dążenie do modularności i ponownego użycia kodu jest jedną z fundamentalnych zasad dobrych praktyk w branży.

Pytanie 29

W systemie baz danych sklepu znajdują się dwie tabele połączone relacją: produkty oraz oceny. Tabela oceny zawiera dowolną liczbę ocen wystawionych przez klientów dla konkretnego produktu, opisaną poprzez pola: id, ocena (pole numeryczne), produktID (klucz obcy). Aby uzyskać maksymalną ocenę dla produktu o ID wynoszącym 10, należy wykorzystać zapytanie

A. MAX SELECT ocena FROM oceny WHERE produktID = 10;
B. SELECT MAX COUNT(ocena) FROM oceny WHERE produktID = 10;
C. COUNT MAX SELECT ocena FROM oceny WHERE produktID = 10;
D. SELECT MAX(ocena) FROM oceny WHERE produktID = 10;
Odpowiedź 'SELECT MAX(ocena) FROM oceny WHERE produktID = 10;' jest poprawna, ponieważ wykorzystuje funkcję agregującą MAX, która zwraca największą wartość w danej kolumnie. W kontekście tego zapytania, funkcja MAX jest stosowana do kolumny 'ocena' w tabeli 'oceny', a dodatkowy warunek 'WHERE produktID = 10' ogranicza wyniki do tylko tych ocen, które są związane z produktem o ID równym 10. To podejście jest zgodne z najlepszymi praktykami SQL, które zalecają korzystanie z funkcji agregujących dla wydobywania statystyk z danych. W praktyce, takie zapytania są niezwykle ważne w analizie danych, na przykład do oceny jakości produktów, co może wpłynąć na decyzje biznesowe. Dzięki umiejętności konstruowania takich zapytań, analitycy mogą w łatwy sposób uzyskać kluczowe informacje niezbędne do strategii marketingowych oraz poprawy jakości obsługi klienta.

Pytanie 30

W formularzu dokumentu PHP znajduje się pole <input name="im" />. Po wpisaniu przez użytkownika ciągu „Janek”, aby dodać wartość tego pola do bazy danych, w tablicy $_POST będzie obecny element

A. Janek z kolejnym numerem indeksu
B. Janek z indeksem im
C. im z kolejnym numerem indeksu
D. im z indeksem Janek
Odpowiedzi, które nie są poprawne, bazują na nieprawidłowych założeniach dotyczących sposobu, w jaki PHP przetwarza dane z formularzy. Pierwsza z niepoprawnych odpowiedzi sugeruje, że w tablicy $_POST istnieje element o kluczu 'im' z indeksem 'Janek'. W rzeczywistości, kluczem jest nazwa pola, a wartością jest to, co zostało wprowadzone przez użytkownika, więc takie połączenie klucza i wartości jest mylące. W drugiej niepoprawnej opcji mowa o 'Janek' jako kluczu, co również jest błędne, ponieważ 'Janek' jest wartością, a nie kluczem. Klucz w tablicy $_POST to zawsze nazwa pola formularza, czyli w tym przypadku 'im', a jego wartość to 'Janek'. Trzecia niepoprawna odpowiedź sugeruje, że klucz 'im' miałby być skojarzony z kolejnym numerem indeksu. To również jest niewłaściwe, ponieważ PHP nie dodaje automatycznie numerów indeksów do kluczy tablic, a klucze pozostają takie same, jak nazwy w formularzu. W każdej sytuacji nazwa pola pozostaje kluczem, co jest istotnym elementem przetwarzania danych w PHP.

Pytanie 31

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. tr:active { background-color: Pink; }
B. td, th { background-color: Pink; }
C. tr:hover { background-color: Pink; }
D. tr { background-color: Pink; }
Poprawny selektor to tr:hover { background-color: Pink; }, bo dokładnie opisuje sytuację pokazaną na filmie: efekt pojawia się dopiero po najechaniu kursorem na cały wiersz tabeli. Pseudo-klasa :hover w CSS służy właśnie do definiowania stylów w momencie, gdy użytkownik „najeżdża” myszką na dany element. Jeśli więc chcemy, żeby podświetlał się cały rząd tabeli, logiczne i zgodne z dobrymi praktykami jest przypięcie efektu do znacznika tr, a nie do pojedynczych komórek. W praktyce taki zapis stosuje się bardzo często w interfejsach webowych: w panelach administracyjnych, listach zamówień, tabelach z uczniami, produktami, logami systemowymi itd. Dzięki temu użytkownik łatwiej śledzi, który wiersz właśnie ogląda. To niby detal, ale z punktu widzenia UX robi sporą różnicę. Z mojego doświadczenia to jeden z tych prostych trików CSS, które od razu poprawiają „odczuwalną” jakość strony. Ważne jest też to, że :hover jest częścią standardu CSS (opisane m.in. w specyfikacji CSS Selectors Level 3/4) i działa w praktycznie wszystkich współczesnych przeglądarkach. Nie trzeba do tego żadnego JavaScriptu, żadnych skomplikowanych skryptów – czysty CSS. Dobrą praktyką jest również używanie bardziej stonowanych kolorów niż Pink w prawdziwych projektach, np. #f5f5f5 albo lekki odcień niebieskiego, tak żeby kontrast był czytelny i nie męczył wzroku. Warto też pamiętać, że podobny mechanizm możesz zastosować na innych elementach: np. a:hover dla linków, button:hover dla przycisków czy nawet div:hover dla całych kafelków w layoutach. Kluczowe jest to, żeby pseudo-klasa :hover była przypięta dokładnie do tego elementu, który ma reagować na interakcję użytkownika.

Pytanie 32

GRANT CREATE, ALTER ON sklep.* TO adam; Zakładając, że użytkownik adam nie dysponował wcześniej żadnymi uprawnieniami, to polecenie SQL przyzna mu prawa jedynie do

A. wstawiania oraz modyfikacji danych we wszystkich tabelach bazy sklep
B. wstawiania oraz modyfikacji danych w tabeli sklep
C. tworzenia oraz modyfikacji struktury w tabeli sklep
D. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
Polecenie SQL 'GRANT CREATE, ALTER ON sklep.* TO adam;' przyznaje użytkownikowi adam prawa do tworzenia i modyfikowania struktury wszystkich tabel w bazie danych o nazwie 'sklep'. W kontekście zarządzania bazami danych, przyznawanie takich uprawnień jest kluczowe dla realizacji zadań związanych z projektowaniem i rozbudową bazy. Przykładowo, gdyby adam potrzebował dodać nową kolumnę do istniejącej tabeli lub utworzyć nową tabelę, mógłby to zrobić dzięki tym prawom. Z perspektywy bezpieczeństwa, nadawanie takich uprawnień powinna być starannie przemyślane, aby uniknąć nieautoryzowanych zmian w strukturze bazy. W praktyce, w sytuacjach, gdy wiele osób współpracuje nad projektem, zaleca się przyznawanie minimalnych uprawnień, które są niezbędne do wykonania określonych zadań. W związku z tym, wykorzystanie polecenia GRANT w sposób odpowiadający wymaganiom projektu jest najlepszą praktyką w zakresie administracji bazami danych.

Pytanie 33

Który z czterech głównych kolorów w modelu barw CMYK jest

A. pomarańczowy
B. brązowy
C. zielony
D. czarny
Zielony, brązowy i pomarańczowy nie są podstawowymi kolorami modelu CMYK, co można wyjaśnić na podstawie zasad działania tego modelu barw. Zielony, będący kolorem wtórnym, powstaje z połączenia cyjanu i żółtego, co oznacza, że nie jest niezależnym kolorem w tym systemie. Pomarańczowy również jest kolorem wtórnym, tworzonym przez mieszanie czerwieni i żółtego, co sprawia, że brakuje mu statusu podstawowego koloru w kontekście druku. Brązowy natomiast jest kolorem, który powstaje z kombinacji różnych kolorów podstawowych, takich jak czerwony, żółty i czarny, co również wyklucza go z grona kolorów podstawowych. W modelu CMYK kluczowe jest zrozumienie, że kolory są tworzone poprzez subtractive mixing, co oznacza, że każdy dodany kolor absorbuje pewne długości fal świetlnych, co w efekcie zmienia postrzegany kolor. Z tego powodu, kolory takie jak zielony, brązowy i pomarańczowy, które są wynikiem mieszania, nie mogą być uznawane za podstawowe elementy tego modelu. W kontekście druku, poprawne zastosowanie kolorów podstawowych jest niezbędne dla uzyskania oczekiwanych rezultatów wizualnych, dlatego ważne jest, aby znać ich właściwości i sposób, w jaki wpływają na finalny efekt druku.

Pytanie 34

Zapytanie MySQL przedstawione poniżej ma na celu

ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL;
A. usunąć kolumnę tytul z tabeli ksiazki
B. zmienić typ kolumny tytul w tabeli ksiazki
C. dodać kolumnę tytul do tabeli ksiazki
D. zmienić nazwę kolumny w tabeli ksiazki
Odpowiedź omawiająca usunięcie kolumny nie dotyczy polecenia ALTER TABLE w kontekście MODIFY. Usunięcie kolumny wymagałoby użycia polecenia DROP COLUMN. To powszechny błąd, wynikający z mylenia tej składni z innymi możliwościami ALTER TABLE, które mogą zmieniać strukturę tabeli przez dodawanie lub usuwanie kolumn. Dodanie kolumny do tabeli za pomocą polecenia ALTER TABLE wymagałoby użycia składni ADD COLUMN, a nie MODIFY. Jest to często mylone, ponieważ oba polecenia ingerują w strukturę tabeli, jednak pełnią zupełnie inne funkcje. Zmiana nazwy kolumny z kolei wymaga użycia polecenia CHANGE, które pozwala na jednoczesną zmianę nazwy i typu kolumny. Nieprawidłowe zrozumienie różnic między tymi operacjami może prowadzić do błędów w projektowaniu bazy danych, co podkreśla znaczenie dokładnego zrozumienia składni SQL. Prawidłowe użytkowanie ALTER TABLE wymaga ścisłej znajomości dostępnych opcji i ich zastosowań, co jest kluczowe dla skutecznego zarządzania strukturą baz danych.

Pytanie 35

W języku PHP symbol "//" oznacza

A. operator dzielenia całkowitego.
B. początek programu.
C. początek komentarza jednoliniowego
D. operator alternatywy.
Wybór błędnych odpowiedzi może się brać z niezrozumienia podstawowych zasad PHP. Na przykład, jeśli myślisz, że "//" oznacza początek skryptu, to trochę się mylisz. Każdy skrypt PHP zaczyna się od tagu "<?php", a nie od "//". Użycie operatora alternatywy w jednej z odpowiedzi też jest niepoprawne, bo w PHP do tego używamy "||" lub "?:". Kolejna sprawa to operator dzielenia całkowitego, który w PHP tak naprawdę nie istnieje jako oddzielny operator; dzielenie robimy za pomocą " /", a do dzielenia całkowitego używamy funkcji "floor()" albo operatora "intdiv()". Wiele osób myli różne operacje, co prowadzi do nieporozumień. Dlatego zrozumienie, jak działają komentarze w kodzie, jest ważne; one dają kontekst, nie wpływają na logiczne działanie skryptu. Warto, żeby programiści wiedzieli, że komentarze nie zmieniają wykonania kodu, a raczej mają na celu ułatwienie pracy nad projektem, co jest zgodne z dobrymi praktykami w branży.

Pytanie 36

Do stworzenia układu strony z trzema kolumnami umieszczonymi obok siebie, można wykorzystać styl CSS

A. .kolumny{ clear: both; height: 33%; }
B. .kolumny{ float: right; height: 33%; }
C. .kolumny{ float: left; width: 40%;}
D. .kolumny{ float: left; width: 33%; }
Aby stworzyć szablon strony internetowej z trzema kolumnami obok siebie, kluczowe jest zastosowanie odpowiednich właściwości CSS. Właściwość 'float' z wartością 'left' pozwala na przesunięcie elementów w lewo, co umożliwia ich równoległe wyświetlanie w poziomie. Ustawienie szerokości każdej kolumny na 33% zapewnia, że wszystkie trzy kolumny zajmą równą część dostępnej przestrzeni w kontenerze. To podejście jest zgodne z zasadami projektowania responsywnego, umożliwiając dostosowanie układu do różnych rozmiarów ekranów. Przykładowo, definiując klasę .kolumny w CSS jako '.kolumny{ float: left; width: 33%; }', uzyskujemy pożądany efekt trzech kolumn. Warto również zdefiniować kontener dla kolumn, aby uniknąć problemów z 'clearfix'. Takie podejście wspiera standardy W3C dotyczące budowy stron internetowych oraz ułatwia przyszłe modyfikacje w układzie. Dodatkowo, istotne jest, aby pamiętać o odpowiednim 'clearfix', aby kontener dostosował swoje wymiary do elementów wewnętrznych, co zapobiega problemom z układem.

Pytanie 37

Kod CSS można włączyć do dokumentu HTML, używając znacznika

A. <head>
B. <body>
C. <style>
D. <meta>
Wybór znaczników <head>, <meta> lub <body> jako miejsca do umieszczania kodu CSS jest nieprawidłowy z kilku powodów. Znacznik <head> jest przestrzenią przeznaczoną do przechowywania metadanych i odniesień do zasobów zewnętrznych, takich jak pliki CSS, a nie do bezpośredniego osadzania stylów. Chociaż można w nim umieszczać inne znaczniki, takie jak <style>, nie jest to jego podstawowe przeznaczenie. Znacznik <meta> służy do definiowania metadanych dokumentu, takich jak zestaw znaków, informacje o autorze czy opis strony, co również nie ma związku z osadzaniem stylów CSS. Z tego powodu umieszczanie kodu CSS w <meta> jest nieodpowiednie. Znacznik <body> jest przeznaczony do zawartości strony, która ma być wyświetlana użytkownikowi, a nie do definiowania stylów. Umieszczenie kodu CSS w <body> może prowadzić do chaosu w organizacji kodu oraz obniżenia wydajności, gdyż przeglądarki muszą analizować style po renderowaniu treści. Kluczowe błędy myślowe w takich wyborach wynikają z nieporozumienia na temat funkcji poszczególnych znaczników HTML oraz ich roli w renderowaniu strony internetowej. Właściwe stosowanie znaczników i standardów webowych jest fundamentem efektywnego projektowania stron, co podkreśla znaczenie edukacji w tym zakresie.

Pytanie 38

Jaką klauzulę należy wykorzystać w instrukcji CREATE TABLE w SQL, by dane pole rekordu pozostawało wypełnione?

A. NOT NULL
B. NULL
C. DEFAULT
D. CHECK
Odpowiedzi takie jak DEFAULT i CHECK sugerują nieporozumienia dotyczące funkcji tych klauzul. Klauzula DEFAULT jest używana do określenia wartości domyślnej dla pola, gdy nie została dostarczona żadna wartość. Nie rozwiązuje to problemu pustych danych, ponieważ nadal umożliwia dodawanie rekordów bez wartości, które są ostatecznie zastępowane przez wartość domyślną. Z kolei klauzula CHECK umożliwia wprowadzenie dodatkowych warunków walidacyjnych dla danych, ale nie blokuje możliwości wprowadzenia wartości NULL. Nie jest to zatem odpowiednie rozwiązanie, gdy celem jest zapewnienie, aby pole nigdy nie pozostawało puste. Klauzula NULL, z drugiej strony, nie ma zastosowania w kontekście tego pytania, gdyż definiuje ona, że pole może zawierać wartości NULL. W praktyce takie podejście prowadzi do braku wymuszenia wprowadzania danych, co może być szkodliwe dla integralności bazy danych. Te zrozumienia błędnie wpływają na jakość projektowania baz danych, gdyż niewłaściwe stosowanie klauzul może prowadzić do problemów z danymi, które są trudne do naprawienia w późniejszym etapie rozwoju systemu.

Pytanie 39

Który z poniższych formatów plików graficznych wspiera przejrzystość?

A. PNG
B. JPG
C. NEF
D. BMP
Format PNG (Portable Network Graphics) jest jednym z najpopularniejszych formatów plików graficznych obsługujących przezroczystość. Jego główną zaletą jest możliwość zachowania kanału alfa, który umożliwia tworzenie obrazów z przezroczystymi elementami. PNG wykorzystuje bezstratną kompresję, co oznacza, że jakość obrazu nie ulega pogorszeniu podczas zapisywania i otwierania pliku. Format ten jest szczególnie ceniony w aplikacjach internetowych, ponieważ pozwala na uzyskanie estetycznych efektów, takich jak cienie, przezroczystość i delikatne przejścia kolorów. Warto również zauważyć, że PNG obsługuje głębię kolorów do 48 bitów, co umożliwia uzyskanie bogatych i szczegółowych obrazów. Standard PNG został opracowany w 1996 roku jako alternatywa dla formatu GIF, który był ograniczony do 256 kolorów oraz nie obsługiwał przezroczystości w sposób, który byłby zadowalający dla projektantów. Dzięki swoim właściwościom, PNG jest szeroko stosowany w grafice komputerowej, w tym w tworzeniu logo, ikon oraz w elementach interfejsów użytkownika, a także w fotografii cyfrowej, gdzie zachowanie jakości jest kluczowe.

Pytanie 40

Wskaż zapis stylu CSS formatujący punktor list numerowanych na wielkie cyfry rzymskie, a list punktowanych na kwadraty.

A. ol { list-style-type: upper-alpha; }
   ul { list-style-type: disc; }

B. ol { list-style-type: square; }
   ul { list-style-type: upper-roman; }

C. ol { list-style-type: disc; }
   ul { list-style-type: upper-alpha; }

D. ol { list-style-type: upper-roman; }
   ul { list-style-type: square; }
A. A.
B. D.
C. B.
D. C.
Niestety, twoja odpowiedź nie jest prawidłowa. Wydaje się, że mogło wystąpić pewne nieporozumienie w zakresie formatowania list w CSS. Właściwość, której prawdopodobnie nie zrozumiałeś to list-style-type. Jest to kluczowa właściwość do definiowania wyglądu punktora list. W tym konkretnym pytaniu, dla listy numerowanej (ol) powinniśmy użyć wartości 'upper-roman', która odpowiada wielkim cyfrom rzymskim. Dla listy punktowanej (ul) powinniśmy użyć wartości 'square', co daje efekt punktów w formie kwadratów. Pamiętaj, że zrozumienie i umiejętność manipulowania różnymi właściwościami CSS jest kluczem do tworzenia atrakcyjnych i funkcjonalnych stron internetowych. Spróbuj ponownie, kiedy tylko będziesz gotowy!