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: 2 lutego 2026 15:06
  • Data zakończenia: 2 lutego 2026 15:11

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Instrukcja SQL przedstawiona w formie graficznej

ALTER TABLE 'miasta'
ADD 'kod' text;
A. w tabeli miasta zmienia nazwę kolumny kod na nazwę text
B. wprowadza do tabeli dwie kolumny o nazwach: kod i text
C. zmienia nazwę tabeli miasta na nazwę kod
D. dodaje do tabeli kolumnę o nazwie kod typu text
Polecenie ALTER TABLE w SQL to naprawdę przydatne narzędzie, które pozwala na modyfikowanie struktury tabeli w bazie danych. W Twoim przypadku dodajesz nową kolumnę o nazwie 'kod' typu text do tabeli 'miasta'. To słowo kluczowe ADD oznacza, że chcemy coś dorzucić do tej tabeli. Typ text jest fajny, bo jest używany do przechowywania różnych dłuższych tekstów, co sprawia, że idealnie nadaje się do takich danych jak opisy czy kody pocztowe. Pamiętaj, że przed robieniem zmian w tabelach warto pomyśleć, jak to wpłynie na całe działanie aplikacji i procesów w firmie. Na przykład, jeśli musisz przechować dodatkowe info o miastach, jak właśnie kody pocztowe, to dodanie tego jest super pomysłem. Znajomość ALTER TABLE jest mega przydatna w zarządzaniu bazami danych, bo pozwala na elastyczne dostosowanie tabel do zmieniających się potrzeb. To naprawdę może zwiększyć efektywność systemu, jeśli dobrze to ogarniesz.

Pytanie 2

Przedstawiony w ramce fragment kwerendy SQL ma za zadanie wybrać

SELECT COUNT(wartosc) FROM ...
A. sumę w kolumnie wartosc.
B. liczbę kolumn.
C. liczbę wierszy.
D. średnią w kolumnie wartosc.
Poprawnie: wyrażenie SELECT COUNT(wartosc) ma za zadanie zwrócić liczbę wierszy, w których kolumna wartosc nie jest pusta (czyli nie ma wartości NULL). Funkcja agregująca COUNT() w SQL właśnie do tego służy – zlicza rekordy. W wersji COUNT(nazwa_kolumny) zliczane są tylko te wiersze, gdzie w tej kolumnie znajduje się jakaś konkretna wartość. To jest ważne rozróżnienie: COUNT(*) liczy wszystkie wiersze w tabeli lub wyniku kwerendy, natomiast COUNT(wartosc) pomija rekordy z NULL w tej kolumnie. Moim zdaniem to jedna z podstawowych rzeczy, które trzeba mieć „w ręku”, pracując z bazami danych. W praktyce używa się tego np. do sprawdzenia, ilu klientów podało numer telefonu, ilu pracowników ma przypisaną premię, ile zamówień ma ustawioną datę realizacji itd. Zamiast ręcznie przeglądać dane, odpalasz prostą kwerendę: SELECT COUNT(telefon) FROM klienci; i od razu wiesz, ile jest uzupełnionych pól. Dobre praktyki mówią też, żeby świadomie wybierać pomiędzy COUNT(*) a COUNT(kolumna), bo dają one różne wyniki przy brakach danych. W raportowaniu biznesowym to ma ogromne znaczenie, bo łatwo wyciągnąć złe wnioski, jeśli ktoś nie rozumie, co dokładnie liczy dana funkcja. W projektach komercyjnych COUNT() jest jedną z najczęściej używanych funkcji agregujących obok SUM(), AVG(), MIN() i MAX(), więc warto od razu nauczyć się jej poprawnej interpretacji i stosowania w połączeniu z klauzulą WHERE oraz GROUP BY, żeby liczyć wiersze spełniające konkretne warunki, np. ilu użytkowników aktywowało konto w danym miesiącu.

Pytanie 3

Aby włączyć zewnętrzny skrypt JavaScript zatytułowany skrypt.js, należy umieścić w kodzie HTML

A. <script> skrypt.js </script>
B. <link rel="JavaScript" type="js" href="skrypt.js" />
C. <link rel="script" href="skrypt.js" />
D. <script src="skrypt.js"></script>
Odpowiedź <script src="skrypt.js"></script> jest poprawna, ponieważ jest to standardowy sposób dołączania zewnętrznych plików JavaScript do dokumentu HTML. Element <script> informuje przeglądarkę, że zawiera on kod JavaScript, a atrybut src wskazuje na lokalizację pliku, który ma zostać załadowany. W praktyce, umieszczanie skryptów w tagu <script> z atrybutem src umożliwia oddzielenie logiki skryptowej od struktury HTML, co jest zgodne z zasadami programowania modularnego i ułatwia zarządzanie kodem. Taka struktura pozwala na łatwe ponowne wykorzystanie skryptów w różnych projektach bez konieczności kopiowania kodu. Ponadto, dobrym zwyczajem jest umieszczanie skryptów na końcu sekcji <body>, co pozwala na załadowanie całej zawartości HTML przed wykonaniem skryptu, co przekłada się na lepszą wydajność i doświadczenia użytkownika.

Pytanie 4

Poniżej przedstawiono fragment kodu w języku PHP. Jakie liczby wypisze ta pętla jako wynik swojego działania?

for ($i = 0; $i <= 20; $i += 4)
echo $i . ' ';
A. 0,4,8,12,16,20
B. 0,4,8,12,16
C. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
D. 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
Pętla for w PHP działa tak, że zaczyna od 0 i leci aż do 20, dodając 4 przy każdej iteracji. Dzięki temu, dostajemy liczby 0, 4, 8, 12, 16 i 20. To jest naprawdę przydatne, zwłaszcza gdy chcemy przetwarzać co czwarty element w zbiorze. Pętle for są bardzo popularne w programowaniu, bo pozwalają robić rzeczy wielokrotnie bez zbędnego powtarzania kodu. Jeśli zrozumiesz, jak to działa, to potem dużo łatwiej będzie Ci pisać różne programy. Z moich doświadczeń wynika, że lepiej jest unikać tzw. magicznych liczb w kodzie, czyli takich, które nie mają sensownego wyjaśnienia. Lepiej używać stałych czy zmiennych, bo to sprawia, że kod jest bardziej czytelny i łatwiejszy do ogarnięcia w przyszłości.

Pytanie 5

Aby umożliwić wybór kilku opcji jednocześnie w rozwijanej liście formularza HTML, należy dodać atrybut do znacznika select

Ilustracja do pytania
A. size
B. disabled
C. value
D. multiple
Atrybut multiple w znaczniku select w HTML to super sprawa, bo dzięki niemu można zaznaczyć więcej niż jedną opcję z listy rozwijalnej. To się przydaje, jak ktoś musi wybrać kilka elementów w formularzu. Jak dodasz atrybut multiple, to przeglądarka pokazuje to jako pole do wyboru, gdzie można klikać na kilka wartości za pomocą klawiszy Ctrl albo Shift. Fajnie, że ten atrybut nie wymaga żadnych dodatkowych wartości, wystarczy, że go wrzucisz do znacznika select. To zgodne z dobrymi praktykami UX, bo pozwala na większą elastyczność i interaktywność formularzy. Co więcej, nie trzeba być programistycznym guru, żeby to wdrożyć, więc każdy może to zrobić. Używa się go w różnych aplikacjach webowych, zwłaszcza tam, gdzie zbieranie danych od użytkowników w prosty i przejrzysty sposób jest ważne.

Pytanie 6

Który zapis w języku JavaScript daje jednakowy rezultat do przedstawionego kodu?

