Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 4 maja 2026 08:09
  • Data zakończenia: 4 maja 2026 08:32

Egzamin niezdany

Wynik: 14/40 punktów (35,0%)

Wymagane minimum: 20 punktów (50%)

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

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

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

Pytanie 2

Emblemat systemu CMS o nazwie Joomla! to

Ilustracja do pytania
A. Rys. B
B. Rys. A
C. Rys. C
D. Rys. D
Prawidłową odpowiedzią na to pytanie jest Rys. B, który przedstawia logo systemu Joomla!. Joomla! to jeden z najpopularniejszych systemów zarządzania treścią (CMS), używany do tworzenia stron internetowych i aplikacji online. Logo Joomla! składa się z czterech złączonych elementów, które symbolizują społeczność i współpracę, kluczowe wartości tej platformy open source. Joomla! oferuje wiele funkcji takich jak łatwe zarządzanie treścią, rozszerzalność przez moduły i komponenty oraz szerokie wsparcie dla różnych formatów multimedialnych. Platforma ta jest ceniona za elastyczność i możliwość dostosowania do specyficznych potrzeb projektowych, co czyni ją idealnym wyborem dla różnych typów stron, od prostych witryn po skomplikowane portale biznesowe. Wybierając Joomla! zyskujemy dostęp do społeczności deweloperów oraz bogatej bazy zasobów edukacyjnych i wsparcia technicznego. Zrozumienie znaczenia i zastosowania systemów CMS jak Joomla! jest kluczowe dla specjalistów zajmujących się tworzeniem i zarządzaniem stronami internetowymi, ponieważ umożliwia efektywną obsługę i rozwój dynamicznych treści.

Pytanie 3

W języku PHP instrukcja foreach jest rodzajem

A. pętli, przeznaczonej wyłącznie dla elementów tablicy
B. instrukcji wyboru, dla elementów tablicy
C. instrukcji warunkowej, niezależnie od typu zmiennej
D. pętli, niezależnie od rodzaju zmiennej
Trochę mylne jest stwierdzenie, że <i>foreach</i> to pętla, która może działać na każdej zmiennej. W rzeczywistości <i>foreach</i> jest ściśle związana z tablicami. Jak spróbujesz użyć jej na zmiennej, która nie jest tablicą, to dostaniesz błąd. I nie ma co mówić, że <i>foreach</i> to instrukcja warunkowa, bo to też nieprawda. Instrukcje warunkowe, jak <i>if</i>, podejmują decyzje, a <i>foreach</i> jest do tego, żeby iterować. I to, co ktoś napisał o pętli wyboru, też wprowadza w błąd. Pętle jak <i>for</i> czy <i>while</i> powtarzają kod na podstawie warunków, a <i>foreach</i> to po prostu iteracja po elementach tablicy. Tak że tu ważne jest, żeby nie mylić pętli iteracyjnych z warunkowymi oraz rozumieć, gdzie można używać <i>foreach</i>, bo jak się tego nie zrozumie, to mogą być problemy w programowaniu w PHP i można nie wykorzystać dostępnych narzędzi jak trzeba.

Pytanie 4

Zapis koloru w formacie #ff00e0 jest równoważny reprezentacji

A. rgb(255, 0, 224)
B. rgb(f, 0, e0)
C. rgb(255, 0, 128)
D. rgb(ff, 0, e0)
Odpowiedzi rgb(f, 0, e0) oraz rgb(ff, 0, e0) zawierają błędy dotyczące formatu wartości RGB. W przypadku formatu RGB, wartości składowych koloru muszą być liczbami całkowitymi w przedziale od 0 do 255. W pierwszym przypadku 'f' i 'e0' nie są poprawnymi wartościami, ponieważ 'f' nie reprezentuje liczby w systemie dziesiętnym, a 'e0' nie zostało przeliczone na wartość dziesiętną, co czyni tę odpowiedź niezgodną ze standardami definiowania kolorów. Z kolei druga odpowiedź, rgb(ff, 0, e0), również nie przekształca wartości szesnastkowych na format dziesiętny. Standard RGB wymaga, aby wartości były zrozumiałe dla silnika renderującego, dlatego niepoprawne są wartości, które nie są liczbami całkowitymi. Pojawiają się też koncepcje dotyczące odczytywania wartości szesnastkowych, gdzie podstawowym błędem jest brak znajomości konwersji między tymi systemami liczbowymi. Wartości szesnastkowe trzeba zamieniać na dziesiętne, aby prawidłowo interpretować kolory. W przypadku rgb(255, 0, 128), wartość niebieska została błędnie określona jako 128, co jest znacznie niższe niż 224, co prowadzi do błędnej interpretacji koloru. Używanie błędnych wartości w definicji kolorów może skutkować niezgodnością wizualną w projektach graficznych i webowych.

Pytanie 5

W języku SQL podczas używania polecenia CREATE TABLE atrybut, który wskazuje na to, która kolumna jest kluczem podstawowym, to

A. GŁÓWNY KLUCZ
B. UNIQUE
C. PRIMARY KEY
D. IDENTITY FIELD
Odpowiedź "PRIMARY KEY" jest prawidłowa, ponieważ w języku SQL klucz podstawowy (ang. primary key) to unikalny identyfikator dla każdego rekordu w tabeli. Klucz podstawowy zapewnia, że żadne dwa rekordy nie mają tej samej wartości w kolumnie, co jest kluczowe dla integralności danych. Zwyczajowo klucz podstawowy definiuje się podczas tworzenia tabeli za pomocą polecenia CREATE TABLE, co zwiększa wydajność operacji wyszukiwania oraz modyfikacji danych. Przykład wykorzystania: tworząc tabelę pracowników, można zdefiniować kolumnę "id_pracownika" jako klucz podstawowy, co zapewni, że każdy pracownik będzie miał unikalny identyfikator. W standardach SQL zgodnych z ANSI, klucz podstawowy może składać się z jednej lub więcej kolumn, co pozwala na tworzenie bardziej skomplikowanych struktur danych. Dobrą praktyką jest również oznaczanie klucza podstawowego jako NOT NULL, co uniemożliwia wprowadzenie pustych wartości, co dodatkowo zwiększa integralność bazy danych.

Pytanie 6

Podane zapytanie SQL przyznaje użytkownikowi adam@localhost uprawnienia:

GRANT SELECT, INSERT, UPDATE, DELETE
ON klienci TO adam@localhost
A. do manipulowania danymi bazy danych klienci
B. do zarządzania strukturą tabeli klienci
C. do zarządzania strukturą bazy danych klienci
D. do manipulowania danymi w tabeli klienci
Pozostałe opcje wskazują na zarządzanie strukturą bazy danych lub tabeli co w kontekście podanego polecenia SQL nie jest prawidłowe Zarządzanie strukturą bazy danych odnosi się do operacji takich jak tworzenie usuwanie lub modyfikowanie tabel indeksów i innych obiektów bazy danych Przykłady takich operacji to polecenia CREATE ALTER i DROP które zmieniają definicję strukturalną tabel lub innych obiektów bazodanowych W przypadku zarządzania strukturą tabeli moglibyśmy mówić o dodawaniu nowych kolumn zmienianiu typu danych istniejących kolumn czy zmianach w kluczach indeksach Tego typu zmiany nie są objęte poleceniem GRANT SELECT INSERT UPDATE DELETE które koncentruje się wyłącznie na manipulacji danymi w istniejącej strukturze Dlatego też typowym błędem myślowym jest utożsamianie operacji na danych z operacjami modyfikującymi strukturę bazy danych takimi jak dodawanie tabel czy kolumn Operatorzy SQL są precyzyjnie zdefiniowani i rozdzieleni na kategorie manipulacji danymi DML oraz definicji danych DDL co jest kluczowym rozróżnieniem w pracy z bazami danych

Pytanie 7

W zamieszczonym przykładzie pseudoklasa hover sprawi, że styl pogrubiony będzie przypisany

