Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 13 kwietnia 2026 09:59
  • Data zakończenia: 13 kwietnia 2026 10:12

Egzamin zdany!

Wynik: 21/40 punktów (52,5%)

Wymagane minimum: 20 punktów (50%)

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

Dostosowanie wyglądu strony dla konkretnego użytkownika i jego identyfikacja w serwisie są możliwe dzięki systemowi

A. obiektów DOM
B. formularzy
C. cookie
D. połączenia z bazą
Obiekty DOM (Document Object Model) to reprezentacja struktury dokumentu HTML lub XML. Dzięki DOM, programiści mogą manipulować elementami na stronie w czasie rzeczywistym, jednak nie umożliwia on identyfikacji użytkowników ani personalizacji ich doświadczeń. DOM pozwala na dynamiczne zmiany w treści strony, ale nie przechowuje informacji o użytkowniku po zamknięciu przeglądarki. Łączenie z bazą danych to proces, który zapewnia dostęp do przechowywanych danych, ale również nie służy do identyfikacji użytkownika na poziomie przeglądarki. Właściwie używane, łączenie z bazą pozwala na pobieranie i zapisywanie danych, jednak wymaga dodatkowych mechanizmów, takich jak sesje, aby poprawnie identyfikować użytkowników. Formularze są narzędziem do zbierania danych od użytkowników, ale same w sobie nie oferują możliwości identyfikacji lub personalizacji. Użytkownik musi wprowadzić dane, które następnie mogą być przetwarzane, ale bez zastosowania cookie lub innych mechanizmów, serwis nie będzie w stanie pamiętać o tych danych przy kolejnych wizytach. W skrócie, obiekty DOM, łączenie z bazą oraz formularze stanowią tylko część ekosystemu webowego, ale nie zapewniają pełnych możliwości identyfikacji i personalizacji użytkownika, jak to robią pliki cookie.

Pytanie 2

W języku HTML, aby dodać na stronę obrazek przechowywany w formacie JPG, należy użyć znacznika

A. <jpg>
B. <table>
C. <img>
D. <src>
Aby wstawić na stronę obraz zapisany w formacie JPG, w języku HTML stosuje się znacznik <img>. Jest to jeden z podstawowych znaczników używanych do osadzania grafiki na stronach internetowych. W skład tego znacznika wchodzą atrybuty, które pozwalają na określenie źródła obrazu, jego alternatywnego opisu oraz dodatkowych parametrów, takich jak rozmiary czy wyrównanie. Atrybut 'src' jest kluczowy, ponieważ wskazuje ścieżkę do pliku graficznego, na przykład <img src='obraz.jpg' alt='Opis obrazu'>. Atrybut 'alt' jest bardzo ważny z punktu widzenia dostępności, ponieważ umożliwia wyświetlenie tekstu alternatywnego w przypadku, gdy obraz nie może być załadowany. Ponadto, zgodnie z wytycznymi W3C, znacznik <img> jest samodzielny, co oznacza, że nie wymaga pary znaczników otwierającego i zamykającego. Warto również dodać, że stosowanie odpowiednich formatów obrazów, takich jak JPG czy PNG, ma znaczenie dla jakości i wydajności ładowania strony, co jest kluczowe z perspektywy SEO. Użycie poprawnych znaczników i atrybutów może znacząco wpłynąć na pozycję strony w wynikach wyszukiwania.

Pytanie 3

Jakie znaki lub sekwencje oznaczają początek komentarza w języku JavaScript?

A. <?
B. #
C. //
D. <!--
W języku JavaScript komentarze są oznaczane na dwa podstawowe sposoby. Najbardziej powszechnym sposobem jest użycie podwójnego ukośnika, co wygląda jak '//' i jest stosowane do tworzenia komentarzy jednolinijkowych. Komentarze te są ignorowane przez interpreter JavaScript, co oznacza, że nie mają wpływu na działanie kodu. Na przykład, w kodzie można napisać: // To jest komentarz, który nie wpływa na wykonanie kodu. Oprócz tego, JavaScript obsługuje też komentarze wielolinijkowe, które rozpoczynają się od '/*' i kończą na '*/'. Umożliwiają one wstawienie dłuższego opisu, obejmującego kilka linii. Przykład: /* To jest komentarz, który zajmuje kilka linii. */ Komentarze w kodzie są niezwykle istotne, ponieważ poprawiają czytelność skryptu, umożliwiają dokumentację oraz ułatwiają pracę z zespołem. Warto zaznaczyć, że zgodność z ECMAScript, standardem, na którym oparty jest JavaScript, wymaga użycia tych znaczników w celu prawidłowego komentowania kodu.

Pytanie 4

Jak nazywa się domyślny plik konfiguracyjny dla serwera Apache?

A. htaccess.cnf
B. .configuration
C. .htaccess
D. configuration.php
Plik htaccess.cnf nie jest standardowym plikiem konfiguracyjnym serwera Apache i nie ma on znaczenia w kontekście zarządzania ustawieniami serwera. Często używana jest konwencja .cnf dla plików konfiguracyjnych w innych aplikacjach, jednak nie w przypadku Apache, który do lokalnych ustawień używa właśnie pliku .htaccess. Nazwa .configuration również jest niepoprawna, ponieważ nie odpowiada żadnemu uznanemu formatowi pliku konfiguracyjnego w ekosystemie Apache. Plik konfiguracyjny serwera Apache znajduje się zazwyczaj w lokalizacji /etc/httpd/conf/httpd.conf lub /etc/apache2/apache2.conf, a nie w formie pliku ukrytego z kropką na początku. Trzecią niepoprawną odpowiedzią jest configuration.php, która jest typowa dla aplikacji opartych na PHP, takich jak WordPress czy Joomla, ale nie ma zastosowania w kontekście konfiguracji samego serwera Apache. Tego typu pliki PHP są używane do przechowywania ustawień specyficznych dla aplikacji, a nie serwera. Użycie niepoprawnych nazw plików konfiguracyjnych może prowadzić do nieprawidłowego działania serwera, w tym błędów konfiguracyjnych czy problemów z dostępem i bezpieczeństwem strony. Dlatego ważne jest, aby administratorzy serwerów stosowali się do uznawanych standardów i konwencji w konfiguracji Apache.

Pytanie 5

W języku JavaScript rezultat wykonania polecenia zmienna++; będzie identyczny jak polecenia

A. zmienna+=1;
B. zmienna=zmienna+10;
C. zmienna===zmienna+1;
D. zmienna --;
W języku JavaScript operator inkrementacji '++' zwiększa wartość zmiennej o 1. Zapis 'zmienna++' jest równoważny z 'zmienna += 1', ponieważ obydwa polecenia prowadzą do tej samej końcowej wartości zmiennej. Operator '+=' to skrót, który dodaje wartość po prawej stronie operatora do aktualnej wartości zmiennej. Warto nadmienić, że 'zmienna++' działa w trybie post-inkrementacji, co oznacza, że zwraca pierwotną wartość przed inkrementacją, podczas gdy '++zmienna' działa w trybie pre-inkrementacji, zwracając wartość po inkrementacji. Przykładowo, jeśli zmienna wynosi 5, to po zastosowaniu 'zmienna++' jej nowa wartość stanie się 6, a jej wartość zwracana to 5. Zastosowanie operatora '+=' jest zgodne z ECMAScript, standardem, na którym oparty jest JavaScript. Użycie tych operatorów jest powszechne w programowaniu, zwłaszcza w iteracjach i obliczeniach. Przykładając to do praktyki, w kodzie można zobaczyć takie zastosowanie: let x = 5; x++; console.log(x); // wypisze 6, a let y = 5; y += 1; console.log(y); // również wypisze 6.

Pytanie 6

Zaprezentowano kod tabeli o wymiarach 3x2. Jaką zmianę wprowadzić w jej drugim wierszu, aby tabela była zgodna z obrazkiem ukazującym niewidoczny wiersz?

Ilustracja do pytania
A. <tr style="visibility: hidden">
B. <tr style="display: none">
C. <tr style="clear: none">
D. <tr style="display: table-cell">
Stosowanie stylu display: none w tabeli spowodowałoby całkowite usunięcie wiersza z układu, co oznacza, że nie tylko zawartość, ale i przestrzeń, którą zajmuje wiersz, zniknęłaby. To wpływa na pozostałe elementy tabeli, zmieniając jej układ i potencjalnie zaburzając całość kompozycji. Z kolei użycie clear: none w tym kontekście jest błędne, ponieważ clear dotyczy przepływu floatów, a nie bezpośrednio ukrywania lub pokazywania elementów. Ustawienie display: table-cell jest także nieodpowiednie, gdyż odnosi się do właściwości display elementów, które powinny być traktowane jako komórki tabeli, a nie całe wiersze. Typowym błędem jest mylenie visibility: hidden z display: none; pierwsza opcja powoduje ukrycie zawartości, ale zachowanie miejsca, co jest ważne w kontekście dynamicznych układów stron. Błędne rozumienie, jak różne style wpływają na układ dokumentu, może prowadzić do problemów z responsywnością i dostępnością projektu. Dobrym zwyczajem jest dokładne testowanie efektów używanych właściwości CSS, aby zrozumieć ich praktyczny wpływ na HTML, co jest kluczowe w zaawansowanym projektowaniu stron internetowych.

