Статьи Kotlin. Проверь себя! Вопросы - ответы.
Post
Cancel

Kotlin. Проверь себя! Вопросы - ответы.

Здесь будут вопросы и ответы по языку программирования Kotlin. Общий сборник из найденного в интернете и услышанного на собеседованиях. Создано с целью проверить себя, а также понять, что нужно подтянуть.


Каковы основные преимущества языка программирования Kotlin?

  • Краткий - в сравнении с Java, в нём меньше шаблонного кода.
  • Безопасный - позволяет избавить от NullPointerException.
  • Совместимый - полностью совместим с Java.

Что такое висячий указатель?
Висячий указатель - это указатель (адрес определенной переменной в памяти), указывающий на область памяти, которая была удалена (или освобождена). Это особый случай небезопасной работы с памятью.

Виды комментариев в Kotlin.
Однострочный - //, многострочный - /* */

Что такое REPL и в чём его польза?
REPL (Read-Eval-Print-Loop) - инструмент для интерактивного запуска кода Kotlin. Позволяет быстро оценить работу какого-либо фрагмента кода без необходимости создания проекта / функции.

Что есть в Kotlin, но нет в Java?

  • Null-безопасность.
  • Inline-функции, функции-расширения, функции области видимости.
  • Первичный конструктор.
  • Корутины (сопрограммы).
  • Классы данных (в т.ч. Pair и Triple из стандартной библиотеки).
  • Синглтоны.
  • Companion objects.

Какие символы не разрешено использовать в строке?

  • Обратная косая черта \ - используется для экранирования символов в строке.
  • Двойная кавычка " - обозначает начало и конец строки.

Ключевые моменты из соглашения по именовании переменных.

  • Имя переменной может содержать буквы, цифры и нижнее подчёркивание.
  • Имя должно начинаться либо с буквы, либо с нижнего подчёркивания.
  • Если имя состоит из нескольких слов, используется camelCase.

Виды строковых шаблонов.
Строки могут содержать участки кода: код выполняется, а результат встраивается в строку. Подобный участок кода называется шаблонным выражением. Состоять он может либо из имени переменной, либо из произвольного выражения.

В чем разница между val и const val?
val - константа времени выполнения, т.е. хранит ссылку на объект, которую нельзя изменить, зато можно изменять сам объект.
cons val - константа времени компиляции, т.е. значение известно во время компиляции и не может быть изменено ни при каких обстоятельствах.

Что такое элвис оператор и как он помогает обеспечивать null-безопасность?
Оператор указывается между двумя значениями. Если значение слева от оператора равно null, то применяется значение справа.

Каковы способы генерации случайных чисел в Kotlin?

1
2
3
4
5
6
7
8
9
10
11
//Случайное целое число
println(Random.nextInt())

//Случайное целое число от 0 до 10 (не включая)
println(Random.nextInt(10))

//Случайное целое число от 1 (включительно) до 10 (включительно)
println(Random.nextInt(1,10))

//Случайное целое число от 1 (включительно) до 10 (включительно)
println(Random.nextInt(1..10))

Размеры в битах для базовых типов.

  • Byte - 8 бит
  • Short - 16 бит
  • Int - 32 бит
  • Long - 64 бит
  • Float - 32 бит
  • Double - 64 бит

Какая может вылезти ошибка при конвертации Long в Int.
Если количество символов в Long будет больше, чем ёмкость Int, то при преобразовании данные могут повредиться (из-за потери битов) и как следствие результат будет неожиданным.

Каким образом вычисляется базовый тип для результата арифметической операции?
Приоритет следующий: Byte < Short < Int < Long < Float < Double. Т.е. если у одного операнда тип Int, у другого Long, переменной с результатом присвоится тип Long.

Какими способами можно присвоить значение переменной в Kotlin?

  • =
  • $
  • ${}
  • +=
  • -=
  • *=
  • /=
  • %=

В чём разница между операторами присваивания и расширенными операторами присваивания?
Расширенные операторы присваивания помимо самого присваивания совершают арифметическую операцию.
+= , -= , *= , /= , %= - расширенные операторы присваивания.

This post is licensed under CC BY 4.0 by the author.