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: 20 kwietnia 2026 00:39
  • Data zakończenia: 20 kwietnia 2026 00:40

Egzamin niezdany

Wynik: 13/40 punktów (32,5%)

Wymagane minimum: 20 punktów (50%)

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

W PHP zmienna $_SERVER zawiera między innymi dane o

A. adresie IP serwera oraz nazwie protokołu
B. informacjach z formularza przetwarzanego na serwerze
C. nazwie ciasteczek zapisanych na serwerze oraz powiązanych z nimi danych
D. informacjach związanych z sesjami
Zmienna superglobalna $_SERVER w PHP gromadzi różnorodne informacje dotyczące bieżącego żądania HTTP oraz środowiska serwera. W szczególności przechowuje dane takie jak adres IP klienta, nazwa protokołu (np. HTTP/1.1), a także inne istotne informacje, takie jak metoda żądania (GET, POST) oraz nagłówki HTTP. Znajomość tych danych jest kluczowa w kontekście programowania aplikacji webowych, ponieważ umożliwia dostosowanie odpowiedzi serwera do specyficznych potrzeb klienta. Przykładowo, można wykorzystać $_SERVER['REMOTE_ADDR'], aby uzyskać adres IP odwiedzającego, co może być istotne w kontekście logowania użytkowników lub analizy ruchu. Ponadto, $_SERVER['SERVER_PROTOCOL'] pozwala na identyfikację używanego protokołu, co jest pomocne przy wdrażaniu funkcji zgodnych z określonymi standardami bezpieczeństwa i wydajności. Praktycznym zastosowaniem tych danych jest implementacja systemów uwierzytelniania lub ograniczanie dostępu na podstawie adresów IP, co wpisuje się w dobre praktyki bezpieczeństwa aplikacji webowych.

Pytanie 2

Klucz obcy w tabeli jest używany w celu

A. połączenia go z innymi kluczami obcymi w tabeli
B. opracowania formularza do wprowadzania danych do tabeli
C. umożliwienia jednoznacznej identyfikacji rekordu w danej tabeli
D. zdefiniowania relacji 1..n łączącej go z kluczem głównym innej tabeli
Klucz obcy w tabeli pełni kluczową rolę w definiowaniu relacji między tabelami w bazach danych. Dzięki zastosowaniu klucza obcego możliwe jest określenie relacji 1..n, co oznacza, że jeden rekord w tabeli głównej może być powiązany z wieloma rekordami w tabeli podrzędnej. Przykładem może być tabela 'Klienci' i tabela 'Zamówienia', gdzie klucz obcy w tabeli 'Zamówienia' wskazuje na klucz główny w tabeli 'Klienci'. To pozwala na gromadzenie wielu zamówień dla jednego klienta, co jest niezbędne w systemach e-commerce. Praktyczne wdrożenie kluczy obcych wspiera integralność danych oraz zapobiega ich duplikacji. Właściwe projektowanie relacji w bazach danych zgodnie z zasadami normalizacji wprowadza przejrzystość i efektywność w zarządzaniu danymi, a także ułatwia ich późniejszą analizę i raportowanie. W branży IT standardem jest stosowanie kluczy obcych w celu zapewnienia spójności i relacyjności danych, co jest istotne dla każdej aplikacji opierającej się na bazach danych.

Pytanie 3

Na obrazie przedstawiono projekt układu bloków witryny internetowej. Zakładając, że bloki są realizowane za pomocą znaczników sekcji, ich formatowanie w CSS, oprócz ustawionych szerokości dla bloków: 1, 2,
3, 4 (blok 5 nie ma ustawionej szerokości), powinno zawierać właściwość

Ilustracja do pytania
A. float: left dla wszystkich bloków.
B. clear: both dla bloku 5 oraz float: left jedynie dla 1 i 2 bloku.
C. clear: both dla bloku 5 oraz float: left dla pozostałych bloków.
D. clear: both dla wszystkich bloków.
Twoja odpowiedź nie jest poprawna, ale nie przejmuj się, błąd może wynikać z niepełnego zrozumienia zastosowania właściwości 'float' i 'clear' w CSS. Zastosowanie 'float: left' dla wszystkich bloków nie jest dobrym pomysłem, ponieważ spowoduje to, że wszystkie bloki będą się starały zmieścić w jednym rzędzie, co jest niezgodne z założonym układem. Podobnie, dodawanie 'clear: both' do wszystkich bloków też nie jest poprawne, ponieważ spowoduje to, że wszystkie bloki będą wyświetlane jeden pod drugim, zamiast obok siebie. Właściwość 'clear' powinna być stosowana do bloków, które chcemy wyświetlić poniżej innych bloków, natomiast 'float: left' powinien być stosowany do bloków, które chcemy wyświetlić obok siebie. Pamiętaj, że zrozumienie tych właściwości i umiejętność ich stosowania jest kluczowe dla tworzenia efektywnych i atrakcyjnych layoutów stron internetowych.

Pytanie 4

Domyślna CAPTCHA
CAPTCHA - reCAPTCHA

W CMS Joomla! opcja konfiguracji globalnej, pokazana na ilustracji, służy do
A. wyświetlenia okna umożliwiającego wyszukiwanie tekstu na stronie.
B. zapobiegania atakom typu SQL Injection.
C. dopuszczenia do przesyłania danych z formularzy wypełnionych tylko przez człowieka.
D. wyświetlania okna informującego o zgodzie użytkownika na pliki cookie.
Na ilustracji widoczna jest opcja wyboru domyślnej CAPTCHA w konfiguracji globalnej Joomla!, czyli mechanizmu służącego do ochrony formularzy przed botami. Łatwo tu wpaść w kilka typowych pułapek myślowych i skojarzyć ten element z innymi funkcjami bezpieczeństwa lub interfejsu, które z CAPTCHA nie mają wiele wspólnego. Częstym błędem jest utożsamianie każdego „zabezpieczenia” w panelu administracyjnym z ochroną przed SQL Injection lub innymi atakami na bazę danych. Ochrona przed SQL Injection polega na poprawnym programowaniu po stronie serwera: stosowaniu przygotowanych zapytań (prepared statements), filtrowaniu i walidacji danych wejściowych, poprawnym użyciu API bazy danych. CAPTCHA w ogóle nie dotyka warstwy SQL – jej zadaniem jest ograniczenie liczby automatycznych zgłoszeń z formularzy, a nie filtrowanie treści pod kątem złośliwych zapytań. To jest inna warstwa zabezpieczeń. Podobnie mylące bywa skojarzenie z wyszukiwarką na stronie. Okno wyszukiwania to zwykły formularz z polem tekstowym, którego wygląd i działanie zależy od modułu lub komponentu wyszukiwarki, a nie od globalnej opcji „Domyślna CAPTCHA”. Ustawienie CAPTCHA nie dodaje żadnego pola wyszukiwania, nie wpływa też na mechanizm przeszukiwania treści, tylko na to, czy przed wysłaniem formularza pojawi się test antybotowy. Kolejne skojarzenie to okna związane z RODO i zgodą na pliki cookie. Bannery cookie, pop-upy z informacją o polityce prywatności czy zgody marketingowe są realizowane przez osobne wtyczki lub skrypty JavaScript, często całkowicie niezależne od mechanizmu CAPTCHA. Ich zadaniem jest spełnienie wymogów prawnych, a nie weryfikacja, czy użytkownik jest człowiekiem. CAPTCHA nie służy do obsługi zgód na cookies, nie zarządza ciasteczkami, nie pokazuje komunikatów o prywatności. Sedno tej opcji w Joomla! polega na wskazaniu, który mechanizm antybotowy ma być standardowo używany w formularzach. Dzięki temu dane z formularzy mogą być przyjmowane tylko wtedy, gdy użytkownik przejdzie test potwierdzający, że nie jest automatem. Jeśli myli się tę funkcję z wyszukiwaniem, banerem cookie czy obroną przed SQL Injection, to w praktyce oznacza niezrozumienie warstwowego podejścia do bezpieczeństwa i użyteczności: CAPTCHA to filtr na poziomie interakcji człowiek–formularz, a nie ogólny „magiczny przełącznik” bezpieczeństwa lub interfejsu.

Pytanie 5

W języku JavaScript, funkcja Math.pow() wykorzystuje się do obliczenia