Pytanie 7

W dokumencie HTML umieszczono tekst sformatowany określonym stylem. Aby dodać do tego tekstu kilka słów sformatowanych innym stylem, należy użyć znacznika

A. <table>
B. <span>
C. <hr>
D. <section>
Znaczniki <hr>, <table> oraz <section> nie są odpowiednie do wtrącania fragmentów tekstu w innym stylu. <hr> to znacznik, który wprowadza poziomą linię, służący do wizualnego oddzielania elementów na stronie, a nie do formatowania tekstu. Stosowanie go w miejscu, gdzie chcemy zmienić styl fragmentu tekstu, byłoby nieefektywne i zmniejszałoby czytelność. Z kolei <table> jest używane do tworzenia tabel, co oznacza, że jego zastosowanie ogranicza się do strukturyzowania danych w formie wierszy i kolumn. Tego znacznika nie można użyć do lokalnego formatowania tekstu, ponieważ wprowadza on zupełnie inny kontekst i zmienia sposób, w jaki przeglądarka interpretuje i wyświetla zawartość. Ostatecznie <section> jest stosowane do grupowania powiązanych treści w sekcję dokumentu, co jest przydatne w kontekście organizacji treści, ale nie ma zastosowania w przypadku, gdy chcemy zmienić styl pojedynczych wyrazów lub fraz. Każdy z tych znaczników ma swoje specyficzne zastosowanie w HTML, które nie odpowiada potrzebie lokalnego formatowania tekstu, co czyni je niewłaściwymi wyborami w tym kontekście.

Pytanie 8

Jaką wiadomość należy umieścić w przedstawionym fragmencie kodu PHP zamiast znaków zapytania? $a=mysql_connect('localhost','adam','mojeHasło'); if(!$a) echo "?????????????????????????";

A. Wybrana baza danych nie istnieje
B. Błąd połączenia z serwerem SQL
C. Błąd w przetwarzaniu zapytania SQL
D. Rekord został pomyślnie dodany do bazy
Wybranie innej opcji niż 'Błąd połączenia z serwerem SQL' jest mylne, ponieważ każda z tych odpowiedzi nie odnosi się do kontekstu błędu połączenia z bazą danych. Stwierdzenie 'Wybrana baza nie istnieje' sugeruje, że połączenie z serwerem SQL zostało nawiązane, ale nie udało się znaleźć konkretnej bazy danych. W rzeczywistości jednak błąd przy próbie połączenia z serwerem SQL jest czymś innym, ponieważ w momencie, gdy połączenie się nie udaje, nie można jeszcze mówić o istnieniu czy nieistnieniu bazy. Kolejna opcja, 'Pomyślnie dodano rekord do bazy', jest oczywiście błędna, ponieważ w przypadku braku połączenia nie ma możliwości dodania jakiegokolwiek rekordu. Ta odpowiedź myli koncepcję pomyślnego wykonania operacji z brakiem połączenia z bazą danych. Ostatecznie, 'Błąd przetwarzania zapytania SQL' również jest niepoprawny w tym kontekście, ponieważ odnosi się do sytuacji, w której połączenie z bazą danych zostało nawiązane, ale zapytanie SQL nie mogło zostać przetworzone z powodu błędów składniowych, braku uprawnień lub innych problemów. Jednak w przypadku problemu z połączeniem nie dochodzi nawet do etapu przetwarzania zapytania, co czyni tę odpowiedź nieadekwatną.

Pytanie 9

Dla dowolnego a z zakresu (0,99) celem funkcji napisanej w języku JavaScript jest
function fun(a)
 {
    for(n=a; n <=100; n++)
    document.write(n);
    return(n);
 }

A. wypisanie wartości zmiennej a i zwrócenie wartości zmiennej n
B. zwrócenie liczb z zakresu a .. 99
C. wypisanie liczb z zakresu a .. 100 oraz zwrócenie wartości zmiennej n
D. wypisanie liczb z zakresu a .. 99 oraz zwrócenie wartości 100
Funkcja napisana w JavaScript przewiduje iterację w celu wypisania liczb z przedziału ustalonego przez zmienną 'a' do 100. W kodzie zastosowano pętlę for, która zaczyna się od wartości a, a kończy na 100. Wartość zmiennej 'n' jest używana jako iterator, zaczynając od 'a' i zwiększając się o 1 w każdym obiegu pętli, aż osiągnie 100. Warto zauważyć, że funkcja wykorzystuje metodę 'document.write()', która służy do zapisywania danych na stronie internetowej. Po zakończeniu iteracji funkcja zwraca wartość zmiennej 'n', co w kontekście tego zadania oznacza, że zwróci ona wartość 101, ponieważ po ostatniej iteracji n przekroczy wartość 100. Przykład użycia tej funkcji w praktyce może obejmować generowanie dynamicznych treści na stronach internetowych, które wymagają wyświetlenia zakresu wartości liczbowych. Warto również dodać, że zgodnie z aktualnymi standardami JavaScript, kod mógłby być bardziej elegancko zapisany, wykorzystując np. funkcję 'console.log()' zamiast 'document.write()', co jest bardziej zalecane w nowoczesnym podejściu do programowania w JavaScript.

Pytanie 10

Do czego służy funkcja PHP o nazwie mysql_num_rows?

A. zwracać rekord, którego numer został przekazany jako parametr funkcji
B. przyporządkować numery rekordom w bazie danych
C. oddawać następny rekord z wyników zapytania
D. podawać liczbę wierszy, które są w wynikach zapytania
Wszystkie pozostałe odpowiedzi są niepoprawne z kilku kluczowych powodów. Pierwsza z niepoprawnych odpowiedzi sugeruje, że funkcja mysql_num_rows ma na celu ponumerowanie rekordów w bazie danych. Takie podejście jest mylące, ponieważ mysql_num_rows nie modyfikuje ani nie przechowuje żadnych danych w bazie, a jedynie zwraca informację o liczbie wierszy w zestawie wyników, co w żaden sposób nie wiąże się z ich numerowaniem. Kolejna błędna odpowiedź wskazuje, że funkcja miałaby zwracać kolejny rekord z wynikami zapytania. W rzeczywistości, mysql_num_rows nie zwraca danych samych w sobie, lecz jedynie informację o ich liczbie, co czyni tę odpowiedź zupełnie nietrafioną. Ostatnia niepoprawna odpowiedź sugeruje, że funkcja zwraca rekord na podstawie numeru podanego w jej parametrze. Znowu, taka interpretacja jest nieprawidłowa, ponieważ mysql_num_rows nie przyjmuje parametrów odnoszących się do konkretnych rekordów, a jedynie do zmiennej wynikowej, która zawiera efekty zapytania SQL. W związku z tym, każde z tych stwierdzeń nieodzwierciedla rzeczywistej funkcji mysql_num_rows i jej zastosowania w kontekście zarządzania i przetwarzania danych w PHP.

Pytanie 11

Aby uzyskać płynne przejścia obrazów w filmie, liczba klatek (niewchodzących w interakcję ze sobą) na sekundę powinna znajdować się w co najmniej takim zakresie

A. 24 - 30 fps
B. 31 - 36 fps
C. 16 - 19 fps
D. 20 - 23 fps
Odpowiedź 24 - 30 fps jest prawidłowa, ponieważ to właśnie w tym zakresie klatek na sekundę (fps) uzyskuje się płynność ruchu, która jest akceptowana w większości produkcji filmowych i telewizyjnych. Standard 24 fps jest powszechnie stosowany w kinematografii, ponieważ pozwala na naturalne odwzorowanie ruchu, a także jest zgodny z technologią filmową. W praktyce, filmy kręcone w tym standardzie mają charakterystyczną estetykę, która jest ceniona przez widzów. Dodatkowo, przy 30 fps można uzyskać płynniejsze efekty w produkcjach telewizyjnych, szczególnie w transmisjach na żywo i sportowych, gdzie dynamika ruchu jest kluczowa. Utrzymanie liczby klatek w tym zakresie zmniejsza ryzyko efektów stroboskopowych, które mogą wystąpić przy niższych liczbach klatek. Warto również dodać, że nowoczesne technologie filmowe i animacyjne często korzystają z wyższych wartości fps, jednak standardowe ramy dla klasycznych produkcji pozostają w tym zakresie, co czyni je uniwersalnym punktem odniesienia dla twórców.

Pytanie 12

Komenda skierowana do serwera bazy danych, która polega na zbieraniu, wyszukiwaniu lub zmienianiu danych w bazie, nosi nazwę