x = 0;
x += 10;
A. x = 10; x = 0;
B. x = 10; x = x + 10;
C. x = 0; x++; x = x + 9;
D. x = 0; x--; x *= 9;
Wybrana przez Ciebie odpowiedź, niestety nie jest zgodna z przykładem kodu przedstawionym na zdjęciu. Wszystkie niepoprawne odpowiedzi zawierają błędny rozumowanie dotyczące operacji na zmiennych w JavaScript. Bardzo częstym błędem jest mylenie operatorów inkrementacji i dekrementacji. Operator '--' w JavaScript zmniejsza wartość zmiennej o 1, a nie zwiększa. Również, operator '*=' jest skrótem dla mnożenia i przypisania wyniku do zmiennej, a nie dla dodawania. Kolejnym błędem jest niezrozumienie przypisania wartości do zmiennej. Instrukcja 'x = 10; x = 0;' przypisuje najpierw wartość 10 do zmiennej 'x', a potem nadpisuje ją wartością 0, co jest niezgodne z kodem na zdjęciu. To są typowe błędy, które prowadzą do niepoprawnych wniosków na temat działania JavaScript. Ważne jest zrozumienie podstawowych operatorów i ich działania, aby uniknąć takich pomyłek. Pamiętaj, że zrozumienie zasad działania języka programowania jest kluczowe dla tworzenia poprawnych i efektywnych kodów.

Pytanie 7

Która z podanych funkcji napisanych w PHP oblicza sumę połowy a oraz połowy b?

A. function licz($a, $b) { return $a/2 + $b; }
B. function licz($a, $b) { return 2/$a + 2/$b; }
C. function licz($a, $b) { return ($a/2 + $b)/2; }
D. function licz($a, $b) { return $a/2 + $b/2; }
Funkcja 'function licz($a, $b) { return $a/2 + $b/2; }' jest naprawdę w porządku. Dokładnie wykonuje to, co pytanie wymaga: sumuje połowy zmiennych a i b. W PHP dzielenie robimy przez operator '/', a tu obie liczby są dzielone przez 2, więc dostajemy ich połówki. Potem te połówki dodajemy, co się zgadza z tym, o co chodzi w zadaniu. Na przykład, jak a = 6 i b = 4, to funkcja zwraca (6/2) + (4/2) = 3 + 2 = 5. Takie podejście jest super, bo kod jest czytelny i prosty. W ekipach programistycznych, gdzie różni ludzie mogą pracować nad tym samym kodem, to ma duże znaczenie. Nazwa 'licz' też jest całkiem zrozumiała i dobrze pasuje do tego, co ta funkcja robi, więc później można łatwo z niej korzystać czy zmieniać ją, jak będzie potrzeba.

Pytanie 8

W języku JavaScript zapis ```x = przedmiot.nazwa();``` oznacza, że

A. nazwa jest właściwością obiektu przedmiot.
B. zmienna x będzie przechowywać wynik działania funkcji przedmiot.
C. nazwa jest polem klasy przedmiot.
D. zmienna x będzie przechowywać wynik działania metody nazwa.
Twoja odpowiedź jest poprawna. W języku JavaScript, zapis 'x = przedmiot.nazwa();' oznacza wywołanie metody 'nazwa' na obiekcie 'przedmiot' i przypisanie zwróconego przez nią wyniku do zmiennej 'x'. Metoda to funkcja zdefiniowana w kontekście obiektu. Ten zapis jest stosowany, gdy chcesz wykonać określone działanie na obiekcie i przechować wynik dla dalszego użycia. Jest to zgodne ze standardami i dobrymi praktykami JavaScript, które zalecają wykorzystywanie metod obiektów do manipulacji ich stanem. Dzięki temu, kod jest bardziej zorganizowany, czytelny i łatwiejszy do utrzymania.

Pytanie 9

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. td, th { background-color: Pink; }
B. tr:hover { background-color: Pink; }
C. tr { 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 10

Jak, wykorzystując język PHP, można zapisać w ciasteczku wartość znajdującą się w zmiennej dane na okres jednego dnia?

A. setcookie("dane", $dane, time());
B. setcookie("dane", $dane, time() + (3600*24));
C. setcookie("dane", $dane, 0);
D. setcookie("dane", "dane", 0);
Użycie setcookie("dane", $dane, time()); jest błędne, ponieważ czas wygaśnięcia ciasteczka nie zostaje określony, a domyślnie ciasteczko wygasa z końcem sesji przeglądarki. Oznacza to, że ciasteczko zostanie usunięte, gdy użytkownik zamknie przeglądarkę, co jest niewłaściwe w kontekście potrzeby przechowywania danych przez dłuższy czas, jak w tym przypadku. Zapis setcookie("dane", "dane", 0); również kończy się niepowodzeniem, ponieważ określenie czasu wygaśnięcia na zero ma ten sam skutek, co wcześniejsza odpowiedź - ciasteczko nie będzie przechowywane po zamknięciu sesji. W przypadku setcookie("dane", $dane, 0); błąd wynika z tego, że zmienna $dane nie jest przechowywana, co prowadzi do potencjalnych problemów z dostępnością danych. Zrozumienie tych mechanizmów jest kluczowe dla efektywnego korzystania z ciasteczek w PHP, a niewłaściwe podejście do ich użycia może prowadzić do utraty informacji, co negatywnie wpływa na doświadczenie użytkownika. Użytkownicy powinni unikać pomijania argumentów związanych z czasem wygaśnięcia, ponieważ może to prowadzić do nieprzewidywalnych rezultatów i frustracji ze strony osób korzystających z danej aplikacji.

Pytanie 11

Jaką funkcję pełni CONCAT w języku SQL?

A. łączenie tekstu do wyświetlenia
B. określenie podłańcucha znaków z tekstu wejściowego
C. przycinanie wyświetlanego tekstu
D. usuniecie określonego tekstu
Chociaż usunięcie wskazanego tekstu, przycięcie wyświetlanego tekstu oraz wyznaczenie podłańcucha znaków są funkcjami, które mogą być użyteczne w operacjach na danych, nie są one związane z funkcjonalnością CONCAT. Usunięcie wskazanego tekstu jest realizowane przez funkcje takie jak REPLACE, które zastępują określone fragmenty tekstu innymi wartościami, a nie przez łączenie ich w jeden ciąg. Przycięcie wyświetlanego tekstu, na przykład przy użyciu funkcji TRIM, dotyczy usuwania białych znaków z początku i końca łańcucha, co również nie ma związku z łączeniem tekstów. Wyznaczenie z wejściowego tekstu podłańcucha znaków można zrealizować przez funkcję SUBSTRING, która pozwala na wydobycie określonego fragmentu z długiego tekstu. Każda z tych operacji ma swoje zastosowanie i jest bardzo przydatna w kontekście przetwarzania danych, jednak nie przynależą do funkcji CONCAT, której głównym celem jest łączenie tekstów, a nie ich modyfikacja w inny sposób.

Pytanie 12

W języku C++ utworzono zmienną: char zml;. Jak można przypisać jej wartość, zgodnie ze składnią tego języka?

A. zml = "wiadro";
B. zml == 0x35;
C. zml[2] = 32;
D. zml = ' w ' ;
Odpowiedzi zml == 0x35 oraz zml[2] = 32 są niepoprawne, ponieważ nie odpowiadają standardom przypisywania wartości zmiennej char w C++. W pierwszej odpowiedzi użyto operatora porównania '==', co skutkuje błędem, ponieważ zamiast przypisywać wartość, program sprawdziłby, czy zml jest równe wartości 0x35, co nie spełnia wymagań przypisania. Dodatkowo, wartość 0x35 reprezentuje znak '5' w kodowaniu ASCII, co nie może być zdefiniowane jako przypisanie do zmiennej char w oczekiwanym kontekście. Druga błędna odpowiedź wprowadza w błąd, ponieważ zml[2] sugeruje, że zmienna zml jest tablicą char, co jest niezgodne z jej deklaracją jako zmiennej pojedynczej. W C++, operacje na tablicach wymagają innego podejścia; nie można bezpośrednio przypisywać wartości w ten sposób do zmiennej char. Z kolei odpowiedź zml = "wiadro" jest niezgodna, gdyż próbuje przypisać łańcuch znaków do zmiennej char, co prowadzi do naruszenia reguł typów danych. Pojedynczy znak powinien być zamknięty w pojedynczych cudzysłowach, a nie w podwójnych, co prowadzi do błędu kompilacji i źle zrozumianej koncepcji wartości zmiennych w C++. Podstawowa zasada programowania w C++ polega na zgodności typów danych, a zrozumienie tej zasady jest kluczowe dla efektywnego programowania.

Pytanie 13

Jakiej funkcji w języku PHP należy użyć, aby nawiązać połączenie z bazą danych pod nazwą zwierzaki?

A. $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki')
B. $polacz = sql_connect('localhost', 'root', '', 'zwierzaki')
C. $polacz = db_connect('localhost', 'root', '', 'zwierzaki')
D. $polacz = server_connect('localhost', 'root', '', 'zwierzaki')
Odpowiedź $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); jest poprawna, ponieważ wykorzystuje funkcję mysqli_connect, która jest dedykowana do nawiązywania połączeń z bazami danych MySQL w języku PHP. Funkcja ta przyjmuje cztery argumenty: adres serwera (w tym przypadku 'localhost'), nazwę użytkownika ('root'), hasło (które jest puste w tym przykładzie) oraz nazwę bazy danych ('zwierzaki'). Użycie mysqli jest zgodne z aktualnymi standardami i dobrą praktyką w programowaniu, ponieważ oferuje szereg usprawnień w porównaniu do starszych metod, takich jak mysql_connect, które zostały usunięte w nowszych wersjach PHP. Mysqli (MySQL Improved) wspiera zarówno programowanie obiektowe, jak i proceduralne, co czyni go bardziej elastycznym. W przypadku nawiązywania połączenia warto również pamiętać o obsłudze błędów, co można osiągnąć poprzez dodatkowe sprawdzenie, czy połączenie zostało nawiązane pomyślnie za pomocą funkcji mysqli_connect_error(). Przykład poprawnego użytkowania w kodzie mógłby wyglądać następująco: $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); if (!$polacz) { die('Connection failed: ' . mysqli_connect_error()); }

