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: 6 maja 2026 17:28
  • Data zakończenia: 6 maja 2026 18:19

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

Który selektor stosuje formatowanie dla akapitów tekstu z klasą tekst oraz dla elementu blokowego o ID obrazki?

A. p.tekst, div#obrazki
B. p#tekst, div.obrazki
C. p#tekst + div.obrazki
D. p.tekst + div#obrazki
Wybór selektorów w odpowiedziach niepoprawnych często wynika z nieporozumienia dotyczącego składni CSS oraz specyfiki selektorów. W przypadku selektora 'p#tekst', należy zauważyć, że nie jest on poprawny, ponieważ identyfikator (ID) nie może być użyty w kontekście elementu, który już ma przypisaną klasę. W CSS, ID powinno być unikalne dla danego dokumentu, a klasa może być stosowana wielokrotnie. W ten sposób, 'p#tekst' sugeruje element <p> z ID 'tekst', co koliduje z ideą używania klas. Dalsza analiza selektorów jak 'p.tekst + div.obrazki' wskazuje na zastosowanie kombinacji selektorów, co nie pasuje do wymagań zadania. Operator '+' wskazuje na sąsiednie elementy, co oznacza, że styl będzie stosowany tylko do <div> bezpośrednio po <p>, co w przypadku tej konkretnej logiki nie wprowadza pożądanych efektów. Podobnie, selektor 'div.obrazki' sugeruje, że klasa 'obrazki' może być stosowana do każdego elementu <div>, co nie odnosi się do konkretnego ID. W praktyce, aby wyeliminować błędy, zaleca się gruntowne zrozumienie hierarchii i specyfiki selektorów w CSS oraz ich zastosowania w kontekście HTML. Przykładowo, stosując poprawny selektor, można uniknąć nadpisywania stylów przez inne reguły i zapewnić, że wszystkie elementy są odpowiednio stylizowane zgodnie z zamierzeniami projektowymi.

Pytanie 2

Funkcja agregująca MIN w języku SQL ma na celu obliczenie

A. średniej wartości różnych pól w rekordu zwróconego przez zapytanie
B. minimalnej wartości kolumny, która jest wynikiem kwerendy
C. liczby wierszy, które zwraca kwerenda
D. ilości znaków w rekordach zwróconych przez kwerendę
Wszystkie trzy pozostałe odpowiedzi nie są właściwe w kontekście funkcji agregującej MIN. Funkcja ta nie ma na celu zliczania liczby wierszy zwróconych przez kwerendę; zamiast tego służy do obliczania minimalnej wartości w danej kolumnie. Zliczanie wierszy to zadanie dla funkcji COUNT, która zwraca liczbę rekordów spełniających określone kryteria. Kolejnym błędnym stwierdzeniem jest, że funkcja MIN może obliczać długość znaków w zwróconych rekordach. Długość znaków to kwestia związana z funkcjami takimi jak LEN w SQL, które mierzą długość ciągów znakowych, jednak nie mają one związku z funkcją agregującą MIN. Ostatnia z błędnych odpowiedzi, dotycząca obliczania średniej wartości różnych pól rekordu, również nie jest zgodna z definicją funkcji MIN. Średnia jest obliczana przy użyciu funkcji AVG, która sumuje wartości w danej kolumnie i dzieli je przez liczbę tych wartości. W związku z tym, funkcja MIN jest jedynie odpowiedzialna za wydobycie najniższej wartości z zestawu danych, co jest kluczowe w wielu analizach, ale nie obejmuje ona żadnych z wymienionych w odpowiedziach zadań.

Pytanie 3

Jak nazywa się składnik bazy danych, który umożliwia jedynie przeglądanie informacji z bazy, prezentując je w formie tekstowej lub graficznej?

A. Zapytanie
B. Formularz
C. Raport
D. Tabela
Tabela to jakby podstawowy element bazy danych, gdzie trzymamy dane w sposób uporządkowany. Ale to nie jest takie narzędzie, które pokazuje gotowe raporty. Tabele służą do wprowadzania i edytowania danych, więc mogą pojawić się niejasności, bo niektórzy mogą mylić rolę tabel z raportami. Zapytanie z kolei to mechanizm do wyciągania danych z bazy. Ale ono samo w sobie nie pokazuje ich w przystępny sposób. Zapytania można wykorzystać do przygotowania danych do raportu, ale to nie jest to samo, co je wyświetlać. A formularz to interaktywny element, który zazwyczaj wykorzystuje się do wprowadzania danych przez użytkowników, a nie do ich odczytu. Więc nawet jeśli formularze mogą wyświetlać dane, ich głównym celem jest dać ludziom możliwość wpisywania informacji do systemu. Jak się nie rozumie tych różnych elementów bazy danych, to można łatwo trafić na błędne wnioski, jak dane są analizowane. Ważne jest, żeby pamiętać, że raporty służą do analizy i wizualizacji danych, a nie do ich przechowywania czy wprowadzania.

Pytanie 4

Utworzono bazę danych z tabelą mieszkancy, która zawiera pola: nazwisko, imie, miasto. Następnie zrealizowano poniższe zapytanie do bazy: ```SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" UNION ALL SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Kraków"``` Wskaż zapytanie, które zwróci te same dane:

A. SELECT nazwisko, imie FROM mieszkancy AS "Poznań" OR "Kraków"
B. SELECT nazwisko, imie FROM mieszkancy WHERE miasto BETWEEN "Poznań" OR "Kraków"
C. SELECT nazwisko, imie FROM mieszkancy WHERE miasto HAVING "Poznań" OR "Kraków"
D. SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" OR miasto="Kraków"
Wybrana odpowiedź jest poprawna, ponieważ wykorzystuje operator logiczny OR do połączenia dwóch warunków w klauzuli WHERE. W wyniku tego zapytania zostaną zwrócone wszystkie rekordy z tabeli 'mieszkancy', gdzie miasto to 'Poznań' lub 'Kraków'. To podejście jest zgodne z zasadami SQL, gdzie operator OR umożliwia łączenie warunków, co jest powszechnie stosowane w praktyce. Warto zauważyć, że zapytanie z wykorzystaniem operatora UNION ALL, które było pierwotnie zdefiniowane, również łączy wyniki z dwóch zapytań, ale każdy SELECT działa osobno. Użycie OR w tym przypadku jest bardziej efektywne, ponieważ pozwala na jedno zapytanie, co może przyspieszyć wykonanie w porównaniu do kilku zapytań UNION. W praktycznych zastosowaniach, gdy mamy do czynienia z wieloma kryteriami, stosowanie operatorów logicznych jest kluczowe dla uzyskania precyzyjnych wyników.

Pytanie 5

Jak można opisać przedstawiony obiekt w JavaScript?

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: function() { ... }
}
A. dwiema właściwościami i jedną metodą
B. trzema metodami
C. trzema właściwościami
D. dwiema metodami i jedną właściwością
W języku JavaScript obiekty są fundamentalną częścią języka, umożliwiającą przechowywanie i manipulowanie danymi w sposób bardziej uporządkowany. W podanym przykładzie obiekt zawiera dwie właściwości z wartościami liczbowymi oraz jedną metodę. Częstym błędem jest mylenie właściwości z metodami. Właściwość to statyczna wartość przypisana do klucza, natomiast metoda to funkcja przypisana do klucza, którą można wywołać. Niewłaściwe zrozumienie tej różnicy może prowadzić do błędnego interpretowania struktury obiektu. Zrozumienie poprawnego rozróżniania między właściwościami a metodami jest kluczowe w programowaniu obiektowym, które kładzie nacisk na modularność i wielokrotne używanie kodu. Programiści muszą również pamiętać, że struktura obiektu w JavaScript pozwala na dynamiczne dodawanie nowych właściwości i metod, co czyni ten język elastycznym i potężnym narzędziem w tworzeniu dynamicznych aplikacji internetowych. Błędem jest przypuszczanie, że każda deklaracja w obiekcie jest metodą, co może wynikać z niezrozumienia, że metody muszą zawierać fragment funkcji. Właściwe rozpoznanie tych elementów jest niezbędne do efektywnego wykorzystania zasad programowania obiektowego oraz tworzenia bardziej złożonych i skalowalnych aplikacji.

Pytanie 6

Którą wartość atrybutu name znacznika <meta> wykorzystuje się do kontrolowania obszaru widzialnego na różnych urządzeniach, na których jest wyświetlana strona internetowa?