a:hover { font-weight: bold; }
A. odnośnikowi, w momencie kiedy najechał na niego kursor myszy.
B. wszystkim odnośnikom odwiedzonym.
C. każdemu odnośnikowi niezależnie od aktualnego stanu.
D. wszystkim odnośnikom nieodwiedzonym.
Wybrane przez Ciebie odpowiedzi sugerują, że nie do końca rozumiesz działanie pseudoklas w CSS. Pseudoklasa :hover jest stosowana do elementów, na które najechał kursor myszy, a nie do wszystkich odnośników niezależnie od ich stanu. Przypisanie stylu do 'wszystkich odnośników odwiedzonych' lub 'wszystkich odnośników nieodwiedzonych' wymagałoby użycia pseudoklas :visited i :link. Pseudoklasy te służą do stylizacji odnośników w zależności od tego, czy użytkownik już na nie kiedyś kliknął, czy nie. Ważne jest zrozumienie, że różne pseudoklasy służą do stylizacji elementów w różnych stanach i kontekstach. W praktyce, zastosowanie niewłaściwej pseudoklasy może prowadzić do nieoczekiwanych wyników i błędów w działaniu strony. Dlatego zawsze warto dokładnie zrozumieć, jakie efekty przynosi użycie danej pseudoklasy.

Pytanie 8

Skrypt w języku JavaScript, który zajmuje się płacami pracowników, ma na celu stworzenie raportu dla osób zatrudnionych na umowę o pracę, które otrzymują wynagrodzenie w przedziale 4000 do 4500 zł, w tym przedziale obustronnie domkniętym. Jakie jest kryterium do wygenerowania raportu?

A. umowa == 'praca' || (pensja >= 4000 && pensja <= 4500)
B. umowa == 'praca' && (pensja >= 4000 || pensja <= 4500)
C. umowa == 'praca' && (pensja >= 4000 && pensja <= 4500)
D. umowa == 'praca' || (pensja >= 4000 || pensja <= 4500)
Odpowiedź, którą wybrałeś, to umowa == 'praca' && (pensja >= 4000 && pensja <= 4500). To jest faktycznie odpowiednia opcja, bo spełnia warunki do wygenerowania raportu. To ważne, żeby oba warunki były spełnione – pracownik musi mieć umowę o pracę i pensja powinna być w zakresie od 4000 do 4500 zł. Na przykład, jeśli ktoś zarabia 4200 zł, to wtedy wszystko gra i raport się pojawi. W programowaniu używanie operatorów logicznych, takich jak '&&', jest kluczowe, bo pozwalają one precyzyjnie ustalić kryteria. Dobrze zrozumiane operatory '&&' i '||' pomagają unikać niejasności i błędów w logice, a to jest podstawa dobrego pisania kodu.

Pytanie 9

W przedstawionym filmie, aby połączyć tekst i wielokąt w jeden obiekt tak, aby operacja ta była odwracalna zastosowano funkcję

A. wykluczenia.
B. grupowania.
C. sumy.
D. części wspólnej.
Prawidłowo – w filmie została użyta funkcja grupowania. W grafice wektorowej, np. w programach typu Inkscape, CorelDRAW czy Illustrator, grupowanie służy właśnie do logicznego połączenia kilku obiektów w jeden „zestaw”, ale bez trwałego mieszania ich geometrii. To znaczy: tekst dalej pozostaje tekstem, wielokąt dalej jest wielokątem, tylko są traktowane jak jeden obiekt przy przesuwaniu, skalowaniu czy obracaniu. Dzięki temu operacja jest w pełni odwracalna – w każdej chwili możesz rozgrupować elementy i edytować każdy osobno. Moim zdaniem to jest podstawowa dobra praktyka w pracy z projektami, które mogą wymagać późniejszych poprawek: podpisy, etykiety, logotypy, schematy techniczne. Jeśli połączysz tekst z kształtem za pomocą operacji boolowskich (suma, część wspólna, wykluczenie), to tekst zwykle zamienia się na krzywe, przestaje być edytowalny jako tekst. To bywa potrzebne przy przygotowaniu do druku czy eksportu do formatu, który nie obsługuje fontów, ale nie wtedy, gdy zależy nam na łatwej edycji. Z mojego doświadczenia: przy projektowaniu interfejsów, ikon, prostych banerów na WWW czy grafik do multimediów, najrozsądniej jest najpierw grupować logicznie elementy (np. ikona + podpis), a dopiero na samym końcu, gdy projekt jest ostateczny, ewentualnie zamieniać tekst na krzywe. Grupowanie pozwala też szybko zaznaczać całe moduły projektu, wyrównywać je względem siebie, duplikować całe zestawy (np. kafelki menu, przyciski z opisami) bez ryzyka, że coś się rozjedzie. W grafice komputerowej to taka podstawowa „organizacja pracy” – mniej destrukcyjna niż różne operacje na kształtach i zdecydowanie bardziej elastyczna przy późniejszych zmianach.

Pytanie 10

Przedstawiono fragment kodu HTML, który nie waliduje się poprawnie. Błąd walidacji tego fragmentu kodu będzie 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. niedomknięcia znacznika <span class="code-text">br</span>
B. niedomknięcia znacznika <span class="code-text">img</span>
C. braku cudzysłowu
D. powtórzenia nazwy pliku graficznego
Fragment kodu HTML zawiera istotny błąd, który polega na braku cudzysłowu w atrybucie 'src' znacznika 'img'. Poprawna składnia wymaga, aby wszystkie wartości atrybutów były otoczone cudzysłowami, zarówno pojedynczymi, jak i podwójnymi. W tym przypadku występuje problem w linii, gdzie atrybut 'src' ma przypisaną wartość '/obraz.gif', ale brakuje zamykającego cudzysłowu, co powoduje, że przeglądarka może niepoprawnie interpretować ten fragment kodu. Aby poprawić kod, należy dodać cudzysłów, co zapewni zgodność z normami HTML, takimi jak W3C. Przykładowo, poprawny zapis powinien wyglądać następująco: <img src="/obraz.gif" alt="Obrazek">. Walidacja kodu HTML jest kluczowa, ponieważ umożliwia uniknięcie problemów z wyświetlaniem strony oraz zapewnia lepszą dostępność treści dla użytkowników oraz robotów wyszukiwarek. Użycie odpowiednich znaczników oraz poprawna składnia sprzyja również lepszym wynikom SEO, co jest istotne w kontekście widoczności w Internecie.

Pytanie 11

W tabeli produkt znajdują się przedmioty wyprodukowane po roku 2000, z kolumnami nazwa i rok_produkcji. Klauzula SQL pokaże listę przedmiotów wyprodukowanych

SELECT * FROM `produkt` WHERE SUBSTR(rok_produkcji,3,2)=17;
A. przed rokiem 2017
B. w roku 2017
C. po roku 2017
D. w latach innych niż 2017
Wybranie odpowiedzi, że przedmioty zostały wyprodukowane po roku 2017 jest niewłaściwe, ponieważ funkcja SUBSTR użyta w zapytaniu SQL jednoznacznie identyfikuje tylko przedmioty wyprodukowane w roku 2017. Użycie wartości '17' jako kryterium wyszukiwania nie pozwala na objęcie przedmiotów wyprodukowanych w późniejszych latach, jak 2018 czy 2019. Podobnie, odpowiedzi sugerujące, że przedmioty są wyprodukowane w latach innych niż 2017 lub przed rokiem 2017, są błędne z tych samych powodów. W kontekście SQL, ważne jest zrozumienie, jak funkcje manipulacji łańcuchami wpływają na wyniki zapytań. Typowym błędem jest zakładanie, że wynik z SUBSTR będzie obejmował więcej niż jedną wartość, co wprowadza w błąd i prowadzi do niepoprawnych wniosków. Zamiast tego, analiza danych powinna opierać się na jasnym zrozumieniu struktury danych i tego, jak operacje na nich wpływają na wyniki. Zawsze warto testować zapytania na próbkach danych, aby upewnić się, że wyniki są zgodne z oczekiwaniami oraz stosować dobre praktyki w zakresie formatowania danych. To pozwala uniknąć błędów podczas przetwarzania informacji.

Pytanie 12

Jakiego znacznika używamy do definiowania list w HTML?