A. potęgi liczby
B. wartości bezwzględnej liczby
C. pierwiastka kwadratowego liczby
D. wartości przybliżonej liczby
Funkcja Math.pow() w JavaScript służy do obliczania potęgi liczby, co oznacza, że można jej użyć do podnoszenia liczby do wybranej potęgi. Poprawna składnia tej funkcji to Math.pow(base, exponent), gdzie 'base' to liczba, którą chcemy podnieść do potęgi, a 'exponent' to wykładnik. Na przykład, aby obliczyć 2 do potęgi 3, używamy Math.pow(2, 3), co zwraca 8. Ta funkcja jest niezwykle przydatna w różnych kontekstach programistycznych, takich jak obliczenia matematyczne, grafika komputerowa, czy modelowanie rzeczywistych zjawisk. W praktyce, korzystając z Math.pow(), można zrealizować wiele bardziej zaawansowanych obliczeń, takich jak obliczanie wartości funkcji wygładzających, symulacji fizycznych czy operacji na danych statystycznych. Kluczowe jest, aby pamiętać, że w JavaScript dostępne są również operator potęgowania (**), wprowadzony w ECMAScript 2016, co czyni kod bardziej czytelnym, na przykład 2 ** 3 również zwraca 8. Warto być świadomym tych narzędzi, aby optymalizować i upraszczać kod w swoich projektach.

Pytanie 6

W języku HTML aby zdefiniować słowa kluczowe strony, należy użyć zapisu

A. <meta keywords = "psy, koty, gryzonie">
B. <meta name = "description" content = "psy, koty, gryzonie">
C. <meta name = "keywords" = "psy, koty, gryzonie">
D. <meta name = "keywords" content = "psy, koty, gryzonie">
Odpowiedzi, które nie spełniają standardów HTML, mogą prowadzić do nieporozumień i utraty efektywności w kontekście SEO. Przykładowo, zapis <meta name = "keywords" = "psy, koty, gryzonie"> jest niepoprawny z kilku powodów. Po pierwsze, atrybut 'name' i 'content' muszą być oddzielone spacją, a nie znakiem równości. Poprawna struktura wymaga, aby 'name' był atrybutem wskazującym na rodzaj metadanych, a 'content' dostarczał ich wartość. Kolejna odpowiedź, <meta name = "description" content = "psy, koty, gryzonie">, jest nieprawidłowa, ponieważ odnosi się do opisu strony, a nie słów kluczowych. Opis jest ważnym elementem, ale to nie on definiuje słowa kluczowe, które są stosowane do kategoryzacji treści. Z kolei zapis <meta keywords = "psy, koty, gryzonie"> pomija kluczowy atrybut 'name', co sprawia, że jest to niezgodne z zasadami HTML. Kluczową kwestią jest również to, że wiele wyszukiwarek, takich jak Google, zrezygnowało z brania pod uwagę metatagu 'keywords' w swoich algorytmach rankingowych, co sprawia, że jego stosowanie jest mniej efektywne. Użytkownicy powinni zrozumieć, że stosowanie poprawnych metatagów jest nie tylko kwestią formalną, ale również wpływa na sposób, w jaki ich strona jest postrzegana i indeksowana przez różne wyszukiwarki.

Pytanie 7

Aby skorzystać z relacji w zapytaniu, trzeba użyć słowa kluczowego

A. IN
B. GROUP BY
C. UNION
D. JOIN
Wybór słów kluczowych takich jak UNION, IN oraz GROUP BY w kontekście łączenia danych z różnych tabel jest nieprawidłowy i opiera się na błędnym zrozumieniu funkcji tych instrukcji. UNION jest używane do łączenia wyników dwóch lub więcej zapytań, ale nie łączy danych z różnych tabel na podstawie relacji. Umożliwia ono zestawienie wyników, które mają tę samą strukturę, co oznacza, że wszystkie zapytania muszą zwracać tę samą liczbę kolumn i odpowiadające im typy danych. IN z kolei służy do porównywania wartości w jednej kolumnie z zestawem wartości, ale nie operuje na relacjach między tabelami. Ta instrukcja jest bardziej przydatna w filtracji wyników, a nie w ich łączeniu. GROUP BY jest używane do grupowania wyników na podstawie określonych kolumn, co jest niezbędne w przypadku agregacji danych, ale również nie odnosi się bezpośrednio do łączenia tabel. Zrozumienie tych różnic jest kluczowe, aby unikać typowych błędów w projektowaniu zapytań SQL. Zamiast tego, należy skupić się na technikach łączenia danych przy użyciu JOIN, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi w systemach baz danych.

Pytanie 8

W języku HTML stworzono definicję tabeli. Który z rysunków ilustruje jej działanie?

Ilustracja do pytania
A. Rysunek 1
B. Rysunek 3
C. Rysunek 4
D. Rysunek 2
Odpowiedzi które nie są zgodne z kodem HTML wynikają z błędnej interpretacji atrybutu colspan lub struktury tabeli. Na przykład jeden z rysunków przedstawia sytuację w której drugi wiersz tabeli zawiera dwie odrębne komórki podczas gdy kod HTML wyraźnie wskazuje na użycie atrybutu colspan=2 co powinno skutkować rozciągnięciem komórki z tekstem 'trzeci' na szerokość dwóch kolumn. Taki błąd często wynika z niepełnego zrozumienia jak działa atrybut colspan co jest kluczowe dla poprawnego tworzenia układów tabeli w HTML. Inny rysunek z kolei może przedstawiać brak rozciągnięcia komórki w dolnym wierszu co sugeruje brak zastosowania atrybutu colspan i wskazuje na brak synchronizacji między strukturą kodu a jego wizualizacją. Często spotykanym błędem jest także niezrozumienie różnicy między atrybutami colspan i rowspan które choć podobne mają zupełnie odmienne zastosowanie w kontekście organizacji układu tabeli. Zrozumienie tych różnic i umiejętne zastosowanie odpowiednich atrybutów pozwala na tworzenie bardziej złożonych i responsywnych układów stron internetowych w zgodzie z najlepszymi praktykami projektowymi. Analiza błędów w rozumieniu struktury tabeli i ich wizualizacji pomaga unikać takich pomyłek w przyszłości i sprzyja lepszemu projektowaniu interfejsów użytkownika które są nie tylko funkcjonalne ale i estetyczne co jest jednym z kluczowych wymogów nowoczesnego webdesignu. Poprawna interpretacja atrybutów i ich zastosowanie są fundamentalne w tworzeniu przejrzystych i łatwych w nawigacji stron co przekłada się bezpośrednio na lepsze doświadczenie użytkownika.

Pytanie 9

Do ilu pól edycyjnych zostanie przypisane tło Teal dla przedstawionego fragmentu dokumentu HTML i stylu CSS?

<input type="text">
<input type="number">
<input type="email">
<input type="number">
<input>

input[type="number"] {
    background-color: Teal;
}
A. Do wszystkich.
B. Do dwóch.
C. Do żadnego.
D. Do trzech.
Wybór niepoprawnej odpowiedzi sugeruje pewne nieporozumienia dotyczące zasad działania CSS i tego, jak style są aplikowane do elementów HTML. Wszystkie niepoprawne odpowiedzi sugerują, że tło Teal zostanie przypisane do innej liczby pól edycyjnych niż faktycznie. W tym przypadku, tło Teal jest zdefiniowane w stylu CSS i ma być zastosowane tylko do pól typu 'number'. W HTML, możemy określić różne typy pól edycyjnych, takie jak 'text', 'number', 'email' i inne. Typy te są używane przez przeglądarki, aby dostarczyć odpowiednie interfejsy użytkownika dla różnych typów danych. Niezrozumienie tego może prowadzić do błędnych wniosków, jak na przykład ten, że wszystkie pola edycyjne otrzymają styl, czy że żadne pole nie otrzyma stylu. Ważne jest, aby zrozumieć, jak selektory atrybutów w CSS pozwalają na precyzyjne określenie, do jakich elementów powinien być zastosowany dany styl.

Pytanie 10

Jakie jest określenie na element bazy danych, który umożliwia jedynie przeglądanie danych, przedstawiając je w formie tekstowej lub graficznej?

A. Zapytanie
B. Tabela
C. Raport
D. Formularz
Tabela to struktura bazy danych, która służy do przechowywania danych w formie zorganizowanej w wiersze i kolumny. Tabele są fundamentem relacyjnych baz danych, jednak nie umożliwiają one bezpośredniego generowania raportów ani wizualizacji danych. Tabele są wykorzystywane w procesie wprowadzania i edycji danych, a nie w ich przetwarzaniu do analizy. Zapytanie to forma polecenia, która umożliwia użytkownikowi pobieranie określonych danych z bazy, na podstawie zdefiniowanych kryteriów. Mimo że zapytania są kluczowe w procesie obróbki danych, same w sobie nie generują raportów ani wykresów, lecz zwracają wyniki w postaci zbioru danych. Formularz to narzędzie, które służy do wprowadzania i edytowania danych w bazie. Rola formularzy polega na ułatwieniu interakcji użytkownika z bazą danych poprzez umożliwienie wprowadzania informacji w zorganizowanej formie. Formularze są przydatne w procesach zarządzania danymi, ale ich funkcjonalność nie obejmuje analizy ani prezentacji danych w formie raportów. W związku z tym, zarówno tabela, jak i zapytanie oraz formularz nie spełniają kryteriów określonych w pytaniu, ponieważ nie są dedykowane wyłącznie do odczytu danych w formie raportów.