A. description
B. generator
C. keywords
D. viewport
W tym zadaniu kluczowe jest zrozumienie, że tylko meta o name="viewport" ma realny wpływ na sposób, w jaki przeglądarka wyznacza obszar widzialny strony na różnych urządzeniach. To właśnie ten atrybut informuje silnik renderujący, jak interpretować szerokość i skalę dokumentu HTML na ekranach o różnych rozdzielczościach i gęstościach pikseli. Pozostałe podane opcje pełnią zupełnie inne role i ich pomylenie z viewportem wynika zwykle z tego, że wszystkie są „jakimiś metadanymi” w <head>. Atrybut name="keywords" był kiedyś używany głównie dla wyszukiwarek do opisu słów kluczowych strony. Obecnie większość wyszukiwarek go ignoruje, bo był masowo nadużywany do spamowania słowami kluczowymi. Nie ma on żadnego związku z responsywnością, skalowaniem strony czy dopasowaniem do ekranu telefonu. To tylko tekstowa informacja, która nie wpływa na sposób renderowania layoutu. Podobnie meta name="description" służy do przekazania krótkiego opisu strony, który często pojawia się jako fragment w wynikach wyszukiwania (snippet). To ważny element SEO i użyteczności, ale ponownie – nie steruje szerokością widoku, nie zmienia zoomu i nie mówi przeglądarce, jak ma „ułożyć” stronę na małym ekranie. To czysta informacja opisowa. Z kolei meta name="generator" jest używana głównie przez systemy CMS (np. WordPress, Joomla) do wpisania nazwy i wersji narzędzia, którym strona została wygenerowana. Ma znaczenie informacyjne, czasem diagnostyczne, ale z punktu widzenia użytkownika końcowego i wyglądu strony nie wnosi nic. Nie wpływa ani na skalę, ani na szerokość, ani na responsywność. Typowym błędem jest wrzucanie wszystkich metatagów do jednego worka i zakładanie, że skoro „meta coś tam”, to pewnie ma wpływ na wyświetlanie strony. W rzeczywistości tylko meta viewport wprost steruje parametrami widoku na urządzeniach mobilnych. Dlatego przy projektowaniu stron responsywnych warto oddzielić w głowie metadane SEO (keywords, description, generator) od metadanych technicznych związanych z renderowaniem (właśnie viewport).

Pytanie 7

Rodzaj zmiennej w języku JavaScript

A. nie istnieje.
B. ma miejsce poprzez przypisanie wartości.
C. musi być zadeklarowany na początku skryptu.
D. jest tylko jeden rodzaj.
Wiele osób uważa, że typ zmiennej w JavaScript powinien być z góry zadeklarowany, co jest niezgodne z jego zasadami działania. Twierdzenie, że typ zmiennej 'nie występuje', jest mylne, ponieważ każda wartość przypisana do zmiennej ma swój typ, nawet jeśli nie jest to jawnie określone. Ignorowanie tego faktu prowadzi do nieporozumień i błędów w kodzie. Kolejne nieprecyzyjne stwierdzenie, że 'jest tylko jeden' typ zmiennej, pomija kluczową cechę JavaScript jako języka dynamicznego, który obsługuje wiele typów, takich jak liczby, stringi, obiekty i tablice. Typy te mogą zmieniać się w trakcie działania programu, co czyni język bardzo elastycznym. Z kolei przekonanie, że zmienne muszą być zadeklarowane na początku skryptu, jest również błędne, ponieważ JavaScript pozwala na przypisywanie wartości do zmiennych w dowolnym miejscu w kodzie, co zwiększa jego dynamikę. Takie myślenie może prowadzić do nieefektywnego kodu, który jest trudniejszy w utrzymaniu oraz rozwijaniu. Ważne jest, aby zrozumieć zasady działające w tym języku, aby unikać typowych pułapek związanych z typowaniem zmiennych oraz właściwie wykorzystać zalety, jakie oferuje JavaScript.

Pytanie 8

Który z podanych kodów XHTML sformatuje tekst zgodnie z określonym schematem?

Ilustracja do pytania
A. Odpowiedź A
B. Odpowiedź D
C. Odpowiedź B
D. Odpowiedź C
Poprawna odpowiedź D zawiera poprawne znaczniki XHTML i HTML, które umożliwiają formatowanie tekstu według wzoru. W pierwszym wierszu tekst Ala ma kota używa znacznika b do pogrubienia słowa kota, co jest zgodne ze standardami, ponieważ b jest szeroko stosowanym tagiem HTML do semantycznego pogrubienia tekstu. Następnie użyty jest znacznik br do wstawienia przerwy w linii, co sprawia, że kolejna część tekstu pojawia się w nowej linii, odzwierciedlając układ zaprezentowany na obrazku. W drugim wierszu tekst a kot ma Alę, znacznik i został użyty do pochylania słowa kot, co jest zgodne z praktykami formatowania tekstu, gdzie i oznacza kursywę. Zamknięcie całego tekstu w znacznikach p paragrafu zapewnia również odpowiedni odstęp i formatowanie, co jest zgodne z semantycznym i strukturalnym organizowaniem treści w dokumencie XHTML. Podejście to odzwierciedla dobre praktyki kodowania, w tym stosowanie właściwych znaczników dla odpowiednich stylów oraz zapewnienie kompatybilności z różnymi przeglądarkami.

Pytanie 9

Który z poniższych formatów NIE umożliwia zapis plików animowanych?

A. SVG
B. GIF
C. SWF
D. ACE
Wybór formatu SWF sugeruje, że użytkownik myli zastosowania różnych formatów plików. SWF, czyli Shockwave Flash, to format, który był powszechnie używany do tworzenia animacji i interaktywnych aplikacji internetowych. Jest on oparty na wektorowej grafice i obsługuje dźwięk oraz skrypty, co czyni go idealnym do tworzenia złożonych animacji. Z kolei SVG, czyli Scalable Vector Graphics, to format oparty na XML, który pozwala na tworzenie grafiki wektorowej i również obsługuje animacje przy użyciu CSS oraz JavaScript. Poprzez błędne przypisanie funkcji animacyjnych do ACE, użytkownik może nie dostrzegać, jak różne formaty są projektowane z myślą o określonych zastosowaniach. GIF to format, który od lat jest popularny w sieci do prezentacji prostych animacji, zwłaszcza w mediach społecznościowych. Użytkownicy często mylą różne zastosowania formatów i mogą nie być świadomi, że istnieją formaty, które są specjalnie zaprojektowane do obsługi animacji, podczas gdy inne służą zupełnie innym celom, jak kompresja danych. Właściwe zrozumienie tych różnic jest kluczowe dla efektywnego projektowania treści multimedialnych oraz optymalizacji ich działania w różnych środowiskach.

Pytanie 10

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

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

Pytanie 11

Wskaż funkcję JavaScript, która umożliwia obliczenie połowy kwadratu liczby podanej jako argument.

A. function wynik(a) { return a*2/2; }
B. function wynik(a) { return a*a/2; }
C. function wynik(a) { return 2*a/a; }
D. function wynik(a) { return a/2+a/2; }
W analizie niepoprawnych odpowiedzi można zauważyć kilka typowych pomyłek, które prowadzą do błędnych obliczeń. Pierwsza z odpowiedzi, 'function wynik(a) { return a/2+a/2; }', jest myląca, ponieważ ta funkcja w rzeczywistości wykonuje dodawanie dwóch połówek liczby, co prowadzi do uzyskania wartości równiej 'a', a nie połowy kwadratu. W ten sposób nie realizuje postawionego celu. Druga propozycja, 'function wynik(a) { return a*2/2; }', również nie przynosi oczekiwanego rezultatu. Ta funkcja najpierw mnoży 'a' przez 2, a następnie dzieli przez 2, co ponownie prowadzi do wartości równej 'a'. Takie podejście jest nieefektywne i nie spełnia wymogów zadania. Kolejna odpowiedź, 'function wynik(a) { return 2*a/a; }', jest całkowicie błędna, ponieważ ta funkcja po prostu zwraca wartość 2, niezależnie od wartości 'a', co jest niezgodne z definicją obliczania połowy kwadratu liczby. W każdym z przypadków dostrzegamy brak zrozumienia podstawowych operacji arytmetycznych oraz ich zastosowania w kontekście funkcji. Typowym błędem jest skupienie się na manipulacji wartością 'a', zamiast zrozumienia, że celem jest obliczenie kwadratu tej liczby, a następnie podzielenie wyniku przez 2, co jest kluczowym elementem zadania.