A. <th>
B. <tr>
C. <ul>
D. <td>
Zarówno <tr>, <th>, jak i <td> są znacznikami używanymi w kontekście tabel HTML, co wyraźnie różni je od znaczników definiujących listy, takich jak <ul>. Znacznik <tr> definiuje wiersz w tabeli, <th> oznacza nagłówek kolumny, a <td> reprezentuje pojedynczą komórkę tabeli. Użycie tych znaczników w kontekście list jest błędne, ponieważ sugeruje, że struktura tabeli jest odpowiednia do organizacji danych, które powinny być przedstawione w formie listy. Takie myślenie może wynikać z braku zrozumienia, że listy i tabele mają różne cele w HTML. Listy są przeznaczone do prezentowania zbiorów danych, które nie wymagają struktury tabelarycznej, podczas gdy tabele są wykorzystywane do prezentacji danych, które mają relacje między sobą, jak w przypadku statystyk czy porównań. Zamiast korzystać z tabeli tam, gdzie wystarczy lista, możemy stworzyć nieczytelne i nieestetyczne układy, a także wprowadzić użytkowników w błąd co do intencji prezentacji danych. Kluczowe jest zrozumienie, kiedy stosować odpowiednie znaczniki, co jest nie tylko kwestią estetyki, ale także znaczenia semantycznego w kontekście SEO oraz dostępności. Dlatego ważne jest, aby przy projektowaniu układów HTML korzystać z właściwych znaczników, by ułatwić interpretację treści zarówno użytkownikom, jak i algorytmom przetwarzającym te informacje.

Pytanie 13

Poziom izolacji transakcji Repeatable Read (tryb powtarzalnego odczytu) używany przez MS SQL jest związany z problemem

A. niepowtarzalnych odczytów
B. utraty aktualizacji
C. odczytów widm
D. brudnych odczytów
Wybór odpowiedzi 'niepowtarzalnych odczytów', 'brudnych odczytów' lub 'utraty aktualizacji' wskazuje na brak zrozumienia, jak działają różne poziomy izolacji transakcji w kontekście baz danych. Odczyty niepowtarzalne polegają na tym, że transakcja może odczytać różne wartości w kolejnych odczytach tego samego wiersza, co jest problemem rozwiązywanym przez poziom Repeatable Read. Oznacza to, że dane odczytane w jednym kroku transakcji pozostają spójne do końca tej transakcji, a zatem nie są one narażone na zmiany poprzez inne transakcje w tym samym czasie. Brudne odczyty występują, gdy jedna transakcja odczytuje dane zapisane przez inną, jeszcze niezakończoną transakcję, co jest problemem z kolei eliminowanym przez poziomy izolacji takie jak Read Committed. Utrata aktualizacji to inny problem, który polega na tym, że dwie transakcje odczytują tę samą wartość i zapisują zmodyfikowane wartości, przy czym ostatnia zapisuje nadpisując wcześniejszą, co także nie jest bezpośrednim problemem w kontekście Repeatable Read. W praktyce, zrozumienie różnicy między tymi problemami jest kluczowe dla zapewnienia spójności transakcji. Warto zatem studiować dokumentację i standardy, aby właściwie dobierać poziomy izolacji w zależności od wymagań konkretnej aplikacji.

Pytanie 14

W SQL uprawnienie SELECT przydzielone za pomocą polecenia GRANT umożliwia użytkownikowi bazy danych

A. usuwanie danych z tabeli
B. generowanie tabeli
C. zmienianie danych w tabeli
D. uzyskiwanie danych z tabeli
Wybór odpowiedzi sugerujących modyfikowanie danych, tworzenie tabeli czy usuwanie danych z tabeli wskazuje na niepełne zrozumienie podstawowych przywilejów w SQL. Przywilej SELECT jest ściśle związany z dostępem do danych, co oznacza, że jego rola ogranicza się do umożliwienia użytkownikowi odczytu informacji, a nie ich modyfikowania. Modyfikowanie danych w tabeli zarezerwowane jest dla przywileju UPDATE, który pozwala na zmianę istniejących danych. Tworzenie tabeli wiąże się z przywilejem CREATE, który z kolei umożliwia użytkownikom dodawanie nowych struktur danych do bazy. Z kolei usunięcie danych z tabeli realizowane jest przez przywilej DELETE, pozwalający na eliminowanie zapisów z bazy. Te różnice są fundamentalne dla zrozumienia zarządzania dostępem w systemach baz danych. Typowe błędy w myśleniu o uprawnieniach mogą prowadzić do nieprawidłowego zarządzania danymi i naruszeń bezpieczeństwa. Użytkownicy muszą mieć jasną świadomość, że każdy przywilej w SQL ma swoje specyficzne zastosowanie, a nieprawidłowe przypisanie uprawnień może prowadzić do nieautoryzowanego dostępu lub utraty danych. Właściwe zrozumienie hierarchii i ról przywilejów jest kluczowe dla efektywnego i bezpiecznego zarządzania bazami danych.

Pytanie 15

W języku SQL do grupy operacji DCL (ang. Data Control Language) należą polecenia:

A. CREATE i DROP
B. GRANT i REVOKE
C. SELECT i INSERT
D. DELETE i UPDATE
W SQL rozróżnienie między DDL, DML i DCL jest kluczowe, bo każdy z tych zestawów poleceń odpowiada za inny obszar pracy z bazą danych. Wiele osób intuicyjnie wrzuca wszystkie komendy „do jednego worka”, a potem trudno jest im zrozumieć, gdzie kończy się manipulacja danymi, a zaczyna zarządzanie uprawnieniami. Data Control Language, czyli DCL, to bardzo wąska, ale ważna grupa poleceń, służąca wyłącznie do kontroli dostępu. W standardowym SQL do DCL zaliczamy praktycznie tylko GRANT i REVOKE. Odpowiedzi typu CREATE i DROP są kuszące, bo też brzmią „administracyjnie”, ale to już inna kategoria – DDL (Data Definition Language). CREATE, ALTER, DROP czy TRUNCATE służą do definiowania i modyfikowania struktury bazy: tworzą tabele, widoki, indeksy, usuwają obiekty. One nie zarządzają prawami użytkowników, tylko tym, jakie obiekty w ogóle istnieją. To, że często wykonuje je administrator, nie znaczy jeszcze, że należą do DCL. Z kolei SELECT, INSERT, UPDATE, DELETE to klasyczne DML (Data Manipulation Language). Te polecenia działają na rekordach: odczytują dane, dodają nowe wiersze, modyfikują istniejące, usuwają je. Typowy błąd myślowy polega na tym, że ktoś myśli: skoro DELETE usuwa dane, to trochę jak „kontrola”, więc może DCL. Niestety nie – DELETE w ogóle nie dotyka uprawnień, ono po prostu kasuje rekordy, o ile użytkownik już ma odpowiednie prawa. Dopiero DCL decyduje, czy użytkownik może wykonać DELETE na danej tabeli. To subtelne, ale bardzo ważne rozróżnienie. Moim zdaniem warto zapamiętać prosty schemat: DDL – struktura, DML – dane, DCL – uprawnienia. Wtedy łatwiej od razu skojarzyć, że tylko GRANT i REVOKE pasują do kategorii Data Control Language, a reszta odpowiedzi dotyczy zupełnie innych warstw pracy z bazą.

Pytanie 16

W CSS, poniższy zapis spowoduje, że czerwony kolor zostanie zastosowany do

h1::first-letter {color:red;}
A. pierwsza litera nagłówka drugiego poziomu
B. pierwsza linia akapitu
C. tekst nagłówka pierwszego poziomu
D. pierwsza litera nagłówka pierwszego poziomu
Jak chcesz zmienić kolor pierwszej litery, to musisz wiedzieć, jak działają selektory CSS. Używając h1::first-letter, właściwie zaznaczasz, że chcesz zmienić tylko tę pierwszą literę nagłówka, co w sumie jest dobrym sposobem. Ale mogą się pojawić błędy, jeśli źle zrozumiesz, jak działają pseudoelementy w CSS. Na przykład, nie możesz myśleć, że ::first-letter zmieni całą linię tekstu, bo on tylko dotyczy tej pierwszej litery. Podobnie, nie da się zmienić całego nagłówka z użyciem tego selektora - on działa tylko na pojedynczej literze. Dużo osób myli też ::first-letter z ::first-line, bo ten drugi to coś innego i dotyczy całej pierwszej linii akapitu. Rozumienie tych różnic jest mega ważne, żeby tworzyć estetyczne i dobrze działające style. Prawidłowe użycie selektorów CSS to podstawa, żeby strony były czytelne i działały na różnych urządzeniach. Jak będziesz świadomie kodować, to unikniesz wielu typowych błędów.

