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: 8 czerwca 2026 22:38
  • Data zakończenia: 8 czerwca 2026 23:07

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

W językach programowania strukturalnego do przechowywania danych o 50 uczniach (ich imionach, nazwiskach, średniej ocen) należy zastosować

A. tablicę 50 elementów o składowych strukturalnych.
B. klasę 50 elementów typu tablicowego.
C. strukturę 50 elementów o składowych tablicowych.
D. tablicę 50 elementów o składowych typu łańcuchowego.
Odpowiedź wskazująca na użycie tablicy 50 elementów o składowych strukturalnych jest poprawna z kilku powodów. Po pierwsze, struktury (lub klasy) są idealnym rozwiązaniem do przechowywania złożonych danych, takich jak imiona, nazwiska i średnie oceny uczniów. Struktura pozwala na grupowanie tych składowych w jedną jednostkę, co zwiększa czytelność i organizację kodu. Na przykład, w języku C można zdefiniować strukturę 'Uczeń' z odpowiednimi polami, a następnie stworzyć tablicę, która pomieści 50 takich obiektów. W praktyce, struktury są szeroko stosowane w programowaniu, gdyż umożliwiają łatwe przekazywanie grup danych jako jednego obiektu, co jest zgodne z zasadami programowania obiektowego. Dodatkowo, korzystanie z tablicy struktur zamiast oddzielnych tablic dla każdego atrybutu ucznia minimalizuje ryzyko błędów związanych z synchronizacją danych i ułatwia manipulację danymi. W standardach programowania, szczególnie w kontekście zarządzania danymi, takie podejście jest uznawane za najlepszą praktykę, gdyż pozwala na spójną reprezentację oraz operowanie na danych.

Pytanie 2

Jaki mechanizm kontroli bezpieczeństwa uruchamiania aplikacji zawiera środowisko .NET Framework?

A. realizowany przez funkcje Windows API
B. oparty na uprawnieniach kodu (CAS - Code Access Security) i na rolach (RBS - Role-Based Security)
C. realizowany przez frameworki aplikacji webowych (ASP.NET)
D. przeznaczony wyłącznie dla bibliotek klas
.NET Framework ma wbudowany model kontroli bezpieczeństwa uruchamianego kodu oparty na dwóch filarach: CAS (Code Access Security) przyznaje uprawnienia w zależności od POCHODZENIA i zaufania kodu (np. kod z sieci ma mniej praw niż lokalny), a RBS (Role-Based Security) decyduje o dostępie na podstawie ROLI i tożsamości użytkownika. Razem ograniczają, co dany kod i użytkownik mogą zrobić. Zapamiętaj: CAS = prawa kodu, RBS = prawa wg roli użytkownika.

Pytanie 3

W języku JavaScript zdefiniowano funkcję potega. Funkcja ta

function potega(a, b = 2) { ... return wynik; }
A. nie zwraca wartości
B. wymaga podania dwóch argumentów przy wywołaniu
C. może być wywołana z jedną wartością
D. nie przyjmuje żadnych argumentów
W JavaScript funkcja może przyjmować parametry, zwracać wartości i być wywoływana z różną liczbą argumentów. Odpowiedź, że funkcja potega nie przyjmuje parametrów, jest nieprawidłowa. W kodzie widzimy, że przyjmuje dwa parametry (a, b), z czego drugi ma wartość domyślną. Funkcja w JavaScript może zwracać wartość poprzez instrukcję return, co jest standardową praktyką w celu uzyskania wyniku operacji. Zatem stwierdzenie, że nie zwraca żadnej wartości, jest błędne. W kodzie widoczna jest instrukcja return, co oznacza, że funkcja zwraca wynik. Koncepcja, że funkcja wymaga podania dwóch parametrów przy wywołaniu, również jest błędna, ponieważ jeden z parametrów ma przypisaną wartość domyślną i może być pominięty podczas wywołania funkcji. Wartości domyślne w JavaScript pozwalają na bardziej elastyczne użycie funkcji, co jest ugruntowaną praktyką od czasu wprowadzenia standardu ES6, umożliwiając łatwe zarządzanie brakującymi argumentami bez komplikowania kodu.

Pytanie 4

Jaka wartość zostanie wypisana na standardowym wyjściu dla zamieszczonego w ramce fragmentu programu napisanego w języku C++ ?

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

int main( ){
    std::cout << obliczenia(32);
}
A. 32
B. 3
C. 0
D. 2
Dobra robota! Wybrałeś opcję 3, co oznacza, że zrozumiałeś, jak działają operatorzy w C++. W tym przykładzie mamy funkcję 'obliczenia', która przyjmuje argument 'x' równy 32. W środku tej funkcji wykonuje się operacja modulo (x %= 3), co w praktyce oznacza, że dzielimy 32 przez 3 i zostaje nam reszta, czyli 2. Później dodajemy 1 do 'x' (x++), co daje nam w sumie 3. I to właśnie ta liczba jest zwracana przez funkcję i wypisywana na ekranie przez 'std::cout'. Fajnie jest pamiętać, że '%=' skraca zapis do x = x % 3, a 'x++' to z kolei x = x + 1. Te skróty to codzienność w programowaniu, dlatego warto je znać. No i pamiętaj, że w C++ każda funkcja zwraca wartość przy użyciu 'return', a ta wartość jest potem używana tam, gdzie funkcję wywołujesz.

Pytanie 5

Aby prawidłowo utworzyć relację typu m:n nienarażoną na redundancję danych, należy:

A. uporządkować przynajmniej jedną z tabel
B. utworzyć tabelę pośredniczącą (łączącą)
C. bezpośrednio połączyć klucze obce obu tabel
D. bezpośrednio połączyć klucze główne obu tabel
Problem z tym pytaniem najczęściej bierze się z prób połączenia dwóch tabel wprost. Bezpośrednie spięcie kluczy obcych obu tabel nie pozwala zapisać sytuacji, w której jeden rekord wiąże się z wieloma rekordami po drugiej stronie i odwrotnie - żeby to objąć, trzeba by powielać dane, czyli wprowadzić redundancję. Tak samo nie pomoże łączenie kluczy głównych: to wariant tego samego błędu. Uporządkowanie (posortowanie) tabel dotyczy wyłącznie kolejności wyświetlania wierszy i nie zmienia struktury powiązań. Relację m:n poprawnie realizuje się przez tabelę pośredniczącą, która rozbija ją na dwie relacje 1:n i przechowuje każde powiązanie jako osobny wiersz.

Pytanie 6

