Scala-Interviewfragen und Antworten

Willkommen zu Scala Interviewfragen und Antworten. Heutzutage nutzen die meisten Finanz-/Banken-, Regierungs-, Telekommunikations-, Social-Networking-Unternehmen usw. Scala, Play und Akka Framework, um ihre Projekte zu entwickeln, da diese Frameworks sowohl OOP- als auch FP-Funktionen unterstützen und viele Vorteile bieten.

Scala Interviewfragen

Ich werde mein Interviewwissen und meine Erfahrungen in der Entwicklung von Scala Ecosystem oder Fullstack Scala (Scala/Play/Akka) in einigen Beiträgen mit Ihnen teilen. Ich werde Ihnen 3 separate Beiträge zur Verfügung stellen. Einige Fragen sind nur eine Frage, während andere Unterkategorien haben. Insgesamt werde ich etwa 200 Fragen besprechen. Ich wette, wenn Sie mit all diesen Fragen vertraut sind, werden Sie definitiv alle Scala-Entwickler-Interviews erfolgreich bestehen. Wenn Sie jedoch als Fullstack Scala-Entwickler weitermachen möchten, sollten Sie alle diese Fullstack Scala-Technologien gründlich erlernen.

Einführung

I’m going to deliver Scala/Play/Akka Interview Questions and Answers in three parts:

  1. Scala Interviewfragen und Antworten:
    Wir werden hier einige grundlegende Scala-Interviewfragen besprechen, die für Berufsanfänger oder Java-Entwickler nützlich sind, die in die Scala-Entwicklung wechseln möchten oder bereits über 1 Jahr Erfahrung als Scala-Entwickler verfügen. Scala Intermediate Interviewfragen und Antworten:-
    Wir werden einige Interviewfragen besprechen, die für 2+ Jahre Erfahrung als Scala/Java-Entwickler nützlich sind. Scala Advanced Interviewfragen und Antworten:-
    Wir werden einige Interviewfragen besprechen, die für erfahrene Scala/Java-Entwickler oder Senioren nützlich sind. Scala/Java Parallelität und Parallelität Interviewfragen und Antworten:-
    Wir werden Scala/Java Parallelität und Parallelität Interviewfragen und Antworten besprechen, die für erfahrene Scala/Java-Entwickler oder Senioren nützlich sind.

Wir werden auch einige Unterschiede zwischen Scala- und Java-Konstrukten diskutieren, damit Benutzer (die von Java zu Scala wechseln) von diesen Beiträgen profitieren können. In diesem Beitrag werden wir einige grundlegende Scala-Interviewfragen diskutieren. Lesen Sie meine kommenden Beiträge für die restlichen beiden Abschnitte.

Scala Basic Interviewfragen