Pytanie 14

Tabela Pracownicy zawiera informacje na temat pracowników różnych działów, co jest zaznaczone przez pole liczbowe dzial. Z racji tego, że zazwyczaj kwerendy dotyczą tylko działu 2, można uprościć zapytania do tej tabeli, tworząc wirtualną tabelę o nazwie Prac_dzial2 przy użyciu zapytania

A. VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2;
B. VIEW Prac_dzial2 SELECT FROM Pracownicy WHERE dzial=2;
C. CREATE VIEW Prac_dzial2 AS SELECT * FROM Pracownicy WHERE dzial=2;
D. CREATE VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2;
Wybór odpowiedzi, która nie zawiera pełnej składni SQL, prowadzi do nieporozumień w zrozumieniu, jak działa tworzenie widoków w bazach danych. Odpowiedzi takie jak 'CREATE VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2;' są błędne, ponieważ użycie słowa kluczowego 'FROM' jest niewłaściwe w kontekście definicji widoku. W standardowym SQL używa się 'AS' do określenia zapytania, które definiuje widok, co jest kluczowe dla poprawnego przetwarzania zapytania przez silnik bazy danych. Z kolei odpowiedzi, które zaczynają się od 'VIEW', takie jak 'VIEW Prac_dzial2 FROM Pracownicy WHERE dzial=2;' oraz 'VIEW Prac_dzial2 SELECT FROM Pracownicy WHERE dzial=2;', są całkowicie niepoprawne, ponieważ w SQL nie istnieje polecenie 'VIEW' jako samodzielne polecenie do tworzenia widoków. To może prowadzić do mylnego przekonania, że komendy SQL są bardziej elastyczne w kwestii składni, co nie jest zgodne z rzeczywistością. Użytkownicy powinni zawsze odnosić się do dokumentacji SQL oraz standardów, aby upewnić się, że struktura zapytań jest zgodna z wymaganiami danego systemu bazy danych. Rozumienie poprawnej składni i semantyki SQL jest podstawowym elementem efektywnego zarządzania bazami danych i kluczowym krokiem w procesie nauki oraz implementacji skutecznych rozwiązań bazodanowych.

Pytanie 15

Aby uruchomić skrypt JavaScript, potrzebne jest oprogramowanie

A. serwera MySQL
B. serwera WWW
C. przeglądarki internetowej
D. debuggera JavaScript
Aby uruchomić skrypt JavaScript, niezbędne jest posiadanie przeglądarki internetowej, która obsługuje JavaScript. Przeglądarki takie jak Chrome, Firefox, Safari czy Edge zawierają silniki JavaScript, które interpretują i wykonują skrypty na stronach internetowych. Przykładowo, gdy użytkownik wchodzi na stronę internetową, która wykorzystuje JavaScript do dynamicznego ładowania treści lub interakcji z użytkownikiem, przeglądarka przetwarza skrypty w czasie rzeczywistym, co wpływa na doświadczenie użytkownika. Przeglądarki regularnie aktualizują swoje silniki, co przyczynia się do poprawy wydajności i bezpieczeństwa. Dodatkowo, korzystanie z narzędzi deweloperskich w przeglądarkach, takich jak konsola JavaScript, umożliwia programistom testowanie i debugowanie skryptów w łatwy sposób. W kontekście standardów webowych, JavaScript jest kluczowym elementem technologii front-end, współpracując z HTML i CSS, aby zapewnić interaktywność i responsywność stron internetowych. Warto również zauważyć, że niektóre frameworki, takie jak React czy Angular, również opierają się na JavaScript, co podkreśla jego znaczenie w nowoczesnym web developmencie.

Pytanie 16

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

A. var
B. instanceof
C. new
D. variable
W języku JavaScript kluczowe jest zrozumienie, jak deklarować zmienne oraz jakie słowa kluczowe są do tego używane. Słowo 'new' jest używane do tworzenia nowych instancji obiektów, co oznacza, że nie służy do deklaracji zmiennych. Typowy błąd, który można popełnić, to mylenie konstruktorów i zmiennych, gdzie 'new' używane jest w kontekście obiektów, takich jak: var obiekt = new NazwaObiektu();. Kolejne słowo kluczowe, 'variable', nie jest w ogóle rozpoznawane przez JavaScript jako słowo kluczowe i nie ma zastosowania w kontekście deklaracji zmiennych. W rzeczywistości, w JavaScript nie istnieje takie słowo kluczowe, co może prowadzić do nieporozumień u osób uczących się języka. Ostatnie słowo, 'instanceof', to operator, który służy do sprawdzania, czy dany obiekt jest instancją konkretnego konstruktora. Posługiwanie się nim w kontekście deklaracji zmiennych jest całkowicie błędne i może prowadzić do zamieszania. Kluczowe jest, aby dobrze zrozumieć różnice w sposobie deklaracji zmiennych oraz celów poszczególnych słów kluczowych w JavaScript. Brak takiej wiedzy może prowadzić do chaosu w kodzie oraz trudności w jego utrzymaniu, co jest sprzeczne z dobrymi praktykami programistycznymi.

Pytanie 17