Pytanie 12

Który format graficzny najlepiej nadaje się do zapisu obrazu z przezroczystością do zastosowania w serwisie internetowym?

A. BMP
B. JPG
C. SVG
D. PNG
Format PNG (Portable Network Graphics) jest najlepszym wyborem do zapisu obrazów z przezroczystością przeznaczonych na strony internetowe. PNG obsługuje przezroczystość alpha, co oznacza, że można uzyskać dowolny stopień przezroczystości na pikselach, co jest szczególnie przydatne w przypadku grafik wymagających gładkich przejść lub cieni. Dzięki temu grafiki mogą być umieszczane na różnych tłach bez widocznych krawędzi, co jest kluczowe w designie stron internetowych. Warto również zauważyć, że PNG wykorzystuje kompresję bezstratną, co oznacza, że jakość obrazu nie ulega pogorszeniu podczas zapisu. W praktyce, format PNG jest idealny do logo, ikon, obrazów z tekstem oraz ilustracji, gdzie ważna jest jakość i przezroczystość. Standardy webowe, takie jak WCAG, również zalecają używanie formatów, które zapewniają dostępność, a PNG doskonale wpisuje się w te wymagania, umożliwiając tworzenie estetycznych i funkcjonalnych stron. Ponadto, wsparcie dla formatu PNG jest szerokie, co zapewnia jego uniwersalność w różnych przeglądarkach i na różnych urządzeniach.

Pytanie 13

Jakie zadanie wykonuje funkcja napisana w JavaScript?

function fun1(a,b)
{
    if ( a % 2 != 0 ) a++;
    for(n=a; n<=b; n+=2)
        document.write(n);
}
A. sprawdzenie, czy liczba a jest liczbą nieparzystą; jeśli tak, to jej wypisanie
B. wypisanie liczb parzystych w przedziale od a do b
C. wypisanie wszystkich liczb w zakresie od a do b
D. zwrócenie parzystych wartości liczb od a do b
Analiza niepoprawnych odpowiedzi wymaga zrozumienia, dlaczego poszczególne opcje nie pasują do działania funkcji fun1. W pierwszym przypadku, opcja dotycząca sprawdzania, czy liczba a jest nieparzysta i jej wypisywania, nie jest zgodna z logiką funkcji. Chociaż funkcja sprawdza, czy a jest nieparzysta, to nie wypisuje jej, lecz zmienia ją na parzystą, co wskazuje, że jej celem nie jest wypisywanie liczby a, ale przygotowanie jej do dalszej iteracji. Wypisanie wszystkich liczb z przedziału od a do b również nie jest prawidłowe, ponieważ funkcja nie iteruje po wszystkich liczbach, lecz wyłącznie po liczbach parzystych. Warto zauważyć, że funkcja pomija wszystkie liczby nieparzyste, co wyklucza tę opcję. Kolejna możliwa odpowiedź sugeruje zwracanie wartości parzystych liczb od a do b, jednak funkcja nie wykorzystuje żadnej procedury zwracania wartości, a jej konstrukcja wskazuje na bezpośrednie wypisywanie wyników, co wyklucza tę możliwość. Typowy błąd myślowy to niepoprawne rozumienie działania pętli for oraz operacji wypisywania danych w kontekście przeglądarki internetowej, co jest istotne z punktu widzenia dynamicznych aplikacji webowych. Zrozumienie, jak działa operator modulo i jego rola w wyznaczaniu parzystości liczb, jest kluczowe dla poprawnego interpretowania takich fragmentów kodu. Wskazane jest również, aby programiści byli świadomi różnicy między wypisywaniem a zwracaniem wyników, co często prowadzi do nieporozumień w kontekście funkcji i metod w JavaScript i innych językach programowania.

Pytanie 14

Wskaźnik HTML, który umożliwia oznaczenie tekstu jako błędnego lub nieodpowiedniego poprzez jego przekreślenie, to jaki?

A. <s> </s>
B. <u> </u>
C. <em> </em>
D. <b> </b>
W tym pytaniu łatwo pomylić różne znaczniki HTML, bo wiele z nich wpływa na wygląd tekstu, ale pełnią zupełnie inne role semantyczne. W standardzie HTML <b> odpowiada głównie za pogrubienie tekstu, bez nadawania mu specjalnego znaczenia. To po prostu wizualne wyróżnienie, coś jak podkręcenie czcionki w edytorze tekstu. Nie informuje jednak, że treść jest błędna, nieaktualna czy powinna być zignorowana. W nowoczesnym kodzie, jeśli chcemy podkreślić ważność treści, lepszym wyborem jest <strong>, a nie <b>. Podobnie <em> nie ma nic wspólnego z przekreśleniem – ten znacznik służy do emfazy, czyli zaakcentowania fragmentu zdania, zwykle renderowany jest kursywą. Semantycznie oznacza, że dany fragment ma inne brzmienie albo nacisk w wypowiedzi, co jest istotne np. dla czytników ekranu czy tłumaczeń. Z kolei <u> historycznie kojarzy się z podkreślaniem tekstu, ale w HTML5 jego znaczenie zostało doprecyzowane: używa się go raczej do oznaczania treści, które są w jakiś sposób wyróżnione konwencjonalnie (np. błąd ortograficzny, nazwa własna w tekście innym alfabetem), a nie do dekoracyjnego podkreślania wszystkiego jak leci. Typowym błędem jest myślenie kategoriami „jak to wygląda”, zamiast „co to oznacza”. Wiele osób wybiera <b> albo <u>, bo kojarzy im się to z edytorem Word i zmianą stylu, a w HTML powinniśmy bardziej zwracać uwagę na semantykę i zgodność ze specyfikacją. Do oznaczania tekstu jako błędnego lub nieaktualnego używa się <s> (lub w bardziej formalnych zmianach <del>), bo te znaczniki jednoznacznie wskazują, że dana treść nie jest już obowiązująca. Dzięki temu narzędzia do dostępności, wyszukiwarki i style CSS mogą poprawnie interpretować znaczenie tego fragmentu, a nie tylko jego wygląd.

Pytanie 15

Można wydać instrukcję transakcyjną ROLLBACK, aby

A. zatwierdzić transakcję
B. zatwierdzić jedynie wybrane modyfikacje transakcji
C. cofnąć transakcję po zastosowaniu instrukcji COMMIT
D. cofnąć działanie transakcji
Każda odpowiedź, która nie odnosi się do właściwego działania instrukcji ROLLBACK, wykazuje istotne nieporozumienia dotyczące transakcji w bazach danych. Na przykład, stwierdzenie, że ROLLBACK jest używane do zatwierdzania transakcji, jest fundamentalnie błędne. Zatwierdzanie transakcji, zazwyczaj realizowane za pomocą instrukcji COMMIT, polega na zapisaniu wszystkich zmian dokonanych w ramach transakcji w bazie danych. W przeciwieństwie do tego, ROLLBACK jest środkiem ochrony, pozwalającym na cofnięcie wszelkich zmian, które mogły zostać wykonane przed jego wywołaniem. Do tego dochodzi błędne uznanie, że ROLLBACK może cofnąć tylko wybrane modyfikacje transakcji, co jest niezgodne z jego zasadniczą funkcją. ROLLBACK działa na całej transakcji, a nie na jej poszczególnych elementach, co jest kluczowe dla zapewnienia spójności stanu bazy danych. Warto również zauważyć, że instrukcja ROLLBACK nie może być używana po zastosowaniu instrukcji COMMIT, ponieważ COMMIT ostatecznie kończy transakcję i zapisuje wszystkie zmiany, co czyni je nieodwracalnymi. Te błędne koncepcje mogą prowadzić do poważnych problemów w aplikacjach bazodanowych, takich jak utrata danych, niespójności czy awarie systemów, dlatego kluczowe jest zrozumienie właściwego działania mechanizmów transakcyjnych i ich zastosowania w praktyce.

Pytanie 16

Instrukcja JavaScript: document.write5==='5'); co zostanie wyświetlone?

