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: 12 maja 2026 12:36
  • Data zakończenia: 12 maja 2026 12:50

Egzamin niezdany

Wynik: 18/40 punktów (45,0%)

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

Aby sformatować wszystkie obrazy w akapicie przy użyciu stylów CSS, należy zastosować selektor

A. p # img
B. p.img
C. p + img
D. p img
Żeby odpowiednio sformatować wszystkie obrazki w akapicie za pomocą CSS, najlepiej użyć selektora 'p img'. Ten selektor działa na wszystkie obrazki <img>, które są bezpośrednio w akapitach. Po prostu chodzi o to, że styl będzie zastosowany tylko do tych obrazków, które są w <p>. Na przykład, jeśli mamy coś takiego: <p><img src='obraz.jpg' alt='Obraz'></p>, to dzięki 'p img' w CSS możemy ustawić ich szerokość na 100% i dodać marginesy. Takie podejście świetnie działa w responsywnym projektowaniu. Warto też pamiętać o dostępności i SEO, dlatego dobrze by było dodać atrybuty alt do każdego obrazka. Używanie selektorów CSS w ten sposób jest zgodne z praktykami W3C, więc nasz kod będzie bardziej czytelny i łatwiejszy w utrzymaniu.

Pytanie 2

Do jakich zadań można wykorzystać program FileZilla?

A. sprawdzania poprawności strony internetowej
B. publikacji strony internetowej
C. analizowania skryptu na stronie
D. kompilowania skryptu na stronie
FileZilla to popularny klient FTP (File Transfer Protocol), który umożliwia przesyłanie plików między lokalnym komputerem a serwerem internetowym. Jego głównym zastosowaniem jest publikacja stron internetowych, co oznacza, że dzięki FileZilla można łatwo przenieść pliki HTML, CSS, JavaScript oraz inne zasoby na serwer, gdzie strona stanie się dostępna w Internecie. Przykładowo, jeśli stworzyłeś stronę w lokalnym środowisku, FileZilla pozwala na połączenie się z serwerem docelowym, a następnie na przesłanie wszystkich niezbędnych plików. Dobre praktyki branżowe zalecają również zarządzanie wersjami i regularne aktualizacje witryn, a FileZilla wspiera te procesy, umożliwiając łatwe synchronizowanie lokalnych katalogów z zawartością serwera. Dodatkowo, FileZilla obsługuje różne protokoły, takie jak SFTP czy FTPS, co zwiększa bezpieczeństwo transferu danych. Właściwe korzystanie z tego narzędzia jest kluczowe dla zapewnienia prawidłowego działania witryn oraz ich efektywnej publikacji.

Pytanie 3

Wykonanie zapytania SQL: DELETE FROM mieszkania WHERE status=1; spowoduje usunięcie

A. tabel, w których pole status ma wartość 1, z bazy danych mieszkania
B. tabeli mieszkania w bazie danych
C. pola o nazwie status w tabeli mieszkania
D. rekordów, gdzie pole status ma wartość 1, z tabeli mieszkania
Użycie kwerendy SQL: DELETE FROM mieszkania WHERE status=1; jest poprawne, ponieważ polecenie DELETE ma na celu usunięcie rekordów z określonej tabeli, w tym przypadku z tabeli mieszkania. Klauzula WHERE filtruje te rekordy, które mają wartość pola status równą 1. To podejście jest zgodne z zasadami zarządzania danymi, które sugerują, że operacje usuwania powinny być przeprowadzane z użyciem odpowiednich filtrów, aby zminimalizować ryzyko przypadkowego usunięcia niezamierzonych danych. Na przykład, jeśli w tabeli mieszkania mamy 1000 rekordów, a tylko 150 z nich ma status równy 1, to po wykonaniu tej kwerendy usunięte zostaną dokładnie te 150 rekordów, a pozostałe pozostaną nienaruszone. Dobrą praktyką jest również tworzenie kopii zapasowych danych przed wykonaniem operacji usuwania, aby móc je przywrócić w razie potrzeby. Kwerendy DELETE są niezwykle przydatne w zarządzaniu bazami danych, zwłaszcza w sytuacjach, gdzie wymagana jest aktualizacja danych lub usunięcie nieaktualnych informacji.

Pytanie 4

Jak wygląda poprawny zapis znaczników, który jest zgodny z normami języka XHTML i odpowiada za łamanie linii?

A. </ br>
B. <br/>
C. <br/>
D. </br/>
Zapis znacznika </ br> jest niepoprawny, ponieważ nie można w ten sposób zamknąć znacznika, który nie ma zawartości. W XHTML wszystkie tagi muszą być poprawnie sformatowane, a takie umieszczenie spacji w znaczniku zamknięcia oraz użycie nieodpowiedniego formatu są całkowicie niezgodne z wymaganiami standardów. Kolejną niepoprawną koncepcją jest użycie </br/> - chociaż syntaktyczna forma jest bliska poprawnej, znaczniki otwierające i zamykające muszą mieć odpowiednie konteksty. W przypadku znaczników samozamykających się, takich jak <br/>, nie ma potrzeby umieszczania pary znaczników, ponieważ ich funkcjonalność polega na wstawieniu łamania linii, a nie na wytwarzaniu dodatkowego bloku. Ostatnią z wymienionych odpowiedzi, <br>, również nie jest zgodna z odpowiednim formatowaniem XHTML, ponieważ brakuje ukośnika, co czyni go niepoprawnym w kontekście stricte przestrzegania standardu. Podstawowym błędem w myśleniu, który prowadzi do tych niepoprawnych wniosków, jest niewłaściwe zrozumienie zasady samozamykania znaczników oraz ich roli w strukturze dokumentu HTML. Ignorowanie zasadności i standardów tworzenia HTML prowadzi do wielu problemów z interpretacją kodu przez różne środowiska oraz przeglądarki, co wpływa na ostateczną jakość i dostępność stron internetowych.

Pytanie 5

Który efekt został zaprezentowany na filmie?

A. Zmiana jasności zdjęć.
B. Zmniejszenie kontrastu zdjęcia.
C. Zwiększenie ostrości zdjęcia.
D. Przenikanie zdjęć.
W tym zadaniu łatwo pomylić kilka różnych rodzajów operacji na obrazie, bo wszystkie jakoś „zmieniają wygląd zdjęcia”, ale działają zupełnie inaczej. Efekt pokazany na filmie to przenikanie dwóch zdjęć w czasie, czyli animowane przejście między jednym obrazem a drugim. Kluczowa cecha: widzimy jednocześnie dwa zdjęcia, jedno stopniowo zanika, a drugie stopniowo się pojawia. To nie jest typowa operacja edycyjna na pojedynczym pliku graficznym, tylko efekt animacyjny, często wykorzystywany w pokazach slajdów, sliderach na stronach WWW i w montażu wideo. Zmiana jasności zdjęć to zupełnie inny rodzaj przetwarzania. Jasność modyfikuje poziom luminancji całego obrazu lub jego fragmentów – obraz staje się ciemniejszy albo jaśniejszy, ale dalej jest to to samo zdjęcie. Nie pojawia się nowe, drugie zdjęcie, nie ma nakładania dwóch kadrów. W programach do grafiki mamy to jako „Brightness”, „Exposure” czy „Levels”. Jeśli na filmie widać, że jeden obraz przechodzi płynnie w inny, to nie jest korekta jasności, tylko przejście między dwiema warstwami. Podobnie z ostrością – zwiększenie ostrości polega na podbiciu kontrastu na krawędziach, żeby szczegóły wyglądały wyraźniej. W praktyce używa się filtrów typu Unsharp Mask, Smart Sharpen albo algorytmów wyostrzania w czasie rzeczywistym. Obraz przed i po wyostrzeniu to ciągle ta sama klatka, tylko z innym przetworzeniem detali, nie ma efektu zanikania jednego zdjęcia i pojawiania się drugiego. Zmniejszenie kontrastu to kolejna korekta globalna, która spłaszcza różnice między jasnymi a ciemnymi partiami obrazu. Zdjęcie robi się bardziej „szare”, mniej dynamiczne. Znowu – cały czas pracujemy na jednym ujęciu, bez miksowania dwóch fotografii. Typowym błędem myślowym przy takich pytaniach jest to, że skoro coś się „zmienia w czasie”, to musi chodzić o jakąś regulację parametrów typu jasność czy kontrast. Tymczasem w efektach multimedialnych bardzo często operujemy na wielu warstwach – dwa obrazy, dwie klatki wideo – i animujemy ich wzajemną przezroczystość. Właśnie to jest esencją przenikania zdjęć i odróżnia je od zwykłych korekt obrazu.

Pytanie 6

Który z zaprezentowanych kodów HTML sformatuje tekst zgodnie z podanym wzorem?
Uwaga: słowo "stacji" jest napisane większą czcionką niż pozostałe wyrazy w tej linijce)