A. formularza
B. kolumny
C. kopii
D. kwerendy
Kwerenda to termin używany w kontekście baz danych, który odnosi się do polecenia wysyłanego do serwera bazy danych w celu wykonywania operacji na danych. Główne funkcje kwerend to zbieranie, modyfikowanie lub wyszukiwanie danych w tabelach bazy danych. Kwerendy są kluczowym elementem języka SQL (Structured Query Language), który jest standardem w zarządzaniu relacyjnymi bazami danych. Na przykład, kwerenda SELECT umożliwia pobieranie danych z określonych kolumn w tabeli, a kwerenda UPDATE pozwala na modyfikację istniejących danych. Dobre praktyki w pisaniu kwerend obejmują optymalizację zapytań, używanie indeksów, a także dbanie o bezpieczeństwo (np. unikanie ataków typu SQL Injection). Zrozumienie, jak działają kwerendy, jest niezbędne dla każdego, kto pracuje z bazami danych, ponieważ pozwala to na efektywne zarządzanie danymi oraz ich analizę.

Pytanie 13

Jakim zapisem w języku PHP można określić komentarz, który rozciąga się na wiele linii?

A. #
B. //
C. /*  */
D. <!-- -->
Wybór zapisu # jako sposobu definiowania komentarzy w PHP nie jest poprawny, ponieważ jest to sposób stosowany w innych językach programowania, takich jak Bash czy Perl, do komentowania pojedynczych linii. Komentarze w PHP, które zaczynają się od // również służą do oznaczania komentarzy, ale zaledwie dla jednej linii. Oznacza to, że w przypadku dłuższych opisów, musielibyśmy używać wielu komentarzy liniowych, co obniża czytelność kodu i może prowadzić do zamieszania. Zapis <!-- --> jest całkowicie nieprawidłowy w kontekście PHP. Ten typ komentarza jest używany w HTML i XML, a jego zastosowanie w PHP może skutkować błędami, ponieważ parser PHP nie interpretuje tego formatu jako komentarza. To może prowadzić do sytuacji, w których fragmenty kodu są błędnie analizowane przez interpreter, co skutkuje nieoczekiwanym działaniem programu. Typowe błędy myślowe, które mogą prowadzić do takich niepoprawnych wniosków, to mylenie konwencji komentarzy w różnych językach programowania lub zakładanie, że pewne zapisy są uniwersalne. W praktyce, zaleca się stosowanie odpowiednich formatów komentarzy zgodnie z ich przeznaczeniem w danym języku programowania, aby uniknąć nieporozumień i błędów w kodzie.

Pytanie 14

Programista stworzył pętlę w języku C++, która miała za zadanie obliczyć wynik 5! (5! = 1 * 2 * 3 * 4 * 5). Niestety, popełnił błąd logiczny, gdyż ```int a = 1; for (int i=1; i < 5; i++) { a = a * i; } cout << a;```

Ilustracja do pytania
A. zmienna a powinna być początkowo ustawiona na 0 zamiast 1
B. w drugim parametrze pętli powinno być porównanie i < 6 zamiast i < 5
C. zmienna i pętli powinna być zmniejszana, a nie zwiększana
D. zmienna i w pętli powinna być rozpoczynana od 0, a nie od 1
Zmienna a, odpowiedzialna za przechowywanie wyniku, nie powinna być inicjowana wartością 0, gdyż każdy wynik mnożenia przez 0 również daje 0, co zniweczyłoby cały proces obliczeniowy. Inicjalizacja zmiennej wartością 1 jest odpowiednia, ponieważ jest to element neutralny dla mnożenia. Pomysł inicjowania parametru i pętli wartością 0 zamiast 1 jest błędny, ponieważ obliczanie silni wymaga rozpoczęcia od wartości 1, nie 0. Rozpoczęcie od 0 jest odpowiednie dla iteracji związanych z indeksami tablic w wielu językach programowania, ale nie w przypadku obliczeń liczbowych, takich jak silnia. Dekrementacja parametru i zamiast inkrementacji w kontekście silni jest nieodpowiednia, ponieważ wymagałaby przebiegania pętli wstecz od większej wartości do 1, co komplikuje logikę i zwiększa ryzyko błędów logicznych. Takie podejście nie tylko odbiega od standardowych praktyk, ale również jest mniej czytelne i trudniejsze do zrozumienia oraz utrzymania. Dobre praktyki kodowania zalecają, aby pętla for była używana w sposób, który jest intuicyjnie zrozumiały i logiczny, co oznacza inkrementację w przypadku iteracji przez rosnące wartości. Ustalenie poprawnego warunku zakończenia pętli jest kluczowe dla otrzymania właściwego wyniku, a w przypadku obliczania silni, musi obejmować wszystkie liczby w zakresie od 1 do n. Zrozumienie tych podstawowych zasad jest niezbędne dla każdego programisty, aby unikać powszechnych błędów logicznych w algorytmach.

Pytanie 15

Określ złożoność obliczeniową algorytmu naiwnego (zwykłego) poszukiwania minimum w kolekcji liczb?

A. O(n)
B. O(n2)
C. O(n3)
D. O(n!)
Algorytm naiwnego (zwykłego) wyszukiwania minimum w zbiorze liczb charakteryzuje się złożonością obliczeniową O(n), co oznacza, że jego czas wykonania rośnie liniowo w zależności od liczby elementów w zbiorze. W praktyce oznacza to, że aby znaleźć najmniejszy element w zbiorze liczb, algorytm przeszukuje wszystkie elementy, porównując je ze sobą. W przypadku zbioru zawierającego n elementów, konieczne jest wykonanie n-1 porównań, co skutkuje liniową złożonością. Wyszukiwanie minimum jest użyteczne w wielu aplikacjach, takich jak analiza danych, gdzie może być wykorzystywane do szybkiego lokalizowania najniższej wartości w zestawie wyników. Dobrymi praktykami w tym zakresie są stosowanie tego algorytmu w sytuacjach, gdy zbiór danych jest relatywnie mały lub gdy zależy nam na prostocie i czytelności kodu. Złożoność O(n) jest optymalna dla tego typu operacji, ponieważ nie da się znaleźć minimum bez przeszukania każdego elementu przynajmniej raz, co potwierdza zasadę, że konieczne jest zbadanie wszystkich danych w celu uzyskania poprawnego wyniku.

Pytanie 16

Termin "front-end" w kontekście projektowania stron WWW odnosi się do

A. bazy danych z danymi publikowanymi na stronie
B. interfejsu witryny internetowej powiązanego z technologiami operującymi w przeglądarce internetowej
C. działania skryptów oraz aplikacji realizowanych po stronie serwera WWW
D. organizacji informacji na serwerze WWW
Front-end to wszystko to, co widzisz w przeglądarce, czyli ogólnie mówiąc, wygląd strony i to, jak się z nią bawisz. Mówię tu o kolorach, czcionkach, układzie czy różnych akcjach, które możesz wykonać. Technologie jak HTML, CSS i JavaScript są tu na czołowej pozycji, bo to dzięki nim strona jest taka interaktywna i przyjemna dla oka. Przykłady? Budowa responsywnych interfejsów, które zmieniają rozmiar na różnych ekranach, albo skrypty, które potrafią zmieniać treści na stronie bez przeładowania jej. Dobrze jest też pomyśleć o tym, żeby strona ładowała się jak najszybciej, bo to wpływa na to, jak użytkownicy będą ją odbierać. A jeśli znasz nowe frameworki, jak React czy Angular, to naprawdę ułatwia stworzenie bardziej złożonych aplikacji webowych, co w dzisiejszych czasach jest mega ważne.

Pytanie 17

Jaką formę przybierze data po wykonaniu poniższego kodu PHP?

<?php
echo date('l, dS F Y');
?>
A. Monday, 10th July 17
B. Monday, 10 July 2017
C. 10, Monday July 2017
D. Monday, 10th July 2017
W tym przykładzie funkcja date() w PHP przyjmuje ciąg znaków 'l dS F Y' jako parametr formatowania, co determinuje sposób wyświetlenia daty. Znak 'l' reprezentuje pełną nazwę dnia tygodnia, co w przypadku poniedziałku da 'Monday'. 'd' to dwucyfrowa reprezentacja dnia miesiąca, dodając 'S' uzyskujemy jego wersję z angielskim sufiksem porządkowym, np. '10th', co jest zgodne z odpowiedzią. 'F' reprezentuje pełną nazwę miesiąca, czyli 'July', a 'Y' to pełny rok, czyli '2017'. Kombinacja tych formatów pozwala na uzyskanie czytelnej i zgodnej ze standardami reprezentacji daty w języku angielskim, co jest często wykorzystywane w międzynarodowych projektach webowych. Takie formatowanie jest nie tylko intuicyjne dla użytkowników, ale także zgodne z dobrymi praktykami w zakresie czytelności i użyteczności w aplikacjach internetowych. PHP umożliwia elastyczne formatowanie dat, co jest bardzo przydatne w kontekście globalnych aplikacji wymagających różnych lokalizacji.