In diesem Abschnitt werden wir alle grundlegenden Scala-Interviewfragen auflisten und im nächsten Abschnitt werden wir diese im Detail besprechen.

  1. Was ist Scala? Ist es eine Sprache oder eine Plattform? Unterstützt sie OOP oder FP? Wer ist der Vater von Scala?
  2. Ist Scala eine statisch typisierte Sprache? Was ist eine statisch typisierte Sprache und was ist eine dynamisch typisierte Sprache? Was ist der Unterschied zwischen statisch typisierten und dynamisch typisierten Sprachen?
  3. Ist Scala eine reine OOP-Sprache? Ist Java eine reine OOP-Sprache?
  4. Unterstützt Scala alle Konzepte der funktionalen Programmierung? Unterstützt Java 8 alle Konzepte der funktionalen Programmierung?
  5. Was sind die wichtigsten Vorteile der Scala-Sprache? Gibt es Nachteile der Scala-Sprache?
  6. Was ist der Hauptnachteil der Scala-Sprache?
  7. Was ist das Hauptmotto der Scala-Sprache?
  8. Welche beliebten JVM-Sprachen sind derzeit verfügbar?
  9. Wie bei Javas java.lang.Object-Klasse, welche Superklasse haben alle Klassen in Scala?
  10. Was ist der Standardzugriffsmodifizierer in Scala? Hat Scala das Schlüsselwort „public“?
  11. Was ist „Type Inference“ in Scala?
  12. Unterschied zwischen Scalias Int und Javas java.lang.Integer? Was ist die Beziehung zwischen Int und RichInt in Scala?
  13. Was ist Nothing in Scala? Was ist Nil in Scala? Was ist die Beziehung zwischen Nothing und Nil in Scala?
  14. Was ist Null in Scala? Was ist null in Scala? Was ist der Unterschied zwischen Null und null in Scala?
  15. Was ist Unit in Scala? Was ist der Unterschied zwischen Javas void und Scalas Unit?
  16. Was ist der Unterschied zwischen val und var in Scala?
  17. Was ist REPL in Scala? Wofür wird Scala’s REPL verwendet? Wie greife ich auf Scala REPL von CMD Prompt zu?
  18. Was sind die Funktionen von Scala?
  19. Wie implementieren wir Schleifen funktional? Was ist der Unterschied zwischen OOP und FP-Schleifenstil?
  20. Was ist „Application“ in Scala oder Was ist Scala Application? Was ist „App“ in Scala? Wofür wird Scala’s App verwendet?
  21. Unterstützt Scala Operator Overloading? Unterstützt Java Operator Overloading?
  22. Was ist ein Ausdruck? Was ist eine Anweisung? Unterschied zwischen Ausdruck und Anweisung?
  23. Was ist der Unterschied zwischen „If…Else“ in Java und „If…Else“ in Scala?
  24. Ist Scala eine Ausdrucksbasierte Sprache oder eine Anweisungsbasierte Sprache? Ist Java eine Ausdrucksbasierte Sprache oder eine Anweisungsbasierte Sprache?
  25. Nennen Sie mir einige Funktionen, die von Java unterstützt werden, aber nicht von Scala und umgekehrt?
  26. Was ist der Unterschied zwischen Funktion und Methode in Scala?
  27. Wie viele öffentliche Klassen können in einer Scala-Quelldatei definiert werden?
  28. Wie bei Java, welche sind die Standardimporte in der Scala-Sprache?
  29. Wie viele Operatoren gibt es in Scala und warum?
  30. Nennen Sie einige Schlüsselwörter, die von Java verwendet werden und in Scala nicht benötigt werden? Warum benötigt Scala sie nicht?
  31. Was ist PreDef in Scala?

Bitte beachten Sie meinen vorherigen Beitrag, um mehr über Funktionale Programmierung zu erfahren (Klicken Sie auf diesen Link, um meinen vorherigen Beitrag zu öffnen).

Scala Interviewfragen und Antworten

In diesem Abschnitt werden wir jede Frage aus der obigen Liste auswählen und ausführlich mit geeigneten Beispielen besprechen (falls erforderlich). Wenn Sie diese Konzepte mit Beispielen im Detail verstehen möchten, lesen Sie bitte meine vorherigen Beiträge im Abschnitt Scala-Tutorials.

Was ist Scala? Ist es eine Sprache oder eine Plattform? Unterstützt es OOP oder FP? Wer ist der Vater von Scala?

Scala steht für SCAlable LAnguage. Martin Odersky ist der Vater von Scala. Scala ist eine Mehrparadigmen-Programmiersprache, die sowohl objektorientierte als auch funktionale Programmierkonzepte unterstützt. Sie wurde von Martin Odersky entworfen und entwickelt. Scala ist eine typsichere objektfunktionale Programmiersprache für die JVM. Scala läuft auf der JVM (Java Virtual Machine). Scala ist eine hybride funktionale (objektorientierte und funktionale) Programmiersprache für die JVM. Scala verfügt über ein starkes und statisches Typsystem. In Scala werden alle Typen zur Compile-Zeit überprüft.

Ist Scala eine statisch typisierte Sprache? Was ist eine statisch typisierte Sprache und was ist eine dynamisch typisierte Sprache? Was ist der Unterschied zwischen statisch und dynamisch typisierten Sprachen?

Ja, Scala ist eine statisch typisierte Sprache. Statisch typisierte Sprachen bedeuten, dass die Typrüfung zur Compilezeit durch den Compiler und nicht zur Laufzeit erfolgt. Der Hauptvorteil dieser Art von Sprachen besteht darin, dass Entwickler darauf achten sollten, den richtigen Code zu schreiben, um alle Compilezeitfehler zu vermeiden. Da der Compiler viele Fehler zur Compilezeit überprüft, treten zur Laufzeit nicht viele Probleme oder Fehler auf. Beispiele: Java, Scala, C, C++, Haskell usw. Dynamisch typisierte Sprachen bedeuten, dass die Typrüfung zur Laufzeit und nicht zur Compilezeit durch den Compiler erfolgt. Da der Compiler zur Compilezeit keine Typrüfung durchführt, können mehr Probleme oder Fehler zur Laufzeit auftreten. Beispiel: Groovy, JavaScript, Ruby, Python, Smalltalk usw.

