Здесь будут вопросы и ответы по языку программирования 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?
=
$
${}
+=
-=
*=
/=
%=
В чём разница между операторами присваивания и расширенными операторами присваивания?
Расширенные операторы присваивания помимо самого присваивания совершают арифметическую операцию.
+=
, -=
, *=
, /=
, %=
- расширенные операторы присваивания.