Kódolós feladatok
Vázolja fel a képen látható nézet kódját Jetpack Compose segítségével
@Composable
fun loginPage(
modifier: Modifier = Modifier,
) {
var emailAddress = "klaf@aut.bme.hu"
Column(
modifier = modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
TextField(
placeholder = "Email",
value = emailAddress,
)
HorizontalDivider()
TextField(
placeholder = "Password",
value = emailAddress,
)
HorizontalDivider()
Spacer()
Button() {
Text(text = "Login")
}
}
}
Gyűtűk urta cucc
<RelativeLayout
android:background="#000000">
<ImageView
android:src="@drawable/one_ring_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="16dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:background="#FFFFFF">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="J. R. R. Tolkien"
android:textColor="#000000"
android:textSize="24sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="The Lord of the Rings"
android:textColor="#000000"
android:textSize="24sp" />
</LinearLayout>
</RelativeLayout>
Kliensalkalmazások kvíz – helyes válaszok
Melyek az Android-komponensek?
- Activity
- ContentProvider
- Service
- BroadcastReceiver
Az androidos SDK fizetős.
hamis
Angularben milyen szintaxissal adjuk meg a felületeket?
Angularben milyen szintaxissal adjuk meg a logikát?
Androidban nem készíthető saját View, csak a beépítettek használhatóak.
hamis
Egy SPA használata közben nem cserélődik le a teljes DOM, csak annak egyes részei.
igaz
Az Angular service-ek csak statikus metódusokat tartalmazhatnak.
hamis
A CSS-szabályokat a HTML-forráskódban található <style> tageken belülre, vagy a HTML-fájllal azonos könyvtárban lévő .css fájlba kell írni.
hamis
Egy androidos alkalmazás manifestjében csak az Activity-komponenseket kell felsorolni.
hamis
Az Ajax-hívások blokkolják a végrehajtó szálat mindaddig, amíg véget nem ér a meghívott művelet.
hamis
Mit kell csinálni androidos engedélyek kezelésekor?
- ellenőrizni, hogy van-e engedély
- tájékoztatni a felhasználót
- kezelni az engedély megadását vagy megtagadását
Melyik a legerősebb prioritású stílus CSS-ben?
- az !important jelzővel ellátott részek
Az alábbiak közül mely JS arrow functionök helyesek?
- var func = x => x * x;
- var func = (x, y) => { return x + y; };
- var func = () => ({foo: 1});
Mire való az Angular @Output dekorátor?
- események publikálására
- egy eseménykezelővel fel lehet rá iratkozni
Androidban mit kell tenni ahhoz, hogy egy adott broadcast intentet megkapjon az alkalmazásunk?
- be kell állítani az intent filtert
- be kell regisztrálni a receivert
Mire való egy @media screen and (min-width: 1100px) CSS-query?
- egy grid megjelenésének módosítására
- a tartalom megjelenítésével kapcsolatos minimális kijelzőszélesség megadására
Jelez-e hibát a TS compiler, ha egy any típusú objektumnak olyan tagváltozóját kérjük le, ami nem létezik?
nem
Egy Android alkalmazás manifestjében csak az esetlegesen veszélyes engedélyeket kell felsorolni.
hamis
Mit kell tenni ahhoz, hogy használhassuk a Jetpack Compose viewBinding-ot?
- példányosítani a binding objektumot
- bekapcsolni a build.gradle-ben
Egy Angular-komponenshez hány nézet tartozhat?
Egy szabványos HTML-dokumentum <html> eleme csak a <header>, <body> és <footer> elemeket tartalmazhatja.
hamis
Egy promise eredménye, ha sikeres volt az Ajax-hívás: true; egyébként: false.
hamis
A confirm() JS-függvény aszinkron.
hamis
Mi igaz az Angular pipe-okra?
- adatok formázására való
- többet is lehet egymás után kapcsolni
- @Pipe dekorátorral ellátott, a PipeTransform interfészt megvalósító függvényekkel lehet sajátot készíteni
- egy pure pipe nem érzékeli a modellben beállt változásokat
- az impure pipe nagy teljesítményigényű
Egy Android Activity-hez csak egy SharedPreferences tartozhat.
hamis
Mely(ek) a @Composable függvények szabálya(i)?
- egy recomposition leállítható menet közben
- a recomposition kihagyja a lehető legtöbb @Composable függvényt és lambdát
Angularben mik segítik a felelősségek szétválasztását (SoC)?
- components
- directives
- dependency injection (DI)
Az Android Linux kernel alapú.
igaz
Androidban a .dex compiler Dalvik bytecode-ot állít elő.
igaz
Az Android-verziók kódneve általában egy édesség.
igaz
Csak okostelefonokon fut Android.
hamis
Az Android nyílt forráskódú.
igaz
Androidos alkalmazást csak telefon segítségével lehet debugolni.
hamis
C++-ban is lehet írni androidos alkalmazásokat.
igaz
Androidos eseménykezelőt csak layoutban lehet megadni.
hamis
Egy Android-alkalmazásban legalább egy Activity-re szükség van.
hamis
Lehet készíteni UI nélküli androidos alkalmazást is.
igaz
Egy androidos ContentProvider egy webszerveren tárolt adatokat is elérhetővé tud tenni.
igaz
Egy androidos alkalmazás manifestje csak egy Service-komponenst tartalmazhat.
hamis
Egy androidos alkalmazás manifestjében az összes komponenst fel kell sorolni – kivéve a dinamikusan regisztrálható BroadcastReceiver-eket.
igaz
Egy androidos alkalmazás manifestjében lehet XML- és Java-kód is.
hamis
Egy androidos alkalmazásban csak egy erőforrásminősítőt használhatunk.
igaz
Egy androidos alkalmazásban erőforrásminősítőkkel is meg lehet adni egy elforgatott képernyő esetén használatos egyedi témát.
igaz
Androidban az R.java állományt kézzel kell karbantartani.
hamis
Az .apk-ban található forráskód visszafejthető.
igaz
Melyik igaz az Activity életciklusfüggvényeire?
- Szükség esetén manuálisan is meg kell őket hívni.
Mi Androidban az explicit Intent?
- Amikor megadjuk a konkrét osztályt (komponenst), akinek a kérést küldjük.
Az Android automatikusan átméretez egy képet, ha nincs megfelelően illeszkedő változata.
igaz
Az Android támogatja a sűrűségfüggetlen megjelenítést.
igaz
Hány dpi-s kijelzőn felel meg 1.dp 1.px-nek?
Egy androidos alkalmazásban pixelben is megadhatóak a méretek.
igaz
Egy androidos alkalmazás menüelemeit kódból kell felvenni.
hamis
Egy androidos alkalmazásban a View-k méretét mindig pixelben kell megadni.
hamis
Androidban a szövegek méretezéséhez dp helyett sp-t használunk.
igaz
Androidban a Toolbar támogatja a menüerőforrásokat.
igaz
Androidban egyszerű alakzatok megjelenítése csak képi erőforrással lehetséges.
hamis
Androidban nem készíthető saját stílus, csak a beépítettek használhatóak.
hamis
Androidban a gombok színét egyszerűen állíthatjuk az állapotuktól függő selectorokkal.
igaz
Egy androidos Activity dialógus formájában is megjelenhet.
igaz
Az androidos Fragment-ek saját életciklusfüggvényekkel rendelkeznek.
igaz
Az androidos Fragment-ek dialógusként is megjeleníthetőek.
igaz
Az androidos Fragment-ek dinamikusan és statikusan is csatolhatóak.
igaz
Az androidos Fragment-ek a tabletek felhasználói felületének kialakításakor különösen hasznosak.
igaz
Az androidos RecyclerView csak egymás alatti elrendezést támogat.
hamis
Az androidos RecyclerView kikényszeríti a ViewHolder mintát.
igaz
Az androidos RecyclerView támogatja a scrollozást.
igaz
Az androidos RecyclerView használatakor el kell készítenünk egy sor layoutját.
igaz
Androidban van beépített adatbáziskezelő.
igaz
Androidban az adatbázisműveleteket mindig aszinkron módon kell végezni.
hamis
Az Android tartalmaz beépített ORM-réteget.
igaz
Androidban az external storage-ba mentett fájljaink mindig elérhetőek.
hamis
Az androidos internal storage-ban lévő gyorsítótárba mentett fájljaink korlátlan ideig elérhetőek.
hamis
Androidban a háttértár eléréséhez engedély szükséges.
igaz
Androidban a saját statikus fájljainkat "kézzel" kell átmásolnunk az internal storage-ba.
hamis
Az androidos ContentProvider-ekben elérhető a teljes CRUD-funkcionalitás.
igaz
Az androidos ContentProvider-ekben csak egyszerű, strukturálatlan adatokat tudunk megosztani.
hamis
Androidban nem tudunk saját ContentProvider-t írni, csak a beépítettek használhatóak.
hamis
Az androidos ContentProvider-ek használatával másik alkalmazásból is elérhetőek az adataink.
igaz
Jetpack Compose-ban könnyű a UI frissítése az alkalmazás állapota alapján.
igaz
Jetpack Compose-ban a UI elemei kódból készíthetőek.
igaz
A @Composable függvények egymásba ágyazhatóak.
igaz
Jetpack Compose-ban minden osztályhoz tartozik egy XML layout.
hamis
Jetpack Compose-ban három fő layout van.
igaz
Jetpack Compose-ban Row esetén a verticalArrangement argumentum használatos a függőleges elrendezéshez.
igaz
Jetpack Compose-ban a Row és a Column is súlyozható.
igaz
Jetpack Compose-ban a Modifier-ek az elrendezés testreszabásához használhatóak.
hamis
Jetpack Compose-ban a recomposition mindig a teljes felületet újrarajzolja.
hamis
Jetpack Compose-ban az aktuális állapot mindig az Activity-ben van tárolva.
hamis
Egy @Composable függvényben ciklus is használható az elemek felületre helyezéséhez.
igaz
Egy @Composable függvény argumentumai futás közben is változhatnak.
hamis
A @Composable függvények szekvenciálisan hajthatóak végre.
hamis
A @Composable függvények bármilyen sorrendben végrehajthatóak.
igaz
A recomposition minden @Composable függvényt és lambdát lefuttat.
hamis
A @Composable függvények recompositionje leállítható menet közben.
igaz
Jetpack Compose-ban a navigációhoz FragmentManager-t használunk
hamis
Jetpack Compose-ban egy coroutine mindig több threaden fut.
hamis
Mire való a lazy loading Jetpack Compose-ban?
- listák relatív alacsony erőforrásigényű renderelésére
Egy androidos projektben nem keveredhet a View és a Jetpack Compose framework.
hamis
Jetpack Compose-ban a CoroutineScope egy vagy több kapcsolódó coroutine-t kezel.
igaz
Az Android támogatja a Bluetooth LE-t.
igaz
Androidban a webes eléréshez engedély kell.
igaz
A Retrofit androidos library automatikusan végzi a JSON objektumokká konvertálását.
igaz
Hogyan kell végezni Androidban egy hálózati hívást?
Kifejtősök
- A TypeScript-dekorátor egy speciális szintaktika, amellyel módosítani lehet egy osztály vagy annak tagjainak (metódus, property) működését.
- Hasonló, mint a Python dekorátorok: egy függvényt írunk, majd azt
@dekoratorNeve szintaxissal "rászórjuk" a kívánt elemre.
- Példa:
function logged(originalMethod: any) {
try {
console.log("Calculation started...");
return (...args: any[]) => originalMethod.call(this, ...args);
}
finally {
console.log("...finished!");
}
}
class Calculator {
@logged
add(a: number, b: number) {
return a + b;
}
}
const calculator = new Calculator();
calculator.add(1, 9);
Mik az overload szignatúrák? Hogyan kell őket használni?
- Olyan szignatúrák, amikkel egy függvényhez többféle bemeneti paraméter-listát (típust, számosságot) lehet rendelni.
- A TypeScript csak egy implementációs szignatúrát enged, de több overload szignatúrát írhatunk a függvény elé.
- Az implementációs szignatúra csak egy lehet, azt nem lehet közvetlenül meghívni.
- Példa:
function makeDate(epoch: number): Date;
function makeDate(year: number, month: number, day: number): Date;
function makeDate(epochOrYear: number, month?: number, day?: number): Date {
if (month !== undefined && day !== undefined) {
return new Date(epochOrYear, month-1, day);
} else {
return new Date(epochOrYear);
}
}
const dateFromEpoch = makeDate(1719082884000);
const dateFromDate = makeDate(2024, 6, 22);
// Az első két sor overload szignatúra, a harmadik az implementációs szignatúra.
Mire való a getElementById függvény? Hogyan lehet elérni?
- Egy adott ID-jű elem megkeresésére a DOM-ban.
- A
document globális objektum metódusa.
- Segítségével JavaScriptből könnyen módosíthatjuk, elrejthetjük vagy átírhatjuk az adott DOM-elemet.
- Példa:
<button id="disablerButton">Disable the other button</button>
<button id="buttonToDisable">This button will be disabled</button>
<script>
function disableButton(buttonId) {
const button = document.getElementById(buttonId);
button.disabled = true;
}
disablerButton.addEventListener("click", () => disableButton("buttonToDisable"));
</script>
Mi a különbség a block és inline típusú HTML-elemek között?
- Block elemek (pl.
<div>, <p>): a szülő teljes szélességét kitöltik, új sorban jelennek meg.
- Inline elemek (pl.
<a>, <span>): nem töltik ki a teljes szélességet, ugyanabban a sorban jelennek meg. Csak a tagen belüli szövegre vonatkozik a formázásuk.
Mire valóak az űrlapok?
- Adatok beküldésére (pl. kérdőív, belépés, meglévő adatok módosítása).
- A beviteli mezőket előre ki lehet tölteni.
- A beküldött adatokat validálni lehet kliens- vagy szerveroldalon.
- Beküldés után GET vagy POST kérést hajt végre az oldal.
- Pl. egy mögöttes adatbázisból lehet lekérni, vagy abban módosítani adatokat.
Mire való egy űrlap elemeiben a name attribútum?
- Beviteli mezők elnevezésére.
- Beküldéskor ezek a nevek lesznek a szervernek továbbított adat nevek.
- GET:
https://foo.com/?name1=value1&name2=value2
- POST: ugyanaz, csak a body-ban.
- JavaScriptben a
document.getElementsByName() segítségével lehet ezekre hivatkozni.
Mire való egy .d.ts kiterjesztésű fájl?
- Declaration file (deklarációs állomány).
- A hozzátartozó JavaScript-fájl típusinformációit tartalmazza.
- Hasonló a Python
type stub-jaihoz, de a TypeScript fordítási időben jelzi a típusproblémákat.
Milyen előnyei vannak a dependency injection használatának?
- Separation of concerns: a komponens csak használja a dependency-t, nem hozz létre/kezeli.
- Az injektor felelős a dependency életciklusáért.
- Erősebb dekompozíció, újrafelhasználhatóság.
- Jobb tesztelhetőség (mockolás).
- Csak az injektornak kell ismernie a teljes dependency gráfot.
- A komponens kódja rövidebb, átláthatóbb lesz.
Mire szolgál az Angular ngIf direktívája?
- Elemek feltételes megjelenítésére a sablonban.
- Példa:
<div *ngIf="train">
<p>
This is the {{train.departureTime}} {{train.type}} service to {{train.destination}}.
</p>
</div>
- Az
*ngIf attribútum kifejezését értékeli ki (általában a komponens .ts fájljából származó változóra hivatkozik).
- Ha az érték
true, akkor megjelenik az elem. Ha false, törli az elemet a DOM-ból.
- Lehet else ága is.
- Sok if-else ág esetén érdemes az
ngSwitch-et használni.