Pytanie 17

Która z definicji funkcji w języku C++ przyjmuje parametr typu zmiennoprzecinkowego i zwraca wartość typu całkowitego?

A. void fun1(int a)
B. int fun1(float a)
C. float fun1(int a)
D. float fun1(void a)
Każda z błędnych odpowiedzi ilustruje typowe nieporozumienia związane z deklaracją funkcji w języku C++. Odpowiedź 'void fun1(int a);' nie spełnia wymogów, ponieważ zwraca typ 'void', co oznacza, że funkcja nie zwraca żadnej wartości. To podejście jest właściwe, gdy chcemy wykonać operacje, które nie wymagają zwracania wyniku, ale nie odpowiada na pytanie dotyczące zwracania wartości całkowitej. W przypadku 'float fun1(int a);', chociaż funkcja poprawnie przyjmuje argument całkowity, zwraca typ 'float', co jest sprzeczne z wymaganiem zwrotu wartości całkowitej. Kolejna odpowiedź 'float fun1(void a);' zawiera syntaktyczny błąd, ponieważ typ 'void' nie może być użyty jako typ parametru, co prowadzi do błędów kompilacji. W języku C++ każdy parametr musi mieć określony typ, a użycie 'void' jako typu parametru jest niepoprawne. Te nieprawidłowe odpowiedzi wskazują na brak zrozumienia podstawowych zasad typowania w C++, co jest kluczowe w kontekście projektowania funkcji. Istotne jest, aby przy tworzeniu funkcji dobrze zrozumieć, jakie typy danych są akceptowane i jakie wartości są oczekiwane jako wynik, aby uniknąć błędów w logice programu oraz poprawić jego wydajność i czytelność.

Pytanie 18

Kiedy dane z formularza są przesyłane w sposób jawny jako parametry w adresie URL, w skrypcie PHP można je odczytać za pomocą tablicy

A. $_COOKIE
B. $_GET
C. $_POST
D. $_SESSION
Odpowiedzi 2, 3 i 4 są niepoprawne w kontekście przesyłania danych przez adres URL. Odpowiedź 2, odnosząca się do tablicy $_POST, jest używana do odbierania danych przesyłanych z formularzy za pomocą metody POST. W przeciwieństwie do GET, POST nie ujawnia danych w adresie URL, co czyni go bardziej odpowiednim dla przesyłania wrażliwych informacji, takich jak hasła. Użytkownicy często mylą te dwie metody, co może prowadzić do nieprawidłowego stosowania metod w sytuacjach, które powinny być odpowiednio zabezpieczone. Odpowiedzi 3 i 4 odnoszą się do tablic $_COOKIE i $_SESSION, które służą do zarządzania danymi sesji i przechowywania danych na urządzeniu klienta. $_COOKIE jest używane do przechowywania małych ilości danych na komputerze użytkownika, które mogą być wykorzystane w kolejnych wizytach, natomiast $_SESSION przechowuje dane sesyjne po stronie serwera, umożliwiając śledzenie stanu użytkownika podczas przeglądania aplikacji. Pomimo, że wszystkie te tablice są ważnymi narzędziami w PHP, żadna z nich nie jest odpowiednia w kontekście przesyłania danych przez URL, co jest kluczowe dla zrozumienia różnic między metodami przesyłania danych i ich bezpieczeństwem.

Pytanie 19

var obj1 = {     czescUlamkowa: 10,     czescCalkowita: 20,     oblicz: function) {...} } Kod przedstawiony powyżej jest zapisany w języku JavaScript. W podanej definicji obiektu, metodą jest element o nazwie

A. czescUlamkowa
B. oblicz
C. czescCalkowita
D. obj1
Zrozumienie, dlaczego obj1 i jego właściwości czescUlamkowa oraz czescCalkowita nie są metodami, to kluczowy element nauki programowania w JavaScript. Obiekt obj1 to jakby instancja, która przechowuje dane, ale nie jest funkcją ani metodą. Generalnie, obiekt to struktura z różnymi właściwościami i metodami, ale sama z siebie nie robi nic. CzescUlamkowa i czescCalkowita to tylko właściwości z wartościami liczbowymi, ale nie mają w sobie żadnej logiki wykonawczej. Więc mylenie ich z metodami jest po prostu błędne, bo nie mają przypisanych funkcji ani nie są zdefiniowane jako funkcje w kontekście tego obiektu. Żeby właściwości stały się metodami, musiałyby być zdefiniowane jako funkcje, jak ta nasza oblicz. Metoda oblicz to przykład funkcji związanej z obiektem, a nie tylko przechowującej dane. Dlatego całość obj1 i jego właściwości czescUlamkowa oraz czescCalkowita nie mogą być uznawane za metody. Ważne jest, żeby to zrozumieć, bo to wpływa na to, jak zarządza się danymi w aplikacjach JavaScript.

Pytanie 20

Jaką wartość zwróci funkcja napisana w języku C++, gdy jej argumentami są a = 4 i b = 3?

long int fun1(int a, int b) {
    long int wynik = 1;
    for (int i = 0; i < b; i++)
        wynik *= a;
    return wynik;
}
A. 12
B. 64
C. 1
D. 16
Wartości, które nie są prawidłowymi odpowiedziami, mogą wynikać z błędnych interpretacji działania funkcji. Na przykład, odpowiedź wskazująca na 1 sugeruje, że wynik funkcji zacząłby się od wartości zerowej, co jest nieprawidłowe, ponieważ każda potęga liczby wynosi co najmniej 1, o ile podstawą jest liczba różna od zera. Pomocne w zrozumieniu tego jest zapoznanie się z regułą mnożenia, która mówi, że każda liczba podniesiona do zera wynosi 1, ale w tym przypadku mamy do czynienia z dodatnimi argumentami. Z kolei odpowiedzi 12 i 16 mogą wynikać z błędnego zrozumienia liczby mnożenia, gdzie użytkownik mógłby przekonwertować działanie funkcji na inne operacje, takie jak dodawanie lub mnożenie bez zrozumienia, że przykład ilustruje potęgowanie. Tego typu błędy myślowe często prowadzą do mylnego rozumienia algorytmów, w których istotne jest, aby śledzić, co dzieje się z każdą iteracją pętli. Zrozumienie zasady działania pętli i ich zastosowania w kontekście potęgowania jest kluczem do poprawnego rozwiązywania zadań programistycznych. Dlatego ważne jest, aby dokładnie analizować działanie kodu i stosować dobrych praktyk, takich jak testowanie poszczególnych części kodu, aby upewnić się, że rozumiemy, co się dzieje w każdej iteracji.

Pytanie 21

W ramce przedstawiono kod JavaScript z błędem logicznym. Program powinien wypisywać informację, czy liczby są sobie równe, czy nie, lecz nie wykonuje tego. Wskaż odpowiedź, która dotyczy błędu.

var x=5;
var y=3;
if(x=y) document.getElementById("demo").innerHTML='zmienne są równe';
else    document.getElementById("demo").innerHTML='zmienne się różnią';
A. W klauzuli if użyto przypisania zamiast porównania
B. Zmienne zostały zadeklarowane w niewłaściwy sposób
C. Zawartość sekcji if oraz else powinna być zamieniona miejscami
D. Brak średnika przed klauzulą else
W analizowanym kodzie JavaScript występuje błąd związany z użyciem operatora przypisania zamiast operatora porównania w klauzuli if. W języku JavaScript do porównania dwóch wartości używa się operatora '===' lub '=='. Operator '=' to operator przypisania, który przypisuje wartość z prawej strony do zmiennej po lewej stronie. W kontekście warunków if, należy użyć operatora porównania, aby ocenić, czy dwie zmienne są równe. W poprawnej wersji kodu, linia if x = y powinna być zmieniona na if (x === y). Dodatkowo, warto pamiętać o umieszczeniu wartości porównawanych w nawiasach, co zwiększa czytelność i poprawność kodu. Przykład prawidłowego kodu to: var x = 5; var y = 3; if (x === y) { document.getElementById('demo').innerHTML = 'zmienne są równe'; } else { document.getElementById('demo').innerHTML = 'zmienne się różnią'; }. Taki zapis zapewnia, że program poprawnie zidentyfikuje różnicę między zmiennymi x i y i odpowiednio wyświetli komunikat.

