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 loops» и «код» в фигурные скобки для возврата значения. Это более предпочтительно и устраняет необходимость в отдельном тернарном операторе.
  • Синглтон имеет одноэлементные объекты, а не классический статический C ++ / Java / C #. Это более чистое решение
  • Постоянные неизменяемые коллекции используются по умолчанию и встроены в стандартную библиотеку.
  • Он имеет собственные кортежи и лаконичный код.
  • Не имеет кода котельной плиты

6) Что такое переменные Scala?

Значения и переменные - это две формы, которые входят в Scala. Переменная-значение является постоянной и не может быть изменена после назначения. Оно неизменяемо, в то время как обычная переменная, с другой стороны, изменчива, и вы можете изменить значение.

Два типа переменных:

var myVar: Int = 0;

val myVal: Int = 1;

7) Назовите разницу между объектом и классом?

Класс - это определение описания. Он определяет тип с точки зрения методов и состава других типов. Класс - это план объекта. В то время как объект - это синглтон, экземпляр класса, который уникален. Анонимный класс создается для каждого объекта в коде, он наследуется от тех классов, которые вы объявили для реализации.

8) Что такое хвост рекурсии в scala?

«Рекурсия» - это функция, которая вызывает сама себя. Функция, которая вызывает сама себя, например, функция «A» вызывает функцию «B», которая вызывает функцию «C». Это метод, часто используемый в функциональном программировании. Для хвостовой рекурсии обратный вызов функции должен выполняться последней функцией.

9) Что такое scala trait в scala?

«Черты» используются для определения типов объектов, определяемых сигнатурой поддерживаемых методов. Scala допускает частичную реализацию, но трейты могут не иметь параметров конструктора. Признак состоит из определения метода и поля, которые можно использовать повторно, смешивая их в классы.

10) Когда можно использовать черты характера?

Нет конкретного правила, когда вы можете использовать черты характера, но есть руководство, которое вы можете принять во внимание.

  • Если поведение не будет использоваться повторно, сделайте его конкретным классом. Во всяком случае, это не многоразовое поведение.
  • Чтобы унаследовать от него в коде Java, можно использовать абстрактный класс.
  • Если эффективность является приоритетом, склоняйтесь к использованию класса
  • Сделайте это чертой, если она может быть повторно использована в нескольких и не связанных между собой классах. В разных частях иерархии классов только черты могут быть смешаны с разными частями.
  • Вы можете использовать абстрактный класс, если хотите распространять его в скомпилированном виде и ожидаете, что внешние группы напишут классы, унаследованные от него.

11) Что такое кейс-классы?

Классы case предоставляют механизм рекурсивной декомпозиции через сопоставление с образцом, это обычные классы, которые экспортируют свой параметр конструктора. К параметрам конструктора классов case можно получить доступ напрямую, и они рассматриваются как общедоступные значения.

12) Какая польза от кортежей в scala?

Кортежи Scala объединяют фиксированное количество элементов вместе, чтобы их можно было передавать как единое целое. Кортеж неизменен и может содержать объекты разных типов, в отличие от массива или списка.

13) Что такое каррирование функций в Scala?

Каррирование - это метод преобразования функции, которая принимает несколько аргументов, в функцию, которая принимает один аргумент. Многие из тех же методов, что и такие языки, как Haskell и LISP, поддерживаются Scala. Каррирование функций - одно из наименее используемых и неправильно понимаемых.

14) Что такое неявные параметры в Scala?

Неявный параметр - это способ, позволяющий «найти» параметры метода. Он аналогичен параметрам по умолчанию, но имеет другой механизм поиска значения «по умолчанию». Неявный параметр - это параметр метода или конструктора, помеченный как неявный. Это означает, что если значение параметра не упомянуто, компилятор будет искать «неявное» значение, определенное в пределах области видимости.

15) Что такое закрытие в Scala?

Замыкание - это функция, возвращаемое значение которой зависит от значения переменных, объявленных вне функции.

16) Что такое монада в Scala?

Монада - это объект, который обертывает другой объект. Вы передаете мини-программы 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) Как мне добавить в список?

В scala для добавления в список используйте «

:+” 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 (), в scala вы можете использовать

Val formatted = «% s% i» .format (mystring.myInt)

23) Почему scala предпочитает неизменность?

Scala предпочитает неизменность конструкции и во многих случаях использует ее по умолчанию. Неизменяемость может помочь при решении проблем равенства или параллельных программ.

24) Какие четыре типа идентификаторов scala?

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

  • Буквенно-цифровые идентификаторы
  • Идентификаторы оператора
  • Смешанные идентификаторы
  • Буквальные идентификаторы

25) Какие существуют типы литералов Scala?

Различные типы литералов в scala:

  • Целочисленные литералы
  • Литералы с плавающей запятой
  • Логические литералы
  • Символьные литералы
  • Символьные литералы
  • Строковые литералы
  • Многострочные струны