Рубрики
Без рубрики

Вопросы и ответы для интервью с Java-строками

Строка-один из наиболее широко используемых классов Java. Здесь я перечисляю некоторые важные вопросы и ответы на интервью с Java-строками. Это будет очень полезно

Автор оригинала: Pankaj Kumar.

Строка-один из наиболее широко используемых классов Java. Здесь я перечисляю некоторые важные Вопросы и ответы для интервью с Java-строками .

Это будет очень полезно для получения полных знаний о String и решения любых вопросов, связанных со String, во время интервью.

Вот ссылка, которая открывается на новой вкладке: Тест по строкам Java

Вопросы для интервью с Java-строками

  1. Что такое строка в Java? Строка-это тип данных?
  2. Каковы различные способы создания строкового объекта?
  3. Напишите метод, чтобы проверить, является ли входная строка палиндромом?
  4. Написать метод, который удалит данный символ из строки?
  5. Как мы можем сделать строку прописной или строчной?
  6. Что такое метод подпоследовательности строк?
  7. Как сравнить две строки в java-программе?
  8. Как преобразовать строку в символ и наоборот?
  9. Как преобразовать строку в массив байтов и наоборот?
  10. Можем ли мы использовать строку в случае переключателя?
  11. Написать программу для печати всех перестановок строк?
  12. Напишите функцию, чтобы узнать самый длинный палиндром в заданной строке?
  13. Разница между String, StringBuffer и StringBuilder?
  14. Почему строка является неизменяемой или окончательной в Java
  15. Как разделить строку в java?
  16. Почему массив символов предпочтительнее строки для хранения пароля?
  17. Как проверить, равны ли две строки в Java?
  18. Что такое Струнный пул?
  19. Что делает метод String intern ()?
  20. Является ли строка потокобезопасной в Java?
  21. Почему строка является популярным ключом хэш-карты в Java?
  22. Вопросы строкового программирования

Что такое строка в Java? Строка-это тип данных?

Строка-это класс в java, определенный в пакете java.lang. Это не примитивный тип данных, такой как int и long. Класс String представляет символьные строки. Строка используется почти во всех приложениях Java, и есть некоторые интересные факты, которые мы должны знать о строке. Строка в неизменяемом и окончательном в Java и JVM использует пул строк для хранения всех строковых объектов. Некоторые другие интересные вещи о String-это то, как мы можем создать экземпляр строкового объекта, используя двойные кавычки и перегрузку оператора “+” для объединения.

Каковы различные способы создания строкового объекта?

Мы можем создать строковый объект с помощью оператора new , как и любой обычный класс java, или мы можем использовать двойные кавычки для создания строкового объекта. В классе String доступно несколько конструкторов для получения строки из массива символов, массива байтов, буфера строк и StringBuilder.

String str = new String("abc");
String str1 = "abc";

Когда мы создаем строку с использованием двойных кавычек, JVM просматривает пул строк, чтобы найти, хранится ли какая-либо другая строка с тем же значением. Если он найден, он просто возвращает ссылку на этот строковый объект, в противном случае он создает новый строковый объект с заданным значением и сохраняет его в пуле строк. Когда мы используем оператор new, JVM создает объект String, но не сохраняет его в пуле строк. Мы можем использовать метод intern() для хранения строкового объекта в пуле строк или возврата ссылки, если в пуле уже есть строка с равным значением.

Напишите метод, чтобы проверить, является ли входная строка палиндромом?

Строка считается палиндромом, если ее значение совпадает при обратном изменении. Например, “aba” – это строка палиндрома. Класс String не предоставляет никакого метода для изменения строки, но StringBuffer и StringBuilder класс имеет обратный метод, который мы можем использовать, чтобы проверить, является ли строка палиндромом или нет.

    private static boolean isPalindrome(String str) {
        if (str == null)
            return false;
        StringBuilder strBuilder = new StringBuilder(str);
        strBuilder.reverse();
        return strBuilder.toString().equals(str);
    }

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

    private static boolean isPalindromeString(String str) {
        if (str == null)
            return false;
        int length = str.length();
        System.out.println(length / 2);
        for (int i = 0; i < length / 2; i++) {

            if (str.charAt(i) != str.charAt(length - i - 1))
                return false;
        }
        return true;
    }

Написать метод, который удалит данный символ из строки?

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

    private static String removeChar(String str, char c) {
        if (str == null)
            return null;
        return str.replaceAll(Character.toString(c), "");
    }

