Situation
Jeder, der sich bei einer Firma als Android-Entwickler bewirbt, muss sich oft mit den typischen personellen und psychologischen Stressfragen auseinandersetzen. Dabei geht es den Personalern eigentlich immer darum, etwas über die Person hinter dem Bewerber zu erfahren. Sobald ein Personaler einen Bewerber auf seine charakterlichen Eigenschaften hin geprüft wurde, gibt es in der Regel auch noch ein Gespräch mit einem oder mehreren Mitgliedern des Software-Entwickler-Teams, die den Bewerber auf seine fachliche Kompetenz hin testen. Welche möglichen Interview-Fragen dabei speziell an Android-Entwickler gerichtet werden könnten, haben wir dir in mehreren Blog-Artikeln zu diesem Thema zusammengestellt und liefern dir auch gleich noch die Antworten dazu.
Dieser zweite Blog-Beitrag liefert insgesamt zehn Fragen und Antworten. Für weitere Fragen geh einfach zu unserem ersten Blog-Artikel.
Wie lauten alle Zustände im Lebenszyklus einer App und durch welche Methoden werden diese herbeigeführt?
- Created (erstellt): Wird herbeigeführt durch onCreate()
- Started (sichtbar): Wird herbeigeführt durch onStart() oder onRestart()
- Running (aktiv): Wird herbeigeführt durch onResume()
- Paused (partiell sichtbar): Wird herbeigeführt durch onPause()
- Stopped (unsichtbar): Wird herbeigeführt durch onStop()
- Destroyed (zerstört): Wird herbeigeführt durch onDestroy()
Welche res-Ordner gibt es? Welche Ressourcentypen werden im jeweiligen Ordner abgelegt?
- animator: Hier sind Eigenschafts-Animationen
- anim: Hier sind Tween- und Frame-Animationen
- color: Hier liegen Farben als Liste vor
- drawable: Hier liegen alle Bild-Dateien
- layout: Hier sind alle Layout-Definitionen
- menu: Hier sind alle Menüdefinitionen
- mipmap: Hier liegen die Icons für den Launcher
- raw: Hier liegen sonstige Ressourcen wie z.B. Audio- oder Video-Dateien
- values: Hier werden Zeichenfolgen, Stile oder Dimensionen festgelegt
Was passiert mit den Zustandsdaten von Steuerelementen (Views), wenn eine Activity in den Hintergrund und später wieder in den Vordergrund kommt? Was muss dabei beachtet werden?
Android speichert die Zustandsdaten aller mit der Activity verknüpften Steuerelemente sobald die Activity in den Hintergrund gerät. Später kann Android alle Steuerelemente und ihre Zustände wiederherstellen, wenn die Activity zurück in den Vordergrund kommt. Dieser Recovery-Vorgang funktioniert allerdings nur, wenn die Steuerelemente eine ID besitzen (android:id).
Was ist der Unterschied zwischen impliziten und expliziten Intents?
- Implizit: Implizite Intents werden eingesetzt, um Dienste fremder Apps zu verwenden. Dabei wird nicht genau festgelegt, welche App zu nutzen ist, sondern es wird dem Intent lediglich eine Aktion und Daten mitgegeben. Im folgenden Beispiel wird im ersten Parameter als Aktion ein „ACTION_VIEW“ und als Daten eine URL übergeben.
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(“https://www.big-app.de”)); startActivity(intent);
- Explizit: Bei expliziten Intents wird genau angegeben, welche Activity oder welcher Service der eigenen App zu verwenden ist. So werden explizite Intents insbesondere zur Kommunikation innerhalb derselben App verwendet. Im nachfolgenden Beispiel wird als erster Parameter die aktuelle Activity mit „this“ und als Ziel-Activity „zielklasse.class“ angegeben.
Intent intent = new Intent(this, zielklasse.class); startActivity(intent);
Welche Datenspeicher gibt es in Android? Nenne 5 davon und erkläre wozu diese verwendet werden!
- Shared Preferences: Zum Speichern von privaten primitiven Daten in Schlüssel-Wert-Paaren
- Interner Speicher: Zum Speichern privater Daten auf dem internen Gerätespeicher
- Externer Speicher: Zum Speichern öffentlicher Daten auf einem gemeinsam genutzten externen Speicher
- Cloud-Speicher: Zum Speichern von Daten im Internet
- SQLite-Datenbank: Zum Speichern strukturierter Daten in einer privaten und lokalen Datenbank
Nenne alle Komponenten des Android-Stacks in absteigender Reihenfolge!
- Oberste Schicht: System-Apps und Benutzer-Apps
- Java API-Framework (Android API)
- Native C/C++-Libraries und Android-Runtime
- Hardware-Abstraction-Layer
- Unterste Schicht: Linux-Kernel
Was ist AIDL? Bitte ausführlich erklären!
AIDL steht für „Android Interface Definition Language“ und behandelt die Schnittstellenanforderungen zwischen einem Client und einem Service, um durch Interprozesskommunikation auf der gleichen Ebene zu kommunizieren. Normalerweise ist es in Android einem Prozess nicht möglich auf den Speicher eines anderen Prozesses zuzugreifen. Um dennoch eine Kommunikation zwischen den Prozessen herstellen zu können, müssen sie ihre Objekte in Primitive zerlegen, die Android verstehen kann.
Worin besteht der Unterschied zwischen „Margin“ und „Padding“ in Android?
- Margin: Gibt den Abstand zwischen einem Steuerelement und seinem Nachbarn an
- Padding: Gibt den Abstand zwischen dem Inhalt eines Steuerelements und seinen Rändern an
Was ist eine Singleton-Klasse und wofür wird sie eingesetzt? Beschreibe ein Beispiel einer Singleton-Klasse in Java!
Die Singleton-Klasse ist ein Entwurfsmuster aus der Softwareentwicklung bei dem sichergestellt wird, dass nur ein Objekt der Klasse erzeugt werden kann. Es wird immer dann eingesetzt, wenn nur ein Objekt einer Klasse existieren darf.
Beispiel einer Singleton-Klasse:
public class Singleton { private static final Singleton singleObject = new Singleton(); //Der Konstruktor muss bei Singleton als "private" deklariert werden! private Singleton() { System.out.println("Gerade ein Objekt erzeugt"); } public static Singleton getInstance() { return singleObject; } }
Beispiel-Aufruf der getInstance()-Methode:
Singleton s = Singleton.getInstance(); // Über getInstance() besorgen wir uns das einzige Objekt
Wie kann von einer Java-Klasse aus eine Referenz zu einem Steuerelement geliefert werden? Beschreibe ein Beispiel!
Mittels der „findViewById()-Methode“ wird von Java aus eine Referenz zu einem View-Objekt auf der mit der Activity verknüpften Oberfläche hergestellt.
Beispiel:
Button button = (Button) findViewById(R.id.button); //Als Parameter benötigt die Methode die Button-ID