Ist Scala eine reine objektorientierte Sprache? Ist Java eine reine objektorientierte Sprache?

Eine reine objektorientierte Programmiersprache bedeutet, dass alles ein Objekt sein sollte. Java ist keine reine objektorientierte Programmiersprache, da es die folgenden beiden nicht objektorientierten Konzepte unterstützt:

  • Java unterstützt primitive Datentypen. Sie sind keine Objekte.
  • Java unterstützt statische Elemente. Sie sind nicht mit Objekten verbunden.

Ja, Scala ist eine reine objektorientierte Programmiersprache, da in Scala alles ein Objekt ist und alles einen Wert hat. Funktionen sind Werte und Werte sind Objekte. Scala hat keine primitiven Datentypen und auch keine statischen Elemente.

Unterstützt Scala alle Konzepte der funktionalen Programmierung? Unterstützt Java 8 alle Konzepte der funktionalen Programmierung?

Ja, Scala unterstützt alle Konzepte der funktionalen Programmierung (FP). Java 8 hat einige Konstrukte der funktionalen Programmierung eingeführt, unterstützt jedoch NICHT alle Konzepte der funktionalen Programmierung. Zum Beispiel unterstützt Java 8 kein Pattern Matching, keine Funktions-Curry, keine Impliziten usw.

Was sind die wichtigsten Vorteile der Scala-Sprache? Gibt es Nachteile der Scala-Sprache?

Wenn wir Scala verwenden, um unsere Anwendungen zu entwickeln, können wir die folgenden Vorteile und Nachteile der Scala-Sprache erhalten: Vorteile der Scala-Sprache:-

  • Einfacher und prägnanter Code
  • Sehr ausdrucksstarker Code
  • Lesbarerer Code
  • 100% typsichere Sprache
  • Unveränderlichkeit und keine Seiteneffekte
  • Mehr wiederverwendbarer Code
  • Mehr Modularität
  • Do More With Less Code
  • Sehr flexible Syntax
  • Unterstützt alle OOP-Funktionen
  • Unterstützt alle FP-Funktionen. Hoch funktional.
  • Weniger fehleranfälliger Code
  • Bessere parallele und nebenläufige Programmierung
  • Sehr skalierbarer und wartbarer Code
  • Hohe Produktivität
  • Verteilte Anwendungen
  • Vollständige Java-Interoperabilität
  • Leistungsstarke Scala-DSLs verfügbar
  • REPL zum Erlernen der Scala-Grundlagen

Nachteile der Scala-Sprache:-

  • Weniger lesbare Code
  • Ein bisschen schwer zu verstehender Code für Anfänger
  • Komplexe Syntax zum Erlernen
  • Weniger Abwärtskompatibilität

HINWEIS:- Wir können Scala-Code entweder auf eine leichter lesbare oder weniger lesbare Weise schreiben.

Was ist der Hauptnachteil der Scala-Sprache?

Abgesehen von vielen Vorteilen von Scala gibt es einen großen Nachteil: das Problem der Abwärtskompatibilität. Wenn wir auf die neueste Version von Scala aktualisieren möchten, müssen wir einige Paketnamen, Klassennamen, Methoden oder Funktionsnamen ändern usw. beachten. Zum Beispiel, wenn Sie eine alte Scala-Version verwenden und Ihr Projekt die BeanProperty-Annotation verwendet, war diese in alten Versionen als „scala.reflect.BeanProperty“ in „scala.reflect“ verfügbar. Wenn wir auf neue Scala-Versionen aktualisieren möchten, müssen wir dieses Paket von „scala.reflect“ auf „scala.beans“ ändern.

Was ist das Hauptziel der Scala-Sprache?

Wie das Motto von Java „Schreibe einmal, führe überall aus“ hat Scala das Motto „Mache mehr mit weniger“ oder „Mache mehr mit weniger Code“. „Mache mehr mit weniger“ bedeutet, dass wir komplexere Programme oder Logik mit weniger Code entwickeln können.