Pytanie 11

Aby zwiększyć wydajność operacji na bazie danych, należy dla pól, które są często wyszukiwane lub sortowane

A. dodać więzy integralności
B. stworzyć osobną tabelę przechowującą tylko te pola
C. utworzyć indeks
D. dodać klucz obcy
Tworzenie indeksu na polach, które często przeszukujesz lub sortujesz, to naprawdę ważna rzecz, jeśli chodzi o wydajność baz danych. Indeksy działają trochę jak spis treści w książkach – pozwalają systemowi szybko znaleźć te dane, których potrzebujesz, bez przeszukiwania całego folderu. Dzięki nim zapytania SELECT mogą iść jak burza, co ma ogromne znaczenie w aplikacjach, gdzie liczy się czas. Przykład? Jeśli zrobisz indeks na kolumnie 'email' w tabeli 'Users', to znacznie szybciej odnajdziesz użytkowników po adresie email. W praktyce warto też regularnie monitorować, jak działają te indeksy i je optymalizować, na przykład usuwając te, które są zbędne, żeby nie przeciążać bazy danych. Dobrze jest pamiętać, że przy dodawaniu lub aktualizowaniu danych, indeksy mogą trochę spowolnić działanie, więc lepiej używać ich z głową.

Pytanie 12

W języku JavaScript należy uzyskać dostęp do elementu w pierwszym akapicie podanego kodu HTML. Jak można to zrobić za pomocą funkcji

<p>pierwszy paragraf</p>
<p>drugi paragraf</p>
<p>trzeci paragraf</p>
...
A. getElementById('p1');
B. getElementByClassName('p.1')[0];
C. getElementByTagName('p')[0];
D. getElement('p');
Wariant getElement('p') jest niepoprawny, ponieważ nie istnieje w JavaScript żadna funkcja o takiej nazwie. Odwoływanie się do elementów DOM w JavaScript wymaga stosowania precyzyjnych i zgodnych z dokumentacją metod, takich jak getElementById, getElementsByTagName czy querySelector. Kolejna opcja, getElementById('p1'), jest błędna w kontekście tego pytania, ponieważ getElementById wymaga podania unikalnego identyfikatora ID, który w tym przypadku nie został określony w kodzie HTML. Użycie tej metody odnosiłoby się do elementu posiadającego atrybut id równy 'p1', co nie pasuje do przedstawionego kodu. Z kolei getElementByClassName('p.1') jest niepoprawne z kilku powodów. Po pierwsze, funkcja ta szuka elementów na podstawie klasy, a w kodzie HTML nie ma klasy o nazwie 'p.1'. Po drugie, format 'p.1' sugeruje błędne użycie znaków, ponieważ kropka jest separatorem w nazwach klas, a nie ich częścią. Poprawne odwołanie do elementu pierwszego paragrafu wymaga zastosowania jednej z metod iterujących po elementach, jak getElementsByTagName, która zwraca listę elementów o danym tagu, a następnie użycia indeksowania, aby precyzyjnie wskazać pierwszy element tej listy. Zrozumienie tych różnic i odpowiednie stosowanie metod JavaScript jest kluczowe dla efektywnego zarządzania elementami DOM i tworzenia dynamicznych stron WWW. Zwracanie uwagi na poprawne identyfikatory, klasy i struktury metod to fundament przy pracy z JavaScript i DOM, który pozwala na uniknięcie wielu powszechnie popełnianych błędów.

Pytanie 13

W języku JavaScript właściwie zdefiniowana zmienna to

A. imię%
B. imie2
C. imię2
D. #imie
W języku JavaScript, poprawne nadawanie zmiennych jest kluczowym elementem programowania, który opiera się na zdefiniowanych zasadach dotyczących identyfikatorów. Zmienna musi zaczynać się od litery, znaku podkreślenia (_) lub znaku dolara ($), a następnie może zawierać litery, cyfry, znaki podkreślenia oraz znaki dolara. W przypadku odpowiedzi 'imie2', zaczyna się ona od litery i zawiera literę oraz cyfrę, co czyni ją poprawnym identyfikatorem. Zgodnie ze standardem ECMAScript, identyfikatory są rozróżniane na wielkie i małe litery, co oznacza, że 'Imie2' i 'imie2' będą traktowane jako różne zmienne. Praktycznym przykładem poprawnego użycia takiej zmiennej może być zapis: let imie2 = 'Jan'; console.log(imie2);. W wyniku tego, konsola wyświetli 'Jan'. Można również zauważyć, że zgodnie z zasadami, zmienne mogą być oznaczone jako let, const lub var, co dodaje elastyczności podczas deklaracji zmiennych w kodzie JavaScript.

Pytanie 14

Który z wartości atrybutu background-attachment w CSS powinien być użyty, aby tło strony pozostało nieruchome w stosunku do okna przeglądarki?

A. Scroll
B. Local
C. Fixed
D. Inherit
Wybór wartości scroll w atrybucie background-attachment skutkuje tym, że tło przewija się razem z zawartością strony, co oznacza, że nie jest statyczne względem okna przeglądarki. Takie ustawienie jest standardowe dla większości stron internetowych, gdzie tło zmienia się podczas przewijania, co nie pozwala uzyskać efektu głębi czy trójwymiarowości. Użycie wartości local powoduje, że tło jest związane z przewijaniem wewnętrznych elementów, a nie z całym oknem przeglądarki. To oznacza, że jeśli element ma własny pasek przewijania, tło będzie przewijać się w tym kontekście, co sprawia, że efekt statyczny w kontekście całej strony jest niedostępny. Wartość inherit z kolei służy do przekazania wartości atrybutu z elementu nadrzędnego do elementu potomnego. Używanie inherit w kontekście background-attachment nie ma sensu, ponieważ nie definiuje konkretnego zachowania tła, a jedynie dziedziczy ustawienia, które mogą być nieodpowiednie dla danego kontekstu. W rezultacie, dla uzyskania pożądanego efektu statycznego tła, warto wybierać fixed, aby osiągnąć najlepszy rezultat wizualny.

Pytanie 15

Określ wynik wykonania poniższego fragmentu kodu JavaScript.

var akapit = document.createElement("p");
document.body.appendChild(akapit);
A. Wyświetlenie okna dialogowego z komunikatem "akapit"
B. Usunięcie akapitu z treści strony
C. Wstawienie akapitu na początku strony
D. Dodanie akapitu na samym końcu strony
Wybór innej odpowiedzi niż dodanie akapitu na końcu strony może świadczyć o tym, że nie do końca rozumiesz, jak działa manipulacja DOM w JavaScript. Wydaje się, że sądzisz, że kod usuwa akapit, ale tak naprawdę używana jest tylko metoda do tworzenia i dodawania elementów, a usuwanie wymagałoby czegoś innego, jak removeChild czy remove. Również mylenie dodawania elementu na początku strony jest błędne, bo appendChild zawsze dodaje na końcu. Jakbyś chciał dodać na początku, musiałbyś zastosować insertBefore z odniesieniem do pierwszego dziecka. Myślenie, że kod wyświetla okno dialogowe, też nie ma podstaw, bo nie użyto tu żadnej metody dialogowej jak alert czy prompt. Z mojego doświadczenia, takie mylne podejście często wynika z braku praktyki z manipulacją DOM, co jest istotne do prawidłowego stosowania JavaScript w projektach webowych.

Pytanie 16

Zawarty w ramce fragment kodu w języku JavaScript

Ilustracja do pytania
A. wyświetli długość tekstu ze zmiennej t
B. przypisze zmiennej s długość tekstu ze zmiennej t
C. przypisze do zmiennej s zmienną t
D. przypisze do zmiennej s fragment tekstu ze zmiennej t o długości określonej przez zmienną length
Zrozumienie funkcji length w kontekście JavaScript jest kluczowe dla rozróżnienia poprawnych i błędnych interpretacji kodu. W przypadku zadania, omówienie różnych interpretacji kodu wskazuje na kilka typowych nieporozumień. Jednym z nich jest przypisanie zmiennej s zmiennej t. Takie działanie wymagałoby użycia operatora przypisania bezpośrednio z jedną zmienną, a nie wywołania metody na niej. Kolejnym nieporozumieniem jest wyświetlenie długości napisu ze zmiennej t. Wyświetlanie wartości w JavaScript wymaga zastosowania np. console.log(), a sam zapis t.length jedynie odczytuje długość łańcucha. Innym błędnym podejściem jest przypisanie fragmentu napisu ze zmiennej t, o określonej przez zmienną length długości. Operator length w kontekście łańcucha znaków zwraca jego całkowitą długość, a nie jego fragment. Aby wyodrębnić część tekstu, należałoby użyć metod takich jak slice() czy substring(). Typowym błędem jest również założenie, że length działa jak funkcja przycinająca tekst, co może wynikać z niewłaściwego zrozumienia dokumentacji lub braku praktyki. Każda z tych błędnych odpowiedzi wskazuje na potrzebę głębszego zapoznania się z podstawowymi metodami manipulacji tekstem w JavaScript i ich praktycznym zastosowaniem w różnych kontekstach programistycznych, co jest istotnym krokiem w kierunku profesjonalnego programowania.