Как мы можем сделать строку прописной или строчной?

Мы можем использовать методы класса String в верхнем регистре и в нижнем регистре , чтобы получить строку во всех прописных или строчных буквах. Эти методы имеют вариант, который принимает аргумент локали и использует эти правила локали для преобразования строки в верхний или нижний регистр.

Что такое метод подпоследовательности строк?

Java 1.4 представила интерфейс последовательности символов, и строка реализует этот интерфейс, это единственная причина реализации метода подпоследовательности в классе String. Внутренне он вызывает метод строковой подстроки. Проверьте этот пост на наличие примера подпоследовательности строк.

Как сравнить две строки в java-программе?

Строка Java реализует интерфейс Comparable и имеет два варианта методов compareTo () .

compareTo(Строка anotherString) метод сравнивает объект String со строковым аргументом, переданным лексикографически. Если строковый объект предшествует переданному аргументу, он возвращает отрицательное целое число, а если строковый объект следует за переданной строкой аргумента, он возвращает положительное целое число. Он возвращает ноль, когда обе строки имеют одинаковое значение, в этом случае равно(String str) метод также вернет значение true.

compareToIgnoreCase(String str): Этот метод аналогичен первому, за исключением того, что он игнорирует регистр. Он использует компаратор строк CASE_INSENSITIVE_ORDER для сравнения без учета регистра. Если значение равно нулю, то equalsIgnoreCase(строка str) также вернет значение true. Проверьте этот пост на Сравнение строк пример.

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

Это сложный вопрос, потому что строка-это последовательность символов, поэтому мы не можем преобразовать ее в один символ. Мы можем использовать метод use charAt для получения символа с заданным индексом или метод toCharArray() для преобразования строки в массив символов. Проверьте этот пост для примера программы по преобразованию Строки в массив символов в строку .

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

Мы можем использовать метод String getBytes() для преобразования строки в массив байтов, и мы можем использовать конструктор строк новая строка(byte[] arr) для преобразования массива байтов в строку. Проверьте этот пост на наличие Строки в массиве байтов пример.

Можем ли мы использовать строку в случае переключателя?

Это сложный вопрос, используемый для проверки ваших знаний о текущих разработках Java. Java 7 также расширила возможности случая переключения для использования строк, более ранние версии Java это не поддерживают. Если вы реализуете условный поток для строк, вы можете использовать условия if-else и использовать регистр переключения, если вы используете Java 7 или более поздние версии.

Проверьте этот пост для примера строки регистра переключателя Java.

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

Это сложный вопрос, и нам нужно использовать рекурсию, чтобы найти все перестановки строки, например, перестановки “AAB” будут “AAB”, “ABA” и “BAA”. Нам также нужно использовать Set, чтобы убедиться, что нет повторяющихся значений. Проверьте этот пост для полной программы, чтобы найти все перестановки строки .

Напишите функцию, чтобы узнать самый длинный палиндром в заданной строке?

Строка может содержать строки палиндрома, и найти самый длинный палиндром в данной строке-это вопрос программирования. Проверьте этот пост для полной программы, чтобы найти самый длинный палиндром в строке .

Разница между String, StringBuffer и StringBuilder?

Строка является неизменяемой и окончательной в Java, поэтому всякий раз, когда мы выполняем манипуляции со строками, она создает новую строку. Манипуляции со строками требуют больших ресурсов, поэтому java предоставляет два служебных класса для манипуляций со строками – StringBuffer и StringBuilder. StringBuffer и StringBuilder являются изменяемыми классами. Операции StringBuffer потокобезопасны и синхронизированы там, где операции StringBuilder не являются потокобезопасными. Поэтому в многопоточной среде мы должны использовать StringBuffer, но в однопоточной среде мы должны использовать StringBuilder. Производительность StringBuilder выше, чем у StringBuffer, из-за отсутствия накладных расходов на синхронизацию.

Проверьте этот пост для получения подробной информации о String vs StringBuffer vs StringBuilder . Прочитайте этот пост для сравнительного анализа StringBuffer против StringBuilder .

Почему строка является неизменяемой или окончательной в Java

У строки есть несколько преимуществ, потому что она неизменна и окончательна.

  • Пул строк возможен, потому что строка неизменна в java.
  • Это повышает безопасность, потому что любой хакер не может изменить его значение, и он используется для хранения конфиденциальной информации, такой как имя пользователя базы данных, пароль и т.д.
  • Поскольку строка неизменяема, ее безопасно использовать в многопоточности, и нам не нужна никакая синхронизация.
  • Строки используются в загрузчике классов java, и неизменяемость обеспечивает безопасность того, что загрузчик классов загружает правильный класс.