Java, Scala, Groovy und Closure sind die beliebtesten JVM (Java Virtual Machine) Sprachen. Scala, Groovy und Closure unterstützen sowohl objektorientierte Programmierungsmerkmale als auch funktionale Programmierungsmerkmale. Java SE 8 unterstützt alle objektorientierten Programmierungsmerkmale. Es unterstützt jedoch nur wenige funktionale Programmierungsmerkmale wie Lambda-Ausdrücke, Funktionen, Typinferenz und Funktionen höherer Ordnung.

Wie in der Klasse java.lang.Object in Java, was ist die Oberklasse aller Klassen in Scala?

Wie wir wissen, ist in Java die Oberklasse aller Klassen (Java-API-Klassen oder benutzerdefinierte Klassen) die Klasse java.lang.Object. Auf die gleiche Weise ist in Scala die Oberklasse aller Klassen oder Traits die Klasse „Any“. Die Klasse Any ist im scala-Paket definiert, z.B. „scala.Any“.

Was ist der Standardzugriffsmodifizierer in Scala? Hat Scala ein „public“ Schlüsselwort?

In Scala, wenn wir keinen Zugriffsmodifikator für eine Methode, Funktion, Eigenschaft, ein Trait, ein Objekt oder eine Klasse angeben, ist der Standardzugriffsmodifikator „public“. Sogar für Felder ist „public“ der Standardzugriffsmodifikator. Aufgrund dieser Standardfunktion verwendet Scala kein Schlüsselwort „public“.

Was ist „Type Inference“ in Scala?

Der Scala-Compiler kann die Typen zur Compile-Zeit inferieren. Dies wird als „Type Inference“ bezeichnet. Typen beziehen sich auf Datentypen oder Ergebnistypen. Wir verwenden Typen an vielen Stellen in Scala-Programmen, wie z.B. für Variablentypen, Objekttypen, Methoden-/Funktionsparameter-Typen und Methoden-/Funktionsrückgabetypen usw. Einfach ausgedrückt bestimmt der Compiler zur Compile-Zeit den Typ einer Variable, eines Ausdrucks oder eines Objekts usw., was als „Type Inference“ bezeichnet wird.

Was sind die Gemeinsamkeiten und Unterschiede zwischen Scala’s Int und Java’s java.lang.Integer? Was ist die Beziehung zwischen Int und RichInt in Scala?

Gemeinsamkeiten zwischen Scala’s Int und Java’s java.lang.Integer:

  • Beide sind Klassen.
  • Beide werden verwendet, um Ganzzahlen darzustellen.
  • Beide sind 32-Bit-ganze Zahlen.

Unterschiede zwischen Scala’s Int und Javas java.lang.Integer:

  • Scalas Int-Klasse implementiert nicht das Comparable-Interface.
  • Javas java.lang.Integer-Klasse implementiert das Comparable-Interface.

Javas Integer ist etwas ähnliches wie Scalas Int und RichInt. RichInt ist eine Endklasse, die im scala.runtime-Paket definiert ist, wie „scala.runtime.RichInt“. In Scala besteht die Beziehung zwischen Int und RichInt darin, dass, wenn wir Int in einem Scala-Programm verwenden, es automatisch in RichInt konvertiert wird, um alle verfügbaren Methoden in dieser Klasse zu nutzen. Wir können sagen, dass RichInt eine implizite Klasse von Int ist. (Wir werden „Was ist Implizites und die Vorteile von Impliziten“ in meinem nächsten Beitrag diskutieren).

Was ist Nothing in Scala? Was ist Nil in Scala? Was ist die Beziehung zwischen Nothing und Nil in Scala?

In Scala ist Nothing ein Typ (Endklasse). Es ist am unteren Rand des Scala-Typsystems definiert, was bedeutet, dass es ein Untertyp von allem in Scala ist. Es gibt keine Instanzen von Nothing. Einsatzmöglichkeiten von Nothing in Scala:- Wenn Nothing keine Instanzen hat, wann verwenden wir diese in Scala-Anwendungen?

  • Nil wird mit Nothing definiert (siehe unten für ein Beispiel).
  • None wird mit Nothing definiert.
object None extends Option[Nothing]
  • Wir können Nothing als Rückgabetypen von Methoden verwenden, die niemals zurückgeben.
  • Wir können Nothing als Rückgabetypen von Methoden verwenden, die abnormal beendet werden.