Pytanie 17

W SQL po wykonaniu zapytania ALTER TABLE osoba DROP COLUMN grupa; co się stanie?

A. kolumna grupa zostanie dodana
B. nazwa kolumny zmieni się na grupa
C. nazwa tabeli zmieni się na grupa
D. kolumna grupa zostanie usunięta
Jak nie wskazałeś usunięcia kolumny 'grupa', to niestety nie zrozumiałeś, o co chodzi w tym poleceniu ALTER TABLE w SQL. Zmiana nazwy tabeli na 'grupa' to nie to, co tu mamy, bo ALTER TABLE nie pozwala na coś takiego w jednym ruchu. Można co prawda zmienić nazwę całej tabeli, ale to się robi inaczej. Stwierdzenie, że zmieniono nazwę kolumny na 'grupa' też jest błędne, bo DROP COLUMN ją usuwa, a nie zmienia nazwę. Jeśli chodzi o dodanie kolumny 'grupa', to także jest to nie na miejscu, bo dodawanie kolumny robisz za pomocą ALTER TABLE ... ADD COLUMN. Te wszystkie pomyłki mogą wynikać z mylenia różnych funkcji SQL, które mają różne zastosowania. Ważne, żeby dobrze zrozumieć składnię SQL oraz różnice między poleceniami, które zmieniają tabelę.

Pytanie 18

Liczba 0x142, przedstawiona w skrypcie JavaScript, jest zapisywana w postaci

A. dziesiętnej
B. ósemkowej
C. szesnastkowej
D. dwójkowej
Odpowiedzi sugerujące, że liczba 0x142 jest zapisana w systemie dziesiętnym, dwójkowym lub ósemkowym, są błędne z kilku powodów. System dziesiętny, bazujący na podstawie 10, używa cyfr od 0 do 9. Gdyby 0x142 byłoby w systemie dziesiętnym, nie miałby prefiksu '0x', a jego wartość wynosiłaby 322, co jest całkowicie inną reprezentacją. Z kolei system dwójkowy, znany również jako binarny, używa tylko dwóch cyfr: 0 i 1. Liczba 0x142 w systemie binarnym wynosi 101000010, co jest zupełnie inną formą niż przedstawienie szesnastkowe. Na koniec, system ósemkowy, mający podstawę 8, obejmuje cyfry od 0 do 7. Aby wyrazić 0x142 w systemie ósemkowym, należałoby najpierw przekonwertować ją na dziesiętną, co dałoby 322, a następnie na ósemkowy, co dawałoby 502. Tak więc żadna z tych odpowiedzi nie jest poprawna, ponieważ 0x142 jest jednoznacznie zapisane w systemie szesnastkowym.

Pytanie 19

Jakie imiona spełniają warunek klauzuli LIKE w poniższym zapytaniu: SELECT imię FROM mieszkańcy WHERE imię LIKE '_r%';?

A. Krzysztof, Krystyna, Romuald
B. Rafał, Rebeka, Renata, Roksana
C. Gerald, Jarosław, Marek, Tamara
D. Arieta, Krzysztof, Krystyna, Tristan
W przypadku innych odpowiedzi pojawia się kilka istotnych błędów interpretacyjnych związanych z wykorzystaniem klauzuli LIKE. Po pierwsze, w imionach takich jak 'Rafał', 'Rebeka', 'Renata', 'Roksana', choć wszystkie zawierają 'r', to nie znajdują się one na drugiej pozycji, co jest kluczowym kryterium w zapytaniu. Warto zaznaczyć, że znak podkreślenia (_) w klauzuli LIKE reprezentuje pojedynczy znak, a więc jego lokalizacja jest istotna. W kontekście imion 'Gerald', 'Jarosław', 'Marek', 'Tamara', imiona te nie mają 'r' na drugiej pozycji, co również czyni je nieprawidłowymi odpowiedziami. Typowym błędem jest ignorowanie lokalizacji znaków w wzorcach, co prowadzi do błędnych wniosków. Niektórzy mogą również błędnie skupić się na obecności litery 'r' gdziekolwiek w imieniu, co nie jest zgodne z tym, co wskazuje zapytanie. Zrozumienie zasadności klauzuli LIKE oraz umiejętność czytania i interpretacji wzorców jest kluczowe dla skutecznej pracy z bazami danych. Dlatego, aby unikać takich pomyłek, warto regularnie ćwiczyć zapytania SQL, a także zapoznawać się z dokumentacją techniczną baz danych.

Pytanie 20

W SQL, aby w tabeli Towar dodać kolumnę rozmiar typu znakowego z maksymalną długością 20 znaków, jakie polecenie należy wykonać?

A. ALTER TABLE Towar ALTER COLUMN rozmiar varchar(20)
B. ALTER TABLE Towar ADD rozmiar varchar(20)
C. ALTER TABLE Towar CREATE COLUMN rozmiar varchar(20)
D. ALTER TABLE Towar DROP COLUMN rozmiar varchar(20)
Podane odpowiedzi nie są poprawne z kilku powodów. Odpowiedź sugerująca użycie 'DROP COLUMN' jest myląca, ponieważ to polecenie służy do usuwania istniejącej kolumny z tabeli, a nie dodawania nowej. Usunięcie kolumny bez zrozumienia konsekwencji może prowadzić do utraty danych, co podkreśla znaczenie przemyślenia operacji modyfikujących strukturę bazy danych. Inna odpowiedź, która proponuje 'CREATE COLUMN', jest nieprawidłowa, ponieważ nie jest uznawana za standardową składnię w SQL; nie istnieje polecenie 'CREATE COLUMN'. Zamiast tego, kolumny są dodawane za pomocą 'ADD' w kontekście ALTER TABLE. W przypadku 'ALTER COLUMN' - to polecenie odnosi się do zmiany właściwości już istniejącej kolumny, a nie do dodawania nowej. Dlatego mylenie tych pojęć prowadzi do nieprawidłowych wniosków. Zrozumienie tych różnic jest kluczowe dla poprawnego posługiwania się SQL. Niezrozumienie zasad modyfikacji struktury tabeli może skutkować nieefektywnym zarządzaniem bazą danych oraz błędami w aplikacjach korzystających z danych.

Pytanie 21

Jaką wartość wydrukuje na standardowe wyjście poniższy fragment kodu C++?

int obliczenia( int x ) {
x %= 3;
x++;
return x;
}

int main() {
std::cout<<obliczenia(32);
}
A. 32
B. 0
C. 2
D. 3
Program w języku C++ zawiera funkcję obliczenia która przyjmuje parametr x. Wewnątrz funkcji wykonuje się operacja modulo x %= 3 co oznacza że zmienna x zostanie zastąpiona resztą z dzielenia x przez 3. W przypadku liczby 32 reszta z dzielenia przez 3 wynosi 2 ponieważ 32 dzielone przez 3 daje 10 z resztą 2. Następnie wykonuje się operacja inkrementacji x++ co oznacza że wartość x zostanie zwiększona o 1. W efekcie końcowym x przyjmie wartość 3. Funkcja zwraca tę wartość a wynik zostanie wypisany na standardowym wyjściu za pomocą std::cout. Zrozumienie operacji modulo oraz inkrementacji jest kluczowe w wielu zastosowaniach programistycznych szczególnie w algorytmach które operują na cyklicznych strukturach danych lub wymagają regularnego zwiększania wartości liczbowych. Operacja modulo jest często wykorzystywana do ograniczania zakresu wartości do pewnego zakresu np. w implementacji cyklicznych kolejek lub obliczaniu dni tygodnia. Dobrą praktyką jest także zrozumienie jak operacje te wpływają na wydajność i czytelność kodu co jest istotne w kontekście dużych projektów programistycznych. Poprawna odpowiedź to 3 ponieważ odpowiada ona wyniku jaki zostanie wypisany przez program.

Pytanie 22

W HTML, aby utworzyć poziomą linię, należy zastosować znacznik