SELECT ocena FROM oceny WHERE ocena > 2 ORDER BY ocena;
Załóżmy, że istnieje tabela oceny zawierająca kolumny id, nazwisko, imię oraz ocena. Przykładowe zapytanie ilustruje:
A. rekurencję.
B. selekcję.
C. łączenie.
D. sumę.
Zapytanie SQL przedstawione w pytaniu jest przykładem selekcji ponieważ wykorzystuje klauzulę WHERE do filtrowania danych. Selekcja w kontekście baz danych oznacza wybieranie konkretnych wierszy z tabeli które spełniają określone kryteria. W tym przypadku kryterium to ocena większa niż 2. Takie podejście jest bardzo powszechne i użyteczne w analizie danych pozwalając na uzyskanie tylko istotnych informacji spośród dużych zbiorów danych. Klauzula WHERE jest jednym z podstawowych narzędzi SQL wykorzystywanym w praktycznie każdym systemie zarządzania bazami danych jak MySQL PostgreSQL czy Oracle. Umożliwia ona tworzenie elastycznych i złożonych zapytań które mogą zawierać różnorodne warunki logiczne takie jak porównania czy wyrażenia regularne. Dobre praktyki w zakresie projektowania baz danych zalecają używanie selekcji do ograniczania ilości przetwarzanych danych co zwiększa wydajność systemów. Zrozumienie mechanizmu selekcji jest kluczowe dla skutecznego zarządzania i optymalizacji baz danych szczególnie w projektach o dużej skali.

Pytanie 7

Zamieszczony kod HTML formularza zostanie wyświetlony przez przeglądarkę w sposób:

<form>
stanowisko: <input type="text"> <br>
obowiązki: <br>
<input type="checkbox" name="obowiazki1" value="1" disabled checked> sporządzanie dokumentacji<br>
<input type="checkbox" name="obowiazki2" value="2" checked>pisanie kodu<br>
<input type="checkbox" name="obowiazki3" value="3">testy oprogramowania<br>
</form>
Ilustracja do pytania
A. C
B. D
C. B
D. A
Poprawna odpowiedź to forma, w której przeglądarka wyświetli treść formularza, uwzględniając zarówno etykiety, jak i wszystkie zaznaczone opcje. W tym przypadku, po wypełnieniu formularza, użytkownik zobaczy: "stanowisko: obowiązki: sporządzanie dokumentacji pisanie kodu testy oprogramowania". Kluczowym aspektem jest to, że w formularzu użyto atrybutu 'disabled' dla pierwszego checkboxa, co oznacza, że nie będzie on mógł zostać odznaczony przez użytkownika, ale mimo to jego etykieta zostanie wyświetlona. Przeglądarki internetowe renderują formularze na podstawie struktury HTML, a to, co jest niewidoczne dla użytkownika (checkboxy, które są odznaczone lub zablokowane), nie wpływa na wyświetlanie tekstowych etykiet. Zgodnie z zasadami dostępności i użyteczności, ważne jest, aby użytkownik miał pełny wgląd w dostępne opcje, co poprawia interakcję z formularzem. To podejście jest zgodne z dobrymi praktykami projektowania interfejsów użytkownika, które promują przezroczystość i jasność w komunikacji z użytkownikiem.

Pytanie 8

Które z rozszerzeń NIE jest związane z plikiem wideo?

A. MP4
B. MOV
C. AVI
D. GIF
Pozostałe rozszerzenia to formaty WIDEO: AVI, MP4 i MOV to kontenery przechowujące obraz ruchomy (zwykle z dźwiękiem). GIF jest inny - to format graficzny/animacja bez dźwięku, więc to on nie należy do plików wideo.

Pytanie 9

Na stronie www znajduje się formularz, do którego należy zaimplementować następujące funkcje: walidacja: podczas wypełniania formularza w czasie rzeczywistym sprawdzana jest poprawność danych, oraz przesyłanie danych: po wypełnieniu formularza i jego zatwierdzeniu informacje są przesyłane do bazy danych na serwerze. Aby wprowadzić tę funkcjonalność w najprostszy sposób, trzeba zapisać

A. walidację i przesyłanie danych w języku JavaScript
B. walidację w skrypcie PHP, a przesyłanie danych w JavaScript
C. walidację i przesyłanie danych w języku PHP
D. walidację w języku JavaScript, a przesyłanie danych w skrypcie PHP
Mówiąc szczerze, podejście, które zakłada walidację i przesyłanie danych tylko w PHP, to nie za bardzo dobry pomysł. Dlaczego? Bo każde weryfikowanie danych po stronie serwera wymaga przesyłania ich tam, co powoduje zbędne obciążenie. To z kolei może spowalniać interakcję z użytkownikiem, co jest frustrujące, zwłaszcza w przypadku większych formularzy. A walidacja w PHP i przesyłanie w JavaScript? Znowu nie jest to najlepsze rozwiązanie. Walidacja po stronie serwera nie jest natychmiastowa, więc użytkownik może czekać, co zazwyczaj nie jest fajne. Gdy ktoś weźmie niepoprawne dane, to musi czekać na odpowiedź serwera i to jest czasochłonne. Najlepiej łączyć walidację w JavaScript, bo to poprawia interakcję, a wysyłanie danych do serwera robić w PHP, bo on dba o bezpieczeństwo i kontakt z bazą danych. Takie rozdysponowanie zadań sprawia, że wszystko chodzi sprawnie i łatwiej to potem rozwijać, co jest zgodne z aktualnymi standardami.

Pytanie 10

Po zrealizowaniu polecenia użytkownik Jacek będzie miał możliwość

GRANT SELECT, INSERT ON baza1.mojaTabela TO 'Jacek'@'localhost';
A. usuwać tabelę i zakładać nową
B. usuwać rekordy z tabeli i przeglądać informacje
C. modyfikować strukturę tabeli oraz dodawać nowe dane
D. przeglądać dane w tabeli i wstawiać nowe dane
Polecenie GRANT SELECT, INSERT ON baza1.mojaTabela TO 'Jacek'@'localhost'; przyznaje użytkownikowi Jacek uprawnienia do przeglądania danych (SELECT) oraz wstawiania nowych danych (INSERT) do tabeli mojaTabela w bazie danych baza1. To oznacza, że Jacek nie ma możliwości usuwania tabeli ani zmiany jej struktury, co jest zarezerwowane dla uprawnień takich jak ALTER czy DROP. Zastosowanie tych uprawnień jest kluczowe w kontekście bezpieczeństwa i zarządzania danymi, ponieważ pozwala na kontrolowanie, kto może wykonywać określone operacje w bazie danych. Przykładem praktycznego zastosowania może być sytuacja, w której zespół programistów musi umożliwić pracownikom działu sprzedaży dostęp do danych klientów w tabeli, ale jednocześnie chce zapobiec przypadkowemu usunięciu lub modyfikacji struktury tabeli. W ten sposób, przyznając tylko uprawnienia SELECT i INSERT, administracja bazy danych może zapewnić odpowiedni poziom kontroli nad danymi, co jest zgodne z najlepszymi praktykami w zakresie zarządzania danymi i zabezpieczeń.

Pytanie 11

Model barw oparty na trzech parametrach: odcień (hue), nasycenie (saturation) i jasność (brightness/value) to