A. 1
B. 0
C. true
D. false
Analizując inne opcje odpowiedzi, można zauważyć, że pierwsza z nich sugeruje wynik 1. W kontekście JavaScript, wynik 1 zazwyczaj odnosi się do wartości prawdy, co jest mylne w przypadku porównania 5 === '5', które nie może zwrócić takiej wartości. Kolejna opcja wskazuje na 0, co w JavaScript również jest interpretowane jako fałsz, ale nie jest zgodne z logiką porównania typów, gdzie wynik jest jednoznacznie 'false', a nie liczbowy. Trzecia opcja, 'true', jest szczególnie myląca, ponieważ może sugerować, że porównanie zakończyło się sukcesem, co jest sprzeczne z zasadą porównania typów: 5 jako liczba i '5' jako string nie mogą być uznawane za identyczne przy użyciu operatora '===' w JavaScript. Warto pamiętać, że JavaScript jest językiem z dynamicznym typowaniem, co oznacza, że typy danych mogą być zmieniane, ale operator '===' wymaga, aby obie strony porównania były tego samego typu. Dlatego każda z tych niepoprawnych odpowiedzi błędnie interpretuje zasady operatorów w JavaScript, prowadząc do nieprawidłowych wniosków.

Pytanie 17

W aplikacji internetowej komunikat powinien pojawiać się tylko wtedy, gdy dany użytkownik jest na stronie po raz pierwszy. Którą funkcję PHP należy w tym celu zastosować?

A. mysqli_change_user
B. session_destroy
C. setcookie
D. define
W tym zadaniu kluczowe jest zrozumienie, jaki mechanizm w PHP pozwala rozpoznać użytkownika pomiędzy kolejnymi wizytami. Chodzi o sytuację, gdy przeglądarka zamyka się, mija trochę czasu, a my nadal chcemy wiedzieć, czy dana osoba już kiedyś była na stronie. Do tego nie wystarczą zwykłe zmienne czy nawet sama sesja, bo sesja zazwyczaj wygasa po pewnym czasie bezczynności i jest przechowywana po stronie serwera. Mechanizm, który naturalnie pasuje do takiego scenariusza, to właśnie cookies, ustawiane funkcją setcookie(). Propozycja define jest związana z definiowaniem stałych w kodzie PHP. To działa tylko w czasie wykonywania skryptu po stronie serwera i nie ma żadnego związku z konkretnym użytkownikiem czy jego przeglądarką. Stała zdefiniowana przez define() istnieje tylko w jednym przebiegu skryptu i znika po zakończeniu wykonania. Nie pozwala więc zapamiętać, że konkretny użytkownik był już kiedyś na stronie. To raczej narzędzie konfiguracyjne, np. do zdefiniowania ścieżek, wersji aplikacji, stałych liczbowych. Często pojawia się też mylne przekonanie, że skoro są sesje, to wystarczy coś zrobić z session_destroy. Ta funkcja służy do niszczenia całej sesji użytkownika (wylogowania, czyszczenia danych sesyjnych), a nie do wykrywania pierwszej wizyty. Co więcej, sesja jest mechanizmem krótkotrwałym i zależnym od identyfikatora sesji, więc do trwałego rozpoznawania „pierwszy raz / kolejny raz” bez logowania to średni pomysł. W standardowych projektach sesja jest używana do przechowywania aktualnego stanu użytkownika, a nie do długotrwałego śledzenia wizyt. mysqli_change_user natomiast dotyczy zupełnie innego obszaru – zmiany użytkownika połączenia z bazą danych MySQL. To operacja na poziomie serwera bazy, kompletnie oderwana od pojęcia „pierwsza wizyta użytkownika na stronie”. Moim zdaniem typowy błąd przy takich pytaniach polega na mieszaniu mechanizmów: programista widzi słowo „user” i od razu myśli o logowaniu do bazy albo sesji, zamiast pomyśleć o tym, jak HTTP i przeglądarka identyfikują użytkownika między wizytami. Według dobrych praktyk webowych, jeśli chcemy prostego rozróżnienia, czy ktoś był już na stronie, to używamy ciasteczek ustawianych setcookie(), a pozostałe wymienione funkcje pełnią zupełnie inne, bardziej lokalne lub serwerowe role.

Pytanie 18

System baz danych gromadzi multimedia, co wiąże się z przechowywaniem znacznych ilości danych binarnych. Jakiego typu danych należy użyć w tym przypadku?

A. DOUBLE
B. LONGTEXT
C. BLOB
D. ENUM
Typ BLOB (Binary Large Object) służy do przechowywania dużych ilości danych binarnych, takich jak obrazy, dźwięki, filmy czy inne multimedia. BLOBy są niezwykle przydatne w aplikacjach, które wymagają zarządzania danymi o dużych rozmiarach, ponieważ pozwalają na efektywne przechowywanie i manipulowanie tymi danymi w bazie danych. Przykładem zastosowania BLOBów może być system zarządzania treścią (CMS), w którym użytkownicy mogą przesyłać zdjęcia i filmy. BLOBy umożliwiają przechowywanie tych plików w bazie, co ułatwia ich późniejsze pobieranie i wyświetlanie. W praktyce, stosując BLOBy, należy pamiętać o odpowiednich indeksach oraz optymalizacji zapytań, aby zminimalizować czas dostępu do danych. Warto również rozważyć zastosowanie systemów zarządzania bazami danych, które są dostosowane do pracy z danymi multimedialnymi, takich jak PostgreSQL czy MySQL, które obsługują typy BLOB i inne odpowiednie struktury danych. Standardy SQL definiują BLOB jako typ danych, co sprawia, że jego użycie jest zgodne z najlepszymi praktykami programowania baz danych.

Pytanie 19

W SQL, który jest używany przez bazę danych MySQL w tabeli samochody, aby przypisać wartość 0 do kolumny przebieg, trzeba skorzystać z zapytania

A. UPDATE przebieg SET 0 FROM samochody;
B. UPDATE samochody SET przebieg=0;
C. UPDATE samochody SET przebieg VALUE 0;
D. UPDATE przebieg SET 0 TABLE samochody;
Pierwsza z błędnych odpowiedzi sugeruje kwerendę 'UPDATE przebieg SET 0 FROM samochody', która jest niepoprawna ze względu na niewłaściwą składnię. W SQL nie stosuje się słowa kluczowego 'FROM' w tym kontekście, ponieważ UPDATE działa na zaktualizowanej tabeli bez potrzeby określania źródła danych, co w tym przypadku jest zbędne. Kolejna niepoprawna odpowiedź 'UPDATE przebieg SET 0 TABLE samochody' również łamie zasady składni SQL, ponieważ użycie słowa 'TABLE' w tym kontekście jest zbędne i niezgodne z konwencją. SQL nie wymaga ani nie pozwala na takie sformułowanie kwerendy. Ostatnia błędna propozycja 'UPDATE samochody SET przebieg VALUE 0' błędnie używa słowa kluczowego 'VALUE'. W SQL używamy 'SET' do przypisywania wartości, a nie 'VALUE', co jest konstrukcją z innych języków programowania. Prawidłowa forma to 'SET kolumna=nowa_wartość'. Każda z tych odpowiedzi pokazuje istotne nieporozumienia dotyczące podstawowych zasad składni SQL, co podkreśla znaczenie nauki i praktyki w pracy z bazami danych.

Pytanie 20

Cechy przedstawione w tabeli dotyczą?

  • Strony ustalają dążenie do konkretnego wyniku
  • Ważny jest efekt pracy, a nie sposób jej realizacji
  • Zleceniodawca przekazuje za wykonawcę zaliczkę na podatek dochodowy
A. umowy agencyjnej
B. umowy o pracę
C. umowy o dzieło
D. umowy zlecenia
Umowa o pracę różni się od umowy o dzieło w kilku kluczowych aspektach. Przede wszystkim, umowa o pracę koncentruje się na procesie wykonywania pracy, a nie tylko na jej rezultacie. Pracownik w ramach umowy o pracę podlega określonym przepisom dotyczącym czasu pracy, urlopów i innych świadczeń pracowniczych, co nie ma miejsca w umowie o dzieło. Z kolei umowa zlecenia także skupia się bardziej na wykonywaniu usług niż na osiąganiu konkretnego rezultatu, co oznacza, że zleceniobiorca powinien wykonać powierzone zadanie z należytą starannością, ale niekoniecznie osiągnąć określony efekt końcowy. Umowa agencyjna jest jeszcze innym typem kontraktu, w którym agent działa na rzecz zleceniodawcy, ale niekoniecznie musi dostarczać konkretny produkt lub usługę końcową. Typowym błędem jest mylenie tych umów z uwagi na podobieństwa w formalnościach czy obowiązkach podatkowych, jednak kluczowe jest zrozumienie różnic w zakresie oczekiwań co do efektu pracy i sposobu jej rozliczania.