A. <line>
B. <hl>
C. <hr>
D. <br>
Znacznik <line> nie jest standardowym elementem HTML i nie istnieje w specyfikacji tego języka. Z tego powodu nie może być użyty do tworzenia poziomej linii. Użytkownicy mogą mylić go z innymi terminami związanymi z grafiką wektorową, gdzie pojawia się pojęcie 'linia', jednak HTML nie przewiduje takiego znacznika. Kolejnym błędnym rozwiązaniem jest znacznik <br>, który jest używany do łamania linii w tekście. Umożliwia on przejście do nowej linii, ale nie daje efektu poziomej linii oddzielającej sekcje treści. Jest to element samodzielny, jednak jego funkcjonalność jest zupełnie inna. Z kolei znacznik <hl> nie istnieje w standardach HTML. Użytkownicy mogą go pomylić z innymi znacznikami, ale <hl> nie jest zdefiniowany w żadnym z wersji HTML, co oznacza, że przeglądarki go nie rozpoznałyby, co skutkowałoby brakiem jakiegokolwiek wizualnego efektu. Użycie niepoprawnych znaczników może prowadzić do problemów z interpretacją dokumentów HTML i ich wyświetlaniem w przeglądarkach, co negatywnie wpłynie na użytkowników oraz SEO strony.

Pytanie 23

W PHP w konstrukcji switch konieczne jest użycie

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

Pytanie 24

Który kod HTML spowoduje identyczne formatowanie jak przedstawione na obrazku?

W tym paragrafie zobaczysz sposoby formatowania tekstu w HTML


  1. <p>W tym <i>paragrafie zobaczysz sposoby formatowania</i> tekstu w HTML</p>

  2. <p>W tym <b>paragrafie <i>zobaczysz</i> sposoby formatowania</b> tekstu w HTML</p>

  3. <p>W tym <i>paragrafie <b>zobaczysz</b> sposoby formatowania</i> tekstu w HTML</p>

  4. <p>W tym <i>paragrafie </i><b>zobaczysz</b><i> sposoby formatowania</i> tekstu w HTML</p>

A. Odpowiedź D
B. Odpowiedź C
C. Odpowiedź B
D. Odpowiedź A
Wybór niepoprawnych odpowiedzi wynika z nieprawidłowego użycia znaczników HTML, co prowadzi do złego formatowania tekstu. W opcji A znacznik <i> został użyty do zamykania paragrafu, co nie ma sensu, bo <i> powinien otaczać tylko te fragmenty, które mają być wyświetlane kursywą. Dodatkowo, brak znaczników <b> sprawia, że tekst nie jest pogrubiony, jak powinien być w oryginale. Opcja B znowu ma źle uporządkowane znaczniki, przez co efekt wizualny różni się od zamierzonego. Tekst 'zobaczysz' powinien być pogrubiony, a nie pokazywany kursywą. A w przypadku opcji D, znów widzimy źle rozmieszczone znaczniki <i> i <b>, co prowadzi do nieprzewidywalnych rezultatów formatowania. Takie błędy często wynikają z braku znajomości podstaw HTML i nieuważności na semantykę znaczników. Z mojego punktu widzenia, ważna jest znajomość kosztów, bo dobre zrozumienie kodu HTML jest kluczowe, żeby tworzyć zorganizowane i dostępne treści w sieci.

Pytanie 25

W tabeli programiści znajdują się kolumny: id, nick, ilosc_kodu, ocena. W kolumnie ilosc_kodu zapisano liczbę linii kodu, które programista napisał w danym miesiącu. Jakie zapytanie umożliwi obliczenie całkowitej liczby linii kodu stworzonych przez wszystkich programistów?

A. SELECT COUNT(programisci) FROM ilosc_kodu;
B. SELECT MAX(ilosc_kodu) FROM programisci
C. SELECT SUM(ilosc_kodu) FROM programisci;
D. SELECT SUM(ocena) FROM ilosc_kodu;
Wybór polecenia 'SELECT SUM(ocena) FROM ilosc_kodu;' jest nieprawidłowy, ponieważ w tym zapytaniu występuje kilka fundamentalnych błędów w rozumieniu struktury bazy danych oraz funkcji agregujących. Po pierwsze, pole 'ocena' nie jest odpowiednie do zsumowania linii kodu, ponieważ zawiera dane dotyczące ocen programistów, a nie ilości linii kodu, co całkowicie mija się z celem poszukiwania sumy linii kodu. Ponadto, tabela 'ilosc_kodu' nie istnieje jako samodzielna jednostka w kontekście tego pytania; 'ilosc_kodu' jest jedynie kolumną w tabeli 'programisci', co oznacza, że nie możemy bezpośrednio z niej tworzyć zapytań. To podkreśla ważny aspekt projektowania baz danych oraz ich strukturalnych zależności. Podczas pisania zapytań SQL należy zawsze mieć na uwadze, w której tabeli znajdują się interesujące nas dane oraz jakie kolumny są dostępne w tej tabeli. Inne nieprawidłowe odpowiedzi, takie jak 'SELECT COUNT(programisci) FROM ilosc_kodu;' również wskazują na misunderstanding, ponieważ użycie COUNT w tym kontekście nie odnosi się do sumowania linii kodu, a jedynie liczenia wierszy, co w tym przypadku nie jest celem. Ponadto, 'SELECT MAX(ilosc_kodu) FROM programisci;' ma zupełnie inną funkcję, polegającą na znalezieniu maksymalnej liczby linii kodu napisanych przez jednego programistę, co również nie jest zgodne z pierwotnym pytaniem. Wniosek jest taki, że kluczowe jest zrozumienie struktury bazy danych oraz logiczne podejście do formułowania zapytań SQL, aby uzyskiwać prawidłowe i użyteczne wyniki.

Pytanie 26

Kod JavaScript uruchomiony w wyniku kliknięcia przycisku ma na celu <img id="i1" src="obraz1.gif"> <button onclick="document.getElementById('i1').src='obraz2.gif'"> test</button>

A. wyświetlić obraz2.gif obok obraz1.gif
B. zamienić obraz1.gif na obraz2.gif
C. ukryć obraz2.gif
D. zmienić styl obrazu o id równym i1
Analizując wszystkie pozostałe odpowiedzi można zauważyć, że nie odzwierciedlają one rzeczywistych działań wykonywanych przez kod. Twierdzenie, że 'ukryć obraz2.gif' jest błędne, ponieważ w kodzie nie zachodzi żadna operacja związana z ukrywaniem. Przydzielanie nowego źródła do obrazu nie wpływa na jego widoczność, a jedynie zmienia to, co jest wyświetlane. Na podobnej zasadzie, stwierdzenie, że 'zmienić styl obrazu o id równym i1' jest mylące, ponieważ kod nie dotyczy modyfikacji stylów CSS, lecz wymiany źródła obrazu, co oznacza zupełnie inny typ interakcji. Wreszcie, sugestia, że 'wyświetlić obraz2.gif obok obraz1.gif' jest nieprawidłowa. Kod nie dodaje obrazu obok istniejącego, ale dokonuje zamiany jednego na drugie. Typowe błędy w myśleniu, które prowadzą do takich błędnych wniosków, obejmują pomylenie pojęć manipulacji DOM z innymi operacjami, takimi jak zmiana stylów czy ukrywanie elementów. W kontekście praktycznym, zrozumienie tych różnic ma kluczowe znaczenie dla prawidłowego używania JavaScript w tworzeniu interaktywnych aplikacji webowych.

Pytanie 27

Jaką czynność należy wykonać przed przystąpieniem do tworzenia kopii zapasowej danych w bazie MySQL?

A. sprawdzenie integralności bazy oraz ewentualna jej naprawa
B. określenie systemu kodowania znaków w bazie
C. weryfikacja, czy baza działa wystarczająco efektywnie
D. przyznanie uprawnień do przeglądania bazy dla Administratora
Sprawdzenie integralności bazy danych MySQL przed wykonaniem kopii bezpieczeństwa jest kluczowym krokiem, który zapewnia, że wszystkie dane są w dobrym stanie i nie występują żadne uszkodzenia. Integralność bazy danych odnosi się do spójności i poprawności danych przechowywanych w bazie. Narzędzia takie jak 'CHECK TABLE' oraz 'REPAIR TABLE' pozwalają na identyfikację i naprawę potencjalnych problemów związanych z uszkodzeniami tabel. Przykładem może być sytuacja, w której dane zostały nieprawidłowo zapisane lub usunięte, co może prowadzić do błędów w aplikacjach korzystających z bazy. W przypadku wykrycia problemów, ich naprawa przed stworzeniem kopii zapasowej jest niezbędna, aby uniknąć przenoszenia uszkodzonych danych do nowej lokalizacji. Standardy branżowe, takie jak ISO 27001, podkreślają znaczenie zarządzania integralnością danych, co stanowi fundament skutecznych strategii backupowych. Właściwie przeprowadzona diagnostyka przed wykonaniem kopii bezpieczeństwa nie tylko minimalizuje ryzyko utraty danych, ale również zwiększa efektywność procesów przywracania systemu po awarii.