Nil ist ein Objekt, das verwendet wird, um eine leere Liste darzustellen. Es ist definiert im Paket „scala.collection.immutable“, wie unten gezeigt:

object Nil extends List[Nothing]

Beispiel:-

scala> Nil
res5: scala.collection.immutable.Nil.type = List()

scala> Nil.length
res6: Int = 0

Was ist Null in Scala? Was ist null in Scala? Was ist der Unterschied zwischen Null und null in Scala?

Null ist ein Typ (final class) in Scala. Der Null-Typ ist im Paket „scala“ als „scala.Null“ verfügbar. Es hat nur eine Instanz, die null ist. In Scala ist „null“ eine Instanz des Typs scala.Null. Beispiel:-

scala> val myNullRef : Null = null
myNullRef: Null = null

Wir können anderen Werten keine Null-Typ-Referenzen zuweisen. Es akzeptiert nur den Wert „null“. Null ist ein Subtyp aller Referenztypen. Null ist am unteren Ende des Scala-Typsystems. Da es KEIN Subtyp von Werttypen ist, können wir „null“ einer Variablen jedes Werttyps zuweisen. Beispiel:-

scala> val myInt : Int = null
:10: error: an expression of type Null is ineligible for implicit conversion
       val myInt : Int = null

^ Hier tritt ein Typenunverträglichkeitsfehler auf. gefunden: Null(null), aber erforderlich: Int. Die impliziten Konvertierungen zwischen Null und Int sind nicht anwendbar, weil sie mehrdeutig sind.

Was ist Unit in Scala? Was ist der Unterschied zwischen Java’s void und Scala’s Unit?

In Scala wird Unit verwendet, um „Kein Wert“ oder „Kein nützlicher Wert“ darzustellen. Unit ist eine finale Klasse, die im Paket „scala“ definiert ist, also „scala.Unit“. Unit ist etwas ähnlich wie Javas void. Aber sie haben einige Unterschiede.

  • Javas void hat keinen Wert. Es ist nichts.
  • Scala’s Unit hat einen Wert ()
  • () ist der einzige Wert des Typs Unit in Scala. Es gibt jedoch keine Werte des Typs void in Java.
  • Javas void ist ein Schlüsselwort. Scala’s Unit ist eine finale Klasse.

Beide werden verwendet, um darzustellen, dass eine Methode oder Funktion nichts zurückgibt.

Was ist der Unterschied zwischen val und var in Scala?

In Scala werden sowohl val als auch var verwendet, um Variablen zu definieren. Sie haben jedoch einige signifikante Unterschiede.

  • var steht für Variable.
  • val steht für Wert.
  • Wie wir wissen, bedeutet Variable veränderbar und Wert konstant.
  • var wird verwendet, um veränderbare Variablen zu definieren, das bedeutet, dass wir ihnen einmal erstellte Werte neu zuweisen können.
  • val wird verwendet, um unveränderliche Variablen zu definieren, das bedeutet, dass wir ihnen einmal erstellte Werte nicht neu zuweisen können.
  • In einfacher Java-Terminologie bedeutet var ‚Variable‘ und val ‚endgültige Variable‘.

Was ist REPL in Scala? Wofür wird Scala’s REPL verwendet? Wie greife ich von der CMD-Eingabeaufforderung auf Scala REPL zu?

REPL steht für Read-Evaluate-Print Loop. Wir können es als ‚Ripple‘ aussprechen. In Scala fungiert REPL als Interpreter zur Ausführung von Scala-Code von der Befehlszeile aus. Aus diesem Grund wird REPL auch als Scala CLI (Command Line Interface) oder Scala-Befehlszeilen-Shell bezeichnet. Der Hauptzweck von REPL besteht darin, kleine Codeausschnitte in Scala für Übungszwecke zu entwickeln und zu testen. Es ist sehr nützlich für Scala-Anfänger, grundlegende Programme zu üben. Wir können auf REPL zugreifen, indem wir den Befehl „scala“ verwenden. Wenn wir den Befehl „scala“ an der CMD-Eingabeaufforderung eingeben, erhalten wir eine REPL-Shell, in der wir Scala-Code eingeben und ausführen können.

D:\> scala

scala>

Was sind die Funktionen von Scala?