A. CMYK
B. CMY
C. RGB
D. HSV
Model HSV (zwany też HSB) opisuje barwę trzema parametrami: H - odcień (hue), S - nasycenie (saturation), V/B - jasność (value/brightness). Jest intuicyjny przy ręcznym doborze kolorów. Dlatego opisywany model to HSV.

Pytanie 12

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

A. include
B. import
C. open
D. require
Polecenie 'import' w CSS służy do załączenia zewnętrznego arkusza stylów, co jest kluczowe dla organizacji i modularności kodu CSS. Użycie '@import' pozwala na ładowanie stylów z innych plików CSS na początku arkusza stylów, co ułatwia zarządzanie dużymi projektami. Na przykład, jeśli mamy plik 'style.css' i chcemy zaimportować 'reset.css', możemy użyć następującej składni: '@import 'reset.css';'. Dzięki temu możemy utrzymać rozdzielenie różnych stylów, co sprzyja lepszej organizacji kodu oraz jego ponownemu użyciu w przyszłości. Warto również zaznaczyć, że standardy CSS sugerują, aby używać '@import' z rozwagą, gdyż każde zaimportowanie pliku powoduje dodatkowe żądanie HTTP, co może wpłynąć na czas ładowania strony. Z tego powodu, dla większych projektów, często lepiej jest łączyć wszystkie style w jeden plik podczas produkcji, co można osiągnąć za pomocą narzędzi do kompresji CSS. Użycie '@import' jest zatem zgodne z dobrymi praktykami, szczególnie w fazie rozwoju, gdzie modularność i łatwość w zarządzaniu kodem są priorytetowe.

Pytanie 13

Parametr face elementu <font> jest używany do wskazania

A. efektów czcionki
B. koloru czcionki
C. rozmiaru czcionki
D. nazwa czcionki
Odpowiedzi sugerujące, że parametr face dotyczy barwy, wielkości lub efektów czcionki opierają się na nieprawidłowym zrozumieniu funkcji znacznika <font>. Chociaż kolory czcionek można faktycznie definiować w HTML, to odpowiedzialny za nie jest inny atrybut – color. Warto zauważyć, że barwa tekstu jest istotnym elementem projektowania stron, ale jest to niezwiązane z parametrem face. Wielkość czcionki z kolei jest regulowana przez atrybut size, co również jest osobną kwestią. Efekty czcionki, takie jak pogrubienie czy kursywa, są osiągane za pomocą atrybutów takich jak bold i italic, natomiast face precyzuje wyłącznie nazwę czcionki. Powszechnym błędem w myśleniu jest zakładanie, że wszystkie aspekty stylizacji czcionek są ze sobą powiązane w jednym parametrze. Kluczowe jest zrozumienie, że HTML i CSS mają różne role w tworzeniu stron internetowych. HTML skupia się na strukturze dokumentu, podczas gdy CSS odpowiada za jego wygląd. W przypadku nowoczesnych praktyk kodowania, atrybut face jest uznawany za przestarzały, co sprawia, że korzystanie z CSS jest bardziej efektywne i zgodne z aktualnymi standardami projektowania stron. Zamiast polegać na starych metodach, warto dostosować się do współczesnych technik kodowania, które oferują większą elastyczność oraz lepsze wsparcie dla responsywności stron.

Pytanie 14

Który efekt został zaprezentowany na filmie?

A. Zwiększenie ostrości zdjęcia.
B. Zmniejszenie kontrastu zdjęcia.
C. Przenikanie zdjęć.
D. Zmiana jasności zdjęć.
Poprawnie wskazany efekt to przenikanie zdjęć, często nazywane też płynnym przejściem (ang. crossfade). Polega to na tym, że jedno zdjęcie stopniowo zanika, jednocześnie drugie pojawia się z narastającą widocznością. W praktyce technicznej realizuje się to najczęściej przez zmianę przezroczystości (opacity) dwóch warstw – jedna warstwa z pierwszym obrazem ma zmniejszaną wartość opacity z 1 do 0, a druga z kolejnym zdjęciem zwiększaną z 0 do 1. Na stronach WWW taki efekt robi się zwykle za pomocą CSS (transition, animation, keyframes) albo JavaScriptu, czasem z użyciem bibliotek typu jQuery czy gotowych sliderów. Moim zdaniem to jest jeden z podstawowych efektów, który warto umieć odtworzyć, bo pojawia się w galeriach, sliderach na stronach głównych, prezentacjach produktów czy prostych pokazach slajdów. W materiałach multimedialnych, np. w edycji wideo, dokładnie ten sam efekt nazywa się przejściem typu „cross dissolve” lub „fade”, i zasada działania jest identyczna – płynne nakładanie się dwóch klatek obrazu w czasie. Dobre praktyki mówią, żeby nie przesadzać z czasem trwania przenikania: zwykle 0,5–1,5 sekundy daje przyjemny, profesjonalny wygląd, bez wrażenia „zamulenia” interfejsu. Warto też pilnować spójności – jeśli na stronie używasz przenikania w jednym miejscu, dobrze jest utrzymać podobny styl animacji w innych elementach, żeby całość wyglądała konsekwentnie i nie rozpraszała użytkownika. W kontekście multimediów na WWW przenikanie jest też korzystne wydajnościowo, bo operuje głównie na właściwości opacity i transformacjach, które przeglądarki potrafią optymalizować sprzętowo.

Pytanie 15

W kodzie HTML przypisano pewne znaczniki do klasy o nazwie "nomargin". Jak można przeprowadzić operacje na tych znacznikach w języku JavaScript, korzystając z odpowiedniej funkcji?

A. getElementsByClassName("nomargin")
B. getElement("nomargin")
C. getElementById("nomargin")
D. getElementsByTagName("nomargin")
Wybór odpowiedzi 'getElementsByClassName("nomargin")' jest właściwy, ponieważ ta funkcja umożliwia selekcję wszystkich elementów HTML, które mają przypisaną daną klasę. W tym przypadku klasa to 'nomargin'. Funkcja ta zwraca kolekcję elementów, co jest bardzo przydatne w manipulacji DOM, gdyż pozwala na wykonywanie operacji na wielu elementach jednocześnie. Przykładowo, jeśli chcemy usunąć marginesy z wszystkich elementów, które mają tę klasę, możemy wykorzystać zwróconą kolekcję do iteracji i zastosować odpowiednie style CSS. Kod mógłby wyglądać tak: var elements = document.getElementsByClassName('nomargin'); for (var i = 0; i < elements.length; i++) { elements[i].style.margin = '0'; }. Standardy JavaScript oraz DOM odnoszą się do używania tej funkcji jako efektywnej metody nawiązywania interakcji z elementami na stronie. Warto także pamiętać, że getElementsByClassName zwraca „żywą” kolekcję, co oznacza, że zmiany w DOM będą natychmiast widoczne w tej kolekcji.