Lokomotywa

Stoi na stacji lokomotywa ...

A. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji</big> lokomotywa ...</p>
B. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji lokomotywa ...</p>
C. <p><small>Lokomotywa</small></p> <p>Stoi na <big>stacji<big> lokomotywa ...</p>
D. <h1>Lokomotywa</h1> <p>Stoi na <big>stacji</big> lokomotywa ...</p>
W zaprezentowanych błędnych rozwiązaniach widać kilka typowych problemów z HTML-em: niepełne zamykanie znaczników, obejmowanie tagiem zbyt dużego fragmentu tekstu oraz mylenie roli nagłówków z innymi elementami formatowania. Jeżeli znacznik <big> obejmuje więcej niż powinien, na przykład całe wyrażenie „stacji lokomotywa ...”, to efekt wizualny nie odpowiada wzorcowi – powiększony zostaje nie tylko jeden wyraz, ale cała reszta, co psuje zamierzony wygląd. To jest częsty błąd: zaznaczenie zbyt szerokiego fragmentu tekstu zamiast dokładnie tego słowa, które ma być wyróżnione. Drugi typ problemu to brak zamknięcia znacznika, jak w przypadku użycia <big> bez odpowiadającego mu </big>. Z punktu widzenia specyfikacji HTML takie konstrukcje są niepoprawne, a choć współczesne przeglądarki próbują „naprawiać” kod, skutki bywają nieprzewidywalne: część tekstu może być niechcący powiększona albo cała struktura akapitu zostanie zinterpretowana inaczej. Do tego dochodzi mylenie semantyki: nagłówek <h1> służy do oznaczania tytułu sekcji czy strony, a nie do przypadkowego pomniejszania czy powiększania tekstu. Używanie <small> w miejscu, gdzie w treści powinien wystąpić nagłówek, zaburza hierarchię dokumentu i szkodzi dostępności, bo czytniki ekranu i roboty wyszukiwarek mocno opierają się na strukturze nagłówków. Moim zdaniem warto wyrobić sobie nawyk: najpierw poprawna, logiczna struktura (h1, p, itd.), a dopiero potem delikatne wyróżnianie fragmentów, dokładnie obejmując tagami tylko te słowa, które mają być zmienione. W nowoczesnej praktyce webowej zamiast takich prezentacyjnych tagów jak <big> czy <small> lepiej stosować <span> z klasą i przerzucić całą logikę wyglądu do CSS, ale fundament jest ten sam – precyzyjne zakresy znaczników i poprawnie zamknięte tagi.

Pytanie 7

Wskaż właściwy zapis polecenia napisanego w języku JavaScript?

A. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " ; 3.14 )
B. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " . 3.14 )
C. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " + 3.14 )
D. document.write("Liczba ? z dokładnością do 2 miejsc po przecinku ? " 3.14 )
Analizując inne odpowiedzi, można zauważyć liczne błędy syntaktyczne oraz logiczne, które uniemożliwiają prawidłowe wykonanie kodu. W przypadku pierwszej niepoprawnej wersji, zastosowanie średnika przed liczbowym 3.14 jest błędne, ponieważ kończy to instrukcję, a nie łączy dodatkowy element, jakim jest liczba. W rezultacie, interpreter JavaScript nie będzie w stanie poprawnie zrozumieć kontekstu i wywoła błąd. W kolejnej wersji zastosowano kropkę przed liczbą, co również jest błędne, ponieważ operator kropki w JavaScript jest używany do dostępu do właściwości obiektów, a nie do łączenia danych. Takie użycie prowadzi do niepoprawnej składni. Ostatnia wersja jest również problematyczna, ponieważ brakuje operatora do konkatenacji, co powoduje, że interpreter traktuje liczby jako oddzielne elementy, co skutkuje błędem. Ważne jest, aby zrozumieć zasady składni JavaScript oraz sposób, w jaki funkcje i operatory współdziałają, aby uniknąć takich powszechnych błędów i poprawnie generować dynamiczne treści.

Pytanie 8

Funkcja zapisana w języku PHP ma postać jak poniżej. Jej zadaniem jest

function fun1($liczba)
{
    if($liczba % 2 == 0)
        return 1;

    return 0;
}
A. zwrócenie wartości 1, gdy liczba jest parzysta.
B. wypisanie liczby nieparzystej.
C. wypisanie liczby parzystej.
D. zwrócenie wartości 0, gdy liczba jest parzysta.
Twoja odpowiedź jest poprawna. Funkcja fun1($liczba) w PHP zwraca wartość 1, gdy liczba podana jako argument jest parzysta. Jest to wynikiem działania funkcji, której składnikami są operator modulo (%) i porównanie (==). Kod ($liczba % 2 == 0) sprawdza, czy reszta z dzielenia liczby przez 2 jest równa zero, co jest prawdą dla wszystkich liczb parzystych. Jeśli warunek jest spełniony, funkcja zwraca wartość 1. Jest to typowe i efektywne podejście do sprawdzania parzystości liczb w językach programowania. Wykorzystanie operatora modulo jest powszechną praktyką, gdyż nie tylko pozwala na realizację takiej operacji, ale również jest szybkie i nie wymaga zbyt dużego nakładu zasobów procesora. Można zastosować tę wiedzę w różnych scenariuszach - na przykład, gdy potrzebujesz przeprowadzić różne operacje na podstawie parzystości lub nieparzystości liczb.

Pytanie 9

Jaki selektor stylizuje akapity tekstu z klasą tekst oraz element blokowy z identyfikatorem obrazki?

A. p#tekst, div.obrazki
B. p.tekst, div#obrazki
C. p#tekst + div.obrazki
D. p.tekst + div#obrazki
Analizując dostępne odpowiedzi, można zauważyć istotne błędy w tym, jak selektory są zbudowane. Selekcja 'p#tekst' wprowadza zamieszanie, ponieważ '#' wskazuje na unikalny identyfikator, co oznacza, że nie może być zastosowane do akapitu, który wykorzystuje klasę. Identyfikatory w HTML muszą być unikalne w obrębie dokumentu, więc nie można stosować ID do wielu akapitów. Inna odpowiedź, 'p.tekst + div.obrazki', wykorzystuje operator sąsiedztwa '+', co oznacza, że styl zastosowany do div.obrazki dotyczy wyłącznie tego <div>, który jest bezpośrednio po akapicie z klasą 'tekst'. Tego rodzaju selektor może być użyty w bardzo specyficznych sytuacjach, ale w przypadku ogólnego formatowania akapitów i elementów div jest to znacznie bardziej ograniczające. Ostatnia odpowiedź 'p#tekst + div.obrazki' jest podobnie wadliwa z powodu nieprawidłowego użycia '#' w kontekście akapitu. Takie błędne myślenie prowadzi do sytuacji, gdzie nie tylko nie osiągamy zamierzonego efektu wizualnego, ale również komplikujemy kod, co negatywnie wpływa na jego czytelność oraz utrzymanie. W przypadku stylizacji ważne jest, aby stosować odpowiednie selektory w sposób zgodny z ich definicjami w standardach CSS, co zapewnia efektywne i zgodne z najlepszymi praktykami zarządzanie stylem elementów na stronie.

Pytanie 10

Efektem wykonania przedstawionego kodu PHP jest wyświetlenie komunikatu

$a = $c = true;
$b = $d = false;
if(($a && $b) || ($c && $d))
    echo 'warunek1';
elseif(($a && $b) || ($c || $d))
    echo 'warunek2';
elseif(($c && $d) || (!$a))
    echo 'warunek3';
else
    echo 'warunek4';