W języku JavaScript stworzono fragment kodu. Po uruchomieniu skryptu zmienna x

<script>
  var x = 10;
  x++;
  console.log(x);
</script>
A. Będzie równa 11 i zostanie wypisana w konsoli przeglądarki internetowej
B. Będzie równa 10 i zostanie wypisana w dokumencie HTML
C. Będzie równa 10 i zostanie wypisana w głównym oknie przeglądarki internetowej
D. Będzie równa 11 i zostanie wypisana w oknie popup
Rozważając fragment kodu należy zwrócić uwagę na zastosowanie operatora postinkrementacyjnego x++ który zwiększa wartość zmiennej x o 1. Z tego powodu wszelkie odpowiedzi sugerujące że x pozostanie równy 10 są błędne. Częstym błędem jest myślenie że operacja x++ nie wpływa natychmiastowo na wartość zmiennej jednak w rzeczywistości po jej wykonaniu x zostaje zwiększone do 11. Kolejnym aspektem do rozważenia jest sposób wyświetlania wartości zmiennej. Console.log jest powszechnie używanym narzędziem do wyświetlania informacji w konsoli przeglądarki co odróżnia go od metod takich jak alert które wyświetlają informacje w oknach popup. Dlatego odpowiedzi sugerujące użycie okna popup również są nieprawidłowe. Ważne jest zrozumienie że console.log nie wpływa na wizualną część dokumentu HTML i nie zmienia jego zawartości co błędnie sugerują odpowiedzi przewidujące wyświetlenie w dokumencie HTML. Zrozumienie różnic w działaniu różnych metod wyjścia w JavaScript jest kluczowe dla debugowania i tworzenia aplikacji webowych. Typowym błędem jest również przypuszczenie że console.log ma bezpośredni wpływ na użytkownika końcowego podczas gdy jego głównym celem jest wspieranie deweloperów w analizie i rozwoju aplikacji. Aby uniknąć tych nieporozumień warto zgłębić dokumentację funkcji oraz praktyki debugowania w JavaScript co pozwala na bardziej efektywne wykorzystanie dostępnych narzędzi w pracy z kodem.

Pytanie 18

W CSS właściwość font-size może przyjmować wartości według słów kluczowych

A. wyłącznie smali, medium, large
B. z zestawu xx-small, x-small, smali, medium, large, x-large, xx-large
C. tylko smali, smaller, large, larger
D. jedynie big i smali
Właściwość font-size w CSS pozwala na określenie rozmiaru czcionki za pomocą zestawu wartości słownikowych, które obejmują xx-small, x-small, small, medium, large, x-large oraz xx-large. Użycie tych słów kluczowych jest zgodne z wytycznymi CSS i zapewnia spójne i zrozumiałe podejście do projektowania. Przykładowo, definiując klasę CSS dla nagłówka, możemy zastosować: h1 { font-size: large; } co skutkuje odpowiednim zwiększeniem rozmiaru czcionki, co jest zgodne z hierarchią typograficzną dokumentu. Zastosowanie wartości słownikowych zwiększa czytelność i dostępność treści, ponieważ są one zrozumiałe zarówno dla programistów, jak i dla przeglądarek. Ponadto, korzystając z tych wartości, projektanci mogą łatwiej dostosować wygląd strony do różnych urządzeń, co jest kluczowe w kontekście responsywnego web designu. Warto również wspomnieć, że wartości te są niezależne od jednostek miary, takich jak em czy px, co sprawia, że są bardziej elastyczne w użyciu.

Pytanie 19

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

A. umieszczania nowych danych w bazie.
B. odbierania użytkownikom praw do obiektów.
C. nadawania użytkownikom praw do obiektów.
D. aktualizacji istniejących danych w bazie.
Polecenie GRANT bywa mylone z typowymi instrukcjami modyfikującymi dane, bo wszystko to jest „SQL” i często używa się tego w jednym skrypcie. Warto jednak wyraźnie oddzielić dwie warstwy: operacje na danych oraz operacje na uprawnieniach. Wstawianie nowych rekordów do tabeli realizuje się za pomocą instrukcji INSERT, a nie GRANT. To INSERT decyduje, jakie wartości trafią do konkretnych kolumn, ewentualnie z dodatkowymi klauzulami, triggerami czy ograniczeniami. GRANT w ogóle nie dotyka zawartości tabeli, tylko informację, kto ma prawo wykonać INSERT, SELECT, UPDATE itd. Podobnie aktualizowanie istniejących danych w tabeli odbywa się przez UPDATE, czasem w połączeniu z WHERE, JOIN, podzapytaniami. GRANT nie zmienia ani jednego pola w rekordach – on jedynie przyznaje lub rozszerza zakres uprawnień użytkownika lub roli. Jeśli użytkownik nie ma prawa UPDATE, to najpierw trzeba użyć GRANT, a dopiero potem można wykonać właściwe polecenie UPDATE. Częstym błędem myślowym jest traktowanie SQL jako jednego wielkiego „zestawu komend do wszystkiego” bez rozróżnienia na DML (Data Manipulation Language) i DCL (Data Control Language). GRANT należy właśnie do DCL, razem z REVOKE, i służy do zarządzania bezpieczeństwem. Jeszcze inny typowy skrót myślowy to przekonanie, że GRANT może „zabierać” prawa, bo kojarzy się ogólnie z uprawnieniami. W rzeczywistości standardowo do odbierania uprawnień służy REVOKE. W wielu systemach relacyjnych właśnie tym poleceniem cofa się wcześniej nadane GRANT-y. Z mojego doświadczenia dobrze jest zapamiętać prostą parę: GRANT – nadaje, REVOKE – odbiera. Dzięki temu łatwiej uniknąć pomyłek przy pisaniu skryptów administracyjnych i przy projektowaniu polityki dostępu do tabel, widoków, procedur i innych obiektów bazy danych.

Pytanie 20

Jak umieścić komentarz w kodzie PHP?

A. /* ... */
B. <!-- ... -->
C. /? ... ?/
D. <? ... ?>
Wiele osób mogących mieć z początku problemy z właściwym umiejscowieniem komentarzy w kodzie PHP, często korzysta z niewłaściwych składni. Na przykład, odpowiedź <? ... ?> sugeruje, że komentarz można umieścić w specjalnych znacznikach PHP, co jest błędne. W rzeczywistości znaki te służą do otwierania i zamykania bloków kodu PHP, a nie do tworzenia komentarzy. Z kolei odpowiedź /? ... ?/ jest również niepoprawna, ponieważ nie istnieje w PHP żadna składnia komentarza oparta na tym systemie. Typowe błędy myślowe prowadzące do takich wniosków są związane z nieporozumieniem dotyczącym funkcji znaczników PHP. Inną nieprawidłową odpowiedzią jest <!-- ... -->, która jest używana w HTML do komentowania kodu, lecz nie ma zastosowania w PHP. Kluczowe jest zrozumienie, że każda technologia ma swoje własne zasady dotyczące kodowania oraz komentarzy, a mieszanie tych reguł może prowadzić do nieporozumień i błędów w kodzie. Dobre praktyki programistyczne jasno wskazują, że komentarze powinny być używane z umiarem i w odpowiednich miejscach, aby nie wprowadzać zamieszania zarówno w kodzie, jak i w jego interpretacji przez innych programistów.

Pytanie 21

Którego znacznika NIE NALEŻY umieszczać w nagłówku dokumentu HTML?