Pytanie 16

Która operacja NIE zmieni rozmiaru (wagi) pliku graficznego?

A. zmiana rozmiaru WYŚWIETLANIA obrazu atrybutami HTML
B. zmiana rozdzielczości obrazu
C. interpolacja
D. kompresja
Pozostałe operacje realnie zmieniają plik. Zmiana rozdzielczości modyfikuje liczbę pikseli zapisanych w obrazie, interpolacja przelicza piksele przy zmianie wymiarów, a kompresja celowo redukuje ilość danych. Każda z nich wpływa na wagę pliku - inaczej niż samo skalowanie wyświetlania w HTML.

Pytanie 17

Jak przy użyciu języka PHP można zapisać w ciasteczku wartość z zmiennej dane na okres jednego dnia?

A. setcookie("dane",$dane,time()+(3600*24))
B. setcookie("dane",$dane,0)
C. setcookie("dane",$dane,time())
D. setcookie("dane","dane",0)
Odpowiedź setcookie("dane", $dane, time() + (3600 * 24)); jest prawidłowa, ponieważ wykorzystuje funkcję setcookie, która pozwala na ustawienie ciasteczka w PHP. W pierwszym argumencie podajemy nazwę ciasteczka, w drugim jego wartość, a w trzecim czasie wygaśnięcia, który jest określony jako aktualny czas (time()) plus 24 godziny w sekundach (3600 sekund w godzinie razy 24). Takie podejście zapewnia, że ciasteczko będzie dostępne przez jeden dzień, co jest zgodne z dobrymi praktykami w zakresie zarządzania stanem użytkownika. Ciasteczka są powszechnie stosowane w aplikacjach webowych do przechowywania danych użytkownika pomiędzy sesjami, co zwiększa komfort korzystania z serwisów. Przykładem może być zapisanie preferencji użytkownika lub informacji o sesji. Warto pamiętać, że przed użyciem setcookie nie może być wysłany żaden HTML, więc ta funkcja powinna być wywoływana przed jakimkolwiek innym kodem, który generuje wyjście.

Pytanie 18

Który z czynników ma negatywny wpływ na efektywną współpracę w zespole?

A. efektywna komunikacja
B. jasny podział ról i obowiązków
C. wzajemny szacunek
D. rywalizacja między członkami zespołu
Efektywna współpraca w zespole opiera się na zaufaniu, wzajemnym szacunku, dobrej komunikacji i jasnym podziale ról. Czynnikiem, który ją osłabia, jest rywalizacja między członkami zespołu - zamiast dążyć do wspólnego celu, ludzie zaczynają konkurować, ukrywać informacje i przypisywać sobie zasługi, co rodzi konflikty. Zdrowa współpraca stawia na wspólny wynik, a nie na pokonanie kolegów. Dlatego negatywny wpływ ma rywalizacja w zespole.

Pytanie 19

Przedstawione zapytanie SQL przydziela uprawnienie SELECT

GRANT SELECT ON hurtownia.*
TO 'sprzedawca'@'localhost';
A. do wszystkich tabel w bazie hurtownia
B. do wszystkich kolumn w tabeli hurtownia
C. dla użytkownika root na serwerze localhost
D. dla użytkownika root na serwerze sprzedawca
Polecenie GRANT SELECT ON hurtownia.* pozwala na przyznanie prawa do wykonywania operacji SELECT na wszystkich tabelach w bazie danych hurtownia. Użycie symbolu * po nazwie bazy danych wskazuje na wszystkie tabele w tej konkretnej bazie. Jest to standardowe podejście w systemach zarządzania bazami danych takich jak MySQL, gdzie specyfikacja bazy danych z symbolem * oznacza pełny zakres tabel. Praktycznie oznacza to, że użytkownik ma możliwość przeglądania danych ze wszystkich tabel bez możliwości modyfikacji czy usuwania danych. Takie rozwiązanie stosowane jest często w przypadku ról użytkowników, którzy potrzebują jedynie dostępu do raportowania i analizy danych. Dobre praktyki w zakresie zarządzania uprawnieniami zalecają przydzielanie dokładnie takich praw, jakie są potrzebne do wykonania określonych zadań, co ogranicza ryzyko niepożądanych zmian w bazie danych. Warto zaznaczyć, że precyzyjne zarządzanie prawami dostępu jest kluczowe dla bezpieczeństwa danych w każdej organizacji.

Pytanie 20

Zawarty w ramce fragment kodu w języku JavaScript

Ilustracja do pytania
A. przypisze zmiennej s długość tekstu ze zmiennej t
B. przypisze do zmiennej s fragment tekstu ze zmiennej t o długości określonej przez zmienną length
C. wyświetli długość tekstu ze zmiennej t
D. przypisze do zmiennej s zmienną t
Funkcja length w JavaScript jest prostą i potężną metodą, która zwraca długość łańcucha znaków. W przypadku zmiennej t przypisanej do wartości Ala ma kota., kiedy wywołujemy t.length, otrzymujemy liczbę znaków w tym łańcuchu, która wynosi 12, wliczając spacje i znak kropki. Przypisanie s=t.length; oznacza, że zmienna s przyjmie wartość liczbową 12. Jest to standardowy sposób mierzenia długości tekstu w większości języków programowania i jest szeroko stosowany w codziennym programowaniu, np. przy walidacji danych wejściowych, budowaniu dynamicznych interfejsów użytkownika czy przetwarzaniu tekstu. Metoda ta jest częścią podstawowej składni JavaScriptu i jest dobrze wspierana przez wszystkie współczesne przeglądarki, co czyni ją niezawodnym narzędziem w pracy z tekstem. Rozumienie tego mechanizmu jest kluczowe dla efektywnego zarządzania danymi tekstowymi i może być rozwijane poprzez praktyczne ćwiczenia w projektach związanych z analizą tekstu czy tworzeniem dynamicznych aplikacji webowych.

Pytanie 21

Jaki jest wynik wykonania pętli for w poniższym kodzie PHP, jeśli chodzi o wypisanie liczb?