Pytanie 22

Jaki typ komunikatu jest zawsze przesyłany wyłącznie w kierunku w dół, to jest od kierownika do pracownika?

A. Powierzenie zadania.
B. Poszukiwanie rozwiązań.
C. Uwagi dotyczące polityki organizacji.
D. Zgłaszanie.
W przypadku raportowania, komunikacja ta jest często obustronna, co oznacza, że może zachodzić nie tylko w dół, ale również w górę - pracownicy raportują swoje wyniki i postępy do przełożonych, co może prowadzić do interakcji i wymiany informacji. Poszukiwanie rozwiązań z kolei jest procesem bardziej współpracy, który angażuje zarówno przełożonych, jak i podwładnych w poszukiwanie najlepszych sposobów działania. Taki sposób komunikacji oparty jest na wymianie pomysłów oraz twórczym myśleniu, co nie jest ograniczone tylko do jednego kierunku. Uwagi o polityce organizacji również mogą być przekazywane w różny sposób - mogą to być zarówno polecenia z góry, jak i sugestie z dołu, co pozwala na bardziej demokratyczne podejście do zarządzania. Typowe błędy myślowe prowadzące do takich niepoprawnych wniosków często opierają się na założeniu, że wszystkie komunikaty mają jednolitą naturę. W rzeczywistości, skuteczna komunikacja w organizacji wymaga uwzględnienia kontekstu, celu oraz odbiorcy. Dlatego zrozumienie różnorodności komunikatów i sposobów ich przekazywania jest kluczowe dla skutecznego zarządzania i efektywnej współpracy w zespole.

Pytanie 23

Aby skutecznie zrealizować algorytm wyznaczający największą z trzech podanych liczb a, b oraz c, wystarczy użyć

A. pięciu zmiennych
B. dwóch tablic
C. jednej pętli
D. dwóch warunków
Wybór innej odpowiedzi na to pytanie może wynikać z nieporozumienia dotyczącego efektywności algorytmów i ich implementacji. Odpowiedź sugerująca jedną pętlę wydaje się atrakcyjna, ale w rzeczywistości, aby znaleźć największą liczbę spośród trzech, nie potrzebujemy iteracji, gdyż liczby można porównać bez konieczności przeszukiwania. Dwie tablice są również zbędne, ponieważ do przechowywania liczb nie potrzebujemy dodatkowych struktur, skoro możemy operować na trzech zmiennych. Sugerowanie pięciu zmiennych jest jeszcze bardziej nieefektywne, ponieważ nie wymaga to dodatkowych miejsc w pamięci, a wręcz komplikowałoby algorytm bez potrzeby. Kluczowym błędem jest założenie, że skomplikowanie algorytmu wiąże się z jego efektywnością. W praktyce, prostota algorytmów często przekłada się na ich wydajność w rzeczywistych zastosowaniach. Użycie zbyt wielu zmiennych lub pętli może prowadzić do zwiększenia złożoności kodu, co obniża jego czytelność i utrudnia przyszłe utrzymanie. W kontekście dobrych praktyk programistycznych, należy zawsze dążyć do jak najprostszych rozwiązań, które wykonują zdefiniowane zadanie efektywnie, co w tym przypadku osiągamy za pomocą dwóch warunków.

Pytanie 24

W dokumentacji CMS WordPress znajduje się zdanie:
"Enable comments for this post"
Co oznacza to zdanie?

A. Włącz formatowanie wpisu.
B. Włącz publikację wpisu.
C. Włącz edycję wpisu.
D. Włącz możliwość dodawania komentarzy do wpisu.
Formułka „Enable comments for this post” w WordPressie bywa myląca dla osób, które dopiero zaczynają przygodę z CMS-ami, ale technicznie rzecz biorąc nie ma ona żadnego związku z edycją, publikacją czy formatowaniem wpisu. To jest ustawienie dotyczące wyłącznie systemu komentarzy, czyli funkcji, która pozwala użytkownikom zostawiać swoje opinie i pytania pod danym postem. Mylenie tego z edycją treści wynika często z tego, że wszystko znajduje się w jednym panelu edycji wpisu i można odnieść wrażenie, że każdy przełącznik dotyczy samej zawartości. Edycja wpisu w WordPressie odbywa się jednak w edytorze treści (blokowym albo klasycznym), gdzie zmieniasz tytuł, akapity, zdjęcia, listy, osadzenia multimediów itd. Przełącznik komentarzy tylko decyduje, czy obok tej treści będzie działał mechanizm dyskusji. Podobnie błędne jest łączenie tego komunikatu z publikacją wpisu. Publikację kontroluje osobny przycisk „Opublikuj” lub „Zaktualizuj” oraz ustawienia statusu (szkic, oczekuje na przegląd, opublikowany). Możesz mieć wpis opublikowany, ale z wyłączonymi komentarzami, albo odwrotnie: przygotowywać szkic z już zaznaczoną opcją, że po publikacji komentarze będą dostępne. To pokazuje, że są to zupełnie różne mechanizmy. Równie mylące bywa kojarzenie tego z formatowaniem. Formatowanie to sprawy typu nagłówki H1–H6, pogrubienie, kursywa, wyrównanie tekstu, wstawianie list numerowanych, bloków cytatu czy elementów multimedialnych. Tego nie kontroluje żaden przełącznik od komentarzy, tylko sam edytor treści i ewentualnie motyw graficzny. W dobrych praktykach pracy z CMS-ami warto rozróżniać: ustawienia treści (co jest w poście), ustawienia prezentacji (jak to wygląda) i ustawienia interakcji (co użytkownik może zrobić: komentować, udostępniać, oceniać). „Enable comments for this post” należy właśnie do tej trzeciej grupy – steruje możliwością komentowania, a nie samą treścią czy jej wyglądem.

Pytanie 25

W SQL przeprowadzono zapytanie, jednak jego realizacja nie powiodła się, co skutkowało błędem: #1396 - Operation CREATE USER failed for 'anna'@'localhost'. Możliwą przyczyną takiego zachowania bazy danych może być

CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8';
A. niewystarczające hasło dla konta anna
B. błędna składnia polecenia CREATE USER
C. nieznane polecenie CREATE USER
D. istnienie użytkownika anna w bazie
Odpowiedzi sugerujące zbyt słabe hasło, nieznane polecenie, czy też nieprawidłową składnię polecenia są mylące i wskazują na brak zrozumienia podstawowych zasad działania systemów zarządzania bazą danych MySQL. Po pierwsze, hasło '54RTu8' spełnia standardowe wymagania dotyczące złożoności, które zazwyczaj obejmują minimalną długość oraz kombinację liter i cyfr, co czyni tę odpowiedź nieprawidłową. Ponadto, polecenie CREATE USER jest standardowym poleceniem w SQL, więc stwierdzenie, że jest ono 'nieznane', również nie ma podstaw. Warto zauważyć, że składnia polecenia jest poprawna i nie zawiera żadnych błędów typograficznych. Takie myślenie może prowadzić do fałszywych wniosków, co jest szczególnie problematyczne w kontekście rozwiązywania problemów. W praktyce, użytkownicy powinni nauczyć się korzystać z dokumentacji oraz narzędzi diagnostycznych, takich jak logi błędów, aby lepiej zrozumieć przyczyny problemów. Przykładem dobrej praktyki jest stosowanie komendy SHOW GRANTS, aby sprawdzić, jakich uprawnień już istniejący użytkownik może potrzebować, zanim podejmie się decyzji o jego usunięciu czy modyfikacji.

Pytanie 26

Funkcja zaprezentowana w PHP