Проверьте этот пост, чтобы получить более подробную информацию о том, почему строка неизменна в java .

Как разделить строку в java?

Мы можем использовать split(регулярное выражение строки) для разделения строки на массив строк на основе предоставленного регулярного выражения. Узнайте больше на Разделение строк java .

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

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

Как проверить, равны ли две строки в Java?

Есть два способа проверить, равны ли две строки или нет – с помощью оператора “==” или с помощью метода equals . Когда мы используем оператор”==”, он проверяет значение строки, а также ссылку, но в нашем программировании большую часть времени мы проверяем равенство строки только для значения. Поэтому мы должны использовать метод equals, чтобы проверить, равны ли две строки или нет. Есть еще одна функция equalsIgnoreCase , которую мы можем использовать, чтобы игнорировать регистр.

        String s1 = "abc";
        String s2 = "abc";
        String s3= new String("abc");
        System.out.println("s1 == s2 ? "+(s1==s2)); //true
        System.out.println("s1 == s3 ? "+(s1==s3)); //false
        System.out.println("s1 equals s3 ? "+(s1.equals(s3))); //true

Что такое Струнный пул?

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

Что делает метод String intern ()?

При вызове метода стажера, если пул уже содержит строку, равную этому строковому объекту, как определено методом equals(Объект), возвращается строка из пула. В противном случае этот строковый объект добавляется в пул и возвращается ссылка на этот строковый объект. Этот метод всегда возвращает строку с тем же содержимым, что и эта строка, но гарантированно из пула уникальных строк.

Является ли строка потокобезопасной в Java?

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

Почему строка является популярным ключом хэш-карты в Java?

Поскольку строка неизменна, ее хэш-код кэшируется во время создания, и его не нужно вычислять повторно. Это делает его отличным кандидатом для ключа на карте, и его обработка выполняется быстрее, чем у других ключевых объектов HashMap. Вот почему строка в основном используется в качестве объекта в качестве ключей хэш-карты.

Вопросы строкового программирования

  1. Каков результат приведенной ниже программы?

    Это простая, но сложная программа, она напечатает “PANKAJ”, потому что мы присваиваем строку s2 s1. Не путайте с оператором.

  2. Каков результат приведенной ниже программы?

    Приведенная выше программа не будет компилироваться с ошибкой, так как “Метод foo(Строка) неоднозначен для теста типа”. Для полного разъяснения прочитайте Понимание метода X неоднозначно для ошибки типа Y .

  3. Каков вывод приведенного ниже фрагмента кода?

    Он выведет false , потому что мы используем новый оператор для создания строки, поэтому он будет создан в памяти кучи, и оба s1, s2 будут иметь разные ссылки. Если мы создадим их с использованием двойных кавычек, то они будут частью пула строк, и он будет печатать true.

  4. Что будет выведено из приведенного ниже фрагмента кода?

    Он выведет значение false, поскольку s2 не относится к типу String. Если вы посмотрите на реализацию метода equals в классе String, вы найдете проверку с использованием оператора instanceof , чтобы проверить, является ли тип передаваемого объекта строковым? Если нет, то верните значение false.

  5. Каков будет результат приведенной ниже программы?

    Это сложный вопрос, и вывод будет false . Мы знаем, что метод intern() вернет ссылку на строковый объект из пула строк, но, поскольку мы не вернули его обратно в s2, в s2 нет изменений, и, следовательно, и s1, и s2 имеют разные ссылки. Если мы изменим код в строке 3 на s2.intern (); , то вывод будет истинным.

  6. Сколько строковых объектов было создано в приведенном ниже фрагменте кода?

    Ответ 3. Первая строка 1, объект “Привет” в пуле строк. Вторая строка 1, новая строка со значением “Привет” в памяти кучи. Третья строка 2, новая строка со значением “Привет” в памяти кучи. Здесь строка “Привет” из пула строк используется повторно.

Я надеюсь, что перечисленные здесь вопросы помогут вам в интервью на Java, пожалуйста, дайте мне знать, если я что-то пропустил.

Дальнейшее Чтение

  1. Вопросы программирования на Java
  2. Строковые программы на Java
  3. Основные Вопросы для Интервью на Java
  4. Вопросы для интервью на Java