Pytanie 18

Na ilustracji przedstawiono wybór formatu pliku do importu bazy danych. Który format powinien być wykorzystany, jeśli dane zostały wyeksportowane z programu Excel i zapisane jako tekst z użyciem przecinka do oddzielania wartości pól?

Ilustracja do pytania
A. CSV
B. SQL
C. XML
D. ESRI
Format SQL jest używany do pracy z relacyjnymi bazami danych, ale nie jest odpowiedni do importu danych z Excela, jeśli są one zapisane w postaci tekstowej z przecinkami. SQL to język zapytań, który służy do zarządzania i modyfikacji danych w bazach danych, ale nie jest formatem przechowywania danych. W przypadku ESRI, mamy do czynienia z formatem plików kształtu, który jest specyficzny dla danych geoprzestrzennych i nie jest dostosowany do ogólnych danych tabelarycznych, takich jak te z Excela. Format ESRI jest używany głównie w GIS do przechowywania danych przestrzennych. Natomiast XML jest formatem znaczników, który umożliwia przechowywanie danych w strukturze drzewa i jest bardziej złożony niż CSV. XML jest używany wtedy, gdy potrzebujemy skomplikowanej struktury danych z definicjami hierarchii, co czyni go mniej efektywnym dla prostego importu tabelarycznego. Wybór niewłaściwego formatu wynika często z niezrozumienia specyfiki i przeznaczenia każdego z nich. Często błędnym założeniem jest przekonanie, że bardziej skomplikowane formaty, takie jak XML czy SQL, są zawsze lepszym wyborem, co nie jest prawdą, gdy celem jest prostota i kompatybilność z szeroką gamą programów i systemów. CSV pozostaje najefektywniejszym rozwiązaniem dla tego typu danych dzięki swojej prostocie i łatwości użycia w wielu kontekstach technologicznych.

Pytanie 19

Jakiego typu tablicy dotyczy instrukcja dodawania elementu w JavaScript?

Tablica['technik'] = 'informatyk';
A. liczbowej
B. stałej
C. wielowymiarowej
D. asocjacyjnej
Tablica asocjacyjna w JavaScript to struktura danych, która przechowuje wartości w formie par klucz-wartość, co pozwala na efektywne i dynamiczne przypisywanie i pobieranie danych. Klucze w tablicy asocjacyjnej mogą być dowolnymi łańcuchami znaków, co daje dużą elastyczność w organizacji danych. Przykładem jest przypisanie Tablica['technik'] = 'informatyk'; gdzie 'technik' jest kluczem, a 'informatyk' wartością. To podejście jest zgodne ze standardami JavaScript, w którym tablice asocjacyjne są implementowane jako obiekty. W praktyce używa się ich często do przechowywania konfiguracji, danych użytkowników lub innych danych, które wymagają szybkiego dostępu i modyfikacji. Tablice asocjacyjne umożliwiają dynamiczne dodawanie nowych par klucz-wartość, co jest cenioną cechą w aplikacjach wymagających skalowalności. Warto zauważyć, że podczas gdy tradycyjne tablice używają indeksów liczbowych, tablice asocjacyjne oferują większą elastyczność poprzez użycie kluczy tekstowych, co jest zgodne z dobrymi praktykami kodowania i ułatwia czytelność oraz utrzymanie kodu.

Pytanie 20

Ograniczanie dostępu do niektórych pól lub metod obiektów danej klasy, tak aby mogły być one wykorzystywane wyłącznie przez wewnętrzne metody tej klasy lub funkcje zaprzyjaźnione, to

A. konkatenacja
B. dziedziczenie
C. polimorfizm
D. hermetyzacja
Hermetyzacja to kluczowa koncepcja programowania obiektowego, która polega na ograniczaniu dostępu do pewnych pól i metod danej klasy, aby chronić integralność danych i zapewnić ich poprawne użycie. Przykładem hermetyzacji jest użycie modyfikatorów dostępu, takich jak 'private' i 'protected', co pozwala na ukrycie implementacji od użytkowników klasy, a jednocześnie umożliwia dostęp do tych elementów wewnętrznym metodom klasy. Dzięki hermetyzacji programiści mogą wprowadzać zmiany w implementacji bez wpływu na kod zewnętrzny, co wspiera zasady SOLID i ułatwia zarządzanie dużymi systemami. Rekomendowane praktyki w programowaniu obiektowym zalecają, aby klasy były odpowiedzialne za zarządzanie swoimi danymi, a dostęp do tych danych powinien odbywać się wyłącznie poprzez zdefiniowane interfejsy, takie jak metody publiczne, co pozwala na kontrolowanie operacji i walidację danych. W ten sposób hermetyzacja przyczynia się do większej niezawodności, czytelności oraz łatwości w testowaniu aplikacji.

Pytanie 21

W programie napisanym w języku C++ należy wczytać zmienną całkowitą o nazwie liczba i wyświetlić ją tylko w przypadku, gdy przyjmuje trzycyfrowe wartości parzyste. Instrukcja warunkowa, która to sprawdza, powinna być oparta na wyrażeniu logicznym

A. liczba % 2 == 0 || liczba > 99 || liczba < 999
B. liczba % 2 == 0 && (liczba > 99 || liczba < 999)
C. liczba % 2 == 0 || (liczba > 99 && liczba < 999)
D. liczba % 2 == 0 && liczba > 99 && liczba < 999
Wybór odpowiedzi, które nie spełniają wszystkich warunków, prowadzi do sytuacji, w której program nie będzie działał zgodnie z zamierzeniem. W przypadku użycia operatora OR ('||') w odpowiedziach, takich jak 'liczba % 2 == 0 && (liczba > 99 || liczba < 999)', logicznie podchodzimy do problemu w sposób, który nie odzwierciedla wymagań dotyczących liczby trzycyfrowej. Operator OR oznacza, że wystarczy spełnienie jednego z warunków, aby cała instrukcja była prawdziwa, co wprowadza możliwość wyświetlenia liczb, które są parzyste, ale nie mają trzech cyfr. Na przykład liczba 50, która jest parzysta, ale nie jest trzycyfrowa, przejdzie przez tę kontrolę, co jest sprzeczne z założeniem. Podobnie, odpowiedzi opierające się na wyrażeniu 'liczba % 2 == 0 || (liczba > 99 && liczba < 999)' również nie spełniają wymagań, ponieważ pozwalają na wyświetlenie liczb nieparzystych, oraz na liczby, które nie są trzycyfrowe. Często popełnianym błędem w programowaniu jest nieprzemyślenie logicznych warunków, co prowadzi do nieprawidłowego funkcjonowania aplikacji. W programowaniu istotne jest, aby każdy warunek był dokładnie przemyślany i zgodny z wymaganiami funkcjonalnymi, co jest kluczowe dla tworzenia niezawodnych i łatwych w utrzymaniu systemów.

Pytanie 22

W poniższym zapisie CSS kolor zielony zostanie zastosowany do

h2
{
    background-color: green;
}
A. tła tekstu nagłówka drugiego poziomu
B. tła całej witryny
C. czcionki wszystkich nagłówków na stronie
D. czcionki nagłówka drugiego poziomu
Zrozumienie różnicy między background-color a innymi właściwościami CSS jest kluczowe dla poprawnego stylizowania elementów na stronach internetowych. Właściwość background-color nie wpływa na kolor czcionki, lecz jedynie na kolor tła określonego elementu. Dlatego zapis background-color: green; dla selektora h2 ustawia zielone tło dla wszystkich nagłówków drugiego stopnia na stronie. To skutecznie wyklucza możliwość, by dotyczyło to samej czcionki czy całej strony. Idea, że mógłby to być kolor czcionki dla nagłówków bądź całej strony, jest błędna, ponieważ do zmiany koloru czcionki używa się właściwości color, a nie background-color. Mylenie tych właściwości jest częstym błędem, jednak ich prawidłowe rozróżnienie pozwala na precyzyjne sterowanie wyglądem elementów. Przy zastosowaniu właściwych stylów można zyskać nie tylko na atrakcyjności wizualnej, ale także na dostępności i użyteczności. Warto też pamiętać o znaczeniu semantycznym tagów HTML, co w połączeniu z odpowiednim stylizowaniem wspiera lepszą indeksację przez wyszukiwarki internetowe oraz poprawia doświadczenie użytkownika w nawigacji po stronie. Takie zrozumienie pozwala na tworzenie stron zgodnych z aktualnymi standardami webowymi, promując dobre praktyki w projektowaniu interfejsów użytkownika. Zastosowanie zielonego tła dla <h2> jest zgodne z zasadami CSS, co pozwala na dokładne kontrolowanie stylu w nowoczesnych aplikacjach internetowych.

Pytanie 23

Gdzie w dokumencie HTML mogą być umieszczane fragmenty kodu JavaScript?