<?php
for($i=5; $i>1; $i-=2)
echo (
$i%2) . " " ;
?
>
A. 1 1
B. 1 0 1
C. 1 0 1 0
D. 1 0
Analizując inne odpowiedzi zwróćmy uwagę na błędy w logice pętli i operacji modulo które mogą prowadzić do błędnych wyników. Jedną z częstych pomyłek jest niedokładne zrozumienie działania operatora % który zwraca resztę z dzielenia. W kontekście pętli for ważne jest zrozumienie że zmienna kontrolująca i jest modyfikowana zgodnie z określonym krokiem tutaj i -= 2 co oznacza że i zmniejsza się o 2 w każdej iteracji pętli. Niepoprawne odpowiedzi mogą wynikać z założenia że pętla wykonuje się dla innych wartości i niż te faktycznie użyte. Na przykład wynik 1 0 1 0 sugeruje błędne założenie o nieparzystym kroku lub innej inicjalizacji zmiennej i. Możliwe że interpretacja warunku końcowego i > 1 nie została właściwie zrozumiana co prowadzi do założenia że pętla trwa dłużej niż powinna. Innym błędem może być zaniedbanie uwzględnienia kolejności wykonania instrukcji w ciele pętli. Zapominanie o dokładnym zrozumieniu jak działa i jest modyfikowane w każdej iteracji pętli może prowadzić do oczekiwania niepoprawnych wyników. Edukacyjnie ważne jest upewnienie się że każdy krok pętli jest dokładnie przeanalizowany a wynik działania operatora modulo jest zawsze przewidywalnie interpretowany w ramach iteracji pętli. Zrozumienie tych zasad jest kluczowe w pisaniu wydajnego i bezbłędnego kodu w PHP i innych językach programowania.

Pytanie 22

Tabela wycieczki ma pola nazwa, cena, miejsca. Która kwerenda zwróci nazwy wycieczek tańszych niż 2000 i z CO NAJMNIEJ 4 wolnymi miejscami?

A.
SELECT * FROM wycieczki WHERE cena < 2000 AND miejsca > 4;
B.
SELECT nazwa FROM wycieczki WHERE cena < 2000 OR miejsca > 4;
C.
SELECT * FROM wycieczki WHERE cena < 2000 OR miejsca > 3;
D.
SELECT nazwa FROM wycieczki WHERE cena < 2000 AND miejsca > 3;
Oba kryteria muszą być spełnione naraz, więc łączymy je operatorem AND: cena poniżej 2000 (cena < 2000) i co najmniej 4 wolne miejsca. „Co najmniej 4” to miejsca >= 4, równoważne miejsca > 3. Wybieramy same nazwy: SELECT nazwa FROM wycieczki WHERE cena < 2000 AND miejsca > 3;. Dlatego ta kwerenda jest poprawna.

Pytanie 23

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 24

Którego polecenia użyć, aby usunąć WSZYSTKIE rekordy z tabeli, nie usuwając jej samej?

A.
DROP
B.
ALTER
C.
UPDATE
D.
TRUNCATE
Pozostałe polecenia robią co innego. DROP usunąłby CAŁĄ tabelę (razem ze strukturą). ALTER zmienia strukturę tabeli, a UPDATE modyfikuje wartości w istniejących wierszach, nie usuwając ich. Opróżnienie tabeli z rekordów daje TRUNCATE.

Pytanie 25

Jak określa się element, który został oznaczony znakiem zapytania w strukturze platformy .NET, a który pozwala na tworzenie indywidualnych aplikacji z wykorzystaniem frameworków oraz na przekształcanie kompilowanego kodu pośredniego na kod maszynowy procesora znajdującego się w komputerze?

Ilustracja do pytania
A. Biblioteka klas bazowych (BCL)
B. Infrastruktura językowa (CLI)
C. Wspólne środowisko programistyczne (CLP)
D. Wspólne środowisko uruchomieniowe (CLR)
Wspólne środowisko uruchomieniowe (CLR) jest kluczowym komponentem platformy .NET, który odpowiada za zarządzanie wykonywaniem programów napisanych w różnych językach programowania. CLR działa jako wirtualna maszyna i umożliwia uruchamianie aplikacji poprzez kompilację kodu pośredniego (CIL) do kodu maszynowego właściwego dla danego procesora. Jednym z głównych zadań CLR jest zarządzanie pamięcią, w tym automatyczne zarządzanie zasobami oraz usuwanie nieużywanych obiektów za pomocą mechanizmu garbage collection. Ponadto CLR zapewnia bezpieczeństwo typów i izolację, co pozwala na lepszą kontrolę nad integralnością aplikacji. Dzięki takiemu podejściu, deweloperzy mogą skupić się na logice aplikacyjnej, nie martwiąc się o niskopoziomowe szczegóły związane z zarządzaniem pamięcią. CLR wspiera także interoperacyjność między różnymi językami, co oznacza, że komponenty napisane w jednym języku mogą być używane w aplikacjach napisanych w innym języku, co zwiększa elastyczność i możliwości wielokrotnego użycia kodu. Dzięki CLR deweloperzy mogą tworzyć stabilne i wydajne aplikacje w sposób efektywny i zgodny z nowoczesnymi standardami programistycznymi.

Pytanie 26

Zapytanie: SELECT imie, pesel, wiek FROM dane WHERE wiek IN (18,30) spowoduje zwrócenie:

A. imion, nazwisk oraz numerów PESEL osób mających mniej niż 18 lat
B. imion, numerów PESEL oraz wieku osób w przedziale od 18 do 30 lat
C. imion, numerów PESEL oraz wieku osób, które mają więcej niż 30 lat
D. imion, numerów PESEL oraz wieku osób, których wiek wynosi 18 lub 30 lat
Zapytanie SQL, które zostało podane, wykorzystuje klauzulę WHERE z operatorem IN, co oznacza, że wybiera tylko te rekordy, które spełniają określone warunki. W tym przypadku, filtrujemy osoby na podstawie ich wieku, wybierając tylko te, które mają 18 lub 30 lat. W związku z tym, wynik zapytania będzie zawierał imiona, numery PESEL oraz wiek osób, które mają dokładnie 18 lub 30 lat. W praktyce, takie zapytania są niezwykle użyteczne w bazach danych, gdzie często potrzebujemy uzyskać dane dla konkretnej grupy wiekowej. Dobrą praktyką jest również stosowanie takich filtrów, aby unikać błędów w analizach danych i zapewnić, że wyniki są zgodne z oczekiwaniami. Na przykład, jeśli prowadzisz badania demograficzne, możesz chcieć skupić się na określonych grupach wiekowych, co pozwala na bardziej szczegółowe wnioski i lepsze zrozumienie danej populacji."}

Pytanie 27

Która funkcja PHP służy do ZAPISYWANIA danych do pliku?

A.
fputs()
B.
fopen()
C.
fgets()
D.
freadfile()
Funkcja fputs() zapisuje dane do otwartego pliku (to alias fwrite()). Dlatego do zapisu do pliku służy fputs().

Pytanie 28

Jak dołączyć do strony skrypt z pliku przyklad.js?

A.
<script>przyklad.js</script>
B.
<script src="/przyklad.js"></script>
C.
<script link="przyklad.js"></script>
D.
<link rel="script" href="/przyklad.js">
Pozostałe wersje nie zadziałają. <script>przyklad.js</script> potraktuje „przyklad.js” jako KOD do wykonania, a nie ścieżkę do pliku. link="przyklad.js" używa atrybutu, którego <script> nie zna, a <link rel="script"> służy do zasobów typu arkusze CSS, nie skryptów. Plik JS dołącza <script src="/przyklad.js"></script>.

