ТОП 20 тестовых заданий на интервью для Java разработчика - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

    Выбери свою IT специальность

    Подписка

    Выбери свою IT специальность

    Подписка

      ТОП 20 тестовых заданий на интервью для Java разработчика

      advertisement advertisement
      1. Напишите программу на Java для переворачивания строки, изменив расположение символов в строке задом наперёд без использования встроенных в String функций
      2. Напишите программу на Java для переворота последовательности символов в строке без использования встроенной в String функции reverse()
      3. Напишите программу на Java для того, чтобы поменять местами значения, хранящиеся в двух переменных с помощью третьей переменной
      4. Напишите программу на Java, чтобы поменять местами значения, хранящиеся в двух переменных, без использования третьей переменной
      5. Напишите программу на Java для подсчета количества конкретных слов в строке, используя HashMap
      6. Напишите Java-программу для итерации объекта типа HashMap с использованием цикла while и улучшенного цикла for
      7. Напишите программу на Java, чтобы узнать, является ли число простым или нет
      8. Напишите Java-программу, чтобы определить, является ли строка или число палиндромом, или нет
      9. Написать программу на Java для вычисления серии чисел Фибоначчи
      10. Напишите Java-программу для обхода ArrayList с использованием цикла for, while и улучшенного цикла for
      11. Напишите программу на Java, чтобы продемонстрировать явную проверку условий ожидания
      12. Напишите Java-программу для демонстрации прокрутки вверх / вниз
      13. Напишите программу на Java, чтобы открыть все ссылки на gmail.com
      14. Напишите код для Selenium, чтобы перейти на предыдущую вкладку
      15. Напишите программу на Java, чтобы найти повторяющиеся символы в строке
      16. Напишите Java-программу, чтобы найти второе по величине число в массиве
      17. Напишите Java-программу для проверки является ли введенное число - числом Армстронга
      18. Напишите Java-программу для удаления всех пробелов из строки с помощью replace()
      19. Напишите Java-программу для удаления всех пробелов из строки без использования replace()
      20. Напишите Java-программу для чтения данных из таблицы Excel

      В этой статье мы приведем достаточно большое количество примеров программ из тех, что просят написать соискателей во время прохождения интервью на вакансию Java разработчика.  Указанные тестовые задания мы приводим с реальными примерами кода, заданными в интервью как начинающих, так и достаточно опытных кандидатов.

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

      Для того, чтобы помочь соискателям подходящих вакансий пройти такие интервью, мы хотим перечислить несколько очень важных примеров программ на Java вместе с надлежащим описанием каждого.

      Кроме того, мы также добавляем соответствующие пояснения кода. Эти пояснения дадут вам четкое представление о том, как работает каждая программа.

       

      Самые популярные вопросы интервью Java-программирования.

       

      Q # 1) Напишите программу на Java для переворачивания строки, изменив расположение символов в строке задом наперёд без использования встроенных в String функций.

      Ответ:

      Для начала инициализируем строковую переменную st и используем класс StringBuilder.

      Объект класса StringBuilder strB будет в дальнейшем использоваться для добавления значения, хранящегося в строковой переменной st.

      После этого мы используем встроенную в StringBuilder функцию reverse() и сохраняем новую - обращенную строку в stB.

      Наконец, мы выводим на экран stB.

       

      public class FirstTask{

       

       

                public static void main(String[] args) {

                         // ITVDN.com 1 из ТОП 20 тестовых заданий на интервью для Java разработчика

                         String st = "Задача1";

                         StringBuilder stB = new StringBuilder();

                         stB.append(st);

                         stB = stB.reverse();       // используем StringBuilder для переворота строки

                         System.out.println(stB);

                }

       

      }

       

      На экране получим:

      1ачадаЗ

       

      Q # 2) Напишите программу на Java для переворота последовательности символов в строке без использования встроенной в String функции reverse().

      Ответ

      Способ 1:

      Есть несколько способов, с помощью которых вы можете перевернуть вашу строку, если вам разрешено использовать другие встроенные функции строки.

      В этом способе мы инициализируем строковую переменную с именем st значением заданной строки. Затем мы конвертируем эту строку в массив символов с помощью функции toCharArray(). После этого мы используем цикл for чтобы взять все символы в обратном порядке и вывести их так на экран поочередно.

       

      public class SecondTask {

       

              public static void main(String[] args) {

                     //ITVDN.com 2 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     String st = "Учимся программировать";

                     char symbols[] = st.toCharArray();  // конвертируем строку в массив символов, затем выводим символы на экран в обратном порядке

                     for(int x= symbols.length-1; x>=0; x--) {

                             System.out.print(symbols [x]);

                     }

              }

      }

       

      На экране получим:

      ьтавориммаргорп ясмичУ

      Способ 2:

      Это еще один способ выполнить задачу с переворотом последовательности символов в строке. В этом способе вы объявляете строковую переменную st, а затем используете класс Scanner, объявляя объект scannerQ для работы со стандартным потоком ввода данных.

      В данном случае программа примет строковое значение через командную строку (при ее выполнении).

      Далее мы использовали метод nextLine(), который прочитал нашу строку при вводе ее через консоль с пробелами между словами строки. После этого мы использовали метод split() для разделения строки на ее подстроки (здесь не указывается разделитель). Затем, мы выводим строку в обратном порядке, используя цикл for.

       

      import java.util.Scanner;

       

       

      public class SecondTask {

       

              public static void main(String[] args) {

                     // ITVDN.com 2 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     String st;

                     Scanner scannerQ = new Scanner(System.in);

                     System.out.println("Введите вашу строку:");

                     st = scannerQ.nextLine();

                     String[] temp = st.split("");    //используем метод split для вывода строки в обратном порядке

                     for(int x= temp.length-1; x>=0; x--)

                     {

                             System.out.print(temp [x] + "");

                     }

                    

              }

       

      }

       

       

      На экране получим:

      Введите вашу строку:
      asfasdf aasdfasdfadsf
      fsdafdsafdsaa fdsafsa

      Способ 3:

      Это способ почти такой же, как способ 2, но здесь мы не используем метод split(). Мы используем класс Scanner и метод nextLine() для чтения входящей строки. Затем мы объявили целочисленную переменную stringLength, присваивая ей значение длины входящей строки.

      После этого мы вывели строку в обратном порядке, используя цикл for. Однако мы использовали метод charAt(index), который будет возвращать символ по конкретному индексу. После каждой итерации символ будет добавлен в новую строку для получения перевернутого значения строковой переменной.

      Затем, мы выводим переменную перевернутой строки.

       

      import java.util.Scanner;

       

       

      public class SecondTask {

       

              public static void main(String[] args) {

                     // ITVDN.com 2 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     String mainString, reverseString = "";

                     System.out.println("Введите нужную строку, чтобы получить перевернутую:");

                     Scanner scannerQ = new Scanner(System.in);

                     mainString = scannerQ.nextLine();

                     int stringLength = mainString.length();

                     for(int x= stringLength -1; x>=0; x--) {

                             reverseString = reverseString + mainString.charAt(x);   //используем встроенный метод charAt() чтобы перевернуть строку

                     }

                     System.out.println(reverseString);

              }

      }

       

       

      На экране получим:

      Введите строку, чтобы получить перевернутую:
      Введенная строка
      акортс яаннедевВ

      Q # 3) Напишите программу на Java для того, чтобы поменять местами значения, хранящиеся в двух переменных с помощью третьей переменной

      Ответ:

      В этом примере мы создаем объект класса Scanner для работы со стандартным потоком ввода данных System.in. Эта программа будет принимать значения a и b через командную строку.

      Мы использовали nextInt(), который будет помещать введенные пользователем значения целочисленнох переменных в a и b. Также объявляем временную переменную.

      Теперь логика программы выглядит следующим образом: мы создаем временную или третью переменную с именем temp, присваиваем ей значение, хранящееся в переменной a, а затем мы присваиваем a значение b, и снова присваиваем b значение temp. Таким образом, после выполнения всех операций temp будет хранить в себе значение a, a получит значение b, а b будет иметь значение temp (которое равно a).

       

      import java.util.Scanner;

       

       

      public class ThirdTask {

              public static void main(String[] args) {

                     // ITVDN.com 3 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     int a, b, temp;

                     System.out.println("Введите значения a и b");

                     Scanner scannerQ = new Scanner(System.in);

                     a = scannerQ.nextInt();

                     b = scannerQ.nextInt();

                     System.out.println("До обмена значениями " + a + b);

                     temp = a;

                     a = b;

                     b = temp;

                     System.out.println("После обмена значениями " + a + b);

                    

              }

      }

       

      На экране получим:

      Введите значения a и b
      23
      45
      До обмена значениями 2345
      После обмена значениями 4523

       

      Q # 4) Напишите программу на Java, чтобы поменять местами значения, хранящиеся в двух переменных, без использования третьей переменной.

      Ответ:

      В начале все будет так же, как и в приведенном выше примере. Только дальнейшая логика изменится. Здесь мы сначала присваиваем переменной a значение a + b, что означает, что a будет теперь иметь в себе значение как a, так и b.

      Затем мы присваиваем переменной b значение a - b, что означает, что мы вычитаем значение b из суммы (a + b). До сих пор a все еще хранит в себе сумму изначальных a и b. Но b имеет теперь значение первоначального a.
      Наконец, на третьем шаге мы присваиваем a значение a - b, что означает, что мы вычитаем значение переменной b (которая сейчас уже имеет в себе значение a) из суммы (a + b). В результате этих действий мы поменяли местами значения, хранящиеся в переменных.

       

      import java.util.Scanner;

       

       

      public class FourthTask

      {

         public static void main(String args[])

         {

            int a, b;

            System.out.println("Введите нужные значения a и b");

            Scanner scannerQ = new Scanner(System.in);

       

            a = scannerQ.nextInt();

            b = scannerQ.nextInt();

       

            System.out.println("До обмена значениями\na = "+a+"\nb = "+b);

       

            a = a + b;

            b = a - b;

            a = a - b;

       

            System.out.println("После обмена значениями без промежуточной переменной\na = "+a+"\nb = "+b);

         }

      }

       

      На экране получим:

      Введите нужные значения a и b
      23
      45
      До обмена значениями
      a = 23
      b = 45
      После обмена значениями без промежуточной переменной
      a = 45
      b = 23

       

      Q # 5) Напишите программу на Java для подсчета количества конкретных слов в строке, используя HashMap.

      Ответ:

      Это программа работает с классом-коллекцией, в которой мы использовали HashMap для хранения строки.

      Прежде всего, мы объявили нашу строковую переменную с именем st. Затем мы использовали функцию split(), с одиночным пробелом, чтобы можно было разбить строку на массив из нескольких слов.

      После этого мы создали экземпляр HashMap и цикл for. Внутри цикла for мы используем оператор if else. Мы заходим в каждый элемент массива split и добавляем элементы этого массива. Слова мы добавляем в качестве ключей экземпляра HashMap. В качестве значений HashMap  мы будем добавлять то число, сколько раз при обходе массива слов нам данное слово встретилось. Если в наш экземпляр HashMap мы уже добавили данное слово – при обходе мы увеличим значение, записанное в HashMap в соответствии с данным словом-ключом.

      Каждый раз, когда слово будет встречаться повторно (мы видим, что слово в экземпляр HashMap мы уже добавляли) – значение-счетчик увеличивается на 1. Если такое слово ранее не встречалось – значение-счетчик устанавливается на 1.

      Наконец, мы выводим на экран HashMap.

      Обратите внимание: ту же программу вы можете использовать и для подсчета количества символов в строке. Все, что вам нужно сделать, это удалить один пробел (удалить пробел, указанный в методе split) и прописать String [] words = st.split (“”);

       

      import java.util.HashMap;

       

       

      public class FifthTask{

       

              public static void main(String[] args) {

                     // ITVDN.com 5 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     String st = "Current task posted for Java developers developers";

                     String[] words = st.split(" ");

                     HashMap<String,Integer> keyValue = new HashMap<String,Integer>();

                     for (int i=0; i<= words.length-1; i++) {

                             if (keyValue.containsKey(words[i])) {

                                     int counter = keyValue.get(words[i]);

                                     keyValue.put(words[i], counter+1);

                             }

                             else {

                                     keyValue.put(words[i], 1);

                             }

                     }

                     System.out.println(keyValue);

              }

      }

       

       

      На экране получим:

      {Java=1, task=1, developers=2, for=1, Current=1, posted=1}
       

      В # 6) Напишите Java-программу для итерации объекта типа HashMap с использованием цикла while и улучшенного цикла for.

      Ответ:

      Здесь мы для начала вставили три элемента в переменную типа HashMap с именем keyValue, используя функцию put().

      Размер переменной keyValue можно получить с помощью метода size(). После этого мы использовали цикл While для обхода keyValue, которая содержит по одной паре ключ-значение для каждого элемента. Ключи и значения могут быть получены с помощью методов getKey() и getValue().

      Аналогично, мы используем расширенный цикл for, на элементах «qurentMe2» в HashMap.

       

      import java.util.HashMap;

       

      import java.util.Iterator;

      import java.util.Map;

       

      public class SixthTask{

       

              public static void main(String[] args) {

                     // ITVDN.com ТОП 20 тестовых заданий на интервью для Java разработчика

                     HashMap<Integer,String> keyValue = new HashMap<Integer,String>();

                     keyValue.put(1, "Hello");

                     keyValue.put(2, "World");

                     keyValue.put(3, "Have a nice day!");

                     System.out.println(keyValue.size());

                     System.out.println("Цикл While:");

                     Iterator iter = keyValue.entrySet().iterator();

                     while(iter.hasNext()) {

                             Map.Entry qurentMe = (Map.Entry) iter.next();

                             System.out.println("Ключ это " + qurentMe.getKey() + " Значение это " + qurentMe.getValue());

                     }

                     System.out.println("Цикл For:");

                     for(Map.Entry qurentMe2: keyValue.entrySet()) {

                             System.out.println("Ключ это: " + qurentMe2.getKey() + " Значение это: " + qurentMe2.getValue());

                     }

              }

       

      }

       

      На экране получим:

      3
      Цикл While:
      Ключ это 1 Значение это Hello
      Ключ это 2 Значение это World
      Ключ это 3 Значение это Have a nice day!
      Цикл For:
      Ключ это: 1 Значение это: Hello
      Ключ это: 2 Значение это: World
      Ключ это: 3 Значение это: Have a nice day!  

       


      Q # 7) Напишите программу на Java, чтобы узнать, является ли число простым или нет.

      Ответ:

      Мы объявили две целочисленных переменных temp и number и использовали класс Scanner с nextInt (поскольку у нас может быть на рассмотрении только целое число).

      Объявляем логическую переменную numberIsPrime и устанавливаем ее значение - true. После этого мы используем цикл for со значением переменной итератора, начинающемся с 2. Количество итераций, нужное нам, будет равно половине введенного числа. Счетчик итераций увеличивается на 1 после каждой итерации. В переменную tempNumber мы будем помещать остаток от деления значения введенного числа на значение счетчика. Если остаток от деления в одной из итераций будет равен 0, тогда numberIsPrime будет установлен в false, введенное число не будет простым, и мы выходим из цикла. Если во всех итерациях мы будем получать в temp некие остатки от деления, отличные от нуля – число будет простым.

      Основываясь на значении numberIsPrime, мы приходим к выводу, является ли наше число простым или нет.

       

      import java.util.Scanner;

       

       

      public class SeventhTask {

       

              public static void main(String[] args) {

                     // ITVDN.com ТОП 20 тестовых заданий на интервью для Java разработчика

                     int temp, number;

                     boolean numberIsPrime = true;

                     Scanner scannerQ = new Scanner(System.in);

                     number = scannerQ.nextInt();

                     scannerQ.close();

                     for (int x = 2; x<= number /2; x++) {

                             tempNumber = number %x;             

                             if (tempNumber == 0) {

                                     numberIsPrime = false;

                                     break;

                             }

                     }

                     if(numberIsPrime)

                             System.out.println(number + " число является простым");

                             else

                                     System.out.println(number + " число не является простым");

                            

                    

              }

      }

       

      На экране получим:

      27
      27 число не является простым

       

      Q # 8) Напишите Java-программу, чтобы определить, является ли строка или число палиндромом, или нет.

      Ответ:

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

      Что вам нужно сделать, так это добавить один оператор if-else. Если исходная строка равна перевернутой строке, то число является палиндромом, в противном случае - нет.

       

      import java.util.Scanner;

       

       

      public class EighthTask{

              public static void main (String[] args) {

                     // ITVDN.com ТОП 20 тестовых заданий на интервью для Java разработчика

                     String inputString, reversedString = "";

                     Scanner scannerQ = new Scanner(System.in);

                     int stringLength;

                     System.out.println("Введите число или строку");

                     inputString = scannerQ.nextLine();

                     stringLength = inputString.length();

                     for (int x = stringLength -1; x>=0; x--) {

                             reversedString = reversedString + inputString.charAt(x);

                     }

                     System.out.println("перевернутое значение: " + reversedString);

                    

                     if(inputString.equals(reversedString))

                             System.out.println("Введенное значение является палиндромом");

                     else

                             System.out.println("Введенное значение не является палиндромом");

                    

              }

      }

       

      На экране получим:

      Для строки-

      Введите число или строку
      dfggg
      перевернутое значение: gggfd
      Введенное значение не является палиндромом

      Для числа-

      Введите число или строку
      777
      перевернутое значение: 777
      Введенное значение является палиндромом

       

      Q # 9) Написать программу на Java для вычисления серии чисел Фибоначчи.

      Ответ:

      Ряд Фибоначчи — это такая серия чисел, где после первых двух чисел - каждое встречающееся число является суммой двух предыдущих чисел.

      Пример: 0,1,1,2,3,5,8,13,21 ………

      В этой программе мы снова использовали класс Scanner с nextInt (описывалось выше). Первоначально мы вводим (через командную строку) некое число, какое количество чисел Фибоначчи мы должны получить. Мы объявили целочисленные переменные number, x, y и z, инициализировали x и y нулем, а z - единицей. Затем мы использовали цикл for для итерации.

      Процесс решения в цикле выглядит так – мы присваиваем x значение равное y (которое в первой итерации равно 0), затем y присваиваем значение переменной z (равное в первой итерации 1). Затем переменной z присваиваем значение равное сумме значений x и y.

       

      import java.util.Scanner;

       

       

      public class NinthTask{

              public static void main(String[] args) {

                     // ITVDN.com 9 из ТОП 20 тестовых заданий на интервью для Java разработчика

                     int number, x = 0, y=0, z =1;

                     Scanner scannerQ = new Scanner(System.in);

                     System.out.println("Введите количество значений");

                     number = scannerQ.nextInt();

                     System.out.println("Серия чисел Фибоначчи: ");

                     for (int i=0; i<= number; i++) {

                             x = y;

                             y = z;

                             z = x+y;

                             System.out.println(x + "");    // если вы хотите вывести в текущей строке - используйте print()

                     }             

              }

      }

       

      На экране получим:


      Введите количество значений
      10
      Серия чисел Фибоначчи:
      0
      1
      1
      2
      3
      5
      8
      13
      21
      34
      55

       

      Q # 10) Напишите Java-программу для обхода ArrayList с использованием цикла for, while и улучшенного цикла for.

      Ответ:

      В этой программе мы добавили три элемента в ArrayList и вывели его размер.
      Затем мы используем цикл While с итератором. Всякий раз, когда итератор получает следующий элемент, он будет отображать этот элемент, пока мы не достигнем конца списка. В нашем случае это будет повторяться три раза.

      Аналогично, мы сделали для улучшенного цикла for, где мы создали объект o для ArrayList с именем testList. Затем вывели на экран значение объекта.

      После этого мы создали цикла for, где итератор i установлен сначала на индекс 0, а затем увеличивается на 1 при каждой итерации, пока не будет достигнут предел ArrayList. Наконец, мы выводим на экран каждый элемент, используя метод get(index) для каждой итерации цикла for.

       

      import java.util.*;

       

       

      public class arrayList {

              public static void main(String[] args) {

                     // ITVDN.com 10 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

                     ArrayList testList = new ArrayList();

                     testList.add("50");

                     testList.add("60");

                     testList.add("70");

                     System.out.println(testList.size());

                     System.out.println("Цикл While:");

                     Iterator iter = testList.iterator();

                     while(iter.hasNext()) {

                             System.out.println(iter.next());

                     }

                     System.out.println("Улучшенный цикл For:");

                     for(Object o : testList) {

                             System.out.println(o);

              }

                     System.out.println("Цикл For:");

                     for(int i=0; i< testList.size(); i++) {

                             System.out.println(testList.get(i));

                     }

      }

      }

       

      На экране получим:

      3
      Цикл While:
      50
      60
      70
      Улучшенный цикл For:
      50
      60
      70
      Цикл For:
      50
      60
      70

       

      Q # 11) Напишите программу на Java, чтобы продемонстрировать явную проверку условий ожидания.

      Ответ:

      В Selenium есть два основных типа ожидания – неявное(Implicit Wait) и явное (Explicit Wait). (Мы не рассматриваем явное (свободное) ожидание в этом примере).
      Неявное ожидание - объявляется один раз в коде вне операции поиска и действует до изменения.  Это ожидание выполняется независимо от какого-либо условия и применяется ко всем последующим операциям поиска неявно. В приведенной ниже программе вы можете видеть применение такого ожидания для Google Chrome.  Мы использовали несколько встроенных методов для установки свойства, максимизации окна, навигации по URL и поиска веб-элементов.

      WebDriverWait waitWD = new WebDriverWait(curentDriver, 20);
      WebElement secondElement = waitWD.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Тестирование программного обеспечения - Википедия")));
      secondElement.click();

      В приведенном выше фрагменте кода вы можете видеть, что мы создали объект waitWD для WebDriverWait, а затем мы выполнили поиск WebElement с именем secondElement.
      Условие установлено таким образом, что веб-драйверу придется ждать, пока мы не увидим ссылку «Тестирование программного обеспечения - Википедия» на веб-странице. Команда не выполнится, если не найдет эту ссылку. Если ссылка будет найдена, то веб-драйвер выполнит щелчок мышью по этой ссылке.

       

       

      package Codes;

       

      import java.util.concurrent.TimeUnit;

      import org.openqa.selenium.By;

      import org.openqa.selenium.WebDriver;

      import org.openqa.selenium.WebElement;

      import org.openqa.selenium.chrome.ChromeDriver;

      import org.openqa.selenium.chrome.ChromeOptions;

      import org.openqa.selenium.support.ui.ExpectedConditions;

      import org.openqa.selenium.support.ui.WebDriverWait;

       

      public class EleventhTask{

       

                 public static void main(String[] args) {

                          // ITVDN.com 10 из ТОП 20 тестовых заданий на интервью для Java разработчика

                          System.setProperty("webdriver.chrome.driver", "C:\\driver\\chromedriver.exe");

                         ChromeOptions cOptions = new ChromeOptions();

                         cOptions.addArguments("--disable-arguments");

                         WebDriver curentDriver = new ChromeDriver();

                         curentDriver.manage().window().maximize();

                         curentDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

                         curentDriver.navigate().to("https://www.google.com.ua");

                         WebElement curentElement = curentDriver.findElement(By.name("q"));

                          curentElement.sendKeys("Testing");

                          curentElement.submit();

                          WebDriverWait waitWD = new WebDriverWait(curentDriver, 20);

       

                           WebElement secondElement = waitWD.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Тестирование программного обеспечения - Википедия")));

      secondElement.click();

      }

      }

       

       

      Q # 12) Напишите Java-программу для демонстрации прокрутки вверх / вниз.

      Ответ:

      Все строки кодов легко соотносятся с кодом из предыдущего примера.
      В код этой программы мы включили JavascriptExecutor jscript, который будет выполнять прокрутку. На последней строке кода мы передаём window.scrollBy(argument1, argument2).
      Если нам нужно выполнить прокрутку вверх, тогда передаем некоторое значение в argument1, если нам нужно прокрутить вниз - передаем некоторое значение в argument2.

       

       

      package Codes;

       

       

      import java.util.concurrent.TimeUnit;

       

      import org.openqa.selenium.By;

      import org.openqa.selenium.Keys;

      import org.openqa.selenium.WebDriver;

      import org.openqa.selenium.chrome.ChromeDriver;

      import org.openqa.selenium.JavascriptExecutor;

      import org.openqa.selenium.WebElement;

       

       

      public class TwelfthTask{

       

                public static void main(String[] args) {

                         // ITVDN.com 12 из ТОП 20 тестовых заданий на интервью для Java разработчика

                         System.setProperty("webdriver.chrome.driver", "C:\\driver\\chromedriver.exe");

                         WebDriver qurentDriver = new ChromeDriver();

                         JavascriptExecutor jscript = (JavascriptExecutor) qurentDriver;

                         qurentDriver.manage().window().maximize();

                         qurentDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

                         qurentDriver.get("https://www.google.com.ua");

                         WebElement qurentElement = qurentDriver.findElement(By.name("q"));

                         qurentElement.sendKeys("SoftwareTestingHelp");

                         qurentElement.sendKeys(Keys.ENTER);

                          jscript.executeScript("window.scrollBy(0,900)");

       

      }

       

      }

       

       

      Q # 13) Напишите программу на Java, чтобы открыть все ссылки на gmail.com.

      Ответ:

      Это типичный пример применения улучшенного цикла for, который мы видели в наших предыдущих примерах.

      После того, как вы открыли веб-сайт, такой как Gmail, используя get() или navigate().to(), вы можете использовать локатор tagName, чтобы получить все ссылки на веб-сайте, имеющие одинаковые теги.

      У нас есть улучшенный цикл for, в котором мы обходим все найденные ссылки по нашему тегу.  Для каждой ссылки типа WebElement в нашем листе ссылок, мы получаем сами ссылки через getAttribute(«href») и тексты через getText().

       

       

      package Codes;

       

       

      import java.util.concurrent.TimeUnit;

       

      import org.openqa.selenium.By;

      import org.openqa.selenium.WebDriver;

      import org.openqa.selenium.WebElement;

      import org.openqa.selenium.chrome.ChromeDriver;

       

      public class ThirteenthTask{

       

              public static void main(String[] args) {

              // ITVDN.com 13 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

              System.setProperty("webdriver.chrome.drive", "C:\\driver\\chromedriver.exe");

              WebDriver curentDriver = new ChromeDriver();

              curentDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

              curentDriver.manage().window().maximize();

              curentDriver.get("https://www.gmail.com/");

              java.util.List<WebElement> linkList = curentDriver.findElements(By.tagName("a"));

             System.out.println(linkList.size());

       

             for (WebElement thisLink: linkList) {

       

             //выводим на экран ссылку http://google.com или https://www.gmail.com

            System.out.println(qurentLink.getAttribute("href"));

       

            //выводим на экран текст ссылки

           System.out.println(qurentLink.getText());

      }

      }

      }

       

      На экране получим:

      Starting ChromeDriver 2.38.551601 (edb21f07fc70e9027c746edd3201443e011a61ed) on port 16163
      Only local connections are allowed.
      3
      https://support.google.com/accounts?hl=ru
      Справка
      https://policies.google.com/privacy?gl=IN&hl=ru
      Политика конфиденциальности
      https://policies.google.com/terms?gl=IN&hl=ru
      Условия использования

       

      Q # 14) Напишите код для Selenium, чтобы перейти на предыдущую вкладку.

      Ответ: Мы используем класс Robot. Этот пример является  достаточно важным, потому что, если вы знаете сочетания клавиш, вы можете использовать различную навигацию в браузере и его вкладках.

      Например, если у вас в Chrome открыто три вкладки, и вы хотите перейти на среднюю вкладку, то вам нужно нажать + 2 на клавиатуре. То же самое можно достичь с помощью кода.

      Применяйте следующий код (сразу после того, как мы увидим создание экземпляра класса Robot). Мы использовали объект qurentRobot класса Robot, с двумя встроенными методами keyPress(KeyEvenet.VK_ *) и keyRelease(KeyEvenet.VK_ *).

       

      package Codes;

       

       

      import java.awt.AWTException;

      import java.awt.Robot;

      import java.awt.event.KeyEvent;

      import java.util.concurrent.TimeUnit;

      import org.openqa.selenium.By;

      import org.openqa.selenium.Keys;

      import org.openqa.selenium.WebDriver;

      import org.openqa.selenium.WebElement;

      import org.openqa.selenium.chrome.ChromeDriver;

      public class FourteenthTask{

                public static void main(String[] args) throws AWTException {

                     // ITVDN.com 14 из ТОП 20 тестовых заданий на интервью для Java разработчика

                    System.setProperty("webdriver.chrome.driver", "C:\\driver\\chromedriver.exe");

                   WebDriver curentDriver = new ChromeDriver();

                   curentDriver.manage().window().maximize();

                   curentDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

                   curentDriver.get("https://www.google.com");

                   WebElement firstElement = curentDriver.findElement(By.name("q"));

                   firstElement.sendKeys("software testing help");

                   firstElement.sendKeys(Keys.ENTER);

                   String str = Keys.chord(Keys.CONTROL,Keys.RETURN);

                   curentDriver.findElement(By.partialLinkText("Software Testing Help - A Must Visit Software Testing Portal")).sendKeys(str);

                   Robot qurentRobot = new Robot(); // Инициализируем экземпляр класса Robot

                   qurentRobot.keyPress(KeyEvent.VK_CONTROL); // применяя класс Robot вы легко можете получить необходимый результат если вы знаете нужные комбинации кнопок

                   qurentRobot.keyPress(KeyEvent.VK_2); // тут мы нажимаем ctrl+2

                   qurentRobot.keyRelease(KeyEvent.VK_CONTROL); // как только мы нажмем и отпустим ctrl+2, мы перейдем на вторую вкладку.

                   qurentRobot.keyRelease(KeyEvent.VK_2); //если вы хотите снова вернуться к первой вкладке нажмите и отпустите vk_1

                   }

      }

       

      Q # 15) Напишите программу на Java, чтобы найти повторяющиеся символы в строке.

      Ответ:

      В этой программе мы создаем строковую переменную st и инициализируем целочисленный счетчик, начиная с нуля.

      Затем мы создали массив символов для преобразования нашей строковой переменной в этот массив. С помощью двух циклов for мы проводим сравнение символов с разными индексами.

      Если два символа последовательного индекса совпадают, то этот символ будет выведен на экран и счетчик количества совпадающих символов увеличится на 1.

       

       

      public class FifteenTask{

       

              

                public static void main(String[] args) {

                         // ITVDN.com 15 из ТОП 20 тестовых заданий на интервью для Java разработчика

                        String st = new String("Hello");

                        int counter = 0;

                        char[] charsArray = st.toCharArray();

                        System.out.println("Повторяющиеся символы тут:");

                        for (int i=0; i<st.length();i++) {

                                    for(int j=i+1; j<st.length();j++) {

                                               if (charsArray [i] == charsArray [j]) {

                                                          System.out.println(charsArray [j]);

                                                          counter ++;

                                                          break;

                                                }

                                     }

                         }

                 }

      }

       

      На экране получим:

      Повторяющиеся символы тут:
      l
       

      Q # 16) Напишите Java-программу, чтобы найти второе по величине число в массиве.

      Ответ:

      В этой программе мы инициализировали массив с 10 случайными элементами, из которых мы собираемся найти второе по величине число. Далее мы создали две целочисленные переменные, которым будем присваивать значения двух целых чисел из массива - самого большого и второго по величине. Обе переменные изначально получают значения первого по индексу элемента массива. Затем мы выводим на экран все элементы, используя цикл for.

      Дальнейшая логика работы программы в том, чтобы используя цикл for обойти массив.

      При обходе, если элемент массива с текущим индексом больше, чем значение, хранящееся в переменной biggest, тогда переменной secondBiggest присваиваем значение, хранящееся в biggest, а переменной biggest – новое наибольшее значение в соответствии со значением текущего элемента массива. Опять же, если элемент по текущему индексу больше, чем secondBiggest, то присвойте secondBiggest значение этого элемента.

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

       

      public class SixteenthTask {

       

      public static void main(String[] args)

          {

              // ITVDN.com 16 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

              int numbersArray[] = { 10, 15, 32, 100, 16, 11, 98, 36, 95, 33 };

              int biggest= numbersArray[0];

              int secondBiggest = numbersArray[0];

              System.out.println("Полученный массив: ");

              for (int i = 0; i < numbersArray.length; i++)

              {

                  System.out.print(numbersArray[i] + "\t");

              }

              for (int i = 0; i < numbersArray.length; i++)

              {

                  if (numbersArray[i] > biggest)

                  {

                      secondBiggest = biggest;

                      biggest = numbersArray[i];

                  }

                  else if (numbersArray[i] > secondBiggest && numbersArray[i] != biggest)

                  {

                      secondBiggest = numbersArray[i];

                  }

              }

              System.out.println("\nВторое по величине число:" + secondBiggest);

          }

      }

       

       

      На экране получим:

      Полученный массив: 
      10     15      32      100     16      11      98      36      95      33      
      Второе по величине число: 98

       

      Q # 17) Напишите Java-программу для проверки является ли введенное число - числом Армстронга.

      Ответ:

      Прежде всего, нам нужно понять, что такое число Армстронга. Число Армстронга это число, значение которого равно сумме цифр, из которых оно состоит, возведенных в степень, равную количеству цифр в этом числе. Как пример - число 371:

      371 = 3*3*3 + 7*7*7 + 1*1*1 = 27 + 343 + 1 = 371

      Если у вас число четырехзначное:

      8208 = 8*8*8*8 + 2*2*2*2 + 0*0*0*0 + 8*8*8*8 = 4096 + 16 + 0 + 4096 = 8208

      Выполняя решение, для начала мы объявляем целочисленные переменные tempNumber, x и y. Мы инициализировали переменную y значением 0. Затем мы создаем переменную qurentNumber и присваиваем ей целочисленное значение, которое мы собираемся проверить является ли оно числом Армстронга (в нашем случае это 371). Затем мы присвоили нашей переменной tempNumber то значение, которое хранится в проверяемой переменной qurentNumber.

      Далее в цикле while мы переменной a присваиваем остаток от деления числа qurentNumber на 10 – и получим число единиц в изначальном числе qurentNumber. Затем мы заменяем значение переменной qurentNumber на результат деления введенного числа на 10. Нашей переменной y, значение которой изначально было установлено как 0, присваивается результат y + (x* x * x). Таким образом во время первой итерации в y попадет результат возведения в нужную степень значения числа единиц в изначальном числе, при следующей итерации в y к степени числа единиц добавится результат возведения в степень числа десятков, и так далее по всем разрядам до конца числа qurentNumber с права налево.

      Наконец, мы используем оператор if-else для проверки, будет ли полученное значение переменной y равно значению переменной tempNumber (в которой хранится исходное число). Если y = tempNumber, то загаданное число является числом Армстронга, иначе - нет.

       

       

      public class SeventeenthTask{ 

       

       public static void main(String[] args)  { 

              // ITVDN.com 17 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

              int y=0, x, tempNumber; 

              int qurentNumber=371; //Данное число мы будем проверять на то, является ли оно числом Армстронга 

              tempNumber = qurentNumber; 

              while(qurentNumber >0) 

              { 

              x= qurentNumber %10; 

              qurentNumber = qurentNumber /10; 

               y=y+(x*x*x); 

              } 

              if(tempNumber ==y) 

              System.out.println("Данное число является числом Армстронга");  

              else 

                     System.out.println("Данное число не является числом Армстронга");  

         } 

      }

       

       

      На экране получим:

      Данное число является числом Армстронга

       

      Q # 18) Напишите Java-программу для удаления всех пробелов из строки с помощью replace().

      Ответ:

      Это простая программа, в которой у нас есть строковая переменная st1.

      Другая строковая переменная st2 инициализируется с помощью метода replaceAll, который является встроенным методом для удаления n числа пробелов. В итоге мы выводим на экран st2, которая уже не содержит пробелов.

       

       

      public class EighteenthTask

       

      {

          public static void main(String[] args)

          {

              // ITVDN.com 17 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

              String st1 = "Мы готовимся     к интервью   на вакансию    Java разработчика";

       

              //Используем метод replaceAll()

       

              String st2 = st1.replaceAll("\\s", "");

       

              System.out.println(st2);

       

                 }

      }

       

       

      На экране получим:

      МыготовимсякинтервьюнавакансиюJavaразработчика

       

      Q # 19) Напишите Java-программу для удаления всех пробелов из строки без использования replace().

      Ответ:

      Это еще один подход к удалению всех пробелов. Опять же, для начала у нас есть одна строковая переменная st1 с некоторым значением. Мы преобразовываем эту строку в массив символов, используя toCharArray().

      Затем у нас есть один объект StringBuffer strB, который будет использоваться для добавления значения, хранящегося по индексу chars [i] после того, как мы добавили цикл и одно условие if.

      Условие установлено так, что элемент с индексом i массива символов не должен быть равен символу пробела или табуляции. Наконец, мы выводим на экран наш объект StringBuffer strB.

       

      public class NineteenthTask

       

      {

          public static void main(String[] args)

          {

              // ITVDN.com 17 из ТОП 20 тестовых заданий на интервью для Java разработчика

       

              String st1 = " Мы готовимся     к интервью   на вакансию    Java разработчика";

       

              char[] charsArray = st1.toCharArray();

       

              StringBuffer strB = new StringBuffer();

       

              for (int i = 0; i < charsArray.length; i++)

              {

                  if( (charsArray[i] != ' ') && (charsArray [i] != '\t') )

                  {

                      strB.append(charsArray [i]);

                  }

              }

              System.out.println(strB);          

          }

      }

       

      На экране получим:

      МыготовимсякинтервьюнавакансиюJavaразработчика

       

      Q # 20) Напишите Java-программу для чтения данных из таблицы Excel.

      Ответ:

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

      Логика начинается с того момента, как мы загрузили лист, на котором хранятся данные. Мы пытаемся импортировать электронную почту и пароль. Для этого мы извлекаем ячейку с помощью методов getRow() и getCell(). Допустим, у нас есть электронная почта и пароли в 1-й и 2-й ячейке.

      Далее мы устанавливаем тип ячейки - строковой. После этого мы выполняем обычную операцию локатора веб-элемента (By.id), куда мы передали уникальные значения локатора, такие как «email» и «пароль», которые будут идентифицировать эти элементы.

      Наконец, мы отправляем ключи, используя element.sendKeys, где cell.getStringCellValue() - это ключ. Эта операция вернет вам значение, сохраненное в ячейках № 1 и 2 соответственно.

       

       

      @Test

       

       public void ReadData() throws IOException

       {

               // импортируйте лист Excel из директории web диска c.

               //QurentSourceFile – это имя нужного файла excel

               File sourceFile=new File("C:\\web\\QurentSourceFile.xls");

               

      // На этом шаге мы загружаем файл. Мы используем FileInputStream для чтения из

      // файла excel. В случае если вы хотите проводить запись в файл -

      // вам следует использовать FileOutputStream. Путь к файлу передается в качестве

      // аргумента FileInputStream

               FileInputStream fileInput = new FileInputStream(sourceFile);

               

               // На этом шаге мы загружаем рабочую книгу excel с помощью HSSFWorkbook,

               // в который мы передаем fileInput в качестве аргумента

              HSSFWorkbook book = new HSSFWorkbook(fileInput);

               

               // На этом шаге мы загружаем конкретный лист excel, на котором хранятся данные.

               

              qurentSheet= book.getSheetAt(0);

               

               for(int i=1; i<= qurentSheet.getLastRowNum(); i++)

               {

                      // Import data for Email.

                      qurentCell = qurentSheet.getRow(i).getCell(1);

                      qurentCell.setCellType(Cell.CELL_TYPE_STRING);

                       driver.findElement(By.id("email")).sendKeys(qurenrCell.getStringCellValue());

                      

                      // Импортируем данные из ячеек с паролями.

                      qurentCell = qurentSheet.getRow(i).getCell(2);

                      qurentCell.setCellType(Cell.CELL_TYPE_STRING);

                      driver.findElement(By.id("password")).sendKeys(qurenrCell.getStringCellValue());

                                   

              }

        }

       

      Резюме


      В этой статье мы рассмотрели наиболее распространенные тестовые задания для Java разработчиков с примерами кода. Эти задачи применяются на большинстве технических интервью Java-разработчиков.

      Мы рассмотрели такие приемы работы с данными с помощью Java, как базовые манипуляции со строками, целыми числами и символами, использование Selenium, чтение данных из файла. Теперь у вас есть достаточно информации о том, как проходить технический этап интервью на вакансию Java разработчика.

      Конечно, вам нужны будут и другие навыки. Изучение наизусть решений 20 задач не может быть главным способом подготовиться к интервью. Вам следует иметь хороший набор теоретических знаний и практических навыков. С нашей стороны портал ITVDN.com готов предложить программу подготовки Java разработчика, включающую в себя видео курсы как по Java, так и по сопутствующим технологиям. 

      Также рекомендуем вам ознакомиться с серией видео «Подготовка к собеседованию в IT компании. Вопросы и ответы. Хитрости. Трюки.»

      По материалам статьи

      КОММЕНТАРИИ И ОБСУЖДЕНИЯ
      advertisement advertisement

      Покупай подпискус доступом ко всем курсам и сервисам

      Библиотека современных IT знаний в удобном формате

      Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

      Стартовый
      • Все видеокурсы на 3 месяца
      • Тестирование по 10 курсам
      • Проверка 5 домашних заданий
      • Консультация с тренером 30 мин
      59.99 $
      Оформить подписку
      Премиум Plus
      • Все видеокурсы на 1 год
      • Тестирование по 24 курсам
      • Проверка 20 домашних заданий
      • Консультация с тренером 120 мин
      • Скачивание видео уроков
      120.00 $
      199.99 $
      Оформить подписку
      Акция
      Базовый
      • Все видеокурсы на 6 месяцев
      • Тестирование по 16 курсам
      • Проверка 10 домашних заданий
      • Консультация с тренером 60 мин
      89.99 $
      Оформить подписку
      Notification success
      Мы используем cookie-файлы, чтобы сделать взаимодействие с нашими веб-сайтами и услугами простым и значимым.