Pytanie 28

Według którego pola tabeli zostały pogrupowane dane w przedstawionym raporcie?

Ilustracja do pytania
A. id_uczestnika
B. rok
C. nazwa
D. wynik
Poprawnie wskazano, że dane w raporcie zostały pogrupowane według pola „rok”. Widać to po tym, że poszczególne rekordy są zebrane w bloki oznaczone nagłówkami 2009, 2010, 2011, 2012, 2020, a dopiero pod każdym z tych lat pojawiają się konkretne konkursy, id_uczestnika i wynik. To jest właśnie klasyczny przykład grupowania danych w raporcie po jednym z pól tabeli – w tym przypadku po kolumnie roku. W praktyce, czy to w SQL, czy w kreatorach raportów (np. w MS Access, LibreOffice Base, Crystal Reports, narzędziach BI), gdy projektujemy raport, często definiujemy tzw. sekcję grupującą (group header) opartą na wybranym polu. Tutaj takim polem jest rok, więc każda zmiana wartości roku powoduje rozpoczęcie nowej grupy i wyświetlenie nagłówka z tą wartością. To poprawia czytelność i pozwala łatwo analizować dane w podziale na lata. Moim zdaniem warto zapamiętać, że grupowanie po dacie lub roku to jedna z najczęściej stosowanych praktyk raportowych: używa się tego do raportów sprzedaży w latach, statystyk odwiedzin strony WWW, wyników egzaminów itd. W SQL można by to od strony danych poprzedzić np. zapytaniem sortującym: SELECT * FROM konkursy ORDER BY rok, nazwa; a samo faktyczne grupowanie wizualne realizuje już mechanizm raportów. Dobrą praktyką jest też, żeby pole, po którym grupujemy, było najpierw użyte do sortowania – inaczej grupy mogą się „rozsypać” i raport stanie się nieczytelny.

Pytanie 29

UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);
W tabeli klient o polach: id, imie, nazwisko, miejscowosc znajduje się 5 rekordów o id od 1 do 5. Dla których wartości kolumny id przedstawiona kwerenda zaktualizuje zawartość pola miejscowosc na Warszawa?
A. 3
B. 2, 4
C. 1, 5
D. 2, 3, 4
W tym zadaniu kluczowe jest dokładne zrozumienie, jak działa klauzula WHERE w instrukcji UPDATE oraz jak interpretować zapis z operatorem IN. Konstrukcja `UPDATE klient SET miejscowosc='Warszawa' WHERE id IN(2,4);` nie wybiera „jakichś tam” rekordów losowo ani nie aktualizuje wszystkich wierszy, tylko bardzo konkretną podgrupę danych. Warunek `id IN (2,4)` jest równoważny zapisowi `id = 2 OR id = 4`. To oznacza, że silnik bazy danych przechodzi po rekordach i sprawdza: jeśli id danego rekordu jest równe 2 lub 4, to ustawia miejscowosc na 'Warszawa'. Jeśli id ma inną wartość, rekord jest pomijany. Częsty błąd myślowy polega na tym, że ktoś skupia się na liczbie rekordów w tabeli (tu: 5 wierszy o id 1–5) i próbuje dopasować odpowiedź na zasadzie „a może chodzi o środkowy”, „a może o wszystkie poza tymi z listy” albo „może IN działa jak jakiś zakres”. To złe podejście. Operator IN nie oznacza przedziału, tylko dokładną listę dopuszczalnych wartości. Jeżeli na przykład ktoś uznał, że zaktualizowany zostanie tylko rekord o id=3, to najpewniej zignorował treść warunku lub pomylił IN z BETWEEN. Podobnie wybieranie pary 1,5 czy trójki 2,3,4 sugeruje, że myśli się raczej o odcinku lub o „skrajnych” identyfikatorach, a nie o literalnie podanych liczbach wewnątrz nawiasu. W SQL, gdy chcemy objąć zakresem wszystkie id od 2 do 4, używamy `WHERE id BETWEEN 2 AND 4`, a nie `IN(2,4)`. Warto też utrwalić sobie, że brak dopasowania do warunku WHERE oznacza brak jakiejkolwiek zmiany w danym wierszu, więc rekordy o id 1, 3 i 5 pozostaną nietknięte. Dobra praktyka w pracy z bazami danych to zawsze czytanie warunku WHERE „na głos” i zastanowienie się, jakie dokładnie wartości są dopuszczone. Pozwala to uniknąć groźnych pomyłek, kiedy przypadkowo zmienilibyśmy zbyt wiele danych lub zupełnie nie te rekordy, które planowaliśmy edytować.

Pytanie 30

Którą funkcję z menu Kolory programu GIMP użyto, w celu uzyskania efektu przedstawionego w filmie?

A. Barwienie.
B. Progowanie.
C. Inwersja.
D. Krzywe.
Wiele osób myli w GIMP-ie różne narzędzia z menu Kolory, bo na pierwszy rzut oka kilka z nich „mocno zmienia” obraz. Jednak efekt pokazany na filmie, gdzie obraz staje się dwuwartościowy (czarno-biały, bez półtonów), jest typowym działaniem funkcji Progowanie. Kluczowe jest tu zrozumienie, czym różnią się od siebie dostępne operacje. Krzywe służą do zaawansowanej korekcji tonalnej i kontrastu. Można nimi mocno przyciemnić lub rozjaśnić wybrane zakresy jasności, robić tzw. efekt kontrastu „S”, korygować prześwietlenia itd. Ale nawet przy bardzo agresywnych ustawieniach krzywych obraz nadal zawiera półtony – pojawiają się stopniowe przejścia między odcieniami, a nie ostre odcięcie na zasadzie czarne/białe. To świetne narzędzie do retuszu zdjęć, ale nie do uzyskania efektu progowania. Inwersja (Kolory → Inwersja) po prostu odwraca wartości kolorów lub jasności: jasne staje się ciemne, czerwony zmienia się na cyjan, zielony na magentę itd. To jak negatyw fotograficzny. Struktura szczegółów pozostaje identyczna, zmienia się tylko ich „biegun”. Nie pojawia się żadne odcięcie progowe, więc obraz wciąż ma pełne spektrum odcieni. W praktyce inwersja przydaje się np. przy przygotowaniu masek lub pracy z materiałami skanowanymi, ale nie generuje typowego, „plakatowego” efektu czerni i bieli jak progowanie. Barwienie z kolei (Kolory → Barwienie) służy do nadania całemu obrazowi jednolitego odcienia, zwykle po wcześniejszym sprowadzeniu go do skali szarości. Można w ten sposób uzyskać np. sepię, niebieski ton nocny albo dowolny kolorystyczny „filtr”. Jasność i kontrast lokalny pozostają bardzo podobne, zmienia się dominująca barwa. To zupełnie inna kategoria operacji niż progowanie, które pracuje na poziomie progów jasności, a nie na poziomie koloru. Typowym błędem jest patrzenie tylko na to, że „obraz bardzo się zmienił” i przypisywanie tego narzędziom takim jak krzywe czy inwersja. W pracy z grafiką warto zawsze zadać sobie pytanie: czy efekt polega na zmianie rozkładu jasności, na odwróceniu kolorów, czy na twardym podziale na dwa poziomy? Jeśli widzisz brak półtonów i ostre granice, praktycznie zawsze chodzi o progowanie, które zostało wskazane jako poprawna funkcja.

Pytanie 31

W HTML znacznik <i> wywołuje taki sam efekt wizualny jak znacznik

A. <u>
B. <em>
C. <strong>
D. <pre>
Znacznik <em> (emphasis) w języku HTML jest używany do podkreślenia znaczenia słów lub fraz w kontekście tekstu, co jest zgodne z semantyką sieci. Użycie tego znacznika nie tylko zmienia styl prezentacji tekstu na kursywę, ale także wskazuje, że dany fragment tekstu jest istotny dla zrozumienia całości. Znacznik <i> (italic) również stosuje kursywę, ale nie ma znaczenia semantycznego, co oznacza, że nie informuje przeglądarek ani technologii wspomagających o istotności tego tekstu. W praktyce, stosując <em> w miejscach, gdzie chcemy zaakcentować ważne elementy, pomagamy w poprawie dostępności strony oraz w jej SEO, ponieważ wyszukiwarki mogą lepiej zrozumieć strukturę i kontekst treści. Warto pamiętać, że według standardów W3C, stosowanie znaczników semantycznych, takich jak <em>, jest zalecane dla poprawy struktury dokumentu HTML oraz dla lepszej interakcji z użytkownikami wykorzystującymi technologie asystujące. Przykład: <p>W tej książce <em>odkryjesz</em> nowe możliwości.</p>