A. warunek4
B. warunek2
C. warunek1
D. warunek3
W tym zadaniu kluczowe jest zrozumienie, jak PHP ocenia wyrażenia logiczne z użyciem operatorów `&&` i `||` oraz jak działa sekwencja `if / elseif / else`. Sporo osób gubi się tutaj przez pobieżne liczenie w głowie albo przez mylenie operatora AND z OR, albo przez nieuwzględnianie tego, że kolejne gałęzie `elseif` są sprawdzane dopiero wtedy, gdy poprzednie warunki były fałszywe. Najpierw warto zauważyć wartości zmiennych: `$a = $c = true;` oraz `$b = $d = false;`. To oznacza po prostu: `a = true`, `c = true`, `b = false`, `d = false`. W pierwszym warunku mamy `($a && $b) || ($c && $d)`. Zarówno `true && false`, jak i `true && false` dają `false`, więc całość to `false || false`, czyli `false`. Dlatego komunikat „warunek1” nie ma prawa się pojawić – ten blok w ogóle nie jest wykonywany. Częsty błąd polega na tym, że ktoś widzi dwa `true` w warunku i z automatu zakłada, że „coś tam pewnie wyjdzie na true”. Niestety tak to nie działa – przy operatorze `&&` wystarczy jeden `false`, żeby całe wyrażenie było fałszywe. Z kolei przy `||` wystarczy jedno `true`, by wynik był prawdziwy. I to dokładnie widać w drugim warunku: `($a && $b) || ($c || $d)`. Tu pierwsza część znów jest fałszywa, ale druga to `true || false`, więc daje `true`. Cały warunek jest więc prawdziwy i dlatego wykonuje się tylko ten blok – „warunek2”. Jeżeli ktoś zaznaczył „warunek3” lub „warunek4”, to zazwyczaj wynika to z niezrozumienia, że po pierwszym spełnionym `if`/`elseif` dalsze nie są już w ogóle analizowane. Trzeci warunek logicznie też warto policzyć: `($c && $d) || (!$a)` to `false || false`, bo `$c && $d` to `true && false = false`, a `!$a` to `!true = false`. On byłby fałszywy nawet gdyby do niego dotrzeć, więc „warunek3” i tak by się nie wydrukował. „warunek4” z kolei to blok domyślny, wykonywany tylko wtedy, gdy wszystkie wcześniejsze warunki są fałszywe – tutaj tak nie jest, bo drugi warunek jest prawdziwy. Z mojego doświadczenia dobrym nawykiem jest zawsze rozpisywanie takich wyrażeń krok po kroku, szczególnie na początku nauki: najpierw obliczyć `&&` wewnątrz nawiasów, potem `||`, i dopiero wtedy patrzeć, która gałąź `if/elseif/else` zostanie wykonana. W realnym kodzie przy skomplikowanych warunkach lepiej je upraszczać albo rozbijać na kilka czytelnych zmiennych pomocniczych, zamiast liczyć wszystko „w głowie”, bo to prosta droga do subtelnych błędów logicznych.

Pytanie 11

Przedstawione zapytanie MySQL ma za zadanie

ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL;
A. usunąć kolumnę tytul z tabeli ksiazki.
B. dodać do tabeli ksiazki kolumnę tytul.
C. zmienić nazwę kolumny w tabeli ksiazki.
D. zmienić typ kolumny tytul w tabeli ksiazki.
Zapytanie ALTER TABLE ksiazki MODIFY tytul VARCHAR(100) NOT NULL; często bywa mylone z innymi operacjami na strukturze tabeli, bo wszystkie tego typu polecenia wyglądają do siebie dość podobnie. Warto więc uporządkować, co ono dokładnie robi, a czego na pewno nie robi. W MySQL słowo kluczowe MODIFY służy do zmiany definicji istniejącej kolumny, czyli głównie jej typu danych, długości, atrybutów takich jak NOT NULL, domyślna wartość czy np. AUTO_INCREMENT. Kluczowe jest to, że nazwa kolumny pozostaje taka sama, modyfikujemy tylko jej właściwości techniczne. Częsty błąd myślowy polega na wrzucaniu do jednego worka wszystkich operacji ALTER TABLE i zakładaniu, że każde takie polecenie może np. usuwać lub dodawać kolumny. Do usuwania kolumny służy jednak zupełnie inna składnia: ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny;. Tutaj nie ma słowa MODIFY, więc zapytanie z pytania na pewno nie usuwa kolumny tytul. Podobnie z dodawaniem nowej kolumny – używa się słowa kluczowego ADD, np. ALTER TABLE ksiazki ADD tytul VARCHAR(100);. W naszym przypadku kolumna tytul już musi istnieć, bo inaczej MODIFY zakończy się błędem. Pojawia się też czasem przekonanie, że MODIFY zmienia nazwę kolumny. W MySQL do zmiany nazwy wykorzystuje się ALTER TABLE ... CHANGE stara_nazwa nowa_nazwa typ;, gdzie trzeba podać zarówno starą, jak i nową nazwę oraz pełną definicję typu. W poleceniu z zadania nazwa tytul występuje tylko raz i nigdzie nie ma nowej nazwy, więc nie ma tu mowy o zmianie nazwy, a jedynie o modyfikacji typu i atrybutu NOT NULL. Dobrą praktyką w pracy z SQL jest dokładne kojarzenie słów kluczowych: ADD – dodaj, DROP – usuń, CHANGE – zmień nazwę i definicję, MODIFY – zmień definicję bez ruszania nazwy. Mylenie tych pojęć prowadzi później do niepotrzebnych błędów w migracjach bazy, a czasem nawet do utraty danych, dlatego warto mieć te różnice naprawdę dobrze poukładane w głowie.

Pytanie 12

Jaką wartość zwróci funkcja zoo zdefiniowana w języku C++, wywołana z aktualnym parametrem 3.55

int zao(float x){
    return (x + 0.5);
}
A. 3.5
B. 3
C. 4.05
D. 4
Dobra robota! Wybrałeś poprawną odpowiedź, która wynosi 4. W języku C++ typy zmiennoprzecinkowe (float) są konwertowane do typów całkowitych (int) poprzez odrzucenie części ułamkowej liczby. W tym przypadku, nawet jeśli wynik działania wewnątrz funkcji wynosi 4.05, po konwersji do typu int, zostaje z tego tylko 4. Jest to dobra praktyka, aby zawsze pamiętać o tym zachowaniu podczas pracy z różnymi typami danych w językach programowania, zwłaszcza jeśli precyzja jest istotna dla twojego kodu. Odrzucenie części ułamkowej może prowadzić do nieoczekiwanych wyników, jeśli nie jest to świadome działanie. Dlatego w języku C++ zaleca się zawsze jasne i precyzyjne określenie typu danych.

Pytanie 13

Który zapis jest selektorem pseudoklasy CSS?

A. p#wyroznienie
B. body
C. a:link
D. td.wyroznienie
W tym zadaniu wszystkie odpowiedzi wyglądają jak poprawne selektory CSS, ale tylko jedna z nich jest selektorem pseudoklasy. To dość typowa pułapka: ktoś widzi poprawny składniowo selektor i automatycznie zakłada, że skoro jest „jakiś znak specjalny”, to pewnie chodzi o pseudoklasę. W CSS warto jednak rozróżniać kilka zupełnie różnych mechanizmów: selektor typu, selektor klasy, selektor identyfikatora oraz właśnie pseudoklasy. Zapis „p#wyroznienie” łączy selektor typu z selektorem identyfikatora. Oznacza akapit <p> o konkretnym id="wyroznienie". Znak # w CSS nie ma nic wspólnego z pseudoklasami, tylko jednoznacznie wskazuje na identyfikator elementu. To jest bardzo częste nieporozumienie: część osób myli dwukropek z kratką, bo oba wyglądają jak „specjalne dopiski”. Tymczasem pseudoklasy zawsze używają dwukropka, a identyfikatory – znaku #. „td.wyroznienie” to z kolei połączenie selektora typu z selektorem klasy. Ten zapis wybierze komórki tabeli <td> posiadające class="wyroznienie". Kropka w CSS zawsze oznacza klasę, czyli coś, co definiujemy w atrybucie class w HTML. To zupełnie inny mechanizm niż pseudoklasy, bo klasę nadajemy ręcznie w kodzie HTML, a pseudoklasa opisuje stan lub cechę obliczaną przez przeglądarkę, np. czy element jest pierwszy w swoim rodzicu, czy link jest odwiedzony, czy pole formularza ma fokus. Zapis „body” to najprostszy możliwy selektor typu – wskazuje wszystkie elementy <body> w dokumencie (zwykle jest tylko jeden). Tu w ogóle nie ma żadnego symbolu wskazującego na pseudoklasę, więc traktowanie tego jako pseudoklasy to już zupełne pomieszanie pojęć: to po prostu nazwa elementu HTML. Typowy błąd myślowy przy takich pytaniach polega na tym, że zamiast skupić się na definicji pseudoklasy („selektor z dwukropkiem, opisujący stan”), uczestnik testu szuka odpowiedzi, która „najbardziej wygląda na zaawansowaną”. Tymczasem wszystkie błędne odpowiedzi są zwykłymi, podstawowymi selektorami: typu, klasy i id. Pseudoklasa zawsze ma postać coś:coś_tam, np. a:hover, button:disabled, li:first-child. Jeżeli nie ma dwukropka – to na pewno nie jest pseudoklasa, niezależnie od tego, jak bardzo skomplikowany wygląda zapis.

Pytanie 14

Która z funkcji agregujących wbudowanych w język SQL służy do obliczania średniej wartości w określonej kolumnie?

