217.50K
Category: programmingprogramming

Собеседование Entry Level. String

1.

Entry level questions vol. 2 (String)

2.

Вопрос 1
Дайте характеристику String в JAVA

3.

Дайте характеристику String в
JAVA
String — это класс в Java для представления текстовых
неизменяемых строк. Он находится в пакете java.lang.
Объявление класса String: public final class String
Это неизменяемый (immutable) и финализированный тип
данных в Java и все объекты класса String виртуальная
машина хранит в пуле строк.
Символы в строках хранятся в кодировке Unicode, каждый
символ занимает два байта. Тип каждого символа char .

4.

Вопрос 2
Какие есть способы создания объекта String? Где они
создаются?

5.

Какие есть способы создания
объекта String? Где они создаются?
String str1 = "abc";
Когда мы создаем строку используя двойные кавычки,
виртуальная машина Java ищет в пуле строк другую
строку с таким же значением. Если строка найдена, то
возвращается только ссылка на существующий объект
класса String, иначе создается новый объект с
полученным значением, и сохраняется в пул.
String str = new String("abc");
Когда мы используем оператор new, виртуальная машина
создает объект String, но не хранит его в пуле строк.

6.

Вопрос 3
Как сравнить две строки в Java и/или отсортировать их?

7.

Как сравнить две строки в Java
и/или отсортировать их?
Класс String наследует интерфейс Comparable и имеет
два варианта метода compareTo().
Метод compareTo(String anotherString) сравнивает объект
String с полученным аргументом String
лексикографически. Если текущая строка
предшествует полученной строке, метод возвращает
отрицательное значение типа integer, и если строка
следует за полученным аргументом, то возвращает
положительное значение integer. Если метод
возвращает 0, значит строка имеет то же значение, в
таком случае метод equals(String str) так же вернет true.

8.

Вопрос 4
Предложите алгоритм преобразования строки в символ

9.

Предложите алгоритм
преобразования строки в символ
Проверить, возможно ли преобразование (строка состоит
из одного символа), и преобразовать строку в символ с
помощью charAt(0) если это возможно.
String str = "a";
if (str.length() == 1){
char c = str.charAt(0);
}

10.

Вопрос 5
Как преобразовать строку в массив байтов и обратно?

11.

Как преобразовать строку в
массив байтов и обратно?
String str = "string";
byte[] byteArr = str.getBytes();
String str1 = new String(byteArr);

12.

Вопрос 6
Какие различия между String, StringBuffer и StringBuilder

13.

Какие различия между String,
StringBuffer и StringBuilder
Строка является неизменной и финализированной в Java
(immutable), поэтому все наши манипуляции со строкой
всегда будут создавать новую строку. Эти операции
ресурсоемки, т. к. строка не предназначена для таких
манипуляций.
StringBuffer и StringBuilder являются изменяемыми
классами. Операции с StringBuffer потокобезопасны и
синхронизированы, а методы StringBuilder не
потокобезопасны, но за счет отсутствия синхронизаций
более производительный.

14.

Вопрос 7
Для чего сделано, что строка неизменная и
финализированная в Java?

15.

Для чего сделано, что строка неизменная
и финализированная в Java?
Строковый пул возможен только потому, что строка
неизменна в Java.
Если строка будет изменяемой, это станет серьезной
угрозой безопасности приложения из-за возможных
несанкционированных изменений, например, в
паролях.
Так как строка неизменная, она безопасна для
многопоточности и один экземпляр строки может быть
совместно использован различными потоками.
Строки используются в Java classloader и ее

16.

Вопрос 8
Как разделить строку на части?

17.

Как разделить строку на части?
String line = "I am a java developer";
String[] words = line.split(" ");

18.

Вопрос 9
Почему массив символов предпочтительнее строки для
хранения пароля?

19.

Почему массив символов
предпочтительнее строки для хранения
пароля?
Строка неизменяемая в Java и хранится в пуле строк. С
тех пор, как она была создана, она остается в пуле,
пока не будет удалена сборщиком мусора, поэтому,
когда мы думаем, что закончили работу с паролем, он
остается доступным в памяти некоторое время, и нет
способа избежать этого.
Если мы используем массив символов для хранения
пароля, мы можем очистить его после того, как
закончим с ним работать. Таким образом, мы можем
контролировать, как долго он находится в памяти, что
позволяет избежать риска безопасности, свойственного

20.

Вопрос 10
Что такое пул строк?

21.

Что такое пул строк?
Пул строк – это набор строк, который хранится в памяти
Java heap.
Пул строк возможен исключительно благодаря
неизменяемости строк в Java и реализации идеи
интернирования строк.
Пул строк также является примером паттерна
Приспособленец (Flyweight).
Пул строк помогает экономить большой объем памяти,
но с другой стороны создание строки занимает больше
времени.

22.

Вопрос 11
Что будет выведено на экран в результате выполнения
кода? Почему?
public class StringPool {
public static void main(String[] args) {
String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");

23.

Что будет выведено на экран в
результате выполнения кода? Почему?
s1 == s2 : true
s1 == s3 : false
Когда мы используем двойные кавычки для создания
строки, сначала ищется строка в пуле с таким же
значением, и если находится, то просто возвращается
ссылка, иначе создается новая строка в пуле, а затем
возвращается ссылка.
Когда мы используем оператор new, мы принуждаем
класс String создать новый объект строки
English     Русский Rules