Pytanie 21

Na stronie internetowej dodano grafikę w kodzie HTML. Co się stanie, jeśli plik rysunek.png nie zostanie odnaleziony przez przeglądarkę?

<img src="rysunek.png" alt="pejzaż">
A. zademonstruje błąd wyświetlania strony w miejscu grafiki
B. wyświetli tekst "pejzaż" w miejscu grafiki
C. nie pokaże strony internetowej
D. wstawi tekst "rysunek.png" zamiast grafiki
W HTML znacznik <img> jest używany do wstawiania obrazów na stronach. Ważne, żeby pamiętać o atrybucie src, który mówi przeglądarce, skąd ma wziąć obraz. A alt to taki tekst zapasowy, który wyświetli się, jeśli obrazek nie załaduje się z jakiegoś powodu. To istotne, bo ułatwia dostępność dla osób, które mogą mieć trudności z widzeniem. Na przykład, gdy plik rysunek.png się nie załaduje, to wyświetli się tekst z atrybutu alt - w tym przypadku słowo pejzaż. To jest zgodne z dobrymi praktykami, bo każdy powinien wiedzieć, co miało być na obrazku, nawet jeśli go nie widzi. To także pomaga wyszukiwarkom w indeksowaniu treści. A używanie atrybutu alt to rzecz, którą warto stosować, jeśli chcemy, żeby nasza strona była dostępna i przyjazna dla użytkowników. Przy tym, przypomina mi się, że to też jest zgodne z zasadami dostępności WCAG.

Pytanie 22

W kodzie HTML znajdziemy formularz. Jaki rezultat zostanie pokazany przez przeglądarkę, jeśli użytkownik wprowadził do pierwszego pola wartość "Przykładowy text"?

Ilustracja do pytania
A. Efekt 3
B. Efekt 2
C. Efekt 4
D. Efekt 1
Niepoprawne odpowiedzi wynikają z błędnego zrozumienia struktury formularza HTML. W przypadku efektu pierwszego widać, że checkboxy zostały zamienione na radiobuttony, co może sugerować, że użytkownik może wybrać tylko jedną z opcji. Jest to niezgodne z kodem, który jasno określa pola jako checkboxy, co pozwala na wielokrotny wybór. Efekt trzeci pokazuje nieprawidłowe pozycjonowanie elementów formularza, które nie odzwierciedla rzeczywistego układu z kodu HTML. Błędne zrozumienie struktury może wynikać z nieznajomości zasady działania poszczególnych elementów formularza, takich jak <textarea> i <input type='checkbox'>. <Textarea> powinno być stosowane do wprowadzania tekstu wielowierszowego, a checkboxy są idealne do prezentacji listy opcji, które mogą być niezależnie zaznaczone. Efekt czwarty przedstawia radiobuttony zamiast checkboxów, co całkowicie zmienia funkcję formularza. Warto w tym kontekście zrozumieć różnicę między radiobuttonami a checkboxami, gdzie pierwsze są używane do wyboru jednej z wielu opcji, a drugie do wielokrotnego wyboru. Kluczowe jest również poprawne stosowanie i testowanie formularzy w celu zapewnienia ich funkcjonalności i intuicyjności dla użytkownika końcowego.

Pytanie 23

W systemie baz danych sklepu komputerowego znajduje się tabela o nazwie komputery. Aby stworzyć raport, który wyświetla dane z tabeli dla komputerów z co najmniej 8 GB pamięci oraz procesorem Intel, można użyć kwerendy

A. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec >= 8
B. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec >= 8
C. SELECT * FROM komputery WHERE procesor = "Intel" AND pamiec < 8
D. SELECT * FROM komputery WHERE procesor = "Intel" OR pamiec < 8
Odpowiedź "SELECT * FROM komputery WHERE procesor = 'Intel' AND pamiec >= 8;" jest poprawna, ponieważ wykorzystuje operator AND do jednoczesnego spełnienia dwóch warunków: procesor musi być równy 'Intel', a pamięć musi wynosić co najmniej 8 GB. Taki zapis jest zgodny z najlepszymi praktykami w programowaniu zapytań SQL, którymi są m.in. precyzyjność oraz jednoznaczność. Dzięki użyciu operatora AND, zapytanie filtruje wyniki w sposób, który jest zgodny z wymaganiami użytkownika. W praktyce, takie kwerendy są niezwykle ważne dla analizy danych w bazach danych, ponieważ umożliwiają wyodrębnienie specyficznych informacji, które są krytyczne dla podejmowania decyzji biznesowych. Na przykład, w kontekście sklepu komputerowego, analiza komputerów z określonymi parametrami technicznymi może pomóc w lepszym dostosowaniu oferty do potrzeb klientów. Ponadto, rozumienie składni SQL oraz umiejętność formułowania efektywnych zapytań to kluczowa umiejętność dla specjalistów w dziedzinie zarządzania danymi.

Pytanie 24

W tabeli pracownicy utworzono klucz główny typu INTEGER z atrybutami NOT NULL oraz AUTO-INCREMENT. Dodatkowo zdefiniowano pola imie oraz nazwisko. W przypadku użycia przedstawionej w ramce kwerendy SQL wprowadzającej dane, gdzie pominięto pole klucza, w bazie danych MySQL dojdzie do

Ilustracja do pytania
A. zignorowania polecenia, tabela nie ulegnie zmianie
B. błędu związane z nieprawidłową liczbą pól
C. wprowadzenia rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
D. wprowadzenia rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
W przypadku bazy danych MySQL, klucz główny zdefiniowany z atrybutem AUTO-INCREMENT pełni ważną funkcję automatycznego przydzielania unikalnych wartości liczbowych dla każdego nowego rekordu. Jest to szczególnie przydatne w dużych bazach danych, gdzie ręczne przypisywanie wartości klucza mogłoby prowadzić do błędów czy konfliktów. W przedstawionym przypadku, query SQL typu INSERT INTO pracownicy (imie, nazwisko) VALUES ('Anna', 'Nowak'); pomija pole klucza głównego. Dzięki zastosowaniu AUTO-INCREMENT, MySQL automatycznie przydzieli nową wartość klucza głównego, która będzie kolejną w sekwencji, zapewniając integralność danych. Tego rodzaju mechanizm jest standardem w zarządzaniu relacyjną bazą danych, co pozwala na efektywne i bezpieczne operowanie danymi bez ryzyka wystąpienia błędów związanych z ręcznym zarządzaniem kluczami. Dobre praktyki sugerują, aby w takich przypadkach polegać na funkcji AUTO-INCREMENT, co nie tylko ułatwia pracę z bazą danych, ale również minimalizuje możliwość wystąpienia duplikatów czy niespójności w danych. To podejście jest szeroko stosowane w branży IT, szczególnie w przypadkach systemów wymagających dużego wolumenu danych.

Pytanie 25

Instrukcja REVOKE SELECT ON nazwa1 FROM nazwa2 w języku SQL pozwala na

A. usunięcie użytkownika z bazy danych
B. odebranie uprawnień danemu użytkownikowi
C. przyznawanie praw do tabeli
D. przyznawanie uprawnień z użyciem ustalonego schematu
Polecenie REVOKE SELECT ON w języku SQL jest używane do odbierania uprawnień do wykonywania operacji SELECT na określonej tabeli lub widoku dla konkretnego użytkownika lub grupy użytkowników. W przypadku użycia tej komendy, administrator bazy danych lub właściciel obiektu wskazuje, że dany użytkownik nie ma już prawa do odczytu danych z określonej tabeli, co skutkuje zablokowaniem dostępu do informacji w tej tabeli. Przykładowo, jeśli mamy tabelę 'Pracownicy' i użytkownika 'JanKowalski', polecenie REVOKE SELECT ON Pracownicy FROM JanKowalski skutkuje tym, że Jan Kowalski nie będzie mógł wykonywać zapytań typu SELECT na tej tabeli. Ważne jest, aby zrozumieć, że polecenie to nie usuwa użytkownika z bazy danych ani nie zmienia struktury bazy, a jedynie modyfikuje uprawnienia dostępu. W kontekście SQL, standardy takie jak ANSI SQL definiują sposób, w jaki uprawnienia mogą być przyznawane i odbierane, co sprawia, że umiejętność zarządzania uprawnieniami jest niezbędna dla każdego administrującego bazą danych.