Pytanie 29

Grafika, która ma być pokazana na stronie, powinna mieć transparentne tło. Podaj format pliku graficznego, w którym należy go zapisać.

A. BMP
B. PNG
C. JPEG
D. CDR
Wybór formatów takich jak CDR, BMP czy JPEG do tworzenia obrazów z przezroczystym tłem nie jest zalecany z kilku powodów. Format CDR, będący natywnym formatem CorelDRAW, jest używany głównie w kontekście edycji wektorowej, a przezroczystość nie jest jego główną cechą. Pliki CDR są trudne do użycia w aplikacjach webowych i nie są szeroko wspierane przez przeglądarki, co ogranicza ich praktyczność w użytkowaniu. BMP (Bitmap) to format, który nie obsługuje przezroczystości; jest to format bezstratny, ale znacznie zwiększa rozmiar pliku, co może wpływać na wydajność ładowania strony internetowej. BMP jest rzadko używany w zastosowaniach webowych, ponieważ nie jest zoptymalizowany pod kątem sieci. Z kolei JPEG (Joint Photographic Experts Group) jest formatem stratnym, który nie obsługuje przezroczystości ani kanału alpha. Używanie JPEG do grafik z przezroczystym tłem prowadzi do niepożądanych efektów, jak białe prostokąty w miejscach, gdzie powinno być tło przezroczyste. Typowym błędem myślowym jest założenie, że wszystkie formaty graficzne mogą być używane zamiennie, podczas gdy każdy z nich ma swoje specyficzne zastosowania, ograniczenia i rekomendacje. Wybór niewłaściwego formatu może prowadzić do pogorszenia jakości wizualnej oraz spowolnienia działania aplikacji webowych.

Pytanie 30

W tabeli Recepta pola Imię oraz Nazwisko odnoszą się do pacjenta, dla którego recepta została wystawiona. Jaką kwerendę należy wykorzystać, aby dla wszystkich recept uzyskać datę ich wystawienia oraz imię i nazwisko lekarza, który je wystawił?

Ilustracja do pytania
A. SELECT Imie, DataWystawienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id
B. SELECT Imie, Nazwisko, DataWystawienia FROM Recepta
C. SELECT Lekarz.Imie, Lekarz.Nazwisko, DataWystawienia FROM Recepta JOIN Lekarz ON Recepta.Lekarz_id = Lekarz.id
D. SELECT Lekarz.Imie, Lekarz.Nazwisko, DataWystawienia FROM Recepta
Zauważyłem, że dobrze zrozumiałeś, jak skonstruować kwerendę SQL, która łączy dane lekarza z datą wystawienia recepty. Użycie klauzuli JOIN to kluczowa sprawa, bo dzięki temu możesz połączyć tabele Recepta i Lekarz na podstawie odpowiednich kluczy. Dzięki temu dostajesz imię i nazwisko lekarza, który wypisał daną receptę. Klauzula SELECT, którą używasz, wskazuje, co chcesz zobaczyć – w tym przypadku Imie i Nazwisko z tabeli Lekarz oraz Datę Wystawienia z tabeli Recepta. To jest naprawdę podstawowa umiejętność, która pomaga w pracy z relacyjnymi bazami danych. Z mojego doświadczenia, umiejętność tworzenia takich zapytań, pomoże nie tylko w nauce, ale i w przyszłej pracy, bo baza danych rzadko jest prosta i często trzeba łączyć różne dane. I jeszcze jedna rzecz: używanie JOIN w odpowiedni sposób może przyspieszyć działanie zapytań, co jest ważne, gdy mamy do czynienia z dużą ilością danych.

Pytanie 31

Zaprezentowano poniżej obsługę

if (!isset($_COOKIE[$nazwa]))
  echo "nie ustawiono!";
else
  echo "ustawiono: " . $_COOKIE[$nazwa];
A. bazy danych
B. zmiennych tekstowych
C. ciasteczek
D. sesji
Obsługa ciasteczek jest kluczowym elementem w zarządzaniu stanem w aplikacjach webowych. Ciasteczka, czyli małe pliki tekstowe przechowywane w przeglądarce użytkownika, pozwalają na śledzenie aktywności użytkownika między stronami i sesjami. W kodzie powyżej widzimy użycie globalnej tablicy PHP $_COOKIE do sprawdzania, czy ciasteczko o określonej nazwie zostało ustawione. Funkcja isset() sprawdza, czy zmienna jest zdefiniowana i nie jest null. Jeśli ciasteczko istnieje, jego wartość jest wyświetlana. Ciasteczka są powszechnie używane do zarządzania sesjami, personalizacji treści czy śledzenia zachowań użytkowników. W praktyce, zabezpieczenia są ważnym aspektem zarządzania ciasteczkami. Powinny być szyfrowane i oznaczone jako HttpOnly oraz Secure, aby zminimalizować ryzyko kradzieży informacji przez ataki XSS. Programiści powinni także stosować polityki prywatności zgodnie z regulacjami RODO, informując użytkowników o użyciu ciasteczek. Zrozumienie tych mechanizmów jest fundamentalne dla budowy bezpiecznych i funkcjonalnych aplikacji webowych.

Pytanie 32

W języku JavaScript, w celu przekształcenia specjalnie przygotowanego tekstu w tablicę, można wykorzystać metodę

A. split()
B. trim()
C. slice()
D. replace()
Użycie metod takich jak trim(), replace() czy slice() w kontekście zamiany tekstu na tablicę jest nieprawidłowe z kilku powodów. Metoda trim() służy do usuwania białych znaków (spacji, tabulatorów itp.) z początku i końca ciągu znaków. Choć jest to przydatne w wielu sytuacjach, nie ma ona żadnego wpływu na strukturę samego tekstu, a tym samym nie może być używana do przekształcania ciągu w tablicę. Z kolei replace() jest metodą, która zastępuje podciąg w łańcuchu, ale nie dzieli go na elementy. Na przykład, użycie replace() na ciągu "Jan,Kasia,Piotr" z celem uzyskania tablicy spowoduje, że nadal będziemy mieć jeden łańcuch, w którym nie będą mogły wystąpić oddzielne elementy. Natomiast metoda slice() służy do wycinania określonej części łańcucha, co również nie prowadzi do generowania tablicy. Powszechnym błędem myślowym jest założenie, że te metody mogą spełniać funkcję podziału tekstu, podczas gdy ich rzeczywiste zastosowanie jest zupełnie inne. W praktyce, stosując metody, które nie są przeznaczone do dzielenia tekstu, programiści mogą napotkać problemy z wydajnością i czytelnością kodu, co jest sprzeczne z zasadami dobrego programowania. Zrozumienie różnicy między tymi metodami oraz ich odpowiednim zastosowaniem jest kluczowe dla efektywnej pracy z danymi tekstowymi i zapewnia, że procesy przetwarzania informacji w aplikacjach są zarówno efektywne, jak i łatwe do utrzymania.