A. <h2>
B. <meta>
C. <link>
D. <title>
Wybierając <link>, <meta> i <title>, można łatwo się pogubić, bo to zupełnie inna bajka niż nagłówki. Znacznik <meta> służy do definiowania rzeczy takich jak opis strony czy słowa kluczowe i jest umieszczany w <head>. To ważne, bo przeglądarki i roboty indeksujące potrzebują tych informacji, co ma duże znaczenie dla SEO. <link> używamy do łączenia zewnętrznych zasobów, jak arkusze stylów CSS, co pozwala stronie ładnie wyglądać. A <title> to tytuł strony, który widać na karcie przeglądarki. Chociaż wszystkie te znaczniki są istotne, to mają inne zadania niż <h2>, które się zajmuje nagłówkami treści. Ogólnie ważne jest, żeby wiedzieć, co do czego służy, żeby dobrze formatować i organizować dokument HTML.

Pytanie 22

Według którego parametru oraz dla ilu tabel zostaną zwrócone wiersze na liście w wyniku przedstawionego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis WHERE
  producent.nr_id = hurtownia.nr_id AND
  producent.wyrob_id = serwis.wyrob_id AND
  hurtownia.nr_id = sklep.nr_id AND
  sklep.nr_id = serwis.nr_id AND
  producent.nr_id = 1;
A. Według parametru nr id dla wszystkich tabel.
B. Według parametru nr id wyłącznie dla trzech tabel.
C. Według parametru wyrób id dla wszystkich tabel.
D. Według parametru wyrób Jd wyłącznie dla trzech tabel.
Wybrana odpowiedź jest niepoprawna. Wszystkie tabelki są łączone przez wartość kolumny nr id, a nie konkretnie przez 'wyrób id' lub 'wyrób Jd'. Ważne jest, aby pamiętać, że zapytanie SQL odnosi się do wszystkich tabel, a nie tylko do trzech. W niektórych odpowiedziach może wystąpić błąd, polegający na myśleniu, że zapytanie dotyczy tylko trzech tabel, podczas gdy w rzeczywistości dotyczy ono czterech: producent, hurtownia, sklep i serwis. Ponadto, zrozumienie, jakie konkretne parametry są używane do zwracania wierszy, jest kluczowe dla zrozumienia, jak działa zapytanie. Zrozumienie tego, jakie parametry są używane w zapytaniu SQL, jest kluczowe dla zrozumienia, jakie dane są zwracane i dlaczego. Niewłaściwe zrozumienie tego, jakie parametry są używane w zapytaniu, może prowadzić do niewłaściwego zrozumienia, jakie dane są zwracane i dlaczego. Pamiętaj, że idealnym celem jest nie tylko zrozumienie, jak działa zapytanie, ale także zrozumienie, dlaczego zwraca konkretne dane i jak te dane są związane z naszymi potrzebami programistycznymi.

Pytanie 23

W SQL warunek ten odpowiada warunkowi liczba >= 10 AND liczba <= 100?

A. liczba IN (10, 100)
B. NOT (liczba < 10 AND liczba > 100)
C. liczba LIKE '10%'
D. liczba BETWEEN 10 AND 100
Odpowiedzi, które nie są poprawne, mogą wynikać z nieporozumień dotyczących operatorów logicznych i porównawczych w SQL. Rozważając pierwszą odpowiedź, 'NOT (liczba < 10 AND liczba > 100)', można zauważyć, że wyrażenie to w rzeczywistości sprawdza, czy liczba nie jest ani mniejsza niż 10, ani większa niż 100. Choć może się wydawać, że jest to zbliżone do sprawdzania, czy liczba mieści się w przedziale, to w rzeczywistości wyrażenie to jest kluczowo różne – może być mylące, ponieważ nie uwzględnia wartości brzegowych, co prowadzi do błędnych wyników. Z kolei odpowiedź 'liczba IN (10, 100)' również nie oddaje sensu warunku, ponieważ operator IN sprawdza tylko, czy liczba jest równa jednej z wymienionych wartości, a nie czy mieści się w przedziale. Co więcej, 'liczba LIKE '10%'' to wyrażenie, które jest stosowane do porównywania z wzorcami tekstowymi i nie jest odpowiednie w kontekście porównywania wartości liczbowych. Użycie LIKE w takim przypadku może prowadzić do nieprzewidywalnych wyników, szczególnie gdy porównywane są liczby i tekst. Takie błędne podejścia mogą wynikać z niewłaściwego zrozumienia różnicy między operatorami porównawczymi a operatorami logicznymi, co jest kluczowe w efektywnym korzystaniu z SQL.

Pytanie 24

Po wykonaniu poniższego kodu JavaScript, co będzie przechowywać zmienna str2?

var str1 = "JavaScript";
var str2 = str1.substring(2,6);
A. vaSc
B. avaS
C. vaScri
D. nvaScr
W przypadku analizy kodu JavaScript kluczowym aspektem jest zrozumienie działania metody substring która służy do wyodrębniania fragmentów łańcuchów znaków. Metoda przyjmuje dwa parametry: indeks początkowy oraz opcjonalny indeks końcowy. W kontekście pytania błędnym podejściem jest niedokładna interpretacja tych indeksów. Pierwsza niepoprawna odpowiedź avaS zakłada że wyodrębniane są znaki od 0 do 3 co jest niezgodne z podanymi indeksami 2 i 6. Druga odpowiedź vaScri zakłada że metoda substring obejmuje znaki aż do indeksu 6 włącznie co jest błędnym zrozumieniem zakresu działania tej metody. Metoda substring kończy wybieranie na znaku poprzedzającym indeks końcowy dlatego indeks 6 nie jest uwzględniany przy wyborze znaków. Kolejna niepoprawna odpowiedź nvaScr próbuje wybrać znaki rozpoczynając od indeksu 1 co jest błędnym startowym punktem dla zakresu 2 do 6. W kontekście dobrych praktyk programistycznych istotnym jest zrozumienie że indeksowanie od zera ma wpływ na rezultaty metod operujących na łańcuchach znaków. Częstym błędem początkujących programistów jest nieuwzględnienie tego faktu co prowadzi do niepoprawnych wyników i błędów logicznych w aplikacjach. Znajomość tych zasad pozwala efektywnie wykorzystywać możliwości języka JavaScript w codziennej pracy programistycznej.

Pytanie 25

Jakie zdarzenie należy wykorzystać, aby funkcja JavaScript była aktywowana za każdym razem, gdy użytkownik wprowadza jakikolwiek znak w polu tekstowym?

A. onload
B. onclick
C. onkeydown
D. onmouseout
Funkcja JavaScript, która ma być wywoływana za każdym razem, gdy użytkownik wpisuje dowolny znak do pola edycji, powinna korzystać ze zdarzenia 'onkeydown'. Zdarzenie to jest wywoływane w momencie naciśnięcia klawisza, co oznacza, że natychmiast odzwierciedla zmiany wprowadzone przez użytkownika. Dzięki temu możemy w czasie rzeczywistym reagować na dane wprowadzane przez użytkownika, co jest niezwykle przydatne w aplikacjach interaktywnych. Przykładowo, jeśli mamy pole tekstowe, w którym użytkownik wprowadza swoje imię, możemy użyć zdarzenia 'onkeydown', aby sprawdzić, czy imię nie jest za krótkie lub nie zawiera niedozwolonych znaków. Można to zrealizować w następujący sposób: <input type='text' onkeydown='myFunction()'>. Standardy W3C definiują zdarzenia klawiaturowe jako kluczowy element interakcji użytkownika z aplikacjami webowymi, co czyni 'onkeydown' bardzo istotnym w kontekście UX/UI.

Pytanie 26

Formularz, który pełni rolę pośrednika w nawigacji po bazie danych pomiędzy formularzami i kwerendami dostępnymi w systemie, określany jest jako formularz