Pytanie 26

Jakie polecenie w CSS umożliwia dodanie zewnętrznego arkusza stylów?

A. open
B. import
C. require
D. include
Użycie poleceń takich jak 'require', 'include' czy 'open' w kontekście CSS jest błędne, ponieważ nie są one częścią standardowego języka CSS. 'Require' i 'include' są terminami używanymi w kontekście języków programowania, takich jak PHP, gdzie umożliwiają one włączanie plików, ale nie mają zastosowania w CSS. Przykładowo, w PHP można załączyć plik z funkcjami w ten sposób: 'include 'functions.php';', co pokazuje, jak specyficzne języki programowania mają swoje własne mechanizmy włączania plików. W przypadku CSS, celem jest stylizacja dokumentów HTML, a nie manipulacja strukturą plików. 'Open' natomiast nie jest terminem związanym z załączaniem stylów i nie ma odpowiednika w CSS. Powszechnym błędem jest mylenie koncepcji załączania plików, które są specyficzne dla danej technologii. W CSS jedyną poprawną metodą jest użycie '@import', co zapewnia, że style są ładowane w odpowiedniej kolejności i w odpowiednich kontekście, co jest kluczowe dla zachowania integralności wizualnej i funkcjonalnej strony. Dlatego ważne jest, aby zwracać uwagę na specyfikę każdego języka i stosować odpowiednie dla niego mechanizmy, unikając przenoszenia koncepcji z innych technologii, co może prowadzić do nieporozumień.

Pytanie 27

Na ilustracji pokazano tabelę z połączonymi komórkami. Jakie atrybuty scalania zastosowano, aby uzyskać ten efekt?

Ilustracja do pytania
A. rowspan w drugim wierszu i pierwszej komórce oraz colspan w trzecim wierszu, trzeciej komórce
B. colspan w drugim wierszu we wszystkich trzech komórkach oraz rowspan w trzecim wierszu ostatniej komórce
C. colspan w drugim wierszu i pierwszej komórce oraz rowspan w trzecim wierszu, trzeciej komórce
D. colspan w drugim wierszu i pierwszej komórce oraz rowspan w trzecim wierszu i czwartym wierszu
Niepoprawne odpowiedzi wynikają z błędnego przypisania atrybutów colspan i rowspan w tabeli HTML. Rozważając zastosowanie rowspan w drugim wierszu i pierwszej komórce, błędnie zakłada się, że komórka ta miałaby rozciągać się na kilka wierszy, co nie jest prawdą dla przedstawionego układu. Zastosowanie colspan w trzecim wierszu i trzeciej komórce również jest nieprawidłowe, gdyż komórki te nie są rozciągane poziomo na kilka kolumn. Kolejne błędne przypisanie to colspan we wszystkich trzech komórkach drugiego wiersza - w rzeczywistości tylko jedna z komórek wymaga takiego scalania, aby uzyskać pokazany efekt. Podobnie, użycie rowspan w czwartym wierszu nie znajduje zastosowania w załączonym obrazie, gdzie komórki są jednolicie rozmieszczone. Takie błędy w zrozumieniu mechaniki tabel HTML mogą wynikać z braku doświadczenia z praktycznym zastosowaniem tych atrybutów. Ważne jest, aby dokładnie analizować strukturę tabel i zrozumieć specyfikę ich projektowania, co pozwala na poprawne i efektywne wykorzystanie dostępnych narzędzi. Edukacja w zakresie semantyki HTML i praktyczne ćwiczenia mogą znacznie poprawić umiejętność tworzenia i zarządzania złożonymi układami tabelarycznymi na stronach internetowych, a także przyczynić się do lepszej dostępności i responsywności stron.

Pytanie 28

W języku JavaScript funkcja document.getElementById(id) służy do

A. umieszczenia tekstu 'id' na stronie WWW
B. uzyskania odniesienia do pierwszego elementu HTML o wskazanym id
C. sprawdzania poprawności formularza z identyfikatorem id
D. pobierania danych z pola formularza i przypisania ich do zmiennej id
Zrozumienie funkcji document.getElementById(id) jest fundamentalne dla efektywnej pracy z DOM w JavaScript. Wiele błędnych odpowiedzi na to pytanie wynika z nieporozumień dotyczących podstawowych zasad działania tej metody. Propozycja, że metoda ta sprawdza poprawność formularza o identyfikatorze id, jest nieprawidłowa, ponieważ jej głównym celem nie jest walidacja danych, lecz lokalizacja elementu w dokumencie. Walidacja formularza zwykle realizowana jest za pomocą innych metod, takich jak event listeners, które reagują na interakcje użytkownika. Twierdzenie, że document.getElementById() pobiera dane z pola formularza i wstawia je do zmiennej id, jest także mylące, ponieważ id to atrybut, który wskazuje na element, a nie zmienną do przechowywania wartości. W rzeczywistości, jeśli chcielibyśmy uzyskać wartość pola formularza, musielibyśmy najpierw uzyskać odniesienie do tego elementu, a następnie odczytać jego wartość za pomocą np. element.value. Ostatnia nieprawidłowa koncepcja, czyli wstawienie tekstu o treści 'id' na stronie WWW, również jest błędna, gdyż metoda ta nie wstawia tekstu, a jedynie zwraca odniesienie do elementu. Wskazuje to na powszechne błędy myślowe, gdzie użytkownicy mylą funkcję szukania elementu z funkcjami manipulacji jego zawartością. Zrozumienie tych różnic jest kluczowe w nauce programowania w JavaScript.

Pytanie 29

W JavaScript zdefiniowano obiekt. W jaki sposób można uzyskać dostęp do właściwości nazwisko?

var osoba = {imie: "Anna", nazwisko: "Kowalska", rok_urodzenia: 1985};
A. osoba[1]
B. osoba::nazwisko
C. osoba.nazwisko
D. osoba[2]
W przypadku niepoprawnych odpowiedzi osoba[2], osoba::nazwisko i osoba[1] odniesienie do właściwości obiektu w JavaScript zostało błędnie przedstawione. Metoda osoba[2] oraz osoba[1] sugeruje użycie notacji tablicowej, która jest stosowana do odwoływania się do elementów tablicy przez ich indeks. Jednak obiekt w JavaScript nie jest tablicą, a zestawem par klucz-wartość, dlatego stosowanie indeksów w tym kontekście nie ma zastosowania. Indeksowanie za pomocą nawiasów kwadratowych jest właściwe w przypadku tablic, natomiast obiekty wymagają dostępu przez klucze opisane jako stringi. Próba użycia osoba::nazwisko jest niepoprawna, ponieważ podwójny dwukropek nie jest częścią syntaksu JavaScript pozwalającego na dostęp do właściwości obiektu. Tego typu notacja może pojawiać się w innych językach programowania jak C++ jako operator zakresu, jednak w JavaScript jest pozbawiona sensu. Błędny wybór w tym przypadku wynika z niezrozumienia różnicy między różnymi strukturami danych oraz ich specyficznej składni w obrębie różnych języków programowania. Bardzo istotne jest zapamiętanie, że w JavaScript do właściwości obiektu najczęściej odwołuje się za pomocą notacji kropkowej, co jest nie tylko standardem, ale również poprawia czytelność i zrozumiałość kodu. Świadomość różnicy między tablicami a obiektami oraz umiejętność wyboru odpowiedniej składni są kluczowe w pisaniu efektywnego i poprawnego kodu w JavaScript. Poprawne zrozumienie tych różnic i składni pozwala unikać błędów i pisania kodu, który może być trudny do debugowania i zrównoważenia w przyszłości.

Pytanie 30

Który z modyfikatorów określa opisany w ramce przypadek? Metoda i zmienna są dostępne wyłącznie dla innych metod tej samej klasy