Pytanie 32

Taki styl CSS sprawi, że na stronie internetowej

ul{ list-style-image: url('rys.gif'); }
A. rys.gif stanie się ramką dla listy nienumerowanej
B. każdy punkt listy zyska osobne tło z grafiki rys.gif
C. punkt listy nienumerowanej będzie rys.gif
D. rys.gif wyświetli się jako tło dla listy nienumerowanej
Deklaracja CSS ul{ list-style-image: url('rys.gif'); } powoduje, że każdy element listy nienumerowanej (ul) używa obrazu rys.gif jako punktora. Właściwość list-style-image pozwala na zamianę domyślnego stylu punktów listy, takiego jak kropki czy kwadraty, na dowolny obrazek. Jest to przydatne, gdy chcemy nadać stronie unikalny wygląd lub dostosować ją do identyfikacji wizualnej marki. W praktyce oznacza to, że zamiast klasycznego punktora, użytkownicy zobaczą wybrany obraz, co może wpłynąć na estetykę i czytelność strony. Ważne jest, aby obraz był odpowiednio skalowany, aby nie zaburzał układu listy. List-style-image to standardowa właściwość CSS uznawana przez większość przeglądarek, co czyni ją uniwersalnym narzędziem w rękach projektanta stron. W procesie projektowania warto upewnić się, że wybrany obrazek jest dostępny dla wszystkich użytkowników, co można osiągnąć np. poprzez dodanie atrybutu alt w wersji tekstowej listy dla lepszej dostępności.

Pytanie 33

Jaką wartość zwróci poniższa instrukcja w JavaScript?

document.write(5==='5');
A. 1
B. 0
C. false
D. true
W przypadku użycia operatora porównania w JavaScript ważne jest zrozumienie różnic między operatorem podwójnego równości == a potrójnego równości ===. Operator == porównuje wartości po niejawnej konwersji typów danych co prowadzi do błędów gdy nie są one jednoznaczne. Przykładowo liczba 5 porównana z ciągiem '5' używając == może dać wartość true ponieważ konwertuje typy do jednego wspólnego formatu przed porównaniem. Jednak takie podejście jest ryzykowne i niezalecane w profesjonalnym programowaniu gdyż nie zapewnia pełnej zgodności typów. Operator === przeciwnie sprawdza zarówno typ danych jak i wartość co eliminuje problemy z nieoczekiwanymi konwersjami. W przedstawionym przykładzie porównanie liczby 5 z ciągiem '5' za pomocą === zwraca false ponieważ typy danych nie są zgodne. Niepoprawne zrozumienie tego mechanizmu może prowadzić do błędnych wniosków takich jak wyświetlenie wartości true lub 1 co jest nieprawidłowe. Zrozumienie różnic w działaniu tych operatorów jest kluczowe dla każdego programisty JavaScript aby unikać typowych błędów związanych z niejawnością konwersji typów i zapewniać większą przewidywalność i niezawodność kodu produkcyjnego. Takie podejście jest zgodne z dobrymi praktykami w branży co przyczynia się do poprawy jakości kodu i jego długoterminowej konserwacji. Użycie === jest rekomendowane w celu zapewnienia pełnej zgodności typów i wartości co jest kluczowe w profesjonalnym środowisku programowania webowego. Przyzwyczajenie się do stosowania potrójnego równości zmniejsza ryzyko błędów logicznych i wspiera dobre praktyki programistyczne.

Pytanie 34

Elementem wykorzystywanym w bazie danych do podsumowywania, prezentowania oraz drukowania danych jest

A. zestawienie
B. raport
C. zapytanie
D. formularz
Zapytanie, formularz i zestawienie, choć mogą być używane w kontekście pracy z danymi, pełnią inne funkcje niż raport. Zapytanie to instrukcja w języku zapytań, najczęściej SQL, która pozwala na pobranie określonych danych z bazy danych. Zapytania są fundamentalne dla interakcji z bazami danych, ponieważ umożliwiają użytkownikom selekcjonowanie, filtrowanie i sortowanie informacji, ale same w sobie nie dostarczają gotowych podsumowań ani analiz. Formulario to interaktywny element, który umożliwia użytkownikom wprowadzanie danych; jego głównym celem jest zbieranie informacji, a nie ich prezentacja. Użytkownicy często mylą formularze z raportami, co prowadzi do nieporozumień w zakresie ich zastosowania. Zestawienie, z kolei, może odnosić się do porównania wartości lub grup danych, ale nie jest standardowym terminem w kontekście raportów, co może powodować niejasności. Warto zrozumieć, że raporty są narzędziem do podsumowywania wyników, podczas gdy zapytania, formularze i zestawienia mają różne cele i funkcje. Kluczowa jest umiejętność rozróżniania tych elementów, aby skutecznie zarządzać danymi i prezentować je w odpowiedni sposób.

Pytanie 35

Aby zobaczyć rezultaty działania skryptu napisanego w PHP, który jest częścią strony internetowej, musi on być

A. interpretowany po stronie użytkownika
B. skomputeryzowany po stronie serwera
C. skomputeryzowany po stronie użytkownika
D. zinterpretowany po stronie serwera
Odpowiedź "zinterpretowany po stronie serwera" jest poprawna, ponieważ skrypty PHP są przetwarzane na serwerze, a wynik ich działania jest następnie przesyłany do przeglądarki klienta. PHP jest językiem skryptowym, który działa w kontekście serwera, co oznacza, że kod PHP jest wykonywany, a jego wynik (np. HTML, JSON, XML) jest generowany zanim trafi do klienta. W praktyce, gdy użytkownik odwiedza stronę napisanej w PHP, serwer uruchamia skrypt, przetwarza dane, korzysta z baz danych, a następnie zwraca gotowy dokument do przeglądarki. Jest to zgodne z zasadą architektury klient-serwer, w której serwer odpowiada za logikę aplikacji, natomiast klient koncentruje się na prezentacji danych. Przykładowe zastosowanie PHP obejmuje tworzenie dynamicznych stron internetowych, systemów zarządzania treścią (CMS), a także aplikacji webowych, które wymagają interakcji z bazą danych. W branży web developmentu standardem jest używanie PHP w połączeniu z bazami danych MySQL lub PostgreSQL, co czyni go popularnym wyborem dla programistów.

Pytanie 36

Polecenie GRANT w języku SQL służy do

A. odbierania użytkownikom praw do obiektów.
B. nadawania użytkownikom praw do obiektów.
C. aktualizacji istniejących danych w bazie.
D. umieszczania nowych danych w bazie.
Poprawnie – polecenie GRANT w SQL służy właśnie do nadawania użytkownikom praw do obiektów w bazie danych. W praktyce GRANT jest jednym z kluczowych narzędzi mechanizmu kontroli dostępu, czyli tzw. autoryzacji. Najpierw ktoś łączy się z bazą (to jest uwierzytelnianie – login/hasło, certyfikat itd.), a dopiero potem baza sprawdza, jakie uprawnienia ma ten użytkownik. I tu wchodzi GRANT. Administrator lub właściciel obiektu może przyznać użytkownikowi np. prawo SELECT do tabeli `klienci`, prawo INSERT do tabeli `zamowienia`, albo prawo EXECUTE do procedury składowanej. Składnia jest dość prosta, np.: `GRANT SELECT, INSERT ON klienci TO jan;`. W większości systemów (np. PostgreSQL, Oracle, MySQL/MariaDB, SQL Server) idea jest podobna, różnią się tylko szczegóły i nazwy ról czy typów uprawnień. W dobrych praktykach bezpieczeństwa nie daje się użytkownikom uprawnień typu „wszystko na wszystkim”, tylko dokładnie to, czego potrzebują (tzw. zasada najmniejszych uprawnień – least privilege). Moim zdaniem warto już na etapie nauki SQL odróżniać polecenia do pracy na danych (SELECT, INSERT, UPDATE, DELETE) od poleceń do zarządzania uprawnieniami, takich jak GRANT i REVOKE. W codziennej pracy administratora baz, programisty backendu czy nawet osoby od DevOps, GRANT pojawia się bardzo często: przy tworzeniu nowych kont aplikacyjnych, przy separacji środowisk (dev/test/prod), przy ograniczaniu dostępu do wrażliwych tabel, np. z danymi osobowymi. Dobre zrozumienie GRANT pomaga też szybko diagnozować błędy typu „permission denied” i świadomie projektować politykę bezpieczeństwa w systemie.

Pytanie 37

W danym środowisku programistycznym, aby uzyskać dostęp do listy błędów składniowych po nieudanej kompilacji, należy użyć kombinacji klawiszy