A. sterującym
B. pierwotnym
C. głównym
D. zagnieżdżonym
Wybór odpowiedzi nie jest trafny, ponieważ w kontekście baz danych i interfejsów użytkownika pojęcia pierwotny, zagnieżdżony i główny nie oddają prawidłowo roli formularza sterującego. Formularz pierwotny nie jest pojęciem standardowym w kontekście baz danych; może on być mylnie interpretowany jako formularz, na którym bazują inne formularze, co nie jest odpowiednie w tym kontekście, ponieważ nie pełni on funkcji nawigacyjnej. Z kolei formularz zagnieżdżony odnosi się do formularzy umieszczonych wewnątrz innych formularzy, co służy do organizacji danych w sposób hierarchiczny, ale nie jest to jego główna funkcjonalność. Zagnieżdżone formularze mogą być użyteczne w specyficznych scenariuszach, ale nie są one odpowiednie do sterowania nawigacją pomiędzy różnymi sekcjami aplikacji. Odpowiedź „główny” również nie oddaje meritum, gdyż sugeruje, że formularz główny pełni tę funkcję, co jest mylące, gdyż w rzeczywistości to formularz sterujący odpowiada za organizację i kontrolę nawigacji w bazie danych. Formułując odpowiedzi, często można pomylić terminy oraz ich funkcje, co prowadzi do nieporozumień w zrozumieniu architektury aplikacji. W praktyce, kluczowe jest zrozumienie roli formularza sterującego jako centralnego elementu interfejsu użytkownika, który ma na celu uproszczenie interakcji z danymi.

Pytanie 27

Aby przedstawić dane w bazach danych, które spełniają określone kryteria, należy stworzyć

A. makropolecenie
B. formularz
C. raport
D. relację
Wybór relacji, formularza lub makropolecenia jako odpowiedzi na pytanie o prezentację danych spełniających określone warunki jest nieprawidłowy z kilku powodów. Relacja w bazach danych odnosi się do struktury danych, która opisuje związki między tabelami, a nie do sposobu ich prezentacji. Choć relacje są fundamentem, na którym opiera się przechowywanie i organizowanie danych, same w sobie nie oferują narzędzia do wyodrębniania czy przedstawiania informacji w przystępny sposób. Formularze z kolei są wykorzystywane głównie do wprowadzania danych do systemu, pozwalając użytkownikom na interakcję z bazą, jednak nie służą one do analizy ani prezentacji danych w formie zrozumiałej dla odbiorcy. Makropolecenia, choć mogą automatyzować pewne procesy związane z przetwarzaniem danych, również nie spełniają funkcji raportowania, ponieważ są narzędziem do wykonywania powtarzalnych operacji. Wybierając te odpowiedzi, można wpaść w pułapkę myślową, w której myli się funkcje narzędzi bazodanowych, co może prowadzić do błędnych decyzji w zakresie projektowania systemów informatycznych. Każde z tych narzędzi pełni swoją specyficzną rolę w ekosystemie baz danych, lecz tylko raporty są zaprojektowane z myślą o efektywnej prezentacji danych zgodnie z określonymi kryteriami.

Pytanie 28

W tabeli artykuly w bazie danych sklepu znajduje się pole o nazwie nowy. Jak należy wykonać kwerendę, aby wypełnić to pole wartościami TRUE dla wszystkich rekordów?

A. UPDATE nowy FROM artykuly VALUE TRUE;
B. INSERT INTO nowy FROM artykuly SET TRUE;
C. UPDATE artykuly SET nowy=TRUE;
D. INSERT INTO artykuly VALUE nowy=TRUE;
Żeby zaktualizować wartości w kolumnie 'nowy' w tabeli 'artykuły' na TRUE, musisz użyć komendy SQL UPDATE. To jest standardowy sposób, żeby zmieniać już istniejące rekordy w tabelach. W tym przypadku komenda 'UPDATE artykuly SET nowy=TRUE;' oznacza, że wszystkie rekordy w tabeli 'artykuły' będą miały pole 'nowy' ustawione na TRUE. To dość prosta i skuteczna operacja, która pozwala na jednolitą zmianę w całej tabeli. Na przykład, jeśli w tabeli 'artykuły' jest 1000 rekordów, to wszystkie z nich dostaną wartość TRUE w polu 'nowy', co może być pomocne, jeśli chcemy oznaczyć nowe produkty. Pamiętaj, żeby robić kopie zapasowe bazy danych przed takimi masowymi zmianami. To może uratować Cię od utraty ważnych danych, gdyby coś poszło nie tak. Użycie tej komendy jest zgodne z ogólnymi zasadami SQL, więc jest to bezpieczny sposób działania dla każdego, kto zarządza bazą danych.

Pytanie 29

Z tabeli mieszkancy trzeba wydobyć unikalne nazwy miast, w tym celu należy użyć wyrażenia SQL zawierającego klauzulę

A. DISTINCT
B. HAVING
C. UNIQUE
D. CHECK
Odpowiedzi takie jak 'UNIQUE', 'CHECK' i 'HAVING' są błędne, ponieważ nie pełnią one funkcji eliminacji duplikatów w kontekście wyboru unikalnych wartości. 'UNIQUE' jest klauzulą, która służy do definiowania ograniczeń w tabelach, gwarantując, że wartości w danej kolumnie są unikalne w kontekście wierszy w tabeli. Jest to przydatne przy projektowaniu schematów baz danych, ale nie jest stosowane w zapytaniach do selekcji danych. 'CHECK' służy do walidacji danych wprowadzanych do tabeli, zapewniając, że spełniają one określone warunki, co jest istotne przy definiowaniu reguł dotyczących wartości, jakie mogą być wprowadzane. Z kolei 'HAVING' jest używane w kontekście grupowania danych, w połączeniu z klauzulą 'GROUP BY', aby filtrować grupy w oparciu o warunki, co jest zupełnie inną operacją niż eliminacja duplikatów. Typowym błędem jest mylenie koncepcji związanych z grupowaniem i selekcją unikalnych wartości. W praktyce, korzystając z 'HAVING', nie uzyskamy unikalnych wartości z kolumny bez wcześniejszego użycia 'GROUP BY', co sprawia, że jest to narzędzie bardziej skomplikowane i mniej efektywne w kontekście prostego wyciągania unikalnych danych. Aby właściwie zrozumieć zasady dotyczące zapytań SQL, ważne jest, aby rozróżniać te różne klauzule oraz ich zastosowania, co pozwoli na bardziej świadome i efektywne korzystanie z języka SQL.

Pytanie 30

W podanym fragmencie zapytania w języku SQL, komenda SELECT jest używana do zwrócenia SELECT COUNT(wartosc) FROM …

A. summy w kolumnie wartosc
B. ilości wierszy
C. średniej w kolumnie wartosc
D. średniej wartości z tabeli
No, trochę jest tu pomyłka. Ludzie często mylą to zapytanie SELECT COUNT(wartosc) z sumowaniem wartości, co nie jest do końca poprawne. Funkcja COUNT nie sumuje wartości, ona tylko liczy, ile jest niepustych wierszy. Więc jeżeli ktoś twierdzi, że to daje średnią, to wprowadza w błąd – średnią liczymy z pomocą funkcji AVG, a nie COUNT. W kolumnie 'wartosc' mogą być różne liczby, a suma wartości nie ma wiele wspólnego z tym, ile jest wierszy. Dobrze jest pamiętać, że średnia to coś innego niż liczba wierszy, co jest ważne do zrozumienia, jak działają zapytania w SQL. Jeśli ktoś myli te funkcje, to może się zgubić w analizie danych. Więc ogólnie mówiąc, warto wiedzieć, czym różnią się COUNT, AVG i inne funkcje agregujące, bo to kluczowe do ogarnięcia pracy z bazami danych.