function dzialania(int $x, float $y) {
  $z = $x + $y;
  return $z;
}
A. zwraca wynik.
B. jest zadeklarowana z dwoma parametrami rzeczywistymi.
C. przyjmuje dwa argumenty z wartością domyślną.
D. nie zwraca wyniku.
Odpowiedzi, które sugerują, iż funkcja nie zwraca wartości, są błędne, ponieważ wyraźnie widać, że zawiera instrukcję return, co świadczy o jej zdolności do zwracania wyniku. Takie nieporozumienia mogą wynikać z braku zrozumienia struktury funkcji w PHP, gdzie return jest kluczowym elementem określającym, że funkcja coś zwraca. Inna błędna odpowiedź sugeruje, że funkcja pobiera parametry z domyślną wartością. Chociaż PHP pozwala na definiowanie takich parametrów, w tym przypadku nie ma przypisanych wartości domyślnych, co oznacza, że użytkownik musi dostarczyć odpowiednie argumenty przy wywołaniu funkcji. Ponadto odpowiedź o dwóch rzeczywistych parametrach również wprowadza w błąd, gdyż typy są dokładnie określone jako int i float, co oznacza, że jeden z parametrów jest całkowity, a drugi zmiennoprzecinkowy. Takie niezrozumienie może być wynikiem braku uwagi na szczegóły podczas analizy kodu. Poprawne zrozumienie sygnatury i działania funkcji jest kluczowe dla skutecznego programowania, a błędne interpretacje mogą prowadzić do defektów w kodzie, które są trudne do zidentyfikowania i naprawy bez odpowiedniej wiedzy i doświadczenia w analizie typu danych oraz struktury funkcji w PHP. W praktyce, uniknięcie takich pomyłek wymaga dokładnej lektury kodu oraz praktyki w implementacji funkcji o różnorodnych sygnaturach w różnych kontekstach programistycznych. Dlatego tak istotne jest zrozumienie, jak funkcje operują na parametrach i jakie są ich możliwe zastosowania w projektach programistycznych.

Pytanie 27

W HTML5 semantycznym znacznikiem, który służy do określenia dwóch sekcji widocznych po prawej stronie na rysunku, zawierających wiadomości oraz aktualności, jest

Ilustracja do pytania
A. &lt;main&gt;
B. &lt;footer&gt;
C. &lt;nav&gt;
D. &lt;article&gt;
Element <article> w HTML5 został stworzony właśnie do oznaczania niezależnych, samodzielnych treści, które mają sens nawet poza kontekstem strony – czyli takich, które można zamieścić np. w RSS, podlinkować czy udostępnić osobno. W praktyce oznacza to np. pojedyncze wpisy na blogu, wiadomości, ogłoszenia czy aktualności – dokładnie tak jak w tym zadaniu. Dzięki użyciu <article>, osoby korzystające z czytników ekranowych czy wyszukiwarek łatwiej rozpoznają strukturę strony, bo semantyka jest czytelna dla maszyn. Z mojego doświadczenia, stosowanie <article> dla wiadomości i aktualności jest też zgodne z dobrą praktyką tworzenia dostępnych stron – Google nawet sugeruje, by tak wyodrębniać własne, kompletne treści. To ma ogromne znaczenie przy pozycjonowaniu (SEO), bo roboty wyszukiwarek potrafią lepiej rozumieć, co jest główną treścią strony. Dodatkowo, używanie odpowiednich znaczników semantycznych poprawia współpracę z różnymi narzędziami, które analizują układ i zawartość strony, a także ułatwia późniejszą przebudowę lub rozwój projektu. Moim zdaniem, nadanie sekcjom z wiadomościami i aktualnościami znacznika <article> to podstawa nowoczesnego kodowania stron internetowych.

Pytanie 28

W tabeli zwierzeta znajdują się kolumny nazwa, gatunek, gromada, cechy, dlugosc_zycia. Aby uzyskać listę nazw zwierząt, które dożywają przynajmniej 20 lat oraz są ssakami, jakie zapytanie należy wykonać?

A. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 AND gromada = 'ssak';
B. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20 OR gromada = 'ssak';
C. SELECT nazwa FROM zwierzeta WHERE dlugosc_zycia >= 20;
D. SELECT nazwa FROM zwierzeta WHERE gromada = 'ssak';
Zrozumienie, dlaczego pozostałe odpowiedzi są niepoprawne, wymaga analizy koncepcji związanych z używaniem operatorów w zapytaniach SQL. Pierwsza opcja, która wskazuje jedynie na gromadę ssaków, nie spełnia wymagania dotyczącego długości życia. W rezultacie, takie zapytanie może zwrócić wszystkie ssaki, niezależnie od ich długości życia, co nie odpowiada na postawione pytanie. Druga odpowiedź koncentruje się wyłącznie na długości życia zwierząt, a więc zignoruje ich przynależność do gromady, co również prowadzi do niekompletnych wyników. Z punktu widzenia standardów projektowania baz danych, takie podejście jest niewłaściwe, ponieważ nie uwzględnia wymagań wielokryterialnych. Ostatnia opcja używa operatora 'OR', co oznacza, że wystarczy, aby jedno z kryteriów było spełnione, co skutkuje zwróceniem większej liczby zwierząt, w tym tych, które są krócej żyjące i nie są ssakami. Taki sposób myślenia prowadzi do sytuacji, w której wyniki są rozmyte i nieprecyzyjne, co w praktyce może wpłynąć na jakość analiz i decyzji opartych na tych danych. Właściwe formułowanie zapytań jest kluczowe dla zapewnienia, że otrzymujemy tylko te dane, które są istotne dla naszych potrzeb i celów analitycznych.

Pytanie 29

Walidacja formularzowych pól polega na zweryfikowaniu

A. czy użytkownik jest zalogowany.
B. czy wprowadzone dane spełniają określone reguły.
C. który użytkownik wprowadził informacje.
D. czy istnieje plik PHP, który odbierze dane.
Jak przeanalizować te niepoprawne odpowiedzi, to widać, że większość z nich kompletnie nie rozumie, o co chodzi z walidacją formularzy. Na przykład, mówienie, że walidacja ma na celu sprawdzenie, czy użytkownik jest zalogowany, to nie to, o co chodzi. Walidacja jest po to, żeby upewnić się, że dane wprowadzone przez użytkownika są poprawne i można je przetwarzać. Z kolei, twierdzenie, że walidacja dotyczy właśnie tego, kto konkretnie wprowadził dane, to inna sprawa, bo to już bardziej o autoryzacji, a nie o walidacji. Co więcej, mówienie o pliku PHP, który ma odbierać dane, też jest mylące. Jasne, że plik PHP jest potrzebny, ale sam w sobie nie wpłynie na to, czy dane są poprawne. Kluczowe w walidacji jest to, żeby dane się zgadzały z określonymi zasadami, bo inaczej możemy narobić sobie kłopotów z błędami w bazach danych czy z bezpieczeństwem systemu. Ignorowanie tego może się skończyć naprawdę źle.

Pytanie 30

Na ilustracji przedstawiono związek jeden do wielu. Łączy on

Ilustracja do pytania
A. klucz podstawowy id w tabeli filmy z kluczem podstawowym id w tabeli rezyserzy
B. klucz obcy rezyserzy_id w tabeli filmy z kluczem obcym id w tabeli rezyserzy
C. klucz obcy rezyserzy_id w tabeli filmy z kluczem podstawowym id w tabeli rezyserzy
D. klucz podstawowy id w tabeli z kluczem obcym rezyserzy_id w tabeli rezyserzy
Zrozumienie relacji między tabelami w bazach danych jest kluczowe dla efektywnego projektowania systemów opartych na danych. Relacja jeden do wielu oznacza, że jeden rekord w jednej tabeli może być związany z wieloma rekordami w innej. W kontekście tego pytania, kluczowym aspektem jest zrozumienie poprawnego powiązania kluczy. Pierwsze błędne podejście zakłada, że klucz podstawowy tabeli może być bezpośrednio związany z innym kluczem podstawowym. W rzeczywistości, takie połączenie nie tworzy relacji jeden do wielu, a raczej jeden do jednego, jeśli byłoby to możliwe. Drugie podejście sugeruje powiązanie dwóch kluczy obcych, co również jest niepoprawne, gdyż klucze obce wskazują na klucze podstawowe w celu zrozumienia struktury hierarchicznej. Kolejny błąd to powiązanie klucza podstawowego z kluczem podstawowym innej tabeli, co nie odzwierciedla rzeczywistej relacji między danymi w kontekście relacji jeden do wielu. Najczęstszym błędem w myśleniu jest niezrozumienie roli kluczy obcych, które są krytyczne dla tworzenia relacji jeden do wielu, ponieważ umożliwiają one nawiązywanie połączeń między różnymi tabelami przez wskazywanie unikalnych identyfikatorów w tabelach nadrzędnych. Zrozumienie i stosowanie tych zasad jest niezbędne dla profesjonalnego projektowania baz danych i zapewnienia ich integralności i spójności danych.

