Q1. Um Funktionen, Komponenten und Berechtigungen zu Ihrer Android-App hinzuzufügen, welche Datei muss bearbeitet werden?
AndroidManifest.xml
Components.xml
AppManifest.xml
ComponentManifest.xml
Q2. Welches XML-Attribut sollte verwendet werden, um ein ImageView barrierefrei zu machen?
android:talkBack
android:labelFor
android:hint
android:contentDescription
Q3. Sie starten Ihre App, und wenn Sie zu einem neuen Bildschirm navigieren, stürzt sie ab. Welche Maßnahme hilft Ihnen NICHT, das Problem zu diagnostizieren?
Setzen von Breakpoints und anschließendes Schritt-für-Schritt-Durchgehen des Codes
Verwendung der Profiler-Werkzeuge in Android Studio, um Anomalien in CPU- und Netzwerkauslastung zu erkennen.
Hinzufügen eines Thread.sleep() -Aufrufs, bevor Sie die neue Aktivität starten.
Überprüfen der Protokolle in Logcat.
Q4. Warum könnten Push-Benachrichtigungen aufhören zu funktionieren?
alle diese Antworten
Der Gerätetoken wird nicht korrekt an den Push-Anbieter gesendet.
Google Play-Dienste sind nicht auf dem Gerät/Emulator installiert.
Die Batterieoptimierung ist auf dem Gerät aktiviert.
Q5. Was ist die korrekte Reihe von Komponentenklassen, die benötigt werden, um eine RecyclerView von Elementen zu implementieren, die eine Liste von Widgets vertikal anzeigen?
Q6. Das Android-System beendet den Prozess, wenn es Speicher freigeben muss. Die Wahrscheinlichkeit, dass das System einen bestimmten Prozess beendet, hängt vom Zustand des Prozesses und der Aktivität zum Zeitpunkt ab. Mit welcher Kombination von Prozess- und Aktivitätszustand ist es am wahrscheinlichsten, dass dieser beendet wird?
Prozess: Im Hintergrund; Aktivität: Ist gestoppt
Prozess: Im Hintergrund; Aktivität: Ist pausiert
Prozess: Im Vordergrund; Aktivität: Ist gestartet
Prozess: Im Vordergrund; Aktivität: Ist pausiert
Q7. Du hast eine NextActivity-Klasse erstellt, die auf einen String angewiesen ist, der einige Daten enthält, die im Intent übergeben werden. Welcher Code-Schnipsel ermöglicht es dir, deine Aktivität zu starten?
Q8. Du möchtest die Module "about" und "settings" in dein Projekt einbinden. Welche Dateien spiegeln ihre Einbindung genau wider?
in build.gradle: include ':app', ':about' ':settings'
in settings.gradle: include ':app', ':about' ':settings'
in settings.gradle: include ':about', ':settings'
in gradle.properties: include ':app', ':about' ':settings'
Q9. Was ist der Nutzen der @VisibleForTesting-Annotation?
um anzuzeigen, dass eine Klasse, Methode oder Feld ihre Sichtbarkeit gelockert hat, um den Code testbar zu machen
um anzuzeigen, dass eine Klasse, Methode oder Feld nur im Testcode sichtbar ist
um anzuzeigen, dass eine Klasse, Methode oder Feld ihre Sichtbarkeit erhöht hat, um den Code weniger testbar zu machen
um einen Laufzeitfehler zu werfen, wenn auf eine Klasse, Methode oder ein Feld mit dieser Annotation falsch zugegriffen wird
Q10. Wie würdest du in deiner build.gradle-Datei angeben, dass deine App mindestens API-Level 21 benötigt, um ausgeführt zu werden, aber auf API-Level 28 getestet werden kann?
Q12. Du musst ein Ereignis anhand seiner ID von deiner API entfernen. Welcher Code-Schnipsel definiert diesen Request in Retrofit?
@DELETE("events)
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@DELETE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@REMOVE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@DELETE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
Q13. Wann würdest du einen Produktgeschmack in deinem Build-Setup verwenden?
wenn die App-Strings in mehreren Sprachen vorhanden sein müssen
wenn du verschiedene Versionen deiner App basierend auf der physischen Gerätegröße bereitstellen musst
wenn du verschiedene Versionen deiner App basierend auf der Bildschirmdichte des Geräts bereitstellen möchtest
Wenn du eine andere Version deiner App mit benutzerdefinierter Konfiguration und Ressourcen bereitstellen möchtest
Q14. Wie würdest du mit dem untenstehenden Fragment auf einen TextView mit der ID text_home in der Layoutdatei einer Fragmentklasse zugreifen?
private lateinit var textView: TextView
override fun onCreateView(...): View? {
val root = inflator.inflator(R>layout.fragment_home, container, false)
textView = ??
return root
}
root.getById(R.id.text_home)
findViewByID(R.id.text_home)
root.findViewById(R.id.text_home)
root.find(R.id.text_home)
Q15. Warum verwendet man den AndroidJUnitRunner beim Ausführen von UI-Tests?
Hinweis: AndroidJUnitRunner ermöglicht es uns, JUnit3/4-Tests auf Android-Geräten auszuführen.
Der Test-Runner erleichtert das Laden Ihres Testpakets und der App unter Test auf ein Gerät oder Emulator, führt den Test durch und meldet die Ergebnisse.
Der Test-Runner erstellt Screenshots von jeder angezeigten Bildschirm, während die Tests ausgeführt werden.
Der Test-Runner erleichtert die Parallelisierung von Testklassen, indem er für jede Testklasse bereitstellt.
Der Test-Runner erleichtert die Interaktion mit sichtbaren Elementen auf einem Gerät, unabhängig davon, welche Aktivität oder Fragment den Fokus hat.
Q16. Was ermöglicht es dir, den Zustand eines Benutzers ordnungsgemäß wiederherzustellen, wenn eine Aktivität neu gestartet wird?
Erklärung:In der Methode "getDefaultSharedPrefarances(this).getString()" wird der zweite Parameter übergeben, damit er zurückgegeben werden kann, falls der Schlüssel nicht existiert. Daher müssen wir einen leeren String übergeben, der zurückgegeben wird, falls der Schlüssel nicht existiert.
Q19. Warum ist es problematisch, Größen auf Android in Pixeln zu definieren?
Obwohl sich die Pixeldichte des Bildschirms ändert, hat dies keinen Einfluss auf die Verwendung von Pixeln zur Definition von Größen.
Große Geräte haben immer mehr Pixel, daher werden Ihre UI-Elemente beeinflusst, wenn Sie sie mit Pixeln definieren.
Die gleiche Anzahl von Pixeln kann unterschiedlichen physischen Größen entsprechen, was das Erscheinungsbild Ihrer UI-Elemente beeinflusst.
Unterschiedliche Geräte haben unterschiedliche Vorstellungen davon, was ein Pixel ist, was das Erscheinungsbild Ihrer UI-Elemente beeinflusst.
Q20. Du möchtest eine Liste der Geräte abrufen, die mit aktivierter USB-Debugging-Funktion an deinen Computer angeschlossen sind. Welchen Befehl würdest du mit dem Android Debug Bridge ausführen?
list devices
adb devices
list avd
dir devices
Q21. Welche drawable-Definition ermöglicht es dir, die unten stehende Form zu erreichen?
Q22. Um eine kleine Sammlung von Schlüssel-Wert-Daten dauerhaft zu speichern, was solltest du verwenden?
externer Dateispeicher
SharedPereferences
SQLite
interner Dateispeicher
Q23. Du möchtest eine Liste von Fotos von einer API abrufen. Welcher Code-Schnipsel definiert eine HTML-GET-Anfrage in Retrofit?
@GET("photo/{id}")
fun listPhotos(@Path("id") id:Long?) : Call<Photo>
@LIST("photo")
fun listPhotos() : Call<List<Photo>>
@GET("photo")
fun listPhotos() : Call<Photo>
@GET("photo")
fun listPhotos() : Call<List<Photo>>
Q24. Angenommen, die unten stehende Testklasse, welcher Code-Schnipsel wäre eine korrekte Assertion?
assertThat(resultAdd).is(2.0)
assertNotNull(resultAdd)
assertThat(resultAdd).isEqualTo(2.0)
assertThat(resultAdd)
Q25. Welches Tag solltest du verwenden, um eine wiederverwendbare Ansichtskomponente einer Layoutdatei hinzuzufügen?
<merge/>
<include/>
<layout/>
<add/>
Q26. Du möchtest für Geräte im Querformat und deren Sprache auf Französisch ein anderes Drawable bereitstellen. Welches Verzeichnis ist korrekt benannt?
fr-land-drawable
drawable-fr-land
drawable-french-land
french-land-drawable
Q27. Warum musst du die folgende Berechtigung zu deiner App hinzufügen?
android.permission.ACCESS_NETWORK_STATE
um den Standort der Geräte zu überwachen, damit keine Netzwerkanfragen gemacht werden, wenn der Benutzer stationär ist
um die Berechtigung zur Durchführung von Netzwerkanfragen von deiner App anzufordern
um den Netzwerkstatus des Geräts zu überwachen, damit du dem Benutzer ein In-App-Banner anzeigen kannst
um den Netzwerkstatus der Geräte zu überwachen, damit keine Netzwerkanfragen gemacht werden, wenn das Netzwerk nicht verfügbar ist
Q28. Welches Bild entspricht am besten dem folgenden LinearLayout?
Q31. Du möchtest Benutzern in deiner App das Aufnehmen von Fotos ermöglichen. Welches ist kein Vorteil der Erstellung eines entsprechenden Intent anstelle des direkten Anforderns der Kameraberechtigung?
Benutzer können ihre Lieblings-Foto-Apps zum Aufnehmen von Bildern auswählen.
Du musst keine Berechtigungsanforderung in deiner App stellen, um ein Bild aufzunehmen.
Du hast die volle Kontrolle über das Benutzererlebnis. Die App, die das Kameraintent handhabt, respektiert deine Designentscheidungen.
Du musst die UI nicht gestalten. Die App, die das Kameraintent handhabt, stellt die UI bereit.
Q32. Wann würdest du die Funktion ActivityCompat.shouldShowRequestPermissionRationale() verwenden?
wenn ein Benutzer deine App zum ersten Mal öffnet und du die Verwendung einer bestimmten Berechtigung erklären möchtest
wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und "Weitere Informationen" auswählt
wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und du ihre Verwendung erklären möchtest
wenn ein Benutzer zuvor die Anfrage für eine bestimmte Berechtigung abgelehnt hat und "Nicht erneut fragen" ausgewählt hat, aber du die Berechtigung für deine App benötigst, um zu funktionieren
Q33. Sie möchten die Analytics-Verfolgung nur in Release-Builds aktivieren. Wie können Sie ein neues Feld in der generierten BuildConfig-Klasse erstellen, um diesen Wert zu speichern?
Q35. Sie haben Code erstellt, um einen Netzwerkaufruf durchzuführen, und getestet, dass dies in Ihrer Entwicklungsumgebung funktioniert. Wenn Sie ihn jedoch im Play Store veröffentlichen, schlägt der Netzwerkaufruf fehl. Was wird Ihnen nicht dabei helfen, dieses Problem zu beheben?
Überprüfen, ob ProGuard -keepclassmembers zu den betreffenden Netzwerkdatenübertragungsobjekten (DTOs) hinzugefügt wurde
Verwenden der Profiler-Tools in Android Studio, um Anomalien in der CPU-, Speicher- und Netzwerkauslastung zu erkennen
Überprüfen von Ausnahmen in den Server-Logs oder der Serverkonsole
Überprüfen, ob dem Netzwerkdatenübertragungsobjekt @SerizlizedName auf seine Mitgliedseigenschaften angewendet wurde
Q36. Welcher Code-Schnipsel würde das unten angezeigte Layout erreichen?
Erklärung:Intent-Filter werden verwendet, um Aktivitäten für andere Apps über Intents zugänglich zu machen. Daher müssen wir die Option wählen, die keinen Intent-Filter hat, um sicherzustellen, dass sie nicht über ein Intent zugänglich ist.
Q39. Um den Speicher auf dem Gerät zu erhalten, wie könnten Sie feststellen, dass das Gerät des Benutzers über begrenzte Speicherfähigkeiten verfügt?
Verwenden Sie die Methode ActivityManager.isLowRamDevice(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
Verwenden Sie die Methode Activity.islowRam(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
Verwenden Sie die Methode ConnectivityManager.hasLowMemory(), um herauszufinden, ob ein Gerät sich selbst als "niedrigen RAM" definiert.
Führen Sie eine Bild-Download-Anfrage durch und überprüfen Sie die verbleibende Speichernutzung des Geräts.
Q40. Was ist kein guter Weg, um Android-Code wiederzuverwenden?
Verwenden Sie ein gemeinsames Gradle-Modul, das von verschiedenen Android-Projekten gemeinsam genutzt wird.
Bauen Sie benutzerdefinierte Ansichten oder Fragmente anstelle von Aktivitäten.
Bauen Sie Aktivitäten anstelle von Fragmenten.
Zerlegen Sie UI-Layouts in gemeinsame Elemente und verwenden Sie <include/>, um sie in anderen Layout-XML-Dateien einzubeziehen.
Q41. Welches Layout ist am besten für große, komplexe Hierarchien geeignet?
LinearLayout
ConstraintLayout
FrameLayout
RelativeLayout
Q42. Sie müssen die neueste Version des Android Gradle-Plugins installieren. Welche Datei sollten Sie ändern?
Q53. Was ist kein Vorteil der Externalisierung von App-Ressourcen wie Bildern und Zeichenfolgen aus einem Code?
Es ermöglicht Android, die geeignete Ressource basierend auf der aktuellen Konfiguration zur Laufzeit auszuwählen.
Es ermöglicht Ihnen, leistungsstärkere Anwendungen zu haben, weil der Code und die Ressourcen getrennt sind.
Es ermöglicht Ihnen, je nach Spracheinstellungen des Benutzers eine unterschiedliche Ul-Erfahrung bereitzustellen.
Es ermöglicht Ihnen, je nach Gerätegröße des Benutzers eine unterschiedliche Ul-Erfahrung bereitzustellen.
Q54. Was ist der Hauptzweck von Zeile fünf in diesem Code-Schnipsel?
override fun onCreate(savedInstanceState: Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_post_create)
if (savedInstanceState != null) return
val fragment = CreatePostFragment()
supportFragmentManager
.beginTransaction()
.add(R.id. fragment_container, fragment)
.commit()
}
sicherstellen, dass die Aktivität endet, wenn savedInstanceState nicht null ist
sicherstellen, dass die Aktivität jedes Mal, wenn sie aus einem früheren Zustand wiederhergestellt wird, ein neues Fragment erstellt
verhindern, dass zwei Fragmente nebeneinander angezeigt werden, wenn die Aktivität aus einem früheren Zustand wiederhergestellt wird
verhindern, dass sich überlappende Fragmente erstellen, wenn die Aktivität aus einem früheren Zustand wiederhergestellt wird
Q55. Welche Komponente ist kein Einstiegspunkt, durch den das System oder ein Benutzer Ihre App betreten kann?
Aktivität
Inhaltsanbieter
Fragment
Dienst
Q56. Was sollten Sie verwenden, um eine große, scrollbare Liste von Elementen anzuzeigen?
ListView
RecyclerView
LinearLayout
ScrollView
Q57. Sie haben eine AboutActivity-Klasse erstellt, die Details zu Ihrer App anzeigt. Welcher Code-Schnipsel ermöglicht es Ihnen, Ihre Aktivität zu starten?
Erklärung: Intent(Context packageContext, Class<?> cls) Beachten: Klasse, nicht KClass
Q58. Wofür wird die Datei AndroidManifest.xml verwendet?
Es beschreibt die Komponenten der Anwendung
Es gibt das Mindestniveau der Android-API an, das die Anwendung erfordert
Es erleichtert das Bereitstellen eines eindeutigen Namens für die Anwendung, indem der Paketname angegeben wird
Alle oben genannten
Q59. Welches Attribut des Elements <uses-sdk> wird verwendet, um die mindestens erforderliche API-Ebene für das Ausführen der Anwendung anzugeben?
android:targetSdkVersion
android:minSdkVersion
android:maxSdkVersion
Keines der oben genannten
Q60. Um Ihren Code in Release-Builds zu reduzieren, welches Tool verwendet Android Studio?
R8
ProGuard
Shrinker
D8
Erklärung: Wenn Sie Ihr Projekt mit Android Gradle Plugin 3.4.0 oder höher erstellen, verwendet das Plugin nicht mehr ProGuard zur Durchführung von Kompilierungszeit-Codeoptimierungen. Stattdessen arbeitet das Plugin mit dem R8-Compiler zusammen, um dies zu bewältigen.
Q63. Sie müssen Ihren Benutzern bestimmte Funktionen Ihrer App auf Abruf oder als sofortige Erlebnisse über Google Play zur Verfügung stellen. Welche Art von Modul sollten Sie erstellen?
Q72. Verschiedene Sprachen haben unterschiedliche Regeln für die grammatikalische Übereinstimmung mit der Menge. Um die folgenden beiden Zeichenfolgen in mehreren Sprachen in Ihrer App zu unterstützen, was ist die ideale Ressourcendefinition?
"You have 1 day remaining"
"You have 2 days remaining"
A
<string name="trial_days_left_one"> You have %1$d day remaining</string>
<string name="trial_days_left_other">You have %1$d days remaining</string>
B
<plurals name="trial days left">
<plural quantity="one">You have %1$d day remaining</plural>
<plural quantity="other">You have %1$d days remaining</plural>
</plurals>
C
<plurals name="trial_days_left">
<item quantity="one">You have %1$d day remaining</item>
<item quantity="other">You have %1$d days remaining</item>
</plurals>
D
<string name="trial_days_left">
<plural quantity="one">You have %1$d day remaining</plural>
<plural quantity="other">You have &1$d days remaining</plural>
</string>
Q73. Wann würde das Betriebssystem die Methode onTrimMemory() verwenden?
wenn die App deinstalliert wird
wenn die App im Hintergrund läuft
wenn das Gerät im Batterieoptimierungsmodus ist
wenn Netzwerkanforderungen im Hauptthread gemacht werden
Q74. In Ihrer App haben Sie eine RecyclerView von Elementen. Sie möchten eine andere Konfiguration für Hoch- und Querformatmodi haben. Welcher Codeausschnitt würde es Ihnen am besten ermöglichen, das folgende Layout zu unterstützen?
val coulumnCount = resources.getInteger(R.integer.column_count)
recyclerView.setLayoutManager(LinearLayoutManager(this, columnCount))
Q75. Sie müssen ein Ereignis anhand seiner ID von Ihrer API entfernen. Welcher Codeausschnitt definiert diese Anforderung in Retrofit?
@DELETE("events)
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@DELETE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@REMOVE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
@DELETE("events/{id}")
fun deleteEvent(@Path("id") id: Long): Call<Unit>
Q76. Sie möchten Benutzern erlauben, in Ihrer App Fotos aufzunehmen. Was ist nicht ein Vorteil beim Erstellen eines entsprechenden intent, anstatt die Kameraberechtigung direkt anzufordern?
Benutzer können ihre Lieblingsfoto-Apps auswählen, um Fotos aufzunehmen.
Sie müssen keine Berechtigungsanfrage in Ihrer App stellen, um ein Foto aufzunehmen.
Sie haben die volle Kontrolle über das Benutzererlebnis. Die App, die das Kamera-intent behandelt, respektiert Ihre Designentscheidungen.
Sie müssen die UI nicht entwerfen. Die App, die das Kamera-intent behandelt, stellt die UI bereit.
Q77. Was ist die derzeit empfohlene Methode, um lang laufende Hintergrundaufgaben zu behandeln?