Die Scala-Sprache unterstützt die folgenden Funktionen:

  • Unterstützt sowohl OOP-Stil (imperativer Stil) als auch funktionale Programmierung
  • Reine objektorientierte Programmiersprache
  • Unterstützt alle funktionalen Features
  • REPL (Read-Evaluate-Print Loop) Interpreter
  • Starkes Typsystem
  • Statisch typisierte Sprache
  • Typinferenz
  • Unterstützt Pattern Matching
  • Unterstützt Closures
  • Unterstützt persistente Datenstrukturen
  • Verwendet das Aktorenmodell zur Entwicklung von Nebenläufigkeitsanwendungen
  • Interoperabel mit Java
  • Verfügbar sind alle Entwicklungswerkzeuge – IDEs, Build-Tools, Web-Frameworks, TDD- und BDD-Frameworks

Wie implementieren wir Schleifen funktional? Was ist der Unterschied zwischen OOP- und FP-Stil-Schleifen?

Wir wissen, wie man Schleifen im objektorientierten Stil implementiert: Verwendung von mutablen temporären Variablen, Aktualisierung des Variablenwerts und Verwendung von Schleifenkonstrukten. Es ist ein sehr mühsamer und unsicherer Ansatz. Es ist nicht threadsicher. Der objektorientierte Stil verwendet die folgenden Konstrukte, um Schleifen zu implementieren:

  • Schleifenkonstrukte
  • Veränderlichkeit
  • Nebenwirkungen

Wir können dieselben Schleifen auf verschiedene Arten in funktionaler Weise implementieren. Es ist thread-sicher. Wir können die folgenden beiden Techniken verwenden, um die Schleifen in funktionaler Art und Weise zu implementieren:

  • Rekursion
  • Endrekursion
  • Unveränderlichkeit
  • Keine Seiteneffekte

Was ist eine „Anwendung“ in Scala oder was ist Scala-Anwendung? Was ist „App“ in Scala? Wofür wird Scala’s App verwendet?

Scala-Anwendung: In Scala ist App ein Trait, das in der Scala-Paket wie „scala.App“ definiert ist. Es definiert die Main-Methode. Wenn ein Objekt oder eine Klasse dieses Trait erweitert, werden sie automatisch zu ausführbaren Scala-Programmen, da sie die Main-Methode von Application erben. Der Hauptvorteil der Verwendung von App ist, dass wir keine Main-Methode schreiben müssen. Der Hauptnachteil der Verwendung von App besteht darin, dass wir denselben Namen „args“ verwenden müssen, um auf die Befehlszeilenargumente zu verweisen, da die Main-Methode von scala.App diesen Namen verwendet. Beispiel: Ohne Scala App:

object MyApp {
    def main( args: Array[String]){
        println("Hello World!")
    }
}

Mit Scala App:

object MyApp extends App{
   println("Hello World!")
}

Wenn wir die obigen beiden Beispiele betrachten, haben wir im zweiten Beispiel keine Main-Methode definiert, weil wir von Scala App (Application) geerbt haben. Vor Scala 2.9 hatten wir das Scala.Application Trait. Es wurde jedoch seit der Version Scala 2.9 durch scala.App veraltet.

Unterstützt Scala Operatorüberladung? Unterstützt Java Operatorüberladung?

Java unterstützt keine Operatorüberladung. Scala unterstützt Operatorüberladung. Der Grund dafür ist, dass Java einige irreführende Methodennamen wie „+*/“ nicht unterstützen möchte. Scala hat den Entwicklern diese Flexibilität gegeben, zu entscheiden, welche Methoden-/Funktionsnamen verwendet werden sollen. Wenn wir 2 + 3 aufrufen, bedeutet das, dass „+“ kein Operator ist, sondern eine Methode, die in der Klasse Int (oder ihrem impliziten Typ) verfügbar ist. Intern wird dieser Aufruf in „2.+(3)“ umgewandelt.

Was ist ein Ausdruck? Was ist eine Anweisung? Unterschied zwischen Ausdruck und Anweisung?