A. tak w sekcji <head>, jak i <body>, w znaczniku <java>
B. wyłącznie w sekcji <body>, w znaczniku <java>
C. zarówno w sekcji <head>, jak i <body>, w znaczniku <script>
D. jedynie w sekcji <head>, w znaczniku <script>
Wiesz, wstawianie kodu JavaScript do dokumentu HTML powinno odbywać się w znaczniku <script>. Możesz go umieścić zarówno w <head>, jak i w <body>. Często wrzucamy skrypty do <head>, bo chcemy, żeby załadowały się przed wyświetleniem treści. To się przydaje, gdy skrypty zmieniają coś w DOM. Z drugiej strony, jak wrzucisz je do <body>, to skrypty będą ładowane po całej treści, co może przyspieszyć to, co widzi użytkownik. Na przykład, jeśli tworzysz coś interaktywnego, lepiej umieścić skrypty na dole, żeby nie blokować renderowania. Dobrze jest też pamiętać o atrybucie 'defer' w <script>, bo dzięki temu skrypt się ściąga równolegle z innymi rzeczami, ale działa dopiero jak cały dokument jest załadowany. To ważne, żeby strony działały sprawnie i były przyjemne w użytkowaniu.

Pytanie 24

Jakiego elementu musisz użyć, aby rozpocząć nową linię tekstu bez tworzenia akapitu na stronie internetowej?

A. </b>
B. <p>
C. <br>
D. </br>
Znak <br> jest standardowym elementem HTML używanym do wprowadzenia przerwy w tekście, która nie tworzy nowego akapitu. W przeciwieństwie do znacznika <p>, który definiuje akapit i dodaje dodatkową przestrzeń przed i po nim, <br> po prostu przenosi tekst do nowej linii, co jest szczególnie przydatne w takich sytuacjach jak adresy, wiersze piosenek czy fragmenty tekstu, gdzie formatowanie linii jest kluczowe. Przykład użycia: <p>Adam Mickiewicz,<br>Pan Tadeusz.</p> W powyższym przykładzie tekst "Pan Tadeusz" zostanie wyświetlony w nowej linii, ale nie jako nowy akapit. Warto pamiętać, że stosowanie zbyt wielu <br> w kodzie HTML może prowadzić do chaotycznego formatowania, dlatego zaleca się ich użycie z umiarem, zgodnie z zasadami dobrego projektowania stron i przystosowywania ich do różnych urządzeń, co jest zgodne z zasadami responsywnego designu. Zastosowanie <br> jest zgodne z HTML5 i uznawane za najlepszą praktykę przy tworzeniu prostych układów tekstowych.

Pytanie 25

Funkcją zaprezentowanego kodu PHP jest napełnienie tablicy $tab 10 losowymi liczbami z przedziału od -100 do 100, a następnie wypisanie liczb ujemnych. Kod prezentuje się następująco:

$tab = array();
for ($i = 0; $i < 10; $i++)
{
    $tab[$i] = rand(-100, 100);
}

foreach ($tab as $x)
{
    if ($x < 0)
        echo "$x ";
}
A. kolejnymi liczbami od 0 do 9 i ich wyświetlenie
B. kolejnymi liczbami od -100 do 100 oraz wypisanie liczb ujemnych
C. 100 losowymi liczbami, a następnie wypisanie liczb dodatnich
D. 10 losowymi wartościami, a następnie wypisanie liczb ujemnych
Przedstawiony kod w języku PHP ma na celu wypełnienie tablicy dziesięcioma losowymi wartościami i wypisanie tych, które są ujemne. Funkcja rand(-100, 100) generuje liczby losowe z zakresu od -100 do 100. W pętli for wykonujemy dziesięć iteracji, co umożliwia dodanie dziesięciu takich liczb do tablicy. Następnie, za pomocą pętli foreach, iterujemy przez wszystkie elementy tablicy. Instrukcja warunkowa if sprawdza, czy każda z wartości jest mniejsza od zera. Jeśli warunek jest spełniony, liczba jest wypisywana na ekran. Takie podejście jest często stosowane w programowaniu, gdy wymagana jest praca z losowymi danymi w celu testowania lub symulacji. W praktycznych zastosowaniach można użyć tej metody do filtrowania danych lub analizy wyników eksperymentalnych, gdzie konieczne jest zidentyfikowanie i obsługa wartości o określonych właściwościach. Dobre praktyki programistyczne nakazują dokumentowanie takich fragmentów kodu, aby ułatwić zrozumienie i utrzymanie projektu przez innych deweloperów.

Pytanie 26

Aby zrealizować podane czynności w JavaScript, należy w znaczniku <script> umieścić poniższy kod

  1. Wyświetlić okno do wpisania wartości z poleceniem "Podaj kwalifikacje: ", następnie po zatwierdzeniu
  2. Umieścić napis na stronie internetowej, gdzie w miejscu kropek znajduje się wartość pobrana z okna "Kwalifikacja: ..."