A. COUNT
B. MIN
C. AVG
D. SUM
Funkcja AVG w języku SQL jest jedną z kluczowych funkcji agregujących, która pozwala na obliczenie średniej wartości w określonej kolumnie zestawienia danych. Użycie tej funkcji jest szczególnie istotne w analizie statystycznej, gdyż pozwala uzyskać bardziej reprezentatywny wynik, eliminując wpływ skrajnych wartości, które mogą zniekształcać obraz danych. Na przykład, gdy mamy tabelę "sprzedaż" z kolumną "kwota", można użyć zapytania SELECT AVG(kwota) FROM sprzedaż, aby uzyskać średnią wartość sprzedaży. Funkcja ta jest nie tylko przydatna w kontekście analizy, ale także stanowi standardową praktykę w raportowaniu wyników finansowych, co może pomóc w podejmowaniu decyzji biznesowych. Warto również zauważyć, że AVG jest funkcją, która ignoruje wartości NULL, co jest ważne w kontekście danych, które mogą nie być pełne. Dobre praktyki sugerują, aby zawsze sprawdzać dane wejściowe przed stosowaniem funkcji agregujących, aby zapewnić ich jakość i dokładność wyników.

Pytanie 15

Co oznacza skrót SQL?

A. Sequential Question Language
B. Structured Query Language
C. Standard Quality Language
D. Simple Query Logic
Podczas gdy SQL oznacza <em>Structured Query Language</em>, pozostałe propozycje nazw są błędne i nie odzwierciedlają prawdziwego znaczenia skrótu. Często spotykanym błędem jest mylenie skrótów związanych z technologią z innymi, które brzmią podobnie, ale nie mają związku z kontekstem technicznym. W przypadku <em>Standard Quality Language</em>, jest to przykład błędnego dopasowania, ponieważ nie ma bezpośredniego związku z bazami danych ani językiem zapytań. Podobnie, <em>Sequential Question Language</em> brzmi jakby miało związek z zadawaniem pytań w sekwencji, co jest całkowitym nieporozumieniem w kontekście SQL. Z kolei <em>Simple Query Logic</em> może wydawać się związany z logiką zapytań, ale nie oddaje w pełni roli i funkcji SQL jako języka do zarządzania danymi. Takie błędne interpretacje wynikają często z nieznajomości terminologii technicznej i mogą prowadzić do nieporozumień w kontekście zawodowym. Ważne jest, aby dobrze rozumieć podstawową terminologię, zwłaszcza w tak kluczowych dziedzinach jak zarządzanie bazami danych, aby unikać błędów w komunikacji i implementacji rozwiązań technicznych.

Pytanie 16

Która komenda pozwala na przesłanie tekstu do przeglądarki?

A. break
B. type
C. exit
D. echo
Odpowiedź 'echo' jest poprawna, ponieważ ta instrukcja służy do generowania tekstu, który jest przesyłany do przeglądarki w kontekście skryptów PHP. Echo jest jedną z najprostszych i najczęściej używanych funkcji do wyświetlania danych na stronie internetowej, co jest kluczowym elementem w budowaniu dynamicznych aplikacji webowych. Przykład zastosowania: w prostym skrypcie PHP możemy użyć echo do wyświetlenia powitania użytkownika: <?php echo 'Witaj, użytkowniku!'; ?>. Dzięki temu, użytkownicy mogą interaktywnie odbierać informacje, co jest istotne dla doświadczenia użytkownika. W praktyce, zastosowanie echo ma również znaczenie w kontekście bezpieczeństwa aplikacji, ponieważ prawidłowe zarządzanie danymi wyjściowymi ochroni przed atakami typu XSS, gdyż pozwala na odpowiednie filtrowanie i kodowanie danych, które są wyświetlane przeglądarki. W branży zaleca się stosowanie echo w połączeniu z odpowiednimi standardami zabezpieczeń, aby zapewnić najwyższą jakość i bezpieczeństwo aplikacji webowych.

Pytanie 17

Na ilustracji pokazano relację jeden do wielu. Łączy ona

Ilustracja do pytania
A. klucz podstawowy id tabeli filmy z kluczem podstawowym id tabeli rezyserzy
B. klucz podstawowy id tabeli filmy z kluczem obcym rezyserzy_id tabeli rezyserzy
C. klucz obcy rezyserzy_id tabeli filmy z kluczem obcym id tabeli rezyserzy
D. klucz obcy rezyserzy_id tabeli filmy z kluczem podstawowym id tabeli rezyserzy
Relacja jeden do wielu w bazach danych często wiąże się z sytuacją, gdzie jeden rekord w tabeli nadrzędnej może być powiązany z wieloma rekordami w tabeli podrzędnej. W tym kontekście tabela nadrzędna to rezyserzy posiadająca klucz podstawowy id, natomiast tabela podrzędna to filmy która odnosi się do tej wartości poprzez klucz obcy rezyserzy_id. Klucz podstawowy to unikalny identyfikator rekordu w tabeli, który pozwala na jednoznaczne rozróżnienie każdego rekordu. Klucz obcy natomiast jest atrybutem w tabeli podrzędnej, który odnosi się do klucza podstawowego w tabeli nadrzędnej. Jest to zgodne z teorią normalizacji baz danych, gdzie relacje jeden do wielu są standardowym podejściem do projektowania struktur danych. Użycie klucza obcego pozwala na utrzymanie integralności referencyjnej, co oznacza że każda wartość klucza obcego musi odpowiadać wartości klucza podstawowego w powiązanej tabeli lub być null, jeśli taka relacja jest dozwolona. Praktyczne zastosowanie tej relacji można zaobserwować w systemach zarządzania treścią, gdzie jeden autor (reżyser) może mieć przypisanych wiele artykułów (filmów), jednak każdy artykuł jest przypisany do jednego autora, co umożliwia na przykład efektywne zarządzanie danymi i generowanie raportów o twórczości danego autora.

Pytanie 18

W jaki sposób, stosując język PHP można usunąć ciasteczko o nazwie ciastko?