Pytanie 31

Jakim słowem kluczowym można zainicjować zmienną w JavaScript?

A. variable
B. new
C. var
D. instanceof
W języku JavaScript, deklaracja zmiennej przy użyciu słowa kluczowego 'var' jest jednym z podstawowych i fundamentalnych aspektów programowania. Słowo kluczowe 'var' umożliwia tworzenie zmiennych, które mogą przechowywać wartości zarówno typu prymitywnego, jak i obiektowego. Wartością dodaną użycia 'var' jest to, że zmienne zadeklarowane w ten sposób mają zasięg funkcji, co oznacza, że są dostępne w obrębie funkcji, w której zostały zadeklarowane, jak również w zasięgu globalnym, jeśli zostały zdefiniowane poza funkcją. Przykład użycia 'var': var liczba = 10; zmienna 'liczba' jest teraz dostępna w obrębie całej funkcji. Warto również zauważyć, że w nowszych standardach JavaScript, takich jak ECMAScript 6, wprowadzono dodatkowe słowa kluczowe takie jak 'let' i 'const', które oferują bardziej precyzyjny zasięg blokowy i zwiększają bezpieczeństwo kodu. 'Var' pozostaje jednak ważnym elementem do zrozumienia dla każdego programisty JavaScript, ponieważ jest fundamentem, na którym opiera się wiele starszych i nadal używanych skryptów.

Pytanie 32

Jak nazywa się sposób udostępniania bazy danych w Microsoft Access, który obejmuje wszystkie obiekty bazy znajdujące się na dysku sieciowym i używane jednocześnie przez różne osoby?

A. folderu sieciowego
B. serwera bazy danych
C. witryny programu SharePoint
D. dzielonej bazy danych
Folder sieciowy to metoda udostępniania bazy danych w Microsoft Access, która umożliwia kilku użytkownikom jednoczesny dostęp do tej samej bazy danych umieszczonej na dysku sieciowym. Taka forma udostępniania jest bardzo praktyczna w środowiskach współpracy, gdzie wiele osób musi korzystać z tych samych danych. Użytkownicy mogą otwierać, edytować i zapisywać obiekty bazy danych, co zwiększa efektywność pracy zespołowej. Kluczowe jest, aby folder sieciowy był odpowiednio skonfigurowany z uprawnieniami dostępu, co zapewnia zarówno współdzielenie zasobów, jak i bezpieczeństwo danych. Dobrą praktyką jest także regularne tworzenie kopii zapasowych bazy danych oraz zarządzanie wersjami, co pozwala na minimalizację ryzyka utraty danych. W kontekście standardów branżowych, korzystanie z udostępnionych folderów sieciowych powinno być zgodne z polityką bezpieczeństwa organizacji oraz zasadami zarządzania danymi.

Pytanie 33

Testy związane ze skalowalnością aplikacji mają na celu zweryfikowanie, czy program

A. jest w stanie funkcjonować przy zaplanowanym i większym obciążeniu
B. jest właściwie opisany w dokumentacji
C. jest chroniony przed nieautoryzowanymi działaniami, np. dzieleniem przez zero
D. posiada odpowiednie funkcje
Odpowiedź mówiąca o tym, że aplikacja potrafi działać przy zakładanym i większym obciążeniu, jest kluczowa, gdyż skalowalność oprogramowania odnosi się do zdolności systemu do efektywnego działania w warunkach wzrastającego zapotrzebowania na zasoby. Oznacza to, że aplikacja powinna być w stanie obsługiwać rosnącą liczbę użytkowników, transakcji lub innych operacji bez degradacji wydajności. Przykładem może być system e-commerce, który w okresie wyprzedaży musi obsługiwać znacznie więcej użytkowników niż w normalnych okolicznościach. Aby zapewnić skalowalność, programiści mogą wykorzystywać różne architektury, takie jak mikroserwisy, które pozwalają na niezależne skalowanie poszczególnych komponentów aplikacji. Dobre praktyki obejmują również wykorzystanie chmurowych rozwiązań, takich jak AWS czy Azure, które oferują elastyczność i automatyczne skalowanie w odpowiedzi na wzrost obciążenia. Warto także wdrażać mechanizmy monitorowania i optymalizacji wydajności, aby na bieżąco dostosowywać zasoby do potrzeb użytkowników.

Pytanie 34

Jakie polecenie SQL zmieni w tabeli tab wartość w kolumnie kol z Ania na Zosia?

A. ALTER TABLE tab CHANGE kol = 'Ania' kol = 'Zosia'
B. ALTER TABLE tab CHANGE kol = 'Zosia' kol = 'Ania'
C. UPDATE tab SET kol = 'Ania' WHERE kol = 'Zosia'
D. UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania'
Polecenie SQL UPDATE tab SET kol = 'Zosia' WHERE kol = 'Ania' jest poprawne, ponieważ używa ono właściwej składni do aktualizacji wartości w istniejącej tabeli. W tym przypadku komenda ta zmienia wszystkie wystąpienia wartości 'Ania' w kolumnie 'kol' na 'Zosia'. Jest to klasyczna operacja aktualizacji, która jest szeroko stosowana w zarządzaniu bazami danych. Przykładowo, jeśli w tabeli 'tab' znajdują się rekordy przedstawiające użytkowników, a potrzebujemy zmienić imię 'Ania' na 'Zosia', to powyższa komenda wykona tę operację poprawnie. Zgodnie z zasadami dobrych praktyk, warto również przed dokonaniem aktualizacji wykonać zapytanie SELECT, aby upewnić się, jakie rekordy zostaną zmienione. Dodatkowo, do zminimalizowania ryzyka wystąpienia niezamierzonych zmian, warto przeprowadzić tę operację w kontekście transakcji, aby móc cofnąć zmiany w razie potrzeby, co jest szczególnie istotne w przypadku krytycznych danych.

Pytanie 35

Zdefiniowanie klucza obcego jest niezbędne do utworzenia

A. klucza podstawowego.
B. relacji 1..n.
C. transakcji.
D. relacji 1..1.
Poprawnie – klucz obcy definiujemy właśnie po to, żeby utworzyć i wymusić relację między tabelami, najczęściej relację 1..n. W praktyce wygląda to tak, że w tabeli „dziecko” (np. ZAMOWIENIA) umieszczamy kolumnę, która odwołuje się do klucza głównego w tabeli „rodzic” (np. KLIENCI). Ta kolumna jest właśnie kluczem obcym. Dzięki temu każde zamówienie musi być powiązane z istniejącym klientem. To jest klasyczny przykład relacji 1 klient – wiele zamówień (1..n). Moim zdaniem to jest jeden z fundamentów relacyjnych baz danych: klucze obce pilnują integralności referencyjnej. Silnik bazy (MySQL, PostgreSQL, SQL Server itd.) sprawdza, czy wartość w kolumnie z kluczem obcym faktycznie istnieje w tabeli nadrzędnej. Jeżeli spróbujesz wstawić zamówienie z nieistniejącym id_klienta, dostaniesz błąd. To jest dokładnie to, co chcemy w dobrze zaprojektowanym systemie – brak „osieroconych” rekordów. W relacjach 1..n stosuje się standardowo schemat: tabela nadrzędna ma klucz podstawowy (PRIMARY KEY), a tabela podrzędna ma kolumnę z kluczem obcym (FOREIGN KEY), który wskazuje na ten klucz podstawowy. W SQL zapisuje się to np.: `FOREIGN KEY (id_klienta) REFERENCES klienci(id_klienta)`. Dobre praktyki mówią też, żeby na kolumnach kluczy obcych zakładać indeksy, bo to przyspiesza złączenia (JOIN) i operacje kasowania/aktualizacji. Warto też wiedzieć, że klucz obcy może być używany z dodatkowymi opcjami, np. `ON DELETE CASCADE` lub `ON UPDATE RESTRICT`, żeby automatycznie usuwać powiązane rekordy lub blokować operacje łamiące spójność danych. W realnych aplikacjach webowych (np. systemy sklepów internetowych, CRM-y, systemy magazynowe) poprawne zdefiniowanie relacji 1..n przez klucze obce to podstawa stabilności całej bazy – bez tego bardzo szybko robi się bałagan, duplikaty i niespójne dane.

