- Напишіть програму на Java для перевертання рядка, змінивши розташування символів у рядку задом наперед без використання вбудованих в String функцій
- Напишіть програму на Java для перевороту послідовності символів у рядку без використання вбудованої в String функції reverse()
- Напишіть програму на Java для того, щоб поміняти місцями значення, що зберігаються у двох змінних за допомогою третьої змінної
- Напишіть програму на Java, щоб поміняти місцями значення, що зберігаються у двох змінних, без використання третьої змінної
- Напишіть програму Java для підрахунку кількості конкретних слів у рядку, використовуючи HashMap
- Напишіть Java-програму для ітерації об'єкта типу HashMap з використанням циклу while та покращеного циклу for
- Напишіть програму на Java, щоб дізнатися, чи є число простим, чи ні
- Напишіть Java-програму, щоб визначити, чи є рядок або число паліндромом, чи ні
- Написати програму на Java для обчислення серії чисел Фібоначчі
- Напишіть Java-програму для обходу ArrayList з використанням циклу for, while та покращеного циклу for
- Напишіть програму на Java, щоб продемонструвати явну перевірку умов очікування
- Напишіть Java-програму для демонстрації прокручування вгору / вниз
- Напишіть програму на Java, щоб відкрити усі посилання на gmail.com
- Напишіть код для Selenium, щоб перейти до попередньої вкладки
- Напишіть програму на Java, щоб знайти повторювані символи в рядку
- Напишіть Java-програму, щоб знайти друге за величиною число в масиві
- Напишіть Java-програму для перевірки, чи є введене число числом Армстронга
- Напишіть Java-програму для видалення всіх пробілів з рядка за допомогою replace()
- Напишіть Java-програму для видалення всіх пробілів з рядка без використання replace()
- Напишіть Java-програму для читання даних із таблиці Excel
У цій статті ми наведемо досить багато прикладів програм з тих, що просять написати претендентів під час проходження інтерв'ю на вакансію Java розробника. Вказані тестові завдання ми наводимо з реальними прикладами коду, заданими в інтерв'ю як початківцям, так і досвідченим кандидатам.
Сьогодні серед інтерв'юерів стало звичайною практикою давати тестові практичні завдання під час інтерв'ю, не фокусуючись лише на теоретичних питаннях. Такі завдання зазвичай задають на технічному етапі інтерв'ю Java розробника.
Для того, щоб допомогти претендентам на відповідні вакансії пройти такі інтерв'ю, ми хочемо перерахувати кілька дуже важливих прикладів програм на Java разом з належним описом кожного.
Крім того, ми також додаємо відповідні пояснення коду. Ці пояснення дадуть вам чітке уявлення, як працює кожна програма.
Найпопулярніші питання інтерв’ю Java-програмування.
Q # 1) Напишіть програму на Java для перевертання рядка, змінивши розташування символів у рядку задом наперед без використання вбудованих в String функцій.
Відповідь:
Для початку ініціалізуємо рядкову змінну st і використовуємо клас StringBuilder.
Об'єкт класу StringBuilder strB буде надалі використовуватися для додавання значення, що зберігається в рядковій змінній st.
Після цього ми використовуємо вбудовану в StringBuilder функцію reverse() і зберігаємо нову – обернений рядок в stB.
Нарешті ми виводимо на екран stB.
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 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.
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), який повертатиме символ за конкретним індексом. Після кожної ітерації символ буде додано до нового рядка для отримання перевернутого значення рядкової змінної.
Потім ми виводимо змінну перевернутого рядка.
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, а потім присвоюємо значення b, і знову присвоюємо b значення temp. Таким чином, після виконання всіх операцій temp буде зберігати в собі значення a, a отримає значення b, а b матиме значення temp (яке дорівнює a).
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). В результаті цих дій ми змінили місцями значення, які зберігаються у змінних.
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 (“”);
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}
Q # 6) Напишіть Java-програму для ітерації об'єкта типу HashMap з використанням циклу while та покращеного циклу for.
Відповідь:
Тут ми спочатку вставили три елементи в змінну типу HashMap з ім'ям keyValue, використовуючи функцію put().
Розмір змінної keyValue можна одержати за допомогою методу size(). Після цього ми використовували цикл While для обходу keyValue, яка містить по одній парі ключ-значення для кожного елемента. Ключі та значення можуть бути отримані за допомогою методів getKey() та getValue().
Аналогічно ми використовуємо розширений цикл for, на елементах «qurentMe2» у 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, ми приходимо до висновку, чи є наше число простим, чи ні.
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. Якщо вихідний рядок дорівнює перевернутому рядку, то число є паліндромом, інакше – ні.
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.
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.
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 та пошуку веб-елементів.
WebElement secondElement = waitWD.until(ExpectedConditions.visibilityOfElementLocated(By.partialLinkText("Тестування програмного забезпечення - Вікіпедія")));
secondElement.click();
У наведеному вище фрагменті коду можна побачити, що ми створили об'єкт waitWD для WebDriverWait, а потім ми здійснили пошук WebElement з ім'ям secondElement.
Умову встановлено таким чином, що веб-драйверу доведеться чекати, поки ми не побачимо посилання «Тестування програмного забезпечення – Вікіпедія» на веб-сторінці. Команда не виконається, якщо не знайде це посилання. Якщо посилання буде знайдено, веб-драйвер виконає клацання мишею за цим посиланням.
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 11 з ТОП 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.
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().
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(KeyEvent.VK_*) та keyRelease(KeyEvent.VK_*).
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 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 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 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 static void main(String[] args)
{
// ITVDN.com 18 з ТОП 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 static void main(String[] args)
{
// ITVDN.com 19 з ТОП 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 відповідно.
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 = 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 компанії. Питання та відповіді. Хитрощі. Трюки»
За матеріалами статті.
Статті за схожою тематикою