A. A = alert("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
B. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
C. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: ".A)
D. A << prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
Odpowiedź 1 jest prawidłowa, ponieważ w JavaScript funkcja prompt() służy do wyświetlenia okna dialogowego z poleceniem dla użytkownika, aby wprowadził tekst. Po wpisaniu wartości przez użytkownika i zatwierdzeniu, tekst jest przypisywany do zmiennej A. Następnie funkcja document.write() umożliwia dynamiczne dodanie tego tekstu do dokumentu HTML. Poprawne użycie obu tych funkcji spełnia wymagania zadania – najpierw otwieramy okno dialogowe, a potem umieszczamy wprowadzone dane na stronie. Stosowanie prompt() i document.write() jest często wykorzystywane w aplikacjach webowych do interakcji z użytkownikiem w sposób bezpośredni. Mimo że bardziej nowoczesne metody, takie jak manipulacja DOM za pomocą innerHTML czy użycie frameworków JavaScript, oferują większe możliwości, prompt() i document.write() pozostają prostymi narzędziami do szybkiej prezentacji wyników na stronie. Warto jednak pamiętać, że nadmierne użycie document.write() może prowadzić do nadpisania istniejących treści w dokumencie, co nie jest optymalną praktyką w złożonych aplikacjach webowych.

Pytanie 27

Którą czynność gwarantującą poprawne wykonanie przedstawionego kodu Java Script, należy wykonać przed pętlą?

var text;
for ( var i = 0; i < tab.length; i++ ) {
  text += tab[i] + "<br>";
}
A. Sprawdzić rozmiar tabeli tab.
B. Zainicjować zmienną text.
C. Zadeklarować zmienną i.
D. Sprawdzić czy text j est typu znakowego.
Wygląda na to, że odpowiedź nie była poprawna. Pozostałe opcje, tj. 'Sprawdzić czy text j est typu znakowego', 'Zadeklarować zmienną i', 'Sprawdzić rozmiar tabeli tab', nie są bezpośrednio związane z poprawnym wykonaniem kodu przedstawionego w pętli. Chociaż wszystkie te działania mogą być istotne w różnych kontekstach programowania, w tym przypadku żadne z nich nie gwarantuje poprawnego wykonania kodu. Deklaracja zmiennej 'i' czy sprawdzenie rozmiaru tabeli 'tab' jest często stosowane w pętlach, jednak nie gwarantują one poprawnego działania kodu w pętli bez odpowiedniego zainicjowania zmiennej 'text'. Zrozumienie tego aspektu jest kluczowe dla efektywnego programowania, zarówno w JavaScript, jak i w innych językach programowania.

Pytanie 28

Dana jest tabela firmy zawierająca następujące kolumny: nazwa, adres, NIP, obrot (obrót w ostatnim miesiącu), rozliczenie, status. Wykonanie kwerendy SQL SELECT sprawi, że zostaną wyświetlone

SELECT nazwa, NIP FROM firmy WHERE obrot < 4000;
A. jedynie nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót mniejszy niż 4000 zł.
B. wszystkie dane firm, które w ostatnim miesiącu miały obrót co najmniej 4000 zł.
C. wszystkie dane firm, które w ostatnim miesiącu miały obrót mniejszy niż 4000 zł.
D. jedynie nazwa oraz numer NIP firm, które w ostatnim miesiącu miały obrót co najmniej 4000 zł.
Twoja odpowiedź jest nieprawidłowa. W tym przypadku, pytanie dotyczyło wybrania nie wszystkich, a jedynie niektórych kolumn z tabeli - w tym wypadku nazwy i NIPu firm. Możliwe, że zostałeś wprowadzony w błąd, myśląc, że zawsze wybieramy wszystkie kolumny, co jest częstym błędem początkujących użytkowników SQL. W praktyce jednak, bardzo często zapytania SQL są konstruowane w taki sposób, aby wybierać tylko niektóre kolumny. Kolejnym błędem, który mógł wpłynąć na twoją odpowiedź, jest niezrozumienie klauzuli WHERE w SQL. Klauzula WHERE w SQL jest używana do filtrowania wyników zapytania. W tym przypadku, warunek dotyczył obrotu firmy - pytanie zadało kryterium, że obrót musi być mniejszy niż 4000 zł. Pamiętaj, że zrozumienie struktury i funkcji zapytań SQL jest kluczowe dla efektywnej pracy z bazami danych.

Pytanie 29

Użytkownik Jan będzie mógł wykonywać

GRANT ALL PRIVILEGES ON dane.* TO 'Jan'@'localhost';
A. wszystkie operacje na tabelach bazy dane oraz nadawać prawa innym użytkownikom.
B. jedynie operacje manipulowania danymi i zmienić jedynie swoje prawa.
C. jedynie operacje CREATE, ALTER, DROP na tabelach bazy dane.
D. wszystkie operacje na tabelach bazy dane.
Wszystkie pozostałe odpowiedzi są niepoprawne z różnych powiedział. Druga odpowiedź sugeruje, że Jan może wykonywać tylko operacje CREATE, ALTER, DROP. Jest to nieprawidłowe, ponieważ otrzymał on pełne uprawnienia do bazy danych, co zdecydowanie wykracza poza te trzy operacje. Trzecia odpowiedź zawiera błędne przekonanie, że Jan może nadawać uprawnienia innym użytkownikom. Pomimo posiadania pełnych uprawnień do bazy danych, nie oznacza to, że ma on możliwość zarządzania uprawnieniami innych użytkowników. Czwarta odpowiedź jest również błędna, twierdząc, że Jan może manipulować danymi i zmieniać tylko swoje uprawnienia. W rzeczywistości, Jan nie ma uprawnień do zmiany swoich własnych uprawnień - to zadanie zazwyczaj spoczywa na administratorze bazy danych. Wszystkie te błędy wynikają z niewłaściwego zrozumienia zarządzania uprawnieniami w bazach danych i roli konstrukcji GRANT. W rzeczywistości, GRANT pozwala na precyzyjne i granularne zarządzanie uprawnieniami, a pełne uprawnienia oznaczają pełną kontrolę nad bazą danych, ale nie nad uprawnieniami innych użytkowników.

Pytanie 30

Wskaż poprawną definicję stylu CSS dla przycisku typu submit o właściwościach: czarny kolor tła, brak obramowania, marginesy wewnętrzne 5 px.

input[type=submit] {
  background-color: #000000;
  border: none;
  padding: 5px;
}                         A.

input[type=submit] {
  background-color: #ffffff;
  border: none;
  padding: 5px;
}                         B.

input=submit {
  background-color: #000000;
  border: none;
  margin: 5px;
}                         C.

input=submit {
  background-color: #000000;
  border: 0px;
  margin: 5px;
}                         D.
A. C.
B. B.
C. A.
D. D.
Dobrze! Wybrałeś prawidłową odpowiedź. Odpowiedź A jest poprawna, ponieważ to styl CSS dla przycisku typu submit spełnia wszystkie podane wymagania. Wygląda to mniej więcej tak: 'input[type='submit'] { background-color: black; border: none; padding: 5px; }'. 'input[type='submit']' to selektor, który wskazuje elementy wejściowe o typie 'submit'. Następnie, wewnątrz nawiasów klamrowych, mamy trzy deklaracje. 'background-color: black;' określa, że przycisk ma czarne tło. 'border: none;' usuwa wszelkie obramowanie. 'padding: 5px;' ustawia marginesy wewnętrzne na 5 pikseli. Pisanie czystego i efektywnego kodu CSS jest kluczową umiejętnością dla każdego doświadczonego dewelopera front-endu. Dobrze napisane style CSS mogą znacznie poprawić wydajność strony internetowej i ułatwić jej utrzymanie.

Pytanie 31

Po zrealizowaniu polecenia SQL użytkownik Ela zyska możliwość wykorzystania poniższych uprawnień:

GRANT SELECT, INSERT, UPDATE, DELETE ON baza1.tab1 TO 'Ela'@'localhost';
A. tylko tworzyć i zmieniać strukturę tabeli
B. realizować wszystkie działania na strukturze danych
C. tylko dodawać oraz zmieniać dane
D. przeprowadzać wszystkie operacje na danych
Wybór odpowiedzi, która sugeruje, że użytkownik może jedynie dodawać i modyfikować dane, jest mylny, ponieważ nie uwzględnia uprawnienia SELECT, które jest również częścią przyznanych uprawnień. Ograniczając interpretację do dodawania i modyfikowania danych, można zignorować kluczowy aspekt bazy danych – możliwość ich przeglądania. Ponadto, twierdzenie, że użytkownik może jedynie tworzyć i modyfikować strukturę tabel, jest nieadekwatne, ponieważ polecenie GRANT nie dotyczy uprawnień do zmiany struktury bazy danych, takich jak dodawanie nowych tabel czy kolumn. Takie operacje są regulowane przez inne uprawnienia, które muszą być również przyznane. W sytuacji, gdy mówimy o operacjach na strukturze danych, należy uwzględnić, że uprawnienia GRANT dotyczą jedynie pracy z danymi przechowywanymi w tabelach, a nie z ich strukturalnymi aspektami. Pojęcie 'wszystkie operacje na strukturze danych' może wprowadzać w błąd, ponieważ nie odnosi się do przyznanych uprawnień, które nie obejmują na przykład tworzenia nowych tabel lub zmiany ich definicji. Dlatego ważne jest, aby dokładnie zrozumieć różnicę między uprawnieniami do operacji na danych a uprawnieniami do zarządzania strukturą bazy danych. Kluczowym błędem jest zatem niedostrzeganie znaczenia uprawnienia SELECT oraz niewłaściwe rozumienie zakresu przyznawanych uprawnień w kontekście SQL.

Pytanie 32

W CSS określono styl dla pola do edycji, które będzie miało tło w kolorze jasnozielonym po aktywacji.

input:focus { background-color: LightGreen; }
A. jeśli zostanie na nie najechane kursorem bez kliknięcia
B. gdy jest to pierwsze użycie tego elementu w dokumencie
C. w każdej sytuacji
D. po kliknięciu myszką w celu wprowadzenia tekstu
Typowe błędy myślowe prowadzące do niepoprawnych odpowiedzi często obejmują mylenie różnych stanów interakcji z elementami formularzy. Na przykład, odpowiedź sugerująca, że stylizowane tło zostaje aktywowane "gdy zostanie wskazane kursorem myszy bez kliknięcia" myli pojmowanie stanu focus z prostym najechaniem kursorem. W rzeczywistości, stan focus aktywuje się tylko w wyniku interakcji, takiej jak kliknięcie lub nawigacja za pomocą klawiatury. Kolejną nieścisłością jest stwierdzenie, że formatowanie ma zastosowanie "w każdym przypadku". Takie podejście nie uwzględnia faktu, że styl focus jest specyficzny dla interakcji użytkownika, a więc jego zastosowanie jest ograniczone do sytuacji, w których element jest aktywny. Warto zauważyć, że dobrze zaprojektowane formularze online powinny wykorzystywać zdarzenia focus i blur, aby dostarczać użytkownikom pomocnych wskazówek oraz ułatwić wprowadzanie danych. Ignorowanie tych koncepcji prowadzi do projektowania interfejsów, które nie są w pełni responsywne wobec potrzeb użytkowników. Dlatego zrozumienie różnicy między focus a zwykłym wskazaniem kursorem jest kluczowe dla tworzenia efektywnych i przyjaznych dla użytkownika aplikacji internetowych.

Pytanie 33

Jakie ustawienia dotyczące czcionki będą miały zastosowanie w przypadku kodu CSS?

* {
    font-family: Tahoma;
    color: Teal;
}
A. znaczników z klasą przypisaną jako *.
B. wszystkiego kodu HTML, niezależnie od kolejnych ustawień CSS.
C. wszystkiego kodu HTML, jako domyślne formatowanie dla wszystkich elementów strony.
D. znaczników o identyfikatorze równym *.
Wybór opcji dotyczącej całego kodu HTML jako formatowania domyślnego dla wszystkich elementów strony jest poprawny, ponieważ użycie selektora uniwersalnego * w CSS oznacza, że wszystkie dostępne elementy na stronie będą dziedziczyć określone style. W tym przypadku, zarówno font-family ustawiony na Tahoma, jak i kolor tekstu zmieniony na Teal, będą dotyczyły każdego elementu HTML, bez względu na jego typ. To podejście jest zgodne z zasadami stosowania stylów kaskadowych, gdzie style są aplikowane do elementów w sposób hierarchiczny, a selektor uniwersalny jest najogólniejszym z dostępnych. Przykładem zastosowania może być sytuacja, gdy chcemy ustawić jednolite formatowanie dla całej strony, co upraszcza proces projektowania i zapewnia spójność wizualną. Dobrą praktyką jest jednak używanie selektora uniwersalnego z umiarem, aby uniknąć nadmiernego obciążenia wydajności, szczególnie w większych dokumentach, gdzie precyzyjniejsze selektory mogą przynieść lepsze rezultaty.

Pytanie 34

Zgodnie z wytycznymi WCAG 2.x  na poziomie AA minimalny kontrast tekstu (o standardowym rozmiarze) do tła, spełniający wymogi dostępności serwisu WWW dla osób z ograniczoną percepcją wzrokową wynosi

A. 2,5 : 1
B. 4,5 : 1
C. 1,5 : 1
D. 2,0 : 1
W tym pytaniu łatwo wpaść w pułapkę myślenia, że „jakikolwiek” kontrast wystarczy, by tekst był czytelny. Warto jednak oprzeć się na twardych definicjach z WCAG 2.x, a nie na subiektywnym wrażeniu, że coś „da się przeczytać”. Propozycje niższych wartości kontrastu, takich jak 1,5 : 1, 2,0 : 1 czy 2,5 : 1, odzwierciedlają typowy błąd: ocenianie czytelności tylko własnymi oczami, najczęściej osoby młodej, bez problemów ze wzrokiem, siedzącej przy dobrym monitorze i w dobrych warunkach oświetleniowych. Współczynniki zbyt niskie, rzędu 1,5 : 1 czy 2,0 : 1, oznaczają bardzo małą różnicę jasności między tekstem a tłem. Na ekranie będzie to wyglądało jak delikatne „rozmycie” tekstu w tle. Osoby z obniżonym kontrastem widzenia, z wadami refrakcji, a nawet użytkownicy korzystający ze słabszych ekranów lub w mocnym słońcu, zwyczajnie nie odczytają takiego tekstu bez dużego wysiłku. To nie jest tylko kwestia komfortu – przy dłuższej pracy może to powodować zmęczenie oczu, bóle głowy i zniechęcenie do korzystania z serwisu. Warto też zauważyć, że wartości 2,5 : 1 czasem „intuicyjnie” wydają się już całkiem niezłe, szczególnie gdy projektant przyzwyczajony jest do bardzo delikatnych, pastelowych palet. Ale WCAG 2.0 i 2.1 w kryterium 1.4.3 wyraźnie mówią: dla zwykłego tekstu poziom AA wymaga minimum 4,5 : 1. Niższe liczby mogą być stosowane tylko w określonych sytuacjach, np. dla dużego tekstu (wtedy próg 3 : 1) albo na poziomie AAA, gdzie są jeszcze ostrzejsze wymagania dla niektórych elementów. Wszelkie niższe wartości dla małego tekstu są po prostu niezgodne ze standardem. Kolejny typowy błąd myślowy to mieszanie wymagań estetycznych z wymogami dostępności. Projektanci często boją się „zbyt mocnych” kontrastów, bo wydaje im się, że interfejs będzie wyglądał zbyt ciężko, zbyt ostro. Przez to sięgają po bardzo jasne szarości albo blade kolory tekstu. Tymczasem branżowe dobre praktyki projektowania dostępnych interfejsów mówią jasno: kontrast minimum 4,5 : 1 dla podstawowego tekstu to absolutne minimum, a w wielu serwisach (np. administracja publiczna, systemy B2B używane godzinami) warto iść jeszcze wyżej. Trzymanie się zbyt niskich wartości nie tylko łamie standard WCAG, ale też realnie wyklucza część użytkowników z komfortowego korzystania z serwisu.

Pytanie 35

Który standard video cechuje się rozdzielczością 1920 px na 1080 px?

A. Full HD
B. 4K
C. Ultra HD 
D. HD Ready
Prawidłowa odpowiedź to „Full HD”, bo właśnie ten standard oznacza rozdzielczość 1920 × 1080 pikseli w proporcjach 16:9. W praktyce, gdy mówimy o filmach na YouTube, streamach, nagraniach z kamery czy materiałach promocyjnych na stronę WWW, opcja 1080p to właśnie Full HD. Litera „p” oznacza skanowanie progresywne (progressive), czyli wyświetlanie całych klatek po kolei, co daje płynniejszy obraz niż przeplot („i” jak interlaced). W branży webowej Full HD to taki „złoty standard” jakości wideo – pliki mają jeszcze rozsądny rozmiar, a obraz jest już bardzo szczegółowy, więc nadaje się zarówno do odtwarzania w przeglądarce, jak i do osadzania w prezentacjach czy materiałach e‑learningowych. Moim zdaniem, przy projektowaniu serwisu z treściami multimedialnymi, warto domyślnie przygotowywać materiały właśnie w 1920×1080 i ewentualnie generować niższe wersje (np. 1280×720) dla urządzeń mobilnych lub słabszych łączy. W pracy grafika czy twórcy stron WWW dobrze jest też kojarzyć nazwy standardów: HD Ready to 1280×720, Full HD to 1920×1080, a 4K/Ultra HD to okolice 3840×2160. Dzięki temu łatwiej dobrać odpowiedni format eksportu z programów typu Premiere, DaVinci Resolve czy nawet z prostszych edytorów online. Z doświadczenia powiem, że klienci często mówią „chcę film w HD”, a mają na myśli właśnie Full HD, więc świadomość dokładnej rozdzielczości pomaga uniknąć nieporozumień i zbyt niskiej jakości materiałów.

Pytanie 36

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

A. INSERT, UPDATE, DELETE
B. CREATE, DROP, ALTER
C. BEGIN, COMMIT, ROLLBACK
D. GRANT, REVOKE, DENY
W SQL bardzo łatwo pomylić różne grupy poleceń, bo wszystkie wyglądają podobnie, a jednak należą do innych podzbiorów języka. Podzbiór DML (Data Manipulation Language) dotyczy wyłącznie operacji na danych w tabelach: wstawiania, modyfikowania, usuwania i odczytu rekordów. Dlatego do DML zaliczamy przede wszystkim INSERT, UPDATE, DELETE oraz w wielu opracowaniach także SELECT. Wszystko to, co zmienia zawartość tabel, a nie ich definicję czy uprawnienia. Częsty błąd polega na wrzucaniu do jednego worka wszystkich poleceń SQL, bo „to też jest praca na bazie danych”. Na przykład CREATE, DROP i ALTER należą do DDL (Data Definition Language). One definiują strukturę bazy: tworzą tabele, usuwają je, zmieniają kolumny. To są operacje na schemacie bazy, a nie na rekordach. W praktyce używasz ich przy projektowaniu lub migracjach, a nie przy codziennej pracy aplikacji na danych użytkowników. Z kolei GRANT, REVOKE i DENY to klasyka DCL (Data Control Language). Te polecenia sterują uprawnieniami: kto może wykonywać SELECT, INSERT czy DELETE na danej tabeli, kto może tworzyć obiekty, itd. To już bardziej klimat administracji i bezpieczeństwa niż typowej manipulacji rekordami. BEGIN, COMMIT i ROLLBACK też bywają mylące. Dotyczą transakcji i zalicza się je zwykle do TCL (Transaction Control Language). One nie dodają ani nie zmieniają pojedynczego rekordu, tylko kontrolują „pakiet” operacji DML: pozwalają zatwierdzić lub wycofać całą serię INSERT/UPDATE/DELETE. Typowy błąd myślowy jest taki: skoro coś ma związek z danymi lub ich bezpieczeństwem, to pewnie DML. A jednak standardy i dobra praktyka wyraźnie rozdzielają DDL, DML, DCL i TCL, bo to pomaga lepiej rozumieć odpowiedzialność poszczególnych instrukcji i projektować bezpieczniejsze aplikacje. W codziennej pracy programisty webowego DML to głównie to, co stoi „pod spodem” formularzy: zapisywanie, edycja i kasowanie rekordów, a nie zarządzanie strukturą czy uprawnieniami.

Pytanie 37

Zdarzenie JavaScript onmousedown występuje, gdy

A. wskaźnik myszy komputerowej znalazł się w obrębie obiektu.
B. wskaźnik myszy komputerowej wyszedł poza obręb obiektu.
C. został wciśnięty dowolny klawisz myszy komputerowej na danym elemencie.
D. został naciśnięty dwa razy klawisz myszy komputerowej.
Poprawnie – zdarzenie onmousedown w JavaScript wywołuje się dokładnie w momencie, gdy użytkownik naciska dowolny klawisz myszy na danym elemencie. Nie ma znaczenia, czy to jest lewy, prawy czy środkowy przycisk, samo fizyczne wciśnięcie przycisku nad elementem powoduje uruchomienie tego eventu. Z punktu widzenia przeglądarki jest to bardzo wczesny etap interakcji myszą: najpierw pojawia się onmousedown, później ewentualnie onmouseup, a dopiero z kombinacji tych dwóch czasem wynika onclick. Moim zdaniem warto to sobie dobrze poukładać, bo w praktyce front-endowca to jedna z podstawowych rzeczy przy obsłudze interfejsu. onmousedown jest używany wszędzie tam, gdzie chcesz zareagować natychmiast po naciśnięciu przycisku, a nie dopiero po jego puszczeniu. Klasyczny przykład to przeciąganie elementów (drag and drop): w onmousedown zapamiętujesz, że użytkownik „złapał” element, podpinasz nasłuch na mousemove, a w mouseup kończysz przeciąganie. Innym typowym zastosowaniem są własne przyciski i kontrolki, gdzie chcesz np. zmienić styl od razu po wciśnięciu (wrażenie wciśniętego guzika), albo rozpocząć jakąś akcję ciągłą, np. przytrzymanie przycisku powoduje powiększanie mapy czy przewijanie listy. W nowoczesnym JavaScript raczej używa się addEventListener("mousedown", handler) zamiast atrybutu onmousedown w HTML, bo to zgodne z dobrymi praktykami separacji logiki od struktury (HTML + JS osobno). Sam event obiektu MouseEvent przekazuje też szczegóły, np. który przycisk został naciśnięty (właściwość button), pozycję kursora, stan klawiszy modyfikujących itd. Dobrze wiedzieć, że onmousedown nie jest powiązany z wyjściem kursora poza element ani z podwójnym kliknięciem – od tego są inne zdarzenia, co często myli początkujących.

Pytanie 38

Które z przedstawionych usług są niezbędne w celu udostępnienia strony internetowej pod adresem https://zawodowe.edu.pl?

A. serwer WWW, SMTP, POP3
B. DNS, FTP
C. SMTP, FTP
D. DNS, serwer WWW, certyfikat SSL
Poprawnie wybrałeś zestaw usług, które są faktycznie niezbędne, żeby strona działała pod adresem https://zawodowe.edu.pl. Po pierwsze DNS – bez tej usługi użytkownik musiałby wpisywać w przeglądarce adres IP serwera, a nie przyjazną nazwę domenową. Serwer DNS przechowuje rekordy, np. typu A lub AAAA, które mapują nazwę „zawodowe.edu.pl” na konkretny adres IP. W praktyce konfigurujesz to u rejestratora domeny albo w panelu hostingowym i dopiero wtedy domena zaczyna „wskazywać” na serwer WWW. Drugi element to serwer WWW (HTTP/HTTPS), czyli oprogramowanie typu Apache, Nginx, LiteSpeed czy IIS, które obsługuje żądania HTTP od przeglądarki, zwraca pliki HTML, CSS, JS, grafiki i generuje odpowiedzi dynamiczne (np. z PHP). Bez działającego serwera WWW sama domena byłaby bezużyteczna – przeglądarka po prostu nie miałaby skąd pobrać treści strony. Trzeci składnik, często niedoceniany, to certyfikat SSL/TLS. Ponieważ adres zaczyna się od https://, połączenie musi być szyfrowane zgodnie ze standardem TLS. Certyfikat SSL potwierdza tożsamość serwera i umożliwia nawiązanie bezpiecznego kanału komunikacyjnego (szyfrowanie, integralność, uwierzytelnienie). W praktyce oznacza to brak ostrzeżeń w przeglądarce typu „Połączenie nie jest bezpieczne” oraz spełnienie aktualnych wymogów bezpieczeństwa i RODO, szczególnie jeśli na stronie są formularze logowania czy kontaktowe. Dobre praktyki branżowe mówią dziś jasno: każda strona z logowaniem, danymi użytkowników, a tak naprawdę praktycznie każda publiczna witryna powinna działać wyłącznie w HTTPS, najlepiej z automatycznym odnowieniem certyfikatu (np. Let’s Encrypt). Moim zdaniem warto od razu przyzwyczajać się do poprawnej konfiguracji: DNS ustawiony na właściwe rekordy, serwer WWW skonfigurowany pod daną domenę (VirtualHost/ServerName) oraz poprawnie zainstalowany certyfikat SSL z przekierowaniem z HTTP na HTTPS.

Pytanie 39

Pozycjonowanie poza stroną (off-page SEO) polega na

A. zoptymalizowaniu elementów grafiki i multimediów.
B. sprawdzeniu i testowaniu szybkości ładowania strony.
C. walidacji kodu HTML, CSS oraz linków.
D. pozyskiwaniu linków zewnętrznych prowadzących do strony.
W SEO bardzo łatwo pomylić działania on-page z off-page, bo wszystko kręci się wokół tej samej strony, tylko z różnych perspektyw. Pozycjonowanie poza stroną (off-page SEO) odnosi się do sygnałów, które znajdują się poza samą witryną – przede wszystkim do linków zewnętrznych, wzmianek o marce i ogólnego autorytetu domeny w oczach wyszukiwarki. Natomiast czynności takie jak walidacja HTML, CSS, poprawność linków wewnętrznych, optymalizacja grafik czy testowanie szybkości ładowania dotyczą stricte tego, co jest „w środku” serwisu, czyli należą do on-page SEO lub szerzej do optymalizacji technicznej. Walidacja kodu HTML i CSS to przykład dbania o standardy W3C i poprawną strukturę dokumentu. To ważne z punktu widzenia dostępności, stabilności wyświetlania w przeglądarkach i czasem także dla robotów indeksujących, ale to nadal praca wykonywana na kodzie strony, nie poza nią. Podobnie jest z optymalizacją grafiki i multimediów: kompresja obrazów, dobór formatów WebP/AVIF, uzupełnianie atrybutów alt, lazy loading – wszystko to poprawia wydajność i użyteczność strony, ale wciąż dzieje się w obrębie witryny, więc klasyfikujemy to jako on-page lub performance optimization. Testowanie szybkości ładowania, np. za pomocą PageSpeed Insights, Lighthouse czy GTmetrix, również dotyczy parametrów technicznych serwera, zasobów statycznych, JavaScriptu i CSS. To są fundamenty technicznego SEO, bardzo istotne dla Core Web Vitals, ale nie mają charakteru „zewnętrznego sygnału” w rozumieniu off-page. Typowy błąd myślowy polega na tym, że skoro coś wpływa na pozycję w Google, to od razu bywa wrzucane do jednego worka z napisem „pozycjonowanie”. W praktyce branżowej rozróżnia się jednak wyraźnie: on-page/techniczne SEO (wszystko, co konfigurujesz i poprawiasz wewnątrz strony i na serwerze) oraz off-page SEO (to, jak internet reaguje na Twoją stronę – linki, wzmianki, reputacja). Dlatego w kontekście pytania jedyną właściwą odpowiedzią jest pozyskiwanie linków zewnętrznych, bo to właśnie one są klasycznym, podręcznikowym przykładem działań off-page.

Pytanie 40

Które kolory tła zostały przypisane odpowiednio do akapitów o identyfikatorach 1, 2, 3, 4?

<p id="1" style="background-color:rgb(128,128,128);"> Akapit 1</p>
<p id="2" style="background-color:rgb(255,255,0);"> Akapit 2</p>
<p id="3" style="background-color:rgb(0,128,0);"> Akapit 3</p>
<p id="4" style="background-color:rgb(0,0,255);"> Akapit 4</p>
A. Szary, niebieski, czerwony, żółty.
B. Żółty, czerwony, zielony, szary.
C. Szary, żółty, zielony, niebieski.
D. Żółty, zielony, czerwony, szary.
Poprawnie powiązałeś zapis w notacji RGB z nazwami kolorów. W kodzie CSS zapis rgb(128,128,128) oznacza kolor, w którym wartości składowych czerwonej, zielonej i niebieskiej są równe, a dość niskie, co daje odcień szarości – stąd tło akapitu o id="1" jest szare. W rgb(255,255,0) maksymalna jest czerwień i zieleń, a niebieski ma wartość 0, co w modelu barw RGB daje kolor żółty – taki kolor ma akapit o id="2". Z kolei rgb(0,128,0) to tylko składowa zielona o średniej intensywności, więc wychodzi ciemniejsza zieleń i to jest tło akapitu o id="3". Ostatni zapis rgb(0,0,255) to maksymalna składowa niebieska, więc mamy wyraźny niebieski kolor tła dla akapitu o id="4". W praktyce webowej takie bezpośrednie użycie rgb() w atrybucie style jest poprawne, ale z mojego doświadczenia lepiej jest przenosić te style do arkusza CSS i używać klas, np. .bg-gray, .bg-yellow itp. Ułatwia to późniejszą modyfikację wyglądu strony i trzymanie się zasady rozdzielenia struktury (HTML) od prezentacji (CSS), co jest zgodne z dobrymi praktykami i rekomendacjami W3C. Warto też kojarzyć liczby z odpowiadającymi im nazwami kolorów: 255 to maksimum, 0 to brak danej składowej, a wartości pośrednie (np. 128) dają ciemniejsze odcienie. W projektach komercyjnych często używa się też zapisu heksadecymalnego (#808080 dla szarego, #FFFF00 dla żółtego, #008000 dla zielonego, #0000FF dla niebieskiego), ale mechanizm jest dokładnie ten sam – opisujemy intensywność kanałów R, G i B.