Pytanie 36

Podczas wykonywania zapytania można skorzystać z klauzuli DROP COLUMN

A. ALTER TABLE
B. CREATE TABLE
C. ALTER COLUMN
D. DROP TABLE
Odpowiedź 'ALTER TABLE' jest poprawna, ponieważ klauzula DROP COLUMN jest używana w kontekście zmiany struktury tabeli w bazach danych. Polecenie ALTER TABLE pozwala na modyfikację istniejącej tabeli, w tym dodawanie, usuwanie lub modyfikowanie kolumn. Użycie klauzuli DROP COLUMN umożliwia usunięcie określonej kolumny z tabeli, co jest przydatne, gdy kolumna nie jest już potrzebna, zawiera nieaktualne dane lub w celu optymalizacji struktury bazy danych. Na przykład, jeśli mamy tabelę 'Użytkownicy' z kolumną 'wiek', której chcemy się pozbyć, możemy użyć polecenia: 'ALTER TABLE Użytkownicy DROP COLUMN wiek;'. Ważne jest, aby przed wykonaniem tej operacji upewnić się, że usunięcie kolumny nie wpłynie negatywnie na integralność danych lub logikę aplikacji. Praktyki dotyczące zarządzania bazami danych zalecają również wykonanie kopii zapasowej danych przed takimi operacjami, aby zminimalizować ryzyko utraty danych.

Pytanie 37

Zdefiniowano bazę danych z tabelą sklepy, zawierającą pola: nazwa, ulica, miasto, branża. Aby odnaleźć wszystkie nazwy sklepów spożywczych znajdujących się wyłącznie we Wrocławiu, należy użyć kwerendy:

A. SELECT nazwa FROM sklepy WHERE branza='spożywczy' AND miasto='Wrocław';
B. SELECT nazwa FROM sklepy WHERE branza='spożywczy' OR miasto='Wrocław';
C. SELECT sklepy FROM branza='spożywczy' WHERE miasto='Wrocław';
D. SELECT sklepy FROM nazwa WHERE branza='spożywczy' BETWEEN miasto='Wrocław';
Pierwsza odpowiedź nie jest właściwa, bo użycie BETWEEN w SQL po prostu nie ma sensu w tym kontekście. BETWEEN jest do określania zakresów wartości, na przykład dat, a nie do porównania różnych kolumn. No i zapytanie jest źle skonstruowane, bo nie mówi, z jakiej tabeli chcemy pobrać te dane. Druga odpowiedź też myli się w składni, bo zamienia kolejność operatorów i nie dodaje odpowiednich klauzul, co prowadzi do błędnych wyników. Na przykład, użycie branza='spożywczy' tam gdzie powinno być FROM, to wyraźny błąd. Trzecia odpowiedź korzysta z operatora OR, co jest technicznie błędne dla tego zapytania, ponieważ chcemy, żeby oba warunki były spełnione jednocześnie. W rezultacie, wszystkie te odpowiedzi są po prostu błędne i nie spełniają standardów pisania zapytań SQL.

Pytanie 38

Jaką metodę używa się w języku PHP do tworzenia komentarza obejmującego więcej niż jedną linijkę?

A. #
B. /* */
C. //
D. <!-- -->
W kontekście komentowania w języku PHP ważne jest zrozumienie, że różne metody mają swoje specyficzne zastosowania i ograniczenia. Użycie znaku '#' do komentowania nie jest właściwe w PHP, gdyż ta składnia jest typowa dla języka shellowego i nie jest wspierana w PHP. Próba użycia '#' spowoduje błąd składniowy, co jest klasycznym błędem popełnianym przez osoby, które mają doświadczenie w innych językach programowania, ale stają się mylące w kontekście PHP. Z kolei pojedyncza linia komentarza, oznaczona przez '//', pozwala na komentowanie tylko jednej linii, co może być niewystarczające w przypadkach, gdy potrzebujesz dłuższego wyjaśnienia. To ograniczenie w praktyce prowadzi do fragmentacji komentarzy, co może obniżyć czytelność kodu. Użycie z kolei znaku '<!-- -->' jest związane z HTML i również nie jest poprawne w kontekście PHP. Tego rodzaju komentarze są ignorowane przez przeglądarki internetowe, co sprawia, że są one całkowicie nieprzydatne w kodzie PHP, gdzie potrzebujemy, aby komentarze były zrozumiałe dla programisty, a nie dla użytkownika końcowego. Błędem myślowym związanym z tymi podejściami jest przekonanie, że można swobodnie przenosić metody komentowania z jednego języka do innego. Zrozumienie specyfiki każdego języka programowania, w tym jego zasadności i konwencji dotyczących komentarzy, jest kluczowe dla efektywnego pisania kodu, który jest zarówno funkcjonalny, jak i łatwy do zrozumienia.

Pytanie 39

Które z pojęć programowania obiektowego w języku JavaScript odnosi się do dostępu do pól i metod jedynie z poziomu klasy, w której zostały one zadeklarowane?

A. static
B. const
C. public
D. private
Użycie słowa kluczowego 'const' w języku JavaScript odnosi się do deklaracji stałych, a nie do poziomu dostępu do pól i metod w klasach. 'const' pozwala na tworzenie zmiennych, których wartości nie mogą być zmieniane, co może prowadzić do nieporozumień w kontekście obiektowości. W rzeczywistości stałe są dostępne w zasięgu bloku, w którym zostały zadeklarowane, co nie ma związku z dostępem do pól i metod klas. Z kolei 'public' to słowo kluczowe, które oznacza, że pola i metody są dostępne z zewnątrz klasy, co stoi w kontraście do prywatnych elementów. Często programiści mylą te dwa podejścia, co prowadzi do błędów w projektowaniu systemów, które wymagają ukrycia implementacji. Dodatkowo, 'static' odnosi się do pól i metod, które są powiązane z klasą, a nie z instancją obiektu. Oznacza to, że takie elementy można wywoływać bez tworzenia instancji klasy. Jest to przydatne w sytuacjach, gdy nie zachodzi potrzeba operowania na danych instancji. Przy wyborze odpowiednich słów kluczowych kluczowe jest zrozumienie ich roli w kontekście obiektowym oraz ich wpływu na architekturę systemu. Dlatego warto przywiązywać wagę do technicznych niuansów, aby unikać typowych pułapek związanych z dostępem do danych.

Pytanie 40

Wskaż wynik wykonania skryptu napisanego w języku PHP

<?php
$tablica = array(10 => "Perl", 14 => "PHP", 20 => "Python", 22 => "Pike");
asort($tablica);
print("<pre>");
print_r($tablica);
print("</pre>");
?>
A
Array
(
    [14] => PHP
    [10] => Perl
    [22] => Pike
    [20] => Python
)
B
Array
(
    [0] => PHP
    [1] => Perl
    [2] => Pike
    [3] => Python
)
C
Array
(
    [0] => Python
    [1] => Pike
    [2] => Perl
    [3] => PHP
)
D
Array
(
    [10] => Perl
    [14] => PHP
    [20] => Python
    [22] => Pike
)
A. A.
B. C.
C. D.
D. B.
Nieźle to ogarnąłeś z tym skryptem w PHP i funkcją asort(). Fajnie, że rozumiesz, jak działa ta tablica asocjacyjna z czterema elementami. Widzisz, asort() sortuje wartości, ale nie zmienia kluczy, co jest super przydatne. Po wykonaniu tej funkcji dostajemy na przykład: `[14] => PHP`, `[10] => Perl`, `[22] => Pike`, `[20] => Python`. Zrozumienie tego, jak to działa, naprawdę pomaga, gdy tworzysz bardziej skomplikowane aplikacje, które muszą porządkować dane. Polecam też zerknąć na inne funkcje sortujące w PHP, bo każda z nich ma swój styl i może znacznie ułatwić Ci życie jako programiście.