Ausdruck: Ein Ausdruck ist ein Wert, der bedeutet, dass er zu einem Wert ausgewertet wird. Da ein Ausdruck einen Wert zurückgibt, können wir ihn einer Variablen zuweisen. Beispiel: – Scala’s If-Bedingung, Javas Ternär-Operator. Anweisung: Eine Anweisung definiert eine oder mehrere Aktionen oder Operationen. Das bedeutet, dass eine Anweisung Aktionen ausführt. Da sie keinen Wert zurückgibt, können wir sie nicht einer Variablen zuweisen. Beispiel: – Javas If-Bedingung.

Was ist der Unterschied zwischen Javas „If…Else“ und Scalas „If…Else“?

Javas „If…Else“: In Java ist „If…Else“ eine Anweisung, keine Ausdruck. Es gibt keinen Wert zurück und wir können ihn nicht einer Variablen zuweisen. Beispiel:-

 int year;
 if( count == 0) 
   year = 2014;
 else 
   year = 2015;

Scalas „If…Else“: In Scala ist „If…Else“ ein Ausdruck. Es bewertet einen Wert, d. h. gibt einen Wert zurück. Wir können ihn einer Variablen zuweisen.

 val year = if( count == 0) 2014 else 2015

**HINWEIS:-** Scalas „If…Else“ funktioniert wie Javas Ternär-Operator. Wir können Scalas „If…Else“ wie Javas „If…Else“ Anweisung verwenden, wie unten gezeigt:

 val year = 0
 if( count == 0) 
   year = 2014 
 else 
   year = 2015

Ist Scala eine ausdrucksbasierte Sprache oder eine anweisungsbasierte Sprache? Ist Java eine ausdrucksbasierte Sprache oder eine anweisungsbasierte Sprache?

In Scala ist alles ein Wert. Alle Ausdrücke oder Anweisungen evaluieren zu einem Wert. Wir können Ausdrücke, Funktionen, Closures, Objekte usw. einer Variablen zuweisen. Daher ist Scala eine ausdrucksorientierte Sprache. In Java sind Anweisungen keine Ausdrücke oder Werte. Wir können sie nicht einer Variablen zuweisen. Daher ist Java keine ausdrucksorientierte Sprache. Es ist eine anweisungsbasierte Sprache.

Nennen Sie mir einige Funktionen, die von Java unterstützt werden, jedoch nicht von Scala, und umgekehrt?

  • Java unterstützt keine Operatorüberladung, aber Scala unterstützt sie.
  • Java unterstützt die Operatoren ++ und , aber Scala unterstützt sie nicht.
  • Java hat überprüfbare und nicht überprüfbare Ausnahmen, aber Scala hat keine überprüfbaren Ausnahmen.
  • Scala unterstützt keine break- und continue-Anweisungen, aber Java verwendet sie.
  • Scala unterstützt kein explizites Typumwandlung, aber Java unterstützt dieses Feature.
  • Scala unterstützt Pattern Matching, aber Java nicht.
  • Java verwendet primitive Datentypen, aber Scala hat sie nicht.
  • Java unterstützt statische Elemente, aber Scala hat kein Konzept für statische Elemente.
  • Scala unterstützt Implizite und Traits, Java unterstützt sie nicht.

**HINWEIS:** Diese Liste geht über eine Seite hinaus. Dies sind jedoch einige wichtige Punkte, die man sich über Unterschiede in den Scala- und Java-Funktionen merken sollte, um Scala-Interviews zu bestehen.

Was ist der Unterschied zwischen Funktion und Methode in Scala?

Scala unterstützt sowohl Funktionen als auch Methoden. Wir verwenden dieselbe Syntax, um Funktionen und Methoden zu definieren. Es gibt keinen Syntaxunterschied. Es gibt jedoch einen kleinen Unterschied:

  • Wir können eine Methode in einer Scala-Klasse oder einem Trait definieren. Eine Methode ist mit einem Objekt verbunden (einer Instanz einer Klasse). Wir können eine Methode aufrufen, indem wir eine Instanz einer Klasse verwenden. Wir können eine Scala-Methode nicht direkt verwenden, ohne ein Objekt zu verwenden.
  • Eine Funktion ist nicht mit einer Klasse oder einem Trait verbunden. Sie wird in einem Scala-Paket definiert. Wir können auf Funktionen zugreifen, ohne Objekte zu verwenden, wie bei Javas statischen Methoden.

HINWEIS:- Wir werden in meinen kommenden Beiträgen über Klasse, Trait, Paket, Objekt usw. diskutieren.