Pytanie 31

DELETE FROM Pracownicy ORDER BY rok_urodzenia LIMIT 1;
W wyniku wykonania powyższego zapytania SQL zostanie:
A. usunięta kolumna rok_urodzenia z tabeli Pracownicy.
B. usunięty rekord z danymi pracownika, który miał wpisaną datę urodzenia.
C. usunięta tabela Pracownicy.
D. usunięty rekord najstarszego pracownika.
Poprawnie – to polecenie SQL usuwa dokładnie jeden rekord, i to taki, który odpowiada najstarszemu pracownikowi w tabeli. Kluczowe są tu dwie rzeczy: klauzula ORDER BY oraz LIMIT 1. Najpierw baza danych sortuje wiersze z tabeli Pracownicy po kolumnie rok_urodzenia rosnąco, czyli od najstarszego do najmłodszego (mniejszy rok urodzenia = starsza osoba). Dopiero na tak posortowanym zbiorze polecenie DELETE z LIMIT 1 usuwa pierwszy rekord z góry, czyli właśnie najstarszego pracownika. Warto zauważyć, że taka składnia (DELETE ... ORDER BY ... LIMIT ...) jest charakterystyczna m.in. dla MySQL i MariaDB. W standardowym SQL nie zawsze można użyć ORDER BY bezpośrednio w DELETE, ale w praktyce, w aplikacjach webowych, bardzo często pracuje się właśnie na tych silnikach, więc to rozwiązanie jest jak najbardziej realne. W innych systemach (np. PostgreSQL) podobny efekt robi się przez podzapytanie lub CTE. Moim zdaniem to jest bardzo przydatny wzorzec, gdy chcemy usuwać „najstarsze” lub „najmłodsze” rekordy, np. najstarszy log systemowy, najstarsze zamówienie w statusie roboczym, najstarszy wpis w kolejce zadań. Ważna dobra praktyka: takie operacje powinny opierać się na jednoznacznym kryterium sortowania (np. rok_urodzenia + id), żeby uniknąć sytuacji, że przy tych samych wartościach pola baza wybierze losowo któryś rekord. W projektach produkcyjnych często dodaje się dodatkową kolumnę typu data_utworzenia albo używa klucza głównego w ORDER BY, żeby zachować deterministyczne zachowanie. Zwróć też uwagę, że DELETE operuje na wierszach (rekordach), a nie na strukturze tabeli. Do usuwania kolumn służy ALTER TABLE, a do kasowania całej tabeli – DROP TABLE. To rozróżnienie jest absolutna podstawa pracy z SQL w każdej większej aplikacji.

Pytanie 32

Pętla napisana w języku PHP wprowadzi do tablicy liczby
$x=0
for($i=0;$i<10;$i++)
{
   $tab[$i]=$x;
   $x=$x+10;
}

A. 0,1,2,3,4,5,6,7,8,9,10
B. 10,20,30,40,50,60,70,80,90,100
C. 0,10,20,30,40,50,60,70,80,90
D. 0,1,2,3,4,5,6,7,8,9
Pętla w języku PHP, zapisana w podanym kodzie, skutkuje wstawieniem do tablicy wartości będących kolejnymi wielokrotnościami liczby 10, począwszy od zera. Na początku zmienna $x jest inicjalizowana na wartość 0. Wewnątrz pętli for, która iteruje od 0 do 9, każda iteracja przypisuje do elementu tablicy $tab index $i wartość zmiennej $x, a następnie zwiększa $x o 10. Dzięki temu, w tablicy zostaną zapisane wartości: 0 ( dla i=0), 10 ( dla i=1), 20 ( dla i=2) i tak dalej, aż do 90 ( dla i=9). Po zakończeniu pętli tablica $tab będzie wyglądać następująco: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]. Jest to przykład prostego użycia pętli for oraz indeksowania tablicy w PHP, co jest podstawową umiejętnością programistyczną w tym języku. Użytkownicy mogą zauważyć, że zmiana wartości $x lub liczby iteracji w pętli zmieniłaby uzyskany wynik. Ten kod ilustruje sposób pracy z pętlami oraz tablicami w PHP, które są kluczowymi elementami programowania.

Pytanie 33

W środowisku PHP pobrano z bazy danych rezultat działania zapytania przy użyciu komendy mysql_query. W celu uzyskania z otrzymanej kwerendy jednego wiersza danych, konieczne jest użycie polecenia

A. mysql_field_len
B. mysql_fetch_row
C. mysql_list_fields
D. mysql_fetch_lengths
Odpowiedzi, takie jak 'mysql_list_fields', 'mysql_fetch_lengths' i 'mysql_field_len', nie są odpowiednie w kontekście pobierania wiersza danych. 'mysql_list_fields' służy do pobierania informacji o polach w tabeli i nie zwraca wyników kwerendy, tylko metadane tabeli, co oznacza, że nie nadaje się do uzyskania dostępu do danych. 'mysql_fetch_lengths' dostarcza długości wszystkich pól w ostatnio pobranym wierszu, ale nie pozwala na bezpośrednie pobranie danych. Z kolei 'mysql_field_len' zwraca długość określonego pola w tabeli, a nie wiersza wyników kwerendy. Te funkcje mogą być użyteczne w określonych kontekstach, jednak nie realizują głównego celu, którym jest dostarczenie danych. Typowym błędem, który popełniają programiści, jest mylenie tych funkcji z właściwym sposobem na pobieranie danych. Kluczowe jest zrozumienie, że do pracy z danymi zawsze należy używać funkcji, które bezpośrednio zwracają wyniki zapytania. W tej sytuacji wybór odpowiedniej funkcji jest nie tylko kwestią techniczną, ale również najlepszych praktyk w programowaniu, które obejmują optymalizację kodu oraz unikanie nieefektywnych metod dostępu do danych.

Pytanie 34

W zamieszczonym kodzie PHP, który łączy się z serwerem bazy danych, jakie działania powinny być umieszczone w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost","root","qwerty","baza1");
if ( !$db ) {
...
}
A. Zamknięcie połączenia z bazą danych
B. Przetwarzanie danych otrzymanych z bazy
C. Zarządzanie błędem połączenia
D. Informacja o udanym połączeniu z bazą
Wykonywanie operacji na źle zestawionym połączeniu z bazą danych mogłoby prowadzić do nieprzewidywalnych zachowań aplikacji. Próba obsługi danych pobranych z bazy kiedy połączenie nie zostało nawiązane jest błędnym podejściem. Bez prawidłowego połączenia nie można pobrać danych dlatego nie ma sensu implementowanie takiej logiki w tym miejscu kodu. Podobnie komunikat o pomyślnym połączeniu nie znajduje uzasadnienia w konstrukcji warunku sprawdzającego nieudane połączenie. Jeśli warunek jest spełniony oznacza to że połączenie się nie powiodło i należy podjąć kroki w celu obsługi tego błędu a nie informować o sukcesie. Zamknięcie połączenia z bazą danych jest czynnością wykonywaną na końcu pracy z bazą a nie na początku co również czyni tę odpowiedź niepoprawną w kontekście błędnego nawiązywania połączenia. Dobre praktyki programistyczne wskazują na potrzebę właściwego zarządzania połączeniami do bazy danych co obejmuje ich otwieranie dopiero gdy są potrzebne i zamykanie gdy nie są już używane. Koncepcje błędnego umiejscowienia tych operacji w logice aplikacji mogą prowadzić do nieskuteczności i obniżenia wydajności aplikacji co podkreśla wagę poprawnego zrozumienia procesu nawiązywania połączeń z bazą danych.

Pytanie 35

Fragment skryptu w języku JavaScript umieszczony w ramce

