25 найкращих запитань щодо інтерв’ю Scala & Відповіді

Anonim

Завантажте PDF

1) Поясніть, що таке Scala?

Scala - це об'єктна функціональна мова програмування та сценаріїв для загальних програмних програм, призначених для стислого вираження рішень.

2) Що таке "набір Scala"? Які методи виражають набори операцій?

Набір Scala - це колекція попарних елементів одного типу. Набір Scala не містить дублікатів елементів. Існує два типи наборів, що змінюються та незмінні.

3) Що таке "карта Scala"?

Карта Scala - це сукупність пар ключів або значень. На основі його ключа можна отримати будь-яке значення. Значення не є унікальними, але ключі унікальні на Карті.

4) У чому перевага Scala?

  • Менш схильний до помилок функціональний стиль
  • Висока ремонтопридатність та продуктивність
  • Висока масштабованість
  • Висока тестованість
  • Забезпечує можливості одночасного програмування

5) Чим Scala краща за інші мови програмування?

  • У масивах використовуються звичайні загальні засоби, тоді як іншими мовами, дженерики закріплені як додаткова думка і є абсолютно окремими, але мають поведінку, що накладається на масиви.
  • Scala має незмінний “val” як першокласну мовну функцію. «Val» Scala схожий на кінцеві змінні Java. Зміст може мутувати, але верхнє посилання незмінне.
  • Scala дозволяє повертати значення у символах "if блоки", "цикли for-yield" та "code". Це є кращим і виключає необхідність в окремому потрійному операторі.
  • Сінглтон має одноелементні об'єкти, а не класичну статичну C ++ / Java / C #. Це більш чисте рішення
  • Постійні незмінні колекції є типовими та вбудовані в стандартну бібліотеку.
  • Він має власні кортежі та стислий код
  • Він не має коду котлової таблички

6) Що таке змінні Scala?

Значення та змінні - це дві форми, які входять у Scala. Змінна значення є постійною і не може бути змінена після призначення. Він незмінний, тоді як звичайна змінна, з іншого боку, є змінною, і ви можете змінити значення.

Два типи змінних

var myVar: Int = 0;

val myVal: Int = 1;

7) Згадайте різницю між об’єктом та класом?

Клас - це визначення для опису. Він визначає тип з точки зору методів та складу інших типів. Клас - це проект об'єкта. Хоча об’єкт - це синглтон, екземпляр класу, який є унікальним. Анонімний клас створюється для кожного об’єкта в коді, він успадковується від тих класів, які ви оголосили об’єктом для реалізації.

8) Що таке рекурсійний хвіст у шкалі?

"Рекурсія" - це функція, яка викликає себе. Функція, яка викликає себе, наприклад, функція "A" викликає функцію "B", яка викликає функцію "C". Це техніка, яка часто використовується у функціональному програмуванні. Для того, щоб хвіст був рекурсивним, зворотний виклик функції повинен бути останньою виконаною функцією.

9) Що таке „риса шкали“ у шкалі?

'Traits' використовуються для визначення типів об'єктів, визначених підписом підтримуваних методів. Scala дозволяє частково реалізувати, але риси можуть не мати параметрів конструктора. Ознака складається з визначення методу та поля, шляхом їх змішування в класи її можна використовувати повторно.

10) Коли можна використовувати риси?

Немає конкретного правила, коли можна використовувати риси, але є рекомендація, яку ви можете врахувати.

  • Якщо поведінка не буде використана повторно, зробіть це конкретним класом. У будь-якому разі це не поведінка багаторазового використання.
  • Для того, щоб успадкувати його в Java-коді, можна використовувати абстрактний клас.
  • Якщо ефективність є пріоритетом, схиляйтеся до використання класу
  • Зробіть це рисою, якщо вона може бути повторно використана в декількох та не пов’язаних між собою класах. У різних частинах ієрархії класів лише риси можна змішувати в різні частини.
  • Ви можете використовувати абстрактний клас, якщо ви хочете розповсюдити його у скомпільованому вигляді і очікуєте, що сторонні групи напишуть класи, що успадковують його.

11) Що таке класи класів?

Класи Case забезпечують рекурсивний механізм розкладання за допомогою зіставлення шаблонів, це звичайні класи, які експортують свій параметр конструктора. До параметрів конструктора класів випадків можна отримати безпосередній доступ і розглядати їх як загальнодоступні значення.

12) Яка користь кортежів у скалі?

Корпуси Scala поєднують фіксовану кількість предметів разом, щоб їх можна було передавати цілими. Кортеж є незмінним і може містити об'єкти різних типів, на відміну від масиву або списку.

13) Що таке каррінг функцій у Scala?

Каррінг - це техніка перетворення функції, яка приймає кілька аргументів, у функцію, яка приймає один аргумент. Багато тих самих методів, що й мова, таких як Haskell та LISP, підтримуються Scala. Функція каррінгу є однією з найменш використовуваних та неправильно зрозумілих.

14) Що є неявними параметрами в Scala?

Неявний параметр - це спосіб, який дозволяє "знаходити" параметри методу. Це схоже на параметри за замовчуванням, але воно має інший механізм пошуку значення “за замовчуванням”. Неявний параметр - це параметр методу або конструктора, який позначений як неявний. Це означає, що якщо значення параметра не згадується, то компілятор буде шукати “неявне” значення, визначене в межах області.

15) Що таке закриття в Scala?

Закриття - це функція, значення якої повертається, залежить від значення змінних, оголошених поза функцією.

16) Що таке Монада в Скалі?

Монада - це об’єкт, який обгортає інший об’єкт. Ви передаєте міні-програми 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.scalaC:/>scala Test[10]C:/>

19) У чому різниця між var і value?

У Scala ви можете визначити змінну, використовуючи ключові слова a, val або var. Різниця між val та var полягає у тому, що var схожий на декларацію Java, але val мало відрізняється. Ми не можемо змінити посилання на інше посилання, коли змінна оголошена за допомогою val. Змінна, визначена за допомогою ключових слів var, є змінною і може бути змінена будь-яку кількість разів.

20) Які варіанти є, а деякі в Scala відсутні?

'Option' - це загальний тип Scala, який може бути або `` деяким '' загальним значенням, або його відсутністю. 'Черга' часто використовує його для представлення примітивів, які можуть бути нульовими.

21) Як я можу додати список?

У шкалі для додавання до списку використовуйте “

:+” single value
var myList = List.empty[String]myList :+= "a"myList :+= "b"myList :+= "c"use++ for appending a listvar myList = List.empty[String]myList ++= List("a", "b", "c")

22) Як можна відформатувати рядок?

Щоб відформатувати рядок, використовуйте метод .format (), який можна використовувати в масштабі

Формат Val = = "% s% i" .format (mystring.myInt)

23) Чому Scala надає перевагу незмінності?

Scala надає перевагу незмінності в дизайні і в багатьох випадках використовує її за замовчуванням. Незмінність може допомогти при вирішенні питань рівності або одночасних програм.

24) Які чотири типи ідентифікаторів шкали?

Чотири типи ідентифікаторів

  • Буквено-цифрові ідентифікатори
  • Ідентифікатори оператора
  • Змішані ідентифікатори
  • Буквальні ідентифікатори

25) Які бувають різні типи літералів Scala?

Різні типи літералів у Scala є

  • Цілочисельні літерали
  • Літерали з плаваючою комою
  • Булеві літерали
  • Символьні літерали
  • Буквальні символи
  • Рядкові літерали
  • Багаторядкові рядки