Wie viele öffentliche Klassendateien können in einer Scala-Quelldatei definiert werden?

In Java können wir höchstens eine öffentliche Klasse/Schnittstelle in einer Quelldatei definieren. Im Gegensatz dazu unterstützt Scala mehrere öffentliche Klassen in derselben Quelldatei. Wir können beliebig viele öffentliche Klassen/Schnittstellen/Traits in einer Scala-Quelldatei definieren.

Ähnlich wie in Java, welche sind die Standardimporte in der Scala-Sprache?

Wir wissen, dass java.lang das standardmäßig von der JVM automatisch in alle Java-Programme importierte Paket ist. Wir müssen dieses Paket nicht explizit importieren. Auf ähnliche Weise sind die folgenden Standardimporte in allen Scala-Programmen verfügbar:

  • java.lang-Paket
  • scala-Paket
  • scala.PreDef

Wie viele Operatoren gibt es in Scala und warum?

Anders als Java und wie C++ unterstützt Scala die Operatorüberladung. Scala hat nur einen Operator, nämlich den „=“ (Gleichheits-) Operator. Alle anderen sind nur Methoden. Zum Beispiel bei 2 + 3 ist „+“ kein Operator in Scala. „+“ ist eine Methode, die in der Int-Klasse verfügbar ist. Der Scala-Compiler stellt fest, dass 2 und 3 Integer sind, und versucht, die „+“-Methode in der Int-Klasse zu finden. Der Scala-Compiler wandelt daher den Ausdruck „2 + 3“ in „2.+(3)“ um und ruft die „+“-Methode auf dem Integer-Objekt „2“ auf und übergibt das Integer-Objekt „3“ als Parameter an die „+“-Methode. Sowohl „2 + 3“ als auch „2.+(3)“ sind gleich. Es ist nur ein syntaktischer Zucker von Scala, um Programme im funktionalen Stil zu schreiben.

Nennen Sie einige Schlüsselwörter, die von Java verwendet werden und in Scala nicht benötigt werden? Warum benötigt Scala sie nicht?

Java verwendet die folgenden Schlüsselwörter ausgiebig:

  • Das Schlüsselwort ‚public‘ – zur Definition von Klassen, Schnittstellen, Variablen usw.
  • Das Schlüsselwort ’static‘ – zur Definition von statischen Elementen.

Scala benötigt diese beiden Schlüsselwörter nicht. Scala hat keine ‚public‘ und ’static‘ Schlüsselwörter.

  • In Scala ist der Standardzugriffsmodifizierer für Klassen, Traits, Methoden/Funktionen, Felder usw. ‚public‘. Deshalb ist das ‚public‘ Schlüsselwort nicht erforderlich.
  • Um die OOP-Prinzipien zu unterstützen, hat das Scala-Team das ’static‘ Schlüsselwort vermieden. Deshalb ist Scala eine rein objektorientierte Sprache. Es ist sehr schwierig, statische Elemente in nebenläufigen Anwendungen zu behandeln.

Was ist PreDef in Scala? Was ist der Hauptzweck von PreDef in Scala? In Scala ist PreDef ein in das scala-Paket definiertes Objekt als „scala.PreDef“. Es ist ein Hilfsobjekt. Es definiert viele Hilfsmethoden wie unten gezeigt:

  • Konsolen-IO (print, println usw.)
  • Sammlungshilfsmethoden
  • String-Hilfsmethoden
  • Implizite Konvertierungsmethoden
  • Assertion-Hilfsmethoden usw.

Zum Beispiel sind die Methoden print, println, readLine, readInt, require usw. im PreDef-Objekt definiert. In Scala steht PreDef zur Verfügung, um seine Methoden ohne Importieren in allen Scala-Programmen zu verwenden, da der Scala-Compiler dieses Objekt automatisch in alle Kompilationseinheiten wie Klasse, Objekt, Trait usw. importiert. Das war es alles zu „Scala Basic Interviewfragen und Antworten“. Wir werden einige Intermediate, Advanced und Echtzeit-Scala-Interviewfragen und -Antworten in meinen kommenden Beiträgen besprechen. Bitte hinterlassen Sie einen Kommentar, wenn Ihnen mein Beitrag gefällt oder wenn Sie irgendwelche Probleme/Vorschläge haben.

Source:
https://www.digitalocean.com/community/tutorials/scala-interview-questions-answers