t = "Ala ma kota.";
s = t.length;
A. przypisze zmiennej s długość tekstu z zmiennej t
B. wyświetli długość tekstu z zmiennej t
C. przypisze zmiennej s część tekstu z zmiennej t, o długości określonej przez zmienną length
D. przypisze zmiennej s zmienną t
Błędne przypuszczenie że kod wyświetli długość napisu ze zmiennej t wynika z niezrozumienia różnicy między przypisaniem a wyświetleniem wartości. W podanym przykładzie zmienna s przechowuje długość napisu ale kod nie zawiera żadnej instrukcji wyświetlenia tej wartości. W JavaScript do wyświetlenia w konsoli wymagane jest użycie funkcji console.log co nie zostało tu zawarte. Następnie błędna odpowiedź dotycząca przypisania fragmentu napisu wskazuje na niezrozumienie zastosowania właściwości length która zwraca całkowitą długość łańcucha a nie jego część. Aby uzyskać fragment łańcucha należałoby użyć metody substring lub slice które tej funkcji tutaj nie ma. Ostatnia błędna odpowiedź sugerująca że zmienna s przechowuje cały napis z t wykazuje brak zrozumienia samego przypisania w kontekście obiektów stringowych w JavaScript. Gdyby celem było przypisanie całego łańcucha należałoby użyć samego t bez length. Zrozumienie różnic w działaniach właściwości i metod w JavaScript jest kluczowe w skutecznym programowaniu i unikania błędów logicznych które mogą prowadzić do nieoczekiwanych rezultatów w działaniu aplikacji.

Pytanie 36

Określ złożoność obliczeniową algorytmu prostego (standardowego) wyszukiwania najmniejszej wartości w zestawie liczb?

A. O(n2 )
B. O(n!)
C. O(n3 )
D. O(n)
Złożoność obliczeniowa algorytmu naiwnego wyszukiwania minimum to O(n), a jak ktoś pisze, że to O(n^3), to jest w błędzie. Sześćkrotne wzrastanie czasu w zależności od elementów w tym wypadku nie ma sensu. Może to być przez jakieś nieporozumienie o złożoności algorytmów. Naprawdę nie potrzeba zagnieżdżonych pętli do porównania każdej pary. Podobnie, jak ktoś mówi o O(n!), to mówi o czymś wykładniczym, co pasuje do algorytmów generujących permutacje, a nie do prostego wyszukiwania minimum. Nawet O(n^2) to pomyłka, bo sugeruje, że mamy do czynienia z więcej skomplikowanymi algorytmami, jak sortowanie bąbelkowe. Zrozumienie analizy złożoności obliczeniowej jest ważne, żeby unikać tych typowych błędów i myśleć efektywniej o projektowaniu i implementacji algorytmów w codziennym programowaniu.

Pytanie 37

Jakie oznaczenie wykorzystuje się do jednoliniowego komentarza w skryptowym języku PHP?

A. /*
B. $
C. #
D. --
Stosowanie znaków '/*', '$' oraz '--' jako sposobów na oznaczanie jednoliniowych komentarzy w PHP jest niepoprawne i może prowadzić do nieporozumień. Znaki '/*' oraz '*/' są stosowane do tworzenia komentarzy wieloliniowych, co oznacza, że jeśli kod zawierający takie oznaczenie pojawi się w kontekście jednoliniowym, to system nie rozpozna, gdzie komentarz się zaczyna, a gdzie kończy. Może to prowadzić do błędów składniowych, które uniemożliwiają poprawne działanie programu. Znak '$' w PHP jest używany do definiowania zmiennych, co czyni go całkowicie nieodpowiednim w kontekście komentarzy. Użycie '$' jako prefiksu dla zmiennych jest kluczowym elementem języka, ale nie ma nic wspólnego z oznaczaniem komentarzy. Przykładowo, $variable = 'value'; jest poprawnym użyciem, natomiast '$ This is a comment' nie będzie zrozumiane jako komentarz. Znak '--' jest często stosowany w SQL do komentowania linii, jednak w przypadku PHP jego użycie nie jest prawidłowe. Przyjęcie niepoprawnych metod dla komentarzy może prowadzić do nieczytelności kodu, a także do trudności w jego utrzymaniu i rozwoju przez innych programistów, co jest sprzeczne z najlepszymi praktykami w branży technicznej.

Pytanie 38

W edytorze grafiki rastrowej funkcja „dodaj kanał alfa” umożliwia

A. wyostrzenie krawędzi obrazu
B. powiększenie głębi ostrości obrazu
C. wprowadzenie warstwy z przezroczystością
D. ustawienie prawidłowego balansu bieli
Dodanie kanału alfa w edytorze grafiki rastrowej to w zasadzie otworzenie drzwi do pracy z przezroczystością w obrazie. Kanał alfa jest dodatkową składową pikseli, która oprócz wartości RGB określa też poziom przejrzystości danego fragmentu grafiki. Moim zdaniem, to jeden z kluczowych elementów, jeśli chcesz przygotować grafikę do profesjonalnych zastosowań, np. do webdesignu, gier czy produkcji materiałów do druku z efektem nakładania. Standardowym przykładem jest sytuacja, gdy przygotowujesz logo i zależy Ci, żeby tło było przezroczyste – wtedy bez kanału alfa ani rusz. W praktyce, po dodaniu kanału alfa możesz wymazywać fragmenty lub stosować selektywne przezroczystości, co daje mnóstwo kreatywnych możliwości. To taka podstawa, bez której ciężko wyobrazić sobie pracę z warstwami, maskami czy efektami blendingu. Z mojego doświadczenia, osoby zaczynające pracę z grafiką często nie zdają sobie sprawy, jak ważne jest świadome zarządzanie przezroczystością – a kanał alfa właśnie to umożliwia. Nawet w najpopularniejszych formatach plików, jak PNG, obsługa kanału alfa jest już praktycznie standardem branżowym. Warto też wiedzieć, że w formatach takich jak JPEG tego nie uzyskasz, bo nie obsługują przezroczystości. Tak więc, jeśli planujesz pracę z grafiką wielowarstwową, przygotowywanie sprite’ów czy nowoczesnych UI, kanał alfa to absolutna podstawa, nie tylko bajer.

Pytanie 39

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

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

Pytanie 40

Która z funkcji zdefiniowanych w języku PHP zwraca jako wynik połowę kwadratu wartości podanej jako argument?

A. function licz($a) {return echo $a/2;}
B. function licz($a) {return echo $a*$a/2;}
C. function licz($a) {echo $a/2;}
D. function licz($a) {echo $a*$a/2;}
Pierwsza z niepoprawnych odpowiedzi, która wykorzystuje 'echo', nie zwraca wartości, a jedynie ją wyświetla. Funkcje w PHP powinny zwracać wartości za pomocą 'return', aby umożliwić ich dalsze wykorzystanie. W przypadku drugiej odpowiedzi, również wykorzystanie 'echo' uniemożliwia zwrócenie wartości funkcji. Ostatecznie, operacja $a*$a/2 jest poprawna, ale brak 'return' sprawia, że nie możemy jej użyć w dalszej części kodu. Ostatnia z odpowiedzi zawiera składnię 'return echo', która jest niepoprawna w języku PHP, ponieważ 'return' i 'echo' nie mogą być używane razem w ten sposób. W PHP funkcja 'return' służy do zwracania wartości, a 'echo' do wyświetlania. Dlatego, nawet jeśli wyrażenie '$a*$a/2' jest poprawne, to sposób jego zwracania jest błędny. Te aspekty techniczne są kluczowe dla zrozumienia, jak funkcje powinny być prawidłowo implementowane w PHP, aby mogły być efektywne i zgodne z konwencjami języka.