A. static
B. private
C. public
D. protected
Modyfikatory dostępu mają kluczowe znaczenie dla organizacji i bezpieczeństwa kodu. Odpowiedzi wskazujące na 'static', 'public' oraz 'protected' są nieprawidłowe w kontekście podanego opisu. Modyfikator 'static' oznacza, że metoda lub zmienna należy do klasy, a nie do instancji klasy, co pozwala na dostęp do niej bez tworzenia obiektu. Jest to użyteczne w przypadku narzędzi lub metod pomocniczych, ale nie odpowiada na wymaganie dotyczące ograniczenia dostępu. Modyfikator 'public' z kolei pozwala na dostęp do elementów z każdego miejsca w kodzie, co jest sprzeczne z definicją zawężającego dostępu do innych metod klasy. Użycie 'public' w tym kontekście prowadzi do sytuacji, w której inne klasy mogą niebezpiecznie zmieniać stan obiektów, co jest sprzeczne z zasadami dobrego projektowania. Modyfikator 'protected' umożliwia dostęp do elementów dla klas dziedziczących oraz dla tych, które znajdują się w tej samej paczce, co również nie spełnia wymogu ograniczenia dostępu wyłącznie do metod własnej klasy. Typowe błędy myślowe, prowadzące do wyboru niewłaściwych odpowiedzi, często wynikają z braku zrozumienia zasad projektowania obiektowego oraz niewłaściwego kojarzenia modyfikatorów z poziomem dostępu. Dlatego kluczowe jest zrozumienie, że 'private' jest jedynym modyfikatorem, który w pełni spełnia wymagania opisane w pytaniu.

Pytanie 31

W języku PHP wartość 1 została przypisana do zmiennej $a. Porównanie $a === $b zwraca true, gdy zmienna $b ma wartość

A. C. 1 lub '1'
B. A. *1
C. D. "1" lub '1'
D. B. '1'
Porównanie w języku PHP za pomocą operatora identyczności (===) sprawdza zarówno wartość, jak i typ zmiennych. W przypadku, gdy zmienna $a została zainicjowana wartością 1 jako liczba całkowita (integer), operator ten zwróci true, jeśli zmienna $b również będzie miała wartość 1 jako liczba całkowita. Jest to kluczowe, ponieważ operator === nie przeprowadza konwersji typów, co oznacza, że porównywane zmienne muszą być tego samego typu. Wartości 1, '1' (string) czy "1" (również string) nie będą wystarczające, ponieważ są one w innych typach niż 1 (integer). Dlatego poprawna odpowiedź to A. 1. W praktyce, użycie operatora identyczności jest zalecane w sytuacjach, gdy potrzebujemy pewności, że porównywane wartości są identyczne, co zapobiega potencjalnym błędom, które mogą wyniknąć z niezamierzonych konwersji typów. Warto także zauważyć, że dobre praktyki programistyczne w PHP zalecają unikanie używania operatorów porównania, które mogą prowadzić do niejednoznacznych wyników, takich jak ==, jeśli nie jest to absolutnie konieczne.

Pytanie 32

DOM oferuje metody i właściwości, które w języku JavaScript umożliwiają

A. pobieranie oraz modyfikowanie elementów strony widocznej w przeglądarce
B. przesyłanie danych formularza bezpośrednio do bazy danych
C. manipulowanie łańcuchami zadeklarowanymi w kodzie
D. przeprowadzanie operacji na zmiennych przechowujących liczby
Odpowiedź dotycząca pobierania i modyfikowania elementów strony wyświetlonej przez przeglądarkę jest poprawna, ponieważ DOM (Document Object Model) stanowi interfejs programistyczny, który umożliwia skryptom JavaScript dostęp do struktury dokumentu HTML lub XML. Dzięki DOM programiści mogą dynamicznie zmieniać zawartość, strukturę i styl dokumentu. Na przykład, za pomocą metody document.getElementById('elementId') można uzyskać dostęp do konkretnego elementu na stronie, a następnie modyfikować jego właściwości, jak tekst czy atrybuty, za pomocą elementów takich jak innerHTML lub setAttribute. Stosowanie DOM jest zgodne z najlepszymi praktykami, takimi jak minimalizowanie manipulacji na stronie, co prowadzi do lepszej wydajności aplikacji. Warto również zwrócić uwagę na standardy W3C, które promują poprawne użycie DOM w kontekście dostępu i użyteczności stron internetowych. Umiejętność efektywnej pracy z DOM jest kluczowa w nowoczesnym web developmencie, gdzie interaktywność i dynamika są niezbędne do tworzenia atrakcyjnych i responsywnych aplikacji internetowych.

Pytanie 33

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

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

Pytanie 34

W języku PHP wykorzystano funkcję ```is_float()```. Które z poniższych wywołań tej funkcji zwróci rezultat true?

A. is_float(334)
B. is_float(3.34)
C. is_float('3,34')
D. is_float(NULL)
Zrozumienie, co dokładnie zwraca funkcja is_float(), jest bardzo ważne, jeśli chce się dobrze pracować z typami danych w PHP. Na przykład, jak wpiszesz is_float(334), to dostaniesz false, bo 334 to liczba całkowita, a nie zmiennoprzecinkowa. To może być mylące, bo nie każdy wie, że float to coś konkretnego. Podobnie jest z is_float(NULL) - zwraca false, bo NULL to jakby brak wartości, a nie liczba. Jeszcze jedno – jakbyś wywołał is_float('3,34'), to też dostaniesz false, bo PHP nie rozpozna tego jako float; to traktuje jako tekst. PHP nie konwertuje automatycznie tekstu na float, zwłaszcza jak używasz przecinka, zamiast kropki. Te błędy często biorą się stąd, że ludzie myślą, że PHP sam zrozumie, co mają na myśli. Dlatego warto ogarnąć, jak działa typowanie w PHP i jak używać funkcji tych sprawdzających typy, jak is_float(). Dzięki temu twój kod będzie bardziej stabilny i unikniesz błędów przy jego działaniu.

Pytanie 35

Zastosowanie atrybutu NOT NULL dla kolumny jest konieczne w sytuacji, gdy

A. definiujemy wszystkie pola o typie numerycznym
B. tworzymy definicję wszystkich pól tabeli
C. mamy do czynienia z kluczem podstawowym
D. korzystamy z atrybutu DEFAULT
Nieprawidłowe odpowiedzi odzwierciedlają typowe błędne rozumienie działania atrybutu NOT NULL w kontekście tabel baz danych. W przypadku klucza podstawowego, jest to niezbędny warunek, aby zapewnić, że każdy wiersz w tabeli jest jednoznacznie identyfikowalny. Odpowiedzi sugerujące, że atrybut NOT NULL jest wymagany przy użyciu atrybutu DEFAULT, są mylące, ponieważ atrybut DEFAULT służy do ustalania wartości domyślnych dla kolumn, które mogą przyjmować wartość NULL. Użycie atrybutu DEFAULT wcale nie implikuje, że kolumna musi być oznaczona jako NOT NULL. Kolejna niepoprawna koncepcja dotyczy definicji wszystkich pól tabeli. Nie ma wymogu, aby wszystkie kolumny w tabeli były oznaczone jako NOT NULL; zależy to od specyficznych wymagań dotyczących danych w danej aplikacji. Ponadto, definicja wszystkich pól typu numerycznego jako NOT NULL również jest fałszywa, ponieważ pola numeryczne mogą być używane do reprezentacji wartości, które mogą być nieznane lub nieprzydzielone, co prowadziłoby do sytuacji, w której wartość NULL jest jak najbardziej uzasadniona. Zrozumienie tych różnic jest kluczowe dla efektywnego projektowania baz danych oraz zarządzania danymi w aplikacjach, co jest zgodne z najlepszymi praktykami w branży.

Pytanie 36

Przedstawiono fragment HTML, który nie przechodzi poprawnej walidacji. Błąd walidacyjny tego kodu dotyczy

<!DOCTYPE html>
<html>
 <head>
  <title>Test</title>
 </head>
 <body>
  <img src="obraz.gif alt="Obrazek">
  <h1>Rozdział 1</h1>
  <p>To jest tekst paragrafu, ... </p>
  <br>
  <img src="obraz.gif" alt="Obrazek">

 </body>