Pytanie 33

W języku SQL wydano polecenie

CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8';
Jednak operacja ta zakończyła się niepowodzeniem z powodu błędu: #1396 - Operation CREATE USER failed for 'anna'@'localhost'. Możliwą przyczyną tego problemu bazy danych może być:
A. nieznane polecenie CREATE USER
B. niewystarczająca siła hasła dla konta anna
C. błędna składnia polecenia CREATE USER
D. istnienie użytkownika anna w bazie danych
Wybrana przez Ciebie odpowiedź o zbyt słabym haśle dla konta 'anna' jest nietrafiona. Podczas tworzenia użytkownika w MySQL ustalasz nowego użytkownika i hasło, które jeszcze nie jest połączone z żadnym drugim kontem. Zasady bezpieczeństwa mówią, że hasła powinny być mocne, ale w tym przypadku słabe hasło nie wywołuje błędu #1396. Słabe hasło może być problemem przy późniejszej edycji konta, ale nie przy zakładaniu nowego. Co więcej, jeśli chodzi o składnię CREATE USER, to w twoim poleceniu nie masz błędu. To, że hasło jest słabe, to istotny temat, ale musi być zgodne z zasadami, które ustala firma. I pamiętaj, polecenie CREATE USER jest standardem w MySQL, więc jeśli nie znasz, to warto się z nim zapoznać. Większość błędów przy użytkownikach bierze się z braku zrozumienia, jak działa system autoryzacji w bazach danych. Warto znać zasady dotyczące uprawnień, żeby lepiej zarządzać dostępem do baz.

Pytanie 34

Z ilustracji można odczytać, że użytkownik bazy danych posiada uprawnienia do:

Ilustracja do pytania
A. wyświetlania, aktualizacji i usuwania danych.
B. dodawania, aktualizacji i usuwania danych.
C. wyświetlania, dodawania i usuwania danych.
D. wyświetlania, dodawania i aktualizacji danych.
Na ilustracji widać listę uprawnień do bazy danych w typowym narzędziu administracyjnym (bardzo podobne okno można spotkać np. w phpMyAdminie). Zaznaczone są pola SELECT, UPDATE i DELETE, a niezaznaczone INSERT oraz FILE. W praktyce oznacza to, że użytkownik może odczytywać dane (SELECT), modyfikować istniejące rekordy (UPDATE) oraz je usuwać (DELETE), ale nie ma prawa dodawać nowych wierszy (INSERT) ani operować na plikach na serwerze (FILE). Dlatego poprawna odpowiedź to: „wyświetlania, aktualizacji i usuwania danych”. SELECT odpowiada za wyświetlanie/odczyt danych, UPDATE za aktualizację rekordów, a DELETE za kasowanie danych w tabelach. W administracji bazą danych takie precyzyjne rozróżnienie uprawnień jest jedną z podstawowych dobrych praktyk bezpieczeństwa: użytkownik powinien mieć dokładnie takie prawa, jakich potrzebuje do pracy (zasada najmniejszych uprawnień – least privilege). Na przykład: typowy użytkownik aplikacji raportującej potrzebuje zwykle tylko SELECT, bo ma jedynie oglądać dane. Pracownik działu obsługi klienta może mieć SELECT i UPDATE, aby poprawiać błędne dane klientów, ale niekoniecznie DELETE, żeby przypadkiem nie usuwać rekordów. Z kolei konto techniczne używane przez skrypty migracyjne albo instalator systemu może mieć pełen zestaw: SELECT, INSERT, UPDATE, DELETE. Moim zdaniem warto od razu kojarzyć te nazwy z typowymi poleceniami SQL, bo później, przy pisaniu zapytań w kodzie (PHP, JavaScript z backendem, itp.), dokładnie te same słowa kluczowe pojawiają się w instrukcjach. Jeśli system pokazuje uprawnienia tak jak na obrazku, zawsze patrz najpierw, które checkboxy są zaznaczone, i od razu tłumacz je sobie na: odczyt, dodawanie, zmiana, usuwanie danych.

Pytanie 35

W znaczniku meta w miejsce kropek należy wpisać

<meta name="description" content="…">
A. informację o dostosowaniu do urządzeń mobilnych.
B. streszczenie treści strony.
C. nazwę edytora.
D. język dokumentu.
Mówiąc, że w znaczniku meta w polu 'content' trzeba umieścić nazwę edytora, to trochę nie na miejscu. Opis strony powinien odnosić się do tego, co właściwie na niej jest, a nie do narzędzia, którym została zrobiona. Tak samo mówienie o definicji języka dokumentu w tym miejscu jest błędne, bo powinno się to robić z atrybutem 'lang' w znaczniku <html>. Wstawianie informacji o wersji mobilnej do pola 'content' znacznika meta też wprowadza w błąd, bo takie rzeczy zazwyczaj są podawane przez odpowiednie style CSS i znacznik <meta name='viewport'>. Często użytkownicy mogą się mylić, myśląc że te informacje można zamieścić w opisie, co jest nieprawda. Każda z tych odpowiedzi pokazuje, że nie do końca rozumiesz, jak działają znaczniki meta i jaka jest ich rola przy tworzeniu stron. Ważne jest, żeby znać gdzie i jak używać różnych atrybutów, bo to wpływa na SEO i na to, jak strona wygląda w wynikach wyszukiwania oraz jakie wartościowe informacje dostarczasz użytkownikom.

Pytanie 36

Zapis CSS

margin: auto;
wskazuje, że marginesy są
A. równe domyślnym wartościom marginesów elementu, do którego są przypisane
B. dziedziczone z elementu nadrzędnego dla danego obiektu
C. obliczane przez przeglądarkę w taki sposób, aby element został wyśrodkowany poziomo
D. stałe dla konkretnej przeglądarki, niezależnie od rozmiaru jej okna
Wybór odpowiedzi, że marginesy są odziedziczone po elemencie rodzica, jest niepoprawny, ponieważ w CSS marginesy nie są dziedziczone tak jak inne właściwości, takie jak kolor tekstu czy czcionka. Marginesy są zazwyczaj stosowane jako zewnętrzna przestrzeń wokół elementów, a ich wartości są określane niezależnie od elementów rodzicielskich. Wartości marginesów są zdefiniowane dla danego elementu, a nie dziedziczone, co oznacza, że każde wystąpienie marginesu jest osobno specyficzne dla swojego elementu. Ponadto, stwierdzenie, że marginesy są stałe dla danej przeglądarki, niezależnie od rozmiaru jej okna, również jest błędne. CSS pozwala na elastyczne dopasowywanie marginesów i innych właściwości w zależności od układu strony i rozmiaru okna przeglądarki. Z kolei twierdzenie, że marginesy są równe domyślnym wartościom marginesów elementu, jest mylące, ponieważ domyślne wartości mogą różnić się w zależności od przeglądarki, a także są często nadpisywane przez style CSS. Typowym błędem myślowym jest zakładanie, że wszystkie właściwości CSS są dziedziczne, co prowadzi do nieporozumień w implementacji i projektowaniu układów stron. Warto zapoznać się z dokumentacją i standardami CSS, aby lepiej zrozumieć, jak działa model pudełkowy oraz właściwości marginesów.