Ilustracja do pytania
A. Ctrl+W, T
B. Ctrl+W, E
C. Ctrl+W, N
D. Ctrl+W, O
W środowisku Visual Studio zrozumienie, które skróty klawiaturowe przypisane są do specyficznych funkcji, jest kluczowe dla efektywnej pracy programisty. Odpowiedzi błędne sugerują inne kombinacje klawiszy, które nie są przypisane do wyświetlania listy błędów. Na przykład Ctrl+W, O często jest skojarzone z otwieraniem konkretnej funkcjonalności czy widoku w innych programach, ale w Visual Studio nie odpowiada za listę błędów. Podobnie Ctrl+W, T i Ctrl+W, N również odnoszą się do innych zadań, takich jak otwieranie okna Zarządzania Zadaniami czy Notyfikacji. Błędne przyporządkowanie tych funkcji może wynikać z braku znajomości specyficznych dla Visual Studio skrótów lub z mylnego przenoszenia wiedzy z innego oprogramowania, które może używać podobnych kombinacji do innych celów. Typowym błędem myślowym jest zakładanie, że wszystkie zintegrowane środowiska programistyczne działają w podobny sposób lub że skróty klawiszowe są unifikowane pomiędzy różnymi platformami i aplikacjami. Dlatego tak ważne jest, by każdy korzystający z Visual Studio zapoznał się z dokumentacją i dostępnymi skrótami klawiaturowymi, aby móc efektywnie nawigować i korzystać z funkcji oferowanych przez to zaawansowane narzędzie.

Pytanie 38

Przypisanie w JavaScript, zapisane jako var x=true;, prowadzi do tego, że zmienna x przyjmuje typ

A. wyliczeniowym
B. logicznym
C. ciągu znaków
D. liczbowym
Wybór liczbowego typu danych w kontekście deklaracji zmiennej x jest błędny, ponieważ typ liczbowy obejmuje wartości takie jak całkowite i zmiennoprzecinkowe, które nie mają nic wspólnego z wartościami prawda/fałsz. Typ liczbowy w JavaScript jest używany do operacji matematycznych oraz obliczeń, a przypisanie true do zmiennej x nie jest równoznaczne z przypisaniem jakiejkolwiek liczby. Z kolei ciąg znaków to inny typ danych, który jest używany do reprezentowania tekstu. W JavaScript ciągi są definiowane przez pojedyncze, podwójne lub backtickowe cudzysłowy. Przykładowo, 'true' jako ciąg znaków nie jest tym samym co wartość boolean true, co czyni tę odpowiedź niepoprawną. Ostatecznie, typ wyliczeniowy, który w innych językach programowania odnosi się do zestawu nazwanych wartości, również nie ma zastosowania w tym przypadku, ponieważ JavaScript nie wspiera wyliczeń w tradycyjnym sensie. W skrócie, typy liczbowy, ciąg znaków oraz wyliczeniowy nie odnoszą się do logicznych wartości, jakimi są true i false, co wprowadza w błąd w kontekście pytania o typ zmiennej x.

Pytanie 39

Której kwerendy SQL należy użyć, aby utworzyć tabelę samochod z atrybutami marka, model, cena, gdzie marka i model są typu tekstowego, natomiast cena jest liczbą rzeczywistą typu stałoprzecinkowego?

A. CREATE TABLE samochod VALUES (marka CHAR(30), model CHAR(30), cena FLOAT);
B. CREATE TABLE samochod VALUES (marka CHAR(30), model CHAR(30), cena DOUBLE);
C. CREATE TABLE samochod (marka CHAR(30), model CHAR(30), cena DECIMAL(15,2));
D. CREATE TABLE samochod (marka INT(30), model INT(30), cena DECIMAL(2,15));
W niepoprawnych propozycjach odpowiedzi widać kilka typowych nieporozumień związanych z SQL-em i typami danych. Po pierwsze, składnia CREATE TABLE nie używa słowa VALUES do definiowania struktury tabeli. VALUES pojawia się przy wstawianiu danych (INSERT INTO ... VALUES ...), a nie przy tworzeniu tabeli. Jeśli po nazwie tabeli pojawia się VALUES, to jest to od razu czerwone światełko, że ktoś pomieszał tworzenie struktury z wstawianiem rekordów. Z mojego doświadczenia to bardzo częsty błąd u osób, które dopiero zaczynają i próbują intuicyjnie łączyć znane słowa kluczowe. Druga sprawa to dobór typów danych. W zadaniu wyraźnie jest mowa o atrybutach tekstowych dla marka i model. Zastosowanie INT(30) oznacza typ liczbowy całkowity, a nie tekstowy. Nawet jeśli ktoś myśli, że w nawiasie wpisuje się „ilość znaków”, to w przypadku INT(30) tak to nie działa – ten nawias w MySQL ma inne znaczenie (szerokość wyświetlania), a w nowoczesnych wersjach i tak jest ignorowany. Marka samochodu typu „Audi” czy „Toyota” po prostu nie zmieści się w typie liczbowym, bo to nie jest reprezentacja tekstowa. Trzeci istotny błąd dotyczy kolumny cena. Zadanie wymaga liczby rzeczywistej typu stałoprzecinkowego. Typy FLOAT czy DOUBLE są typami zmiennoprzecinkowymi binarnymi, które przechowują przybliżone wartości i mogą wprowadzać drobne błędy zaokrągleń. To jest nieakceptowalne przy pieniądzach, bo kwoty muszą się dokładnie zgadzać co do grosza. Dlatego stosuje się DECIMAL lub NUMERIC, gdzie jawnie podajemy precyzję i skalę, np. DECIMAL(15,2). Odwrócenie tych wartości, jak w DECIMAL(2,15), jest bez sensu w kontekście cen – oznaczałoby maksymalnie dwie cyfry łącznie i piętnaście po przecinku, co w praktyce nie ma zastosowania. Takie konstrukcje biorą się zwykle z mechanicznego wpisywania liczb bez zrozumienia, co oznacza precyzja i skala. Dobra praktyka w branży jest taka, że dla kwot pieniężnych używa się DECIMAL z 2 miejscami po przecinku, ewentualnie 3–4 w specyficznych zastosowaniach, a tekst przechowuje się w typach znakowych, nie liczbowych. Rozumienie tych zasad bardzo ułatwia późniejsze projektowanie sensownych schematów baz danych.

Pytanie 40

Wypisanie tekstu w języku JavaScript nie jest możliwe przy użyciu

A. metody document.write()
B. funkcji MessageBox()
C. metody window.alert()
D. własności innerHTML
Poprawnie wskazana została funkcja MessageBox(), bo w standardowym JavaScripcie działającym w przeglądarce taka funkcja po prostu nie istnieje. JavaScript udostępnia kilka mechanizmów do wypisywania tekstu, ale są one ściśle określone przez środowisko (głównie DOM i obiekt window), a nie przez jakieś ogólne, „systemowe” funkcje typu MessageBox. Właściwość innerHTML należy do elementów DOM i służy do modyfikowania ich zawartości HTML. Przykład: const div = document.getElementById('wynik'); div.innerHTML = 'Witaj w <b>JavaScript</b>'; To jest typowy, zgodny ze standardami sposób dynamicznej zmiany treści na stronie. W praktyce używa się go bardzo często, choć moim zdaniem lepiej w prostych przypadkach stosować textContent, bo jest bezpieczniejsze (nie interpretuje HTML-a, więc mniejsze ryzyko XSS). Metoda window.alert() jest wbudowaną funkcją interfejsu przeglądarki. Wyświetla prosty modalny komunikat z przyciskiem OK. Przykład: alert('Komunikat dla użytkownika'); W wielu poradnikach to pierwszy sposób „wypisania” czegokolwiek, bo od razu widać efekt. W profesjonalnych aplikacjach używa się go rzadko, raczej do szybkiego debugowania, bo blokuje interakcję z użytkownikiem. Metoda document.write() pozwala wpisać tekst bezpośrednio do strumienia dokumentu HTML podczas jego ładowania: document.write('Hello world'); Historycznie było to popularne, ale w nowoczesnych projektach uważa się to za złą praktykę. Po załadowaniu strony document.write() może nadpisać cały dokument, co jest mocno niepożądane. Lepszym standardem jest manipulacja DOM (np. innerHTML, createElement, appendChild). Natomiast MessageBox() kojarzy się z funkcjami z innych środowisk (np. WinAPI, C#, VBA), ale w JavaScripcie w przeglądarce taka funkcja nie jest zdefiniowana w żadnym oficjalnym standardzie. Jeśli ktoś jej użyje bez własnej definicji, skończy się to błędem „MessageBox is not defined”. Dlatego właśnie ta odpowiedź jest poprawna – nie da się w czystym, standardowym JS wypisać tekstu przy użyciu funkcji MessageBox(), chyba że samemu ją wcześniej napiszemy, ale to już zupełnie inna historia.