</html>
A. braku cudzysłowu.
B. powtórzenia nazwy pliku graficznego.
C. niedomknięcia znacznika br.
D. niedomknięcia znacznika img.
Wybrane odpowiedzi sugerują pewne nieporozumienia dotyczące zasad walidacji kodu HTML. Po pierwsze, znacznik <img> nie wymaga domknięcia, a więc niedomknięcie tego znacznika nie byłoby błędem walidacji. Jest to znacznik samozamykający się, służący do osadzania obrazów na stronie. Podobnie, nie ma wymogu domknięcia znacznika <br>, który jest również samozamykający się i służy do tworzenia linii przerwy. Ponadto, powtórzenie nazwy pliku graficznego w kodzie HTML nie jest błędem walidacji. Możliwe jest użycie tego samego obrazu w wielu miejscach na stronie, co wiązałoby się z wielokrotnym użyciem tej samej nazwy pliku. Kluczowe jest zrozumienie, że walidacja HTML polega głównie na sprawdzaniu poprawności składni, a nie na ocenie decyzji projektowych, takich jak wybór grafik. Zasadniczy błąd walidacji w analizowanym fragmencie kodu polega na braku cudzysłowu otaczającego atrybuty w znaczniku <img>, co jest wymogiem poprawnej walidacji kodu HTML.

Pytanie 37

Jakiego typu danych w bazie MySQL należy używać, aby zapisać datę oraz czas w jednym polu?

A. TIMESTAMP
B. BOOLEAN
C. DATE
D. YEAR
Wybór błędnych typów danych do przechowywania daty i czasu w MySQL może prowadzić do poważnych problemów w aplikacjach. Typ danych DATE jest zaprojektowany jedynie do przechowywania dat bez informacji o czasie, co oznacza, że nie nadaje się do sytuacji, gdzie potrzebne są dokładne informacje co do godzin i minut. Użycie DATE w tym kontekście ogranicza możliwości analizy danych związanych z czasem, na przykład w przypadku zapisywania logów zdarzeń, gdzie istotne jest zarówno data, jak i godzina wystąpienia. Z kolei typ YEAR jest jeszcze bardziej ograniczony, ponieważ pozwala na przechowywanie tylko informacji o roku. Takie podejście jest niewystarczające w większości przypadków, gdzie pełna data i czas są wymagane do prawidłowego zarządzania danymi. Typ BOOLEAN, który ma tylko dwa stany (prawda/fałsz), również nie jest odpowiedni do przechowywania daty i czasu, co jest absolutnie nieadekwatne do tego celu. Wybór niewłaściwego typu danych często wynika z braku zrozumienia, jak ważne jest precyzyjne określenie wymagań dotyczących danych w danym kontekście. Używanie typów danych, które nie są dostosowane do specyficznych potrzeb aplikacji, może prowadzić do błędów, utraty danych oraz trudności w przyszłych aktualizacjach i rozbudowach systemów.

Pytanie 38

W przedstawionym kodzie HTML, zaprezentowany styl CSS jest stylem:

<p style="color:red;">To jest przykładowy akapit.</p>
A. dynamicznym
B. nagłówkowym
C. lokalnym
D. zewnętrznym
Styl CSS określony wewnątrz elementu HTML poprzez atrybut style jest przykładem stylu lokalnego. Styl lokalny pozwala na bezpośrednie przypisanie konkretnych własności CSS do pojedynczego elementu co umożliwia szybkie i łatwe testowanie oraz modyfikacje wyglądu bez potrzeby edytowania zewnętrznych plików CSS. Praktyczne zastosowanie stylów lokalnych odnajdujemy w sytuacjach gdy chcemy wprowadzić zmiany dla pojedynczego elementu na stronie nie wpływając na inne elementy. Na przykład jeśli w jednym miejscu chcemy podkreślić wagę tekstu stosując kolor czerwony możemy użyć stylu lokalnego jak pokazano w pytaniu. Jednak styl lokalny nie jest zalecany dla większych projektów czy skomplikowanych stron ze względu na fakt że utrudnia zarządzanie i utrzymywanie spójnego stylu w całym projekcie. W takich przypadkach lepiej korzystać ze stylów zewnętrznych lub nagłówkowych które oferują lepszą organizację i elastyczność. Warto również pamiętać że implementacja stylu lokalnego może nadpisywać inne style co jest istotne przy rozwiązywaniu problemów związanych z dziedziczeniem stylów CSS.

Pytanie 39

Systemem zarządzania wersjami w projekcie programistycznym, który działa w trybie rozproszonym, jest

A. GIT
B. Eclipse
C. FileZilla
D. TotalCommander
GIT jest rozproszonym systemem kontroli wersji, który pozwala na efektywne zarządzanie kodem źródłowym projektu programistycznego. Jego architektura umożliwia każdemu programiście posiadanie lokalnej kopii repozytorium, co przyspiesza operacje takie jak commit, diff czy log, ponieważ nie wymaga dostępu do zdalnego serwera. GIT wspiera równoległą pracę wielu deweloperów, umożliwiając tworzenie gałęzi (branch) do rozwijania funkcji czy naprawy błędów bez wpływania na główną wersję kodu. Przykładami praktycznego zastosowania są: rozwijanie nowych funkcjonalności w oddzielnych gałęziach, zarządzanie kodem w projektach open source, czy współpraca w zespołach rozproszonych geograficznie, gdzie deweloperzy mogą synchronizować swoje zmiany poprzez operacje push i pull. Warto także zaznaczyć, że GIT jest szeroko stosowany w standardach branżowych, takich jak Continuous Integration/Continuous Deployment (CI/CD), co podkreśla jego znaczenie w nowoczesnym procesie wytwarzania oprogramowania.

Pytanie 40

Która zasada dotyczy programowania strukturalnego? 

A. Można tworzyć obiekty składające się z pól i metod.
B. Nie można korzystać z instrukcji warunkowych if. 
C. W kodzie programu należy często korzystać z instrukcji skoku goto.
D. Dla powtarzających się sekwencji instrukcji należy tworzyć procedury i funkcje.
W tym pytaniu łatwo wpaść w kilka typowych pułapek myślowych dotyczących stylów programowania. Programowanie strukturalne często myli się z innymi paradygmatami, szczególnie z programowaniem obiektowym albo z bardzo starym, „spaghetti kodem” opartym na instrukcjach skoku. W efekcie pojawiają się błędne skojarzenia, że skoro jest jakiś „styl programowania”, to pewnie czegoś kategorycznie zabrania, albo że sprowadza się do modnych pojęć jak obiekty czy klasy. Jednym z takich nieporozumień jest przekonanie, że w programowaniu strukturalnym nie wolno używać instrukcji warunkowych if. Jest dokładnie odwrotnie. Instrukcje warunkowe są jednym z trzech filarów programowania strukturalnego, obok sekwencji i pętli. To właśnie dzięki nim można budować czytelne rozgałęzienia logiki programu, zamiast skakać po kodzie goto. Gdy ktoś myśli, że „strukturalne” oznacza „bez if”, to zwykle wynika to z pomieszania pojęć albo z jakiegoś źle zapamiętanego hasła z teorii. Kolejna myląca sprawa to obiekty z polami i metodami. To już jest domena programowania obiektowego, które pojawiło się później i rozwinęło idee programowania strukturalnego, ale ich nie zastąpiło. W podejściu stricte strukturalnym skupiamy się na funkcjach, procedurach i danych, a nie na łączeniu ich w klasy i obiekty. Oczywiście w praktyce, w językach takich jak PHP czy JavaScript, często mieszamy te paradygmaty, ale sama możliwość tworzenia obiektów nie jest zasadą programowania strukturalnego. Dość zdradliwa jest też pokusa, żeby intensywnie korzystać z instrukcji skoku goto. Historycznie wiele języków je miało i programiści budowali z nich całe przepływy sterowania, co prowadziło do tzw. spaghetti code – kodu trudnego do śledzenia i utrzymania. Programowanie strukturalne właśnie z tym walczy: zamiast skakać w losowe miejsca pliku, używamy pętli, instrukcji warunkowych oraz dobrze wydzielonych procedur i funkcji. Jeżeli ktoś uważa goto za „skrócenie drogi”, to zwykle kończy z kodem, którego nikt nie chce potem dotykać. Sedno sprawy jest takie, że podstawowe dobre praktyki – unikanie goto, świadome używanie if i pętli, wydzielanie powtarzających się fragmentów do funkcji – to fundament, na którym buduje się dalsze, bardziej zaawansowane style programowania. Zrozumienie, dlaczego pozostałe odpowiedzi są sprzeczne z tym podejściem, pomaga lepiej ogarnąć, skąd wzięły się współczesne standardy jakości kodu i czemu tak mocno kładzie się nacisk na czytelność oraz utrzymywalność programu.