Pytanie 37

W CSS, aby zastosować efekt przekreślenia, a także podkreślenia dolnego lub górnego w tekście, należy użyć

A. text-indent
B. text-decoration
C. text-transform
D. text-align
Odpowiedź 'text-decoration' jest prawidłowa, ponieważ ta właściwość CSS umożliwia dodawanie różnych efektów dekoracyjnych do tekstu, takich jak przekreślenie, podkreślenie oraz nadkreślenie. Przykładowo, aby przekreślić tekst, możesz użyć następującego kodu: 'text-decoration: line-through;'. Z kolei dla podkreślenia tekstu zastosujesz 'text-decoration: underline;'. W kontekście standardów CSS3, 'text-decoration' ma na celu nie tylko estetykę, ale także poprawę czytelności, co jest kluczowe w projektowaniu responsywnych i dostępnych stron internetowych. Warto również pamiętać o dobrych praktykach, takich jak unikanie nadmiernego stosowania dekoracji, które mogą odwracać uwagę od treści. W praktyce, kontrolowanie wyglądu tekstu za pomocą 'text-decoration' pozwala na tworzenie bardziej zróżnicowanych i atrakcyjnych interfejsów użytkownika, co w efekcie może zwiększyć zaangażowanie odwiedzających stronę.

Pytanie 38

void wypisz(int n) {
    for (int i = 1; i <= n; i++) {
        System.out.println("Wykonanie operacji po raz " + i);
    }
    System.out.println("Wykonanie kolejnej operacji!");
}
Złożoność obliczeniowa prezentowanego kodu wynosi:
A. O(1)
B. O(n!)
C. O(n²)
D. O(n)
Kod z zadania jest klasycznym przykładem na to, jak wygląda złożoność liniowa i gdzie łatwo się pomylić przy jej ocenie. Wiele osób, widząc pętlę, próbuje od razu dopasować jedną z „groźnie” wyglądających złożoności, jak n² czy n!, bo brzmią bardziej skomplikowanie. Tymczasem analiza powinna być spokojna i oparta na policzeniu, ile razy realnie wykonuje się dana instrukcja.

W zaprezentowanej funkcji mamy jedną pętlę for, która startuje od 1 i kończy na n, więc iteruje dokładnie n razy. W każdej iteracji wykonywane jest jedno wywołanie System.out.println z prostą konkatenacją tekstu i zmiennej i. To oznacza, że liczba tych wywołań rośnie liniowo wraz z n. Po pętli jest jeszcze jedno, pojedyncze wypisanie. Dodanie stałej liczby operacji (tu: +1) nie zmienia charakteru wzrostu – w notacji O() takie stałe są pomijane, bo dla dużych n nie mają znaczenia.

Złożoność O(n²) pojawiłaby się, gdyby wewnątrz tej pętli była kolejna pętla, zależna również od n, np. for (int j = 1; j <= n; j++). Wtedy liczba iteracji wyniosłaby n * n, czyli n². W tym kodzie tego nie ma, więc przypisywanie mu n² jest typowym przeszacowaniem związanym z automatycznym kojarzeniem „pętla = kwadrat”. To błąd myślowy: jedna pętla → O(n), dwie zagnieżdżone → często O(n²), ale trzeba to zawsze policzyć, a nie zgadywać.

Z kolei O(n!) opisuje algorytmy ekstremalnie kosztowne, jak pełne permutowanie elementów (np. brutalne generowanie wszystkich możliwych ustawień). W naszym przykładzie nie ma ani permutacji, ani rekurencji, ani eksplodującej liczby kombinacji. Jedynie proste przejście po kolejnych liczbach od 1 do n, więc factorial tutaj kompletnie nie pasuje.

O(1) oznaczałoby, że czas działania nie zależy w ogóle od n – na przykład pojedyncze wywołanie metody, prosta operacja arytmetyczna, odczyt elementu z tablicy po indeksie. Tutaj jednak im większe n, tym więcej razy wykonuje się pętla i tym dłużej program działa. To już wyklucza złożoność stałą.

Z mojego doświadczenia warto zawsze zadać sobie dwa pytania: ile razy wykona się pętla i czy wewnątrz niej nie ma kolejnych pętli lub wywołań kosztownych algorytmów. Taka spokojna analiza krok po kroku pozwala uniknąć mylenia złożoności liniowej z kwadratową, stałą czy nawet silnią.

Pytanie 39

Jakie informacje przechowuje w PHP zmienna $_SERVER?

A. dane z formularza przetwarzanego na serwerze
B. m.in. adres IP serwera i nazwę protokołu
C. dane dotyczące sesji
D. nazwy ciasteczek i powiązane dane
Superglobalna $_SERVER przechowuje informacje o środowisku serwera i bieżącym żądaniu - m.in. adres IP serwera, używany protokół, nazwę hosta czy ścieżkę skryptu (np. $_SERVER['SERVER_ADDR']). Dlatego zawiera dane o serwerze, jak adres IP i protokół.

Pytanie 40

Podaj właściwą sekwencję przy tworzeniu bazy danych?

A. Zdefiniowanie celu, utworzenie relacji, stworzenie tabel, normalizacja
B. Zdefiniowanie celu, stworzenie tabel, utworzenie relacji, normalizacja
C. Zdefiniowanie celu, normalizacja, utworzenie tabel, stworzenie relacji
D. Zdefiniowanie celu, normalizacja, utworzenie relacji, stworzenie tabel
Prawidłowa odpowiedź wskazuje, że pierwszym krokiem w procesie tworzenia bazy danych jest określenie celu, co jest kluczowe dla zrozumienia, jakie dane będą gromadzone i w jaki sposób będą one używane. Następnie, stworzenie tabel to fundament, na którym opiera się cała baza danych. Tabele definiują struktury danych, które będą przechowywane, a ich projektowanie powinno uwzględniać normalizację, czyli proces eliminowania redundancji danych i zapewniania ich integralności. Utworzenie relacji między tabelami jest kolejnym krokiem, który pozwala na efektywne łączenie danych w różnych tabelach, co z kolei umożliwia bardziej złożone zapytania. Normalizacja, będąca ostatnim krokiem, pozwala na optymalizację struktury bazy, co zwiększa wydajność operacji. Przykład zastosowania tej kolejności można zobaczyć w projektowaniu systemów zarządzania bazami danych w przedsiębiorstwach, gdzie dokładne określenie potrzeb biznesowych wpływa na przyszłe modele danych i ich relacje.