A. deletecookie(""ciastko"");
B. setcookie(""$ciastko"", """", 0);
C. unsetcookie(""$ciastko"");
D. setcookie(""ciastko"", """", time()-3600);
Wiele z błędnych odpowiedzi opiera się na niepoprawnych założeniach dotyczących metod usuwania ciasteczek w PHP. Przykładowo, użycie deletecookie("ciastko") jest nieprawidłowe, ponieważ w standardowej bibliotece PHP nie istnieje funkcja o takiej nazwie. PHP nie dostarcza wbudowanej funkcji do bezpośredniego usuwania ciasteczek; zamiast tego należy użyć setcookie, aby ustawić ciasteczko z przestarzałym czasem ważności. Podobnie, użycie unsetcookie("$ciastko") jest błędne, ponieważ nie ma takiej funkcji w PHP. Użytkowanie funkcji unset dotyczy zmiennych, a nie ciasteczek, co może prowadzić do konfuzji. W praktyce, aby usunąć ciasteczko, musisz wyraźnie określić jego nazwę z użyciem setcookie, a także wartość oraz czas wygaśnięcia. Ostatecznie, niewłaściwe podejścia do usuwania ciasteczek mogą prowadzić do problemów z bezpieczeństwem, na przykład w sytuacjach, gdy aplikacja niepoprawnie zarządza sesjami użytkowników, co naraża dane na nieautoryzowany dostęp. Aby skutecznie zarządzać ciasteczkami, ważne jest zrozumienie ich mechanizmów oraz stosowanie zgodnych z normami metod ich usuwania.

Pytanie 19

W podanym przykładzie pseudoklasa hover spowoduje, że styl pogrubiony zostanie przypisany

a:hover { font-weight: bold; }
A. wszystkim odnośnikom, które były wcześniej odwiedzane
B. odnośnikowi, gdy kursor myszy na niego najedzie
C. wszystkim odnośnikom, które nie były odwiedzane
D. każdemu odnośnikowi bez względu na jego bieżący stan
Pseudoklasa hover jest specyficzną cechą CSS, która pozwala na zmianę stylu elementu w momencie, gdy użytkownik najeżdża na niego kursorem myszy. Odpowiedzi sugerujące, że styl pogrubiony zostanie przypisany wszystkim odnośnikom nieodwiedzonym lub odwiedzonym zawierają błędne założenie dotyczące działania pseudoklas. Pseudoklasy nieodwiedzony lub odwiedzony (a:link i a:visited) odnoszą się do stanu odnośnika w kontekście jego kliknięcia przez użytkownika, a nie interakcji za pomocą kursora. Twierdzenie, że styl pogrubiony będzie zastosowany do wszystkich odnośników niezależnie od stanu ignoruje fakt, że pseudoklasa hover jest specyficzna dla dynamicznej interakcji z elementem, nie zaś dla jego statycznego stanu. Typowym błędem w rozumieniu pseudoklas jest mylenie ich z selektorami klasy czy identyfikatorów, które odnoszą się do statycznych atrybutów elementów. Właściwe użycie pseudoklas wymaga zrozumienia ich dynamiki i tego, jak wpływają na wrażenie użytkownika podczas interakcji z elementami strony internetowej. Aby uniknąć takich błędów, warto korzystać z narzędzi do podglądu i testowania stylów CSS, które pozwalają na bieżąco obserwować zmiany stylizacji na stronie w odpowiedzi na interakcję użytkownika. Opanowanie pseudoklas jak hover jest kluczowe dla tworzenia nowoczesnych i interaktywnych stron internetowych, które reagują na działania użytkowników w sposób przewidywalny i efektywny.

Pytanie 20

Które z poniższych stwierdzeń o językach programowania jest fałszywe?

A. PHP służy do tworzenia stron w czasie rzeczywistym
B. JavaScript to język skryptowy
C. C++ jest językiem obiektowym
D. SQL jest językiem programowania strukturalnego
SQL, czyli Structured Query Language, to język zapytań, który jest używany do zarządzania danymi w relacyjnych bazach danych. Jest to język deklaratywny, a nie strukturalny, co oznacza, że użytkownik nie definiuje w nim kroków przetwarzania danych, lecz opisuje, jakie dane chce uzyskać. SQL pozwala na wykonywanie operacji takich jak wybieranie danych, wstawianie, aktualizowanie i usuwanie rekordów w bazie danych. Przykładowe zapytanie w SQL może wyglądać następująco: SELECT * FROM users WHERE age > 18; co zwróci wszystkie rekordy użytkowników powyżej osiemnastego roku życia. Warto również zauważyć, że SQL jest standardem ISO, co oznacza, że jego składnia i funkcjonalności są szeroko uznawane i stosowane w różnych systemach zarządzania bazami danych, takich jak MySQL, PostgreSQL czy Oracle. To czyni SQL niezwykle ważnym narzędziem dla każdego programisty, analityka danych czy specjalisty ds. baz danych.

Pytanie 21

W języku JavaScript przedstawiona poniżej definicja jest definicją
var imiona=["Anna", "Jakub", "Iwona", "Krzysztof"];

A. obiektu.
B. tablicy.
C. kolekcji.
D. klasy.
W języku JavaScript definicja var imiona=["Anna", "Jakub", "Iwona", "Krzysztof"]; przedstawia tablicę, która jest jednym z fundamentalnych typów danych w tym języku. Tablice są używane do przechowywania zbiorów danych w sposób uporządkowany. W tym przypadku tablica imiona przechowuje cztery stringi, każdy reprezentujący imię. Wartością dodaną tablicy jest możliwość dostępu do poszczególnych elementów za pomocą indeksów, które zaczynają się od zera. Na przykład, imiona[0] zwróci \"Anna\", a imiona[1] zwróci \"Jakub\". W praktyce tablice są niezwykle przydatne w programowaniu, ponieważ pozwalają na łatwe zarządzanie i manipulację danymi. Dobrą praktyką jest używanie tablic do przechowywania związków danych, co umożliwia ich efektywne przetwarzanie i iterację za pomocą pętli, co zwiększa czytelność i organizację kodu. Warto również zaznaczyć, że tablice w JavaScript są obiektami, co daje dodatkowe możliwości manipulacji, takie jak metody tablicowe (np. push, pop, map, filter) do operacji na zbiorach danych. Poznanie i zrozumienie tablic jest kluczowe dla każdego programisty, ponieważ są one podstawą wielu algorytmów i struktur danych."

Pytanie 22

Jaką postać ma kolor zdefiniowany w formacie szesnastkowym jako #11FE07 w modelu RGB?

A. rgb(17, FE, 7)
B. rgb(17, 255, 7)
C. rgb(17, 254, 7)
D. rgb(ll, 127, 7)
Odpowiedź rgb(17, 254, 7) jest jak najbardziej trafna, bo wartości RGB ustalamy na podstawie kolorów, które mamy w formacie szesnastkowym. Dla koloru #11FE07, pierwsza część '11' to czerwień (R), druga część 'FE' to zieleń (G), a ostatnia '07' to niebieski (B). Jak to zliczamy? Wartości szesnastkowe przeliczamy na dziesiętne. Czyli '11' w szesnastkowym to 17 w dziesiętnym, 'FE' to 254, a '07' to po prostu 7. Te kolory RGB są super ważne w wielu dziedzinach, jak na przykład w projektowaniu stron www czy w grafice komputerowej. W3C ustala standardy dla tych wartości, dlatego są one spójne i użyteczne w sieci. Dopasowanie kolorów RGB jest kluczowe, kiedy tworzymy ładne palety kolorów, które są nie tylko estetyczne, ale też dostępne dla wszystkich. Takim przykładem może być dobór kolorów dla przycisków na stronie - jak dobrze je dobierzemy, to użytkownik łatwiej zauważy, co ma kliknąć.

Pytanie 23

Po wykonaniu kodu PHP zostanie wyświetlona obecna data, zawierająca jedynie

echo date("Y");
A. rok
B. dzień oraz miesiąc
C. miesiąc i rok
D. dzień
Funkcja date w PHP jest super przydatna, bo pozwala na ładne formatowanie daty i godziny. Jak podasz argument Y, to dostaniesz czterocyfrowy rok, co jest zgodne z ISO 8601. To ważne, bo w różnych systemach, jak bazy danych czy księgowość, musisz mieć jasność, który rok jest właściwy. W PHP sporo osób korzysta z tej funkcji, żeby dynamicznie wyciągać datę – to świetne, zwłaszcza gdy tworzysz raporty czy logujesz różne zdarzenia w aplikacjach webowych. Warto też pamiętać, że date Y to tylko jedna z wielu opcji, jakie masz w PHP. Programiści mają dużą swobodę w dobieraniu formatu daty, co daje im możliwość dostosowania wszystkiego do potrzeb projektu. A dobrze sformatowane daty są nie tylko zgodne ze standardami, ale też ułatwiają życie użytkownikom końcowym, bo są jasne i jednoznaczne.

Pytanie 24

Jaką właściwość CSS należy zastosować, aby uzyskać linie przerywaną w obramowaniu?

Ilustracja do pytania
A. dotted
B. solid
C. dashed
D. double
Odpowiedź dashed jest poprawna ponieważ w CSS właściwość ta służy do definiowania stylu obramowania w postaci linii kreskowanej Jest to często używane do wizualnego oddzielenia zawartości na stronie internetowej bez zbytniego skupiania uwagi Użycie dashed sprawia że linia jest bardziej subtelna w porównaniu do solid co czyni ją dobrym wyborem w przypadku chęci zachowania minimalistycznego wyglądu Zgodnie ze standardami CSS właściwość border-style może przyjmować kilka wartości w tym solid dotted double i dashed Każda z tych wartości ma swoje unikalne zastosowania na przykład solid tworzy ciągłą linię natomiast dotted tworzy linię z kropkami Linia dashed składa się z krótkich kresek co różni ją od linii double która jest podwójną linią W praktyce dashed jest często stosowane w projektach gdzie ważne jest wskazanie na określone sekcje lub elementy bez przytłaczania użytkownika Zgodnie z dobrymi praktykami można dostosować szerokość i kolor obramowania co pozwala na lepszą integrację z ogólnym stylem strony CSS daje dużą elastyczność w projektowaniu co pozwala na tworzenie różnorodnych i responsywnych interfejsów użytkownika

Pytanie 25

Która z pętli w PHP umożliwia przeprowadzenie operacji na wszystkich elementach tablicy z automatycznym przypisaniem indeksów tych elementów?

A. for
B. foreach
C. do...while
D. while
Zarówno konstrukcja 'for', 'while', jak i 'do...while' są pętlami, które służą do wykonywania bloków kodu wielokrotnie, jednak każda z nich ma swoje specyficzne zastosowania, które mogą prowadzić do nieefektywności w kontekście iteracji po tablicach. Użycie pętli 'for' wymaga manualnego zarządzania indeksami, co zwiększa ryzyko błędów, zwłaszcza w przypadku tablic o zmiennej długości. Przykładowo, iterując po tablicy za pomocą 'for', musimy ustawić warunki początkowe, końcowe oraz właściwie modyfikować indeks, co może prowadzić do błędów, jeśli nie zostanie to prawidłowo skonfigurowane. Z drugiej strony, pętle 'while' i 'do...while' są bardziej elastyczne, ale również wymagają dodatkowego sprawdzania warunków, co czyni je mniej przejrzystymi w kontekście iteracji po tablicach. Często prowadzi to do sytuacji, w których programiści popełniają błędy logiczne, takie jak zapętlenie się lub pominięcie elementów, co z kolei skutkuje trudnościami w utrzymaniu kodu. Dlatego, zamiast stosować te pętle, lepiej jest korzystać z 'foreach', która jest dedykowana do pracy z tablicami i eliminuje wiele problemów związanych z zarządzaniem indeksami.

Pytanie 26

W tabeli artykuly znajduje się pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę

A. UPDATE artykuly SET nowy = TRUE;
B. INSERT INTO nowy FROM artykuly SET TRUE;
C. UPDATE nowy FROM artykuly VALUE TRUE;
D. INSERT INTO artykuly VALUE nowy = TRUE;
Poprawna kwerenda UPDATE artykuly SET nowy = TRUE; jest klasycznym przykładem instrukcji aktualizacji danych w SQL. Słowo kluczowe UPDATE wskazuje, że modyfikujemy istniejące rekordy, a nie dodajemy nowe. Nazwa tabeli artykuly określa, w której tabeli wykonujemy operację. Następnie część SET nowy = TRUE ustawia dla kolumny nowy wartość logiczną TRUE we wszystkich wierszach, ponieważ w zapytaniu nie ma klauzuli WHERE. I to jest tu kluczowe: brak WHERE oznacza, że aktualizacja dotknie każdego rekordu w tabeli. Moim zdaniem warto zapamiętać schemat: UPDATE nazwa_tabeli SET kolumna = wartość WHERE warunek;. W praktyce bardzo często dodaje się WHERE, np.: UPDATE artykuly SET nowy = TRUE WHERE data_dodania >= '2026-01-01'; – wtedy oznaczamy jako nowe tylko artykuły dodane od konkretnej daty. W zadaniu jednak wyraźnie jest mowa o każdym rekordzie, więc brak WHERE jest jak najbardziej zgodny z treścią. W większości systemów bazodanowych (MySQL, PostgreSQL, SQL Server, MariaDB) ta składnia jest standardowa i zalecana. Dobra praktyka jest taka, żeby przed odpaleniem UPDATE bez WHERE najpierw zrobić SELECT * FROM artykuly; albo SELECT COUNT(*) FROM artykuly;, żeby mieć świadomość, ile rekordów zmienimy. W projektach produkcyjnych często dodaje się też transakcje, np. w PostgreSQL: BEGIN; UPDATE artykuly SET nowy = TRUE; COMMIT; dzięki temu w razie pomyłki można zrobić ROLLBACK. Warto też wiedzieć, że kolumna typu logicznego może przyjmować wartości TRUE, FALSE, czasem 1/0 (np. w MySQL), ale forma z TRUE/FALSE jest czytelniejsza i bardziej zgodna z semantyką. W wielu aplikacjach webowych pole w stylu nowy służy np. do filtrowania artykułów w panelu administracyjnym albo na stronie głównej: SELECT * FROM artykuly WHERE nowy = TRUE;. To dokładnie ten sam atrybut, który przed chwilą masowo ustawiliśmy poleceniem UPDATE.

Pytanie 27

Który z komentarzy przedstawia opis działania funkcji zdefiniowanej w języku PHP?

A. /* Funkcja zwraca większą z dwóch podanych wartości, a w przypadku ich równości zwraca wartość $a */
B. /* Funkcja zwraca większą z dwóch podanych wartości, a w przypadku ich równości zwraca -1 */
C. /* Funkcja zwraca mniejszą z dwóch podanych wartości, a w przypadku ich równości zwraca wartość $a */
D. /* Funkcja zwraca mniejszą z dwóch podanych wartości, a w przypadku ich równości zwraca -1 */
W analizowanych odpowiedziach można zauważyć kilka nieporozumień dotyczących działania funkcji. Niektóre propozycje podają informację, że funkcja zwraca wartość niższą z dwóch podanych argumentów, co jest absolutnie błędne. Funkcja jest zaprojektowana tak, aby zawsze zwracała wartość wyższą, co jest kluczowym aspektem jej działania. Inne odpowiedzi wskazują, że w przypadku równości funkcja zwraca wartość $a, co także jest niezgodne z kodem źródłowym. W rzeczywistości, zgodnie z implementacją, zwracana jest wartość -1, co jest istotne, ponieważ wskazuje na brak różnicy między argumentami. Tego rodzaju pomyłki mogą wynikać z nieścisłości w interpretacji warunków logicznych. Ważne jest, aby przy analizie funkcji dokładnie zwracać uwagę na każdy element kodu, aby nie przeoczyć istotnych szczegółów. Przykładowo, błędne rozumienie tego, co oznacza 'wyższa' wartość w kontekście porównania, może prowadzić do złych wniosków w dalszym programowaniu, w szczególności w funkcjach, które bazują na porównaniach. Dlatego tak istotne jest, aby korzystać z praktyk kodowania, które zapewniają jasność i przejrzystość działania funkcji.

Pytanie 28

Wskaż nieprawidłowy opis optymalizacji kodu generowanego przez program.

A. Jej celem jest zwiększenie efektywności działania programu
B. Może być realizowana na różnych etapach działania w celu przyspieszenia wykonania kodu przez procesor
C. Powinna skutkować modyfikacją kodu źródłowego, aby działał on szybciej
D. Jej celem jest sprawdzenie zgodności z wymogami formalnymi
Wszystkie niepoprawne odpowiedzi odnoszą się do różnych aspektów, które nie są zgodne z rzeczywistym celem optymalizacji kodu wynikowego. Poprawa wydajności programu i zwiększenie szybkości wykonywania kodu przez procesor są kluczowymi elementami optymalizacji; niezbędne jest dążenie do maksymalizacji efektywności działania aplikacji. Proces optymalizacji nie może być związany jedynie z zgodnością z wymogami formalnymi, ponieważ to bardziej dotyczy analizy jakości kodu i jego zgodności z zasadami programowania, a nie jego wydajności. Dodatkowo, modyfikacje kodu źródłowego w kontekście optymalizacji powinny koncentrować się na przyspieszeniu działania, a nie tylko na poprawie formalnych aspektów, które mogą nie wpływać na wydajność. W praktyce, jeśli kod źródłowy nie jest zoptymalizowany pod kątem wydajności, może prowadzić do znacznych opóźnień, co jest niezgodne z celem optymalizacji. Dlatego istotne jest, aby w procesie tym skupić się na zwiększaniu szybkości i wydajności, a nie na spełnianiu jedynie formalnych wymogów, które mogą być mniej istotne w kontekście ogólnej funkcjonalności i szybkości działania programów.

Pytanie 29

Jakie mechanizmy przyznawania zabezpieczeń, umożliwiające przeprowadzanie operacji na bazie danych, są powiązane z tematyką zarządzania kontami, użytkownikami oraz uprawnieniami?

A. Z zasadami
B. Z przywilejami obiektowymi
C. Z przywilejami systemowymi
D. Z atrybutami
Zagadnienia związane z zarządzaniem kontami, użytkownikami i uprawnieniami w kontekście baz danych są złożone i często mylone z innymi mechanizmami. Reguły, na przykład, są używane w kontekście polityk bezpieczeństwa, ale nie odnoszą się bezpośrednio do przydzielania uprawnień w systemie baz danych. W praktyce, reguły mogą służyć do definiowania warunków, pod którymi dane operacje są dozwolone, ale same w sobie nie kontrolują dostępu do zasobów. Przywileje obiektowe, z drugiej strony, dotyczą specyficznych obiektów w bazie danych, takich jak tabele czy procedury, i nie obejmują uprawnień na poziomie systemowym. W kontekście zarządzania użytkownikami są one używane do kontrolowania dostępu do konkretnych danych, a nie do wykonywania operacji administracyjnych na systemie. Z kolei atrybuty mogą odnosić się do właściwości obiektów w bazie danych, ale nie są to mechanizmy służące do zarządzania użytkownikami i ich uprawnieniami. Typowym błędem jest mylenie tych pojęć i uznawanie, że reguły czy przywileje obiektowe mają podobne zastosowanie do przywilejów systemowych. W realiach zarządzania bazą danych kluczowe jest zrozumienie, że każde z tych podejść ma swoje specyficzne zastosowanie i niezbędne jest stosowanie właściwych narzędzi oraz technik w celu zapewnienia odpowiedniego poziomu bezpieczeństwa i kontroli dostępu.

Pytanie 30

Jaki jest cel poniższego fragmentu funkcji w JavaScript?

wynik = 0;
for (i = 0; i < tab.length; i++)
{
    wynik += tab[i];
}
A. przypisać do każdego elementu tablicy bieżącą wartość zmiennej i
B. dodać stałą wartość do każdego elementu tablicy
C. obliczyć sumę wszystkich elementów tablicy
D. wyświetlić wszystkie pozycje w tablicy
Podany fragment kodu w języku JavaScript ma za zadanie zsumować wszystkie elementy tablicy. Widzimy, że zmienna wynik jest inicjalizowana wartością 0 co jest standardową praktyką przy zliczaniu sumy. Następnie pętla for iteruje przez każdy element tablicy używając warunku i < tab.length co zapewnia że przechodzimy przez wszystkie indeksy tablicy od 0 do ostatniego. Wewnątrz pętli mamy instrukcję wynik += tab[i] która dodaje aktualny element tablicy do zmiennej wynik. Jest to typowe podejście do sumowania elementów tablicy i odpowiada standardowym praktykom w programowaniu. Dzięki temu możemy w prosty sposób uzyskać sumę elementów tablicy niezależnie od jej długości. Takie rozwiązanie jest nie tylko przejrzyste ale i efektywne z punktu widzenia złożoności obliczeniowej gdyż operuje w czasie liniowym O(n). Powyższy sposób zliczania jest uniwersalny i można go stosować w różnych językach programowania.

Pytanie 31

Systemy CMS charakteryzują się

A. możliwością edycji treści bez konieczności znajomości HTML.
B. wbudowanym edytorem grafiki wektorowej.
C. możliwością programowania w zaawansowanych frameworkach dla aplikacji Web.
D. wbudowanym serwerem poczty elektronicznej.
Systemy CMS bywają czasem mylone z kombajnem do wszystkiego, ale ich główne zadanie jest dość konkretne: zarządzanie treścią strony internetowej. Stąd łatwo wpaść w pułapkę myślenia, że skoro to rozbudowany system, to na pewno ma wbudowany edytor grafiki wektorowej albo serwer poczty. W praktyce wygląda to inaczej. CMS zazwyczaj pozwala wgrywać obrazy, zmniejszać je, czasem przyciąć czy skompresować, ale pełnoprawny edytor grafiki wektorowej (jak Inkscape czy Illustrator) to zupełnie inna kategoria narzędzi. Projektowanie logotypów, ikon SVG czy ilustracji robi się w zewnętrznych programach, a do CMS wgrywa gotowe pliki. Wbudowanie takiego edytora do CMS byłoby przerostem formy nad treścią i łamaniem zasady podziału odpowiedzialności na wyspecjalizowane narzędzia. Podobnie jest z serwerem poczty elektronicznej. CMS może wysyłać e‑maile (powiadomienia, reset hasła, newsletter), ale technicznie opiera się na zewnętrznym serwerze SMTP lub konfiguracji serwera WWW. Sam w sobie nie pełni roli pełnoprawnego MTA jak Postfix czy Exim. To częsty błąd myślowy: skoro system coś „wysyła”, to ludzie zakładają, że musi mieć wbudowaną pełną infrastrukturę pocztową. W rzeczywistości są to tylko funkcje klienckie. Jeśli chodzi o programowanie w zaawansowanych frameworkach, tu też łatwo się pomylić. CMS może być napisany w jakimś frameworku lub mieć własne API, ale to nie jest jego wyróżnik jako systemu. Programowanie w frameworkach typu Laravel, Symfony czy React to domena deweloperów tworzących aplikacje webowe, a nie typowa funkcja dostarczana redaktorowi treści. Użytkownik CMS raczej klika w panel, ustawia moduły, pluginy, szablony, niż pisze rozbudowany kod aplikacyjny. Kluczową, charakterystyczną cechą CMS jest właśnie to, że pozwala na edycję treści bez konieczności znajomości HTML. Cała reszta – grafika, poczta, frameworki – to albo funkcje zewnętrzne, albo techniczne szczegóły implementacji, które nie definiują idei systemu zarządzania treścią.

Pytanie 32

Jaką czynność należy wykonać przed zrobieniem kopii zapasowej danych w MySQL?

A. ustalenie systemu kodowania znaków w bazie
B. przyznanie uprawnień do przeglądania bazy dla Administratora
C. sprawdzenie, czy baza działa wystarczająco wydajnie
D. zweryfikowanie poprawności tabel w bazie oraz ewentualne naprawienie usterek
Zdefiniowanie systemu kodowania znaków w bazie, choć istotne, nie jest kluczowym krokiem przed wykonaniem kopii bezpieczeństwa. Odpowiednie kodowanie znaków wpływa na sposób przechowywania i interpretacji danych, jednak w kontekście backupu danych, jego ustalenie jest mniej istotne. Bardziej krytyczne jest upewnienie się, że istniejące dane są poprawne i integralne. Nadanie uprawnień do przeglądania bazy dla Administratora jest ważne dla kontroli dostępu, ale nie ma bezpośredniego wpływu na jakość kopii zapasowej. W przypadku, gdy uprawnienia są nieodpowiednio skonfigurowane, administrator może nie mieć wystarczających uprawnień do przeprowadzenia niezbędnych operacji, co prowadzi do ryzyka niewykonania pełnego backupu. Sprawdzanie wydajności bazy również nie powinno być priorytetem przed wykonaniem kopii zapasowej; choć wydajność ma znaczenie w codziennym użytkowaniu bazy danych, nie wpływa na jakość danych, które mają być zabezpieczone. Właściwe podejście do tworzenia kopii zapasowych wymaga skoncentrowania się na integralności danych, a nie na ich wydajności czy konfiguracji dostępu.

Pytanie 33

Jaką funkcję pełni program debugger?

A. przekładania kodu napisanego w języku wyższego poziomu na język maszynowy
B. interpretacji kodu w ramach wirtualnej maszyny Java
C. analizy działającego programu w celu wykrycia błędów
D. badania kodu źródłowego w celu wykrycia błędów składniowych
Debugger jest narzędziem, które pozwala na analizowanie i monitorowanie działania programów w trakcie ich wykonywania. Jego głównym celem jest lokalizacja błędów, co jest kluczowe w procesie programowania. Umożliwia on programiście śledzenie wartości zmiennych, monitorowanie stanu aplikacji oraz identyfikowanie momentów, w których występują błędy. Dobre praktyki wskazują, że regularne korzystanie z debuggersów w procesie developmentu przyczynia się do wczesnego wykrywania problemów, co z kolei redukuje koszty i czas potrzebny na naprawę. Na przykład, w przypadku aplikacji webowych, debugger może pomóc w analizie, dlaczego dany fragment kodu nie działa tak, jak oczekiwano, umożliwiając programiście zatrzymanie wykonania w konkretnym punkcie oraz sprawdzenie stanu aplikacji. Współczesne środowiska programistyczne, takie jak Visual Studio czy IntelliJ IDEA, oferują rozbudowane funkcje debugowania, które są nieocenione w codziennej pracy programisty.

Pytanie 34

Na podstawie tabeli Towar zrealizowano poniższe zapytanie SQL: ```SELECT nazwa_towaru FROM `Towar` WHERE cena_katalogowa < 65 ORDER BY waga DESC``` Jaki będzie rezultat tej operacji?

Ilustracja do pytania
A. Zeszyt A5 w linie, Zeszyt A5, Kredki 24 kolory, Papier ksero A4
B. Zeszyt A5, Zeszyt A5 w linie, Kredki 24 kolory, Papier ksero A4
C. Papier ksero A4, Kredki 24 kolory, Zeszyt A5 w linie, Zeszyt A5
D. Papier ksero A4, Kredki 24 kolory, Zeszyt A5, Zeszyt A5 w linie
Przy analizie pytania należy zwrócić uwagę na kluczowe elementy zapytania SQL, które wpływają na wynik. W zapytaniu SELECT nazwa_towaru FROM Towar WHERE cena_katalogowa < 65 ORDER BY waga DESC kluczowe są dwa elementy: filtracja po cenie katalogowej mniejszej niż 65 oraz sortowanie wyników malejąco według kolumny waga. Błąd w rozumowaniu może wynikać z braku uwzględnienia jednego z tych kryteriów. Częstym błędem jest nieuwzględnienie kolejności sortowania lub niewłaściwe zrozumienie, które kolumny są używane do sortowania. W podanej tabeli, po zastosowaniu filtra cenowego, zostają cztery towary: Papier ksero A4, Zeszyt A5, Zeszyt A5 w linie i Kredki 24 kolory. Istotne jest, aby zrozumieć, że sortowanie malejące według wagi wymaga umieszczenia towarów od najcięższego do najlżejszego. Zatem nieprawidłowe odpowiedzi mogą wynikać z nieprawidłowej kolejności sortowania, co jest częstym błędem wśród osób początkujących w SQL. Aby uniknąć takich błędów, warto wizualizować wyniki po każdej operacji SQL i upewnić się, że każdy krok jest zgodny z oczekiwaniami, co jest dobrą praktyką w analizie danych.

Pytanie 35

W JavaScript zdarzenie onKeydown zostanie wywołane, gdy klawisz

A. klawiatury będzie zwolniony
B. klawiatury będzie wciśnięty
C. myszki będzie wciśnięty
D. myszki będzie zwolniony
Odpowiedź, że zdarzenie onKeydown jest wywoływane, gdy klawisz klawiatury został naciśnięty, jest prawidłowa, ponieważ onKeydown jest zdarzeniem, które reaguje na pierwszą interakcję użytkownika z klawiaturą. W praktyce oznacza to, że gdy użytkownik naciśnie dowolny klawisz na klawiaturze, np. literę, cyfrę lub klawisz funkcyjny, zdarzenie onKeydown zostanie wywołane. Jest to kluczowe w kontekście tworzenia interaktywnych aplikacji webowych, ponieważ pozwala programistom na obsługę wejścia użytkownika w czasie rzeczywistym. Na przykład, w aplikacji do edycji tekstu, można wykorzystać onKeydown do aktualizacji zawartości edytora na podstawie wprowadzanego tekstu, co zapewnia płynne doświadczenie użytkownika. Dobrym przykładem zastosowania tego zdarzenia jest również implementacja gier, w których ruchy postaci lub akcje są wykonywane w odpowiedzi na naciśnięcia klawiszy. W standardach W3C dotyczących dostępu i interakcji z użytkownikiem, zdarzenie onKeydown uwzględnia również kwestie dostępności, co jest istotne dla projektowania inkluzywnych aplikacji.

Pytanie 36

W tabeli artykuly przeprowadzono poniższe operacje związane z uprawnieniami użytkownika jan.

GRANT ALL PRIVILEGES ON artykuły TO jan
REVOKE SELECT, UPDATE ON artykuly FROM jan

Jakie będą uprawnienia użytkownika jan po wykonaniu tych operacji?

A. aktualizowania informacji oraz przeglądania tabeli
B. tworzenia tabel oraz ich zapełniania danymi
C. przeglądania tabeli
D. tworzenia tabeli oraz aktualizowania danych w niej
Wybór odpowiedzi dotyczącej "aktualizowania danych i przeglądania tabeli" nie jest poprawny, ponieważ po wykonaniu polecenia REVOKE SELECT, UPDATE ON artykuly FROM jan, jan traci te konkretne uprawnienia. Warto zauważyć, że polecenie GRANT ALL PRIVILEGES przyznaje użytkownikowi szereg uprawnień, ale ich zakres można ograniczyć innymi poleceniami, jak REVOKE. Z tego powodu jan nie ma już możliwości przeglądania tabeli ani jej aktualizowania, co czyni tę odpowiedź nieaktualną. Często w praktyce zawodowej zdarza się, że nadawane są szerokie uprawnienia, a następnie w miarę potrzeby są one ograniczane, co może prowadzić do nieporozumień, jeśli nie zrozumie się działania tych poleceń. Kolejna niepoprawna odpowiedź, która sugeruje "przeglądanie tabeli", również jest błędna z tego samego powodu - jan nie ma takich uprawnień po REVOKE. Ostatnia z odpowiedzi, mówiąca o "tworzeniu tabeli i aktualizowaniu w niej danych", jest niepoprawna, ponieważ użytkownik jan nie ma już prawa aktualizacji danych po wycofaniu tych uprawnień. Zrozumienie mechanizmów zarządzania uprawnieniami jest kluczowe w pracy z bazami danych, aby uniknąć przypisania użytkownikom większych niż potrzebne przywilejów, co mogłoby prowadzić do nieautoryzowanego dostępu lub usunięcia danych.

Pytanie 37

W poniższym kodzie CSS czcionka zmieni kolor na żółty

a[target="_blank"]
{
  color: yellow;
}
A. odnośników, które otwierają się w tej samej karcie
B. każdego linku
C. tekstu akapitu
D. odnośników, które otwierają się w nowej karcie
Prawidłowa odpowiedź wskazuje na zastosowanie selektora a[target="_blank"] w języku CSS. Ten selektor odnosi się do wszystkich odnośników HTML, które otwierają się w nowej karcie przeglądarki dzięki użyciu atrybutu target z wartością "_blank". Stylizacja tych odnośników na kolor żółty jest możliwa przez przypisanie właściwości color z odpowiednią wartością. Jest to praktyczne podejście, które pozwala na wizualne wyróżnienie linków otwierających się w osobnych zakładkach. Takie podejście jest zgodne z dobrymi praktykami projektowania stron internetowych, gdzie wskazane jest, aby użytkownicy mieli wyraźne sygnały o nietypowych działaniach linków. W kontekście dostępności webowej, takie stylizowanie wspiera użytkowników w szybszym orientowaniu się w sposobie działania poszczególnych elementów interfejsu. Separacja stylu i treści zgodnie z zasadami CSS umożliwia bardziej elastyczne zarządzanie wyglądem strony i ułatwia utrzymanie spójności wizualnej na całej witrynie. Przykład ten ilustruje, jak CSS może wpływać na interakcję użytkownika z elementami strony, co jest kluczowe w procesie tworzenia przyjaznych i intuicyjnych interfejsów użytkownika.

Pytanie 38

Stronę internetową zapisano w języku XHTML. Który z kodów stanowi implementację przedstawionego fragmentu strony, jeżeli żadne style CSS nie zostały zdefiniowane?

Początki HTML

W 1980 fizyk Tim Berners-Lee, pracownik CERN,
stworzył prototyp hipertekstowego systemu informacyjnego – ENQUIRE


A.
<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>
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.
<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>
D.
<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>
A. D.
B. C.
C. A.
D. B.
Niestety, twoja odpowiedź nie była poprawna. Wybrany przez ciebie fragment kodu nie odpowiadał strukturze i hierarchii tagów HTML widocznej na obrazku. HTML jest językiem znaczników, który wykorzystuje różne tagi do definiowania struktury i formatowania treści na stronie internetowej. Możliwe, że niepoprawne rozumienie tagów HTML mogło skłonić cię do wybrania nieprawidłowej odpowiedzi. Na przykład, jeśli wybrałeś opcję zawierającą tagi <h2> zamiast <h1> dla nagłówka, to mogło to wynikać z niewłaściwego zrozumienia hierarchii nagłówków w HTML. Podobnie, jeśli wybrałeś opcję, która nie zawierała tagu <br />, mogło to wynikać z niewłaściwego zrozumienia funkcji tego tagu w tworzeniu przerw wiersza. Ważne jest zrozumienie, jak różne tagi HTML wpływają na prezentację i strukturę strony internetowej, aby uniknąć błędów podczas tworzenia stron.

Pytanie 39

Jaką metodę przesyłania należy wykorzystać, by zapewnić największe bezpieczeństwo danych zaszyfrowanych w formularzu, które są wysyłane do kodu PHP?

A. Metoda POST, za pomocą protokołu HTTPS
B. Metoda GET, za pomocą protokołu HTTPS
C. Metoda POST, za pomocą protokołu HTTP
D. Metoda GET, za pomocą protokołu HTTP
No niestety, wybór metody GET i protokołu HTTP to jak skakanie z przepaści, jeśli chodzi o bezpieczeństwo. Metoda GET wrzuca dane do adresu URL, co jest totalnie kiepskie, bo potem wszystko można łatwo zobaczyć w historii przeglądarki czy logach serwera. To oznacza, że ktoś może przechwycić dane, które są przesyłane, jak hasła czy inne wrażliwe informacje. A korzystanie z samego HTTP bez szyfrowania jest jeszcze gorsze. Oznacza, że nasze dane są jakoś tam przesyłane, ale nikt się nimi nie przejmuje, co otwiera drogę do ataków typu Man-in-the-Middle. Wiele aplikacji myśli, że jak coś leci w URL to jest w miarę bezpieczne, a to nieprawda. Musimy zawsze stawiać na HTTPS, żeby naprawdę chronić nasze dane. W dzisiejszych czasach, gdzie ataki w sieci są na porządku dziennym, warto być ostrożnym, bo RODO też robi swoje. Dlatego lepiej unikać GET i HTTP, kiedy chodzi o przesyłanie poufnych danych.

Pytanie 40

Aby zaprojektować kształt logo dla strony WWW sposobem przedstawionym na obrazie, należy zastosować funkcję

Ilustracja do pytania
A. sumy.
B. różnicy.
C. części wspólnej.
D. wykluczenia.
Niestety, wybrana odpowiedź jest niepoprawna. Zamiast 'różnicy', 'sumy' czy 'części wspólnej', poprawnym rozwiązaniem jest 'wykluczenie'. Na obrazie mamy do czynienia z dwoma kształtami, z których fioletowy jest nałożony na czerwony. Wynik to kształt pokazujący tylko te części czerwonego kształtu, które nie pokrywają się z fioletowym. Właśnie tak działa operacja wykluczenia w grafice komputerowej - wynikowa forma zawiera tylko te elementy jednego obiektu, które nie nakładają się z drugim. Operacje różnicy, sumy czy części wspólnej miałyby inne efekty. 'Różnica' usunęłaby część czerwonego kształtu pokrywającą się z fioletowym, 'suma' utworzyłaby kształt zawierający całość obu kształtów, a 'część wspólna' wytworzyłaby kształt pokrywający się z oboma kształtami. Odnoszenie się do niewłaściwych operacji może prowadzić do znacznych błędów w projektowaniu graficznym.