Scala インタビューのトップ 25 の質問と回答 (PDF)
ここでは、夢の仕事に就くための、新人および経験豊富な候補者向けの Scala 面接の質問と回答を紹介します。
新人向けの Scala 面接の質問と回答
1) Scala とは何ですか?
Scala は、ソリューションを簡潔に表現するように設計された一般的なソフトウェア アプリケーション用のオブジェクト関数型プログラミングおよびスクリプト言語です。
2) 「Scala セット」とは何ですか? 演算セットを表現する方法は何ですか?
Scala セットは、同じ型のペア要素のコレクションです。Scala セットには重複する要素は含まれません。セットには、可変と不変の 2 種類があります。
👉 無料 PDF ダウンロード: Scala インタビューの質問と回答 >>
3) 「Scala マップ」とは何ですか?
Scala マップは、キーまたは値のペアのコレクションです。 そのキーに基づいて、任意の値を取得できます。 値は一意ではありませんが、キーはマップ内で一意です。
4) Scala の利点は何ですか?
の利点 スカラ には次の値があります:
- Less エラーが発生しやすい関数型スタイル
- 高い保守性と生産性
- 高い拡張性
- 高いテスト容易性
- 同時プログラミングの機能を提供します
5) Scala が他のプログラミング言語よりも優れている点は何ですか?
- 配列は通常のジェネリックを使用しますが、他の言語ではジェネリックは後付けで追加され、完全に分離されていますが、配列と動作が重複します。
- Scalaは第一級の言語機能として不変の「val」を持っています。Scalaの「val」は Java 最終変数。内容は変化する可能性がありますが、トップ参照は不変です。
- Scala では、'if ブロック'、'for-yield ループ'、および中括弧内の 'コード' を使用して値を返すことができます。これはより望ましい方法であり、別の三項演算子が不要になります。
- シングルトンにはシングルトンオブジェクトではなく C++/Java/ C#の古典的な静的。よりクリーンなソリューションです
- 永続的で不変のコレクションがデフォルトであり、標準ライブラリに組み込まれています。
- ネイティブタプルと簡潔なコードが含まれています
- 定型コードはありません
6) Scala 変数とは何ですか?
価値観と variables は、Scala に付属する XNUMX つの形状です。 値変数は定数であり、一度割り当てられると変更できません。 これは不変ですが、一方、通常の変数は変更可能であり、値を変更できます。
XNUMX 種類の変数は次のとおりです。
var myVar : Int=0;
val myVal: Int=1;
7) オブジェクトとクラスの違いについて言及しますか?
クラスは説明の定義です。 メソッドと他の型の構成の観点から型を定義します。 クラスはオブジェクトの設計図です。 一方、オブジェクトはシングルトン、つまり一意のクラスのインスタンスです。 匿名クラスはコード内のすべてのオブジェクトに対して作成され、実装するオブジェクトを宣言したクラスを継承します。
8) スカラの再帰末尾とは何ですか?
「再帰」は自分自身を呼び出す関数です。 それ自体を呼び出す関数。たとえば、関数 'A' は関数 'B' を呼び出し、関数 'B' は関数 'C' を呼び出します。 関数型プログラミングでよく使われる手法です。 末尾再帰を行うには、関数へのコールバックが実行される最後の関数である必要があります。
9) scala の「scala trait」とは何ですか?
「トレイト」は、サポートされているメソッドのシグネチャによって指定されるオブジェクト タイプを定義するために使用されます。 Scala では部分的に実装できますが、トレイトにはコンストラクター パラメーターが含まれない場合があります。 トレイトはメソッドとフィールドの定義で構成されており、これらをクラスに混合することで再利用できます。
10) 特性はいつ使用できますか?
特性をいつ使用できるかという特別なルールはありませんが、考慮できるガイドラインはあります。
- 動作を再利用しない場合は、それを具象クラスにします。 いずれにせよ、これは再利用可能な動作ではありません。
- それを継承するために Java コードでは抽象クラスを使用できます。
- 効率が優先される場合は、クラスの使用に傾いてください。
- 複数の無関係なクラスで再利用される可能性がある場合は、それを特性にします。 クラス階層の異なる部分では、特性のみを異なる部分に混合できます。
- コンパイルされた形式で配布する必要があり、外部のグループがそれを継承するクラスを作成することが期待される場合は、抽象クラスを使用できます。
経験者向けの Scala 面接の質問
11) ケースクラスとは何ですか?
Case クラスは、パターン マッチングによる再帰的分解メカニズムを提供します。これは、コンストラクター パラメーターをエクスポートする通常のクラスです。 ケースクラスのコンストラクターパラメーターには直接アクセスでき、パブリック値として扱われます。
12) Scala でのタプルの用途は何ですか?
Scala タプルは、固定数の項目を組み合わせて、全体として渡すことができるようにします。 タプルは不変であり、配列やリストとは異なり、異なる型のオブジェクトを保持できます。
13) Scala における関数カリー化とは何ですか?
カリー化とは、複数の引数を取る関数を XNUMX つの引数を取る関数に変換する手法です。Haskell や LISP などの言語と同じ手法の多くが Scala でサポートされています。 関数のカリー化は、最も使用されず誤解も少ないものの XNUMX つです。
14) Scala の暗黙的なパラメーターとは何ですか?
暗黙的なパラメーターは、メソッドのパラメーターを「見つける」ことができる方法です。 これはデフォルト パラメータに似ていますが、「デフォルト」値を見つけるメカニズムが異なります。 暗黙的パラメーターは、暗黙的としてマークされているメソッドまたはコンストラクターへのパラメーターです。 これは、パラメーター値が指定されていない場合、コンパイラーはスコープ内で定義された「暗黙の」値を検索することを意味します。
15) Scala のクロージャとは何ですか?
クロージャは、戻り値が関数の外で宣言された変数の値に依存する関数です。
16) Scala のモナドとは何ですか?
モナドは、別のオブジェクトをラップするオブジェクトです。 オブジェクトを直接操作するのではなく、Monad ミニプログラム、つまり関数を渡して、基礎となるオブジェクトのデータ操作を実行します。 Monad は、基礎となるオブジェクトにプログラムを適用する方法を選択します。
17) Scala の匿名関数とは何ですか?
ソース コードでは、匿名関数は「関数リテラル」と呼ばれ、実行時に関数リテラルは関数値と呼ばれるオブジェクトにインスタンス化されます。 Scala は、匿名関数を定義するための比較的簡単な構文を提供します。
18) 「Scala の高階関数」について説明してください。
Scala では、高階関数を定義できます。これらは、他の関数をパラメータとして受け取る関数、または結果が関数である関数です。次の例では、apply() 関数は別の関数 'f' と値 'v' を受け取り、関数を v に適用します。
例:
object Test { def main(args: Array[String]) { println( apply( layout, 10) ) } def apply(f: Int => String, v: Int) = f(v) def layout[A](x: A) = "[" + x.toString() + "]"
上記のコードをコンパイルして実行すると、次の結果が生成されます。
C:/>scalac Test.scala C:/>scala Test [10] C:/>
19) var と value の違いは何ですか?
scala では、a、val、または var キーワードのいずれかを使用して変数を定義できます。 val と var の違いは、var は Java 宣言によく似ていますが、val は少し異なります。 val を使用して変数を宣言した後は、その参照を別の参照を指すように変更することはできません。 var キーワードを使用して定義された変数は変更可能であり、何度でも変更できます。
20) Scala のオプション (一部またはなし) とは何ですか?
「Option」は Scala のジェネリック型で、「何らかの」ジェネリック値を指定することも、何も指定しないこともできます。 「Queue」は、null の可能性があるプリミティブを表すためにこれをよく使用します。
21) リストに追加するにはどうすればよいですか?
scala でリストに追加するには、「」を使用します。:+” single value
var myList = List.empty[String] myList :+= "a" myList :+= "b" myList :+= "c" use++ for appending a list var myList = List.empty[String] myList ++= List("a", "b", "c")
22) 文字列をフォーマットするにはどうすればよいですか?
文字列をフォーマットするには、 .format () メソッドを使用します。scala では次のように使用できます。
Val formatted= “%s %i”.format (mystring.myInt)
23) なぜ scala は不変性を好むのですか?
Scala は設計において不変性を好み、多くの場合それをデフォルトとして使用します。 不変性は、平等性の問題や並行プログラムを扱うときに役立ちます。
24) Scala 識別子の XNUMX 種類とは何ですか?
XNUMX 種類の識別子は次のとおりです。
- 英数字の識別子
- Operaトール識別子
- 混合識別子
- リテラル識別子
25) Scala リテラルにはどのような種類がありますか?
scala のさまざまな種類のリテラルは次のとおりです。
- 整数リテラル
- 浮動小数点リテラル
- ブールリテラル
- シンボルリテラル
- 文字リテラル
- 文字列リテラル
- 複数行の文字列
これらの面接の質問は、あなたの活力(口頭)にも役立ちます