Співбесідувалася я в одну Американську компанію, яка має офіси і в Санкт-Петербурзі, і в Саратові, і в Харкові, і в Польщі, ну і в Силіконовій долині Каліфорнії. Багато росіян там.
Призначабо мені технічне інтерв'ю на позицію junior QA with java . Я готувалася, писала ручкою на папері код завдань за масивами, списками, колекціями. Без підглядання будь-куди. Це, до речі, виявилося непросто. Інтерв'ю було по hangouts. На початку співбесіди інтерв'юер попросив розповісти про себе. Потім перейшли до завдань. Він пошарив документ зі мною, де був код, і ми обидва одночасно бачабо дії один одного. Перше завдання була масив з варіантами відповідей. Я не даватиму тут відповіді, але хочу попередити, що потрібно бути уважним. Легко проаналізувати початок виконання коду і не помітити невелику каверзу ближче до кінця.
//Task1
// What will be the value of the “values” variable after execution of the following code snippet?
//
public static void main(String[] args) {
int[] values = {23, 12, 13, 17, 23, 19};
for (int i = 0; i < values.length - 1; i++) {
if (values[i] > values[i + 1]) {
int t = values[i];
values[i] = values[i + 1];
values[i + 1] = t;
}
}
}
// 1. {12, 13, 17, 19, 23, 23}
// 2. {23, 23, 19, 17, 13, 12}
// 3. {12, 13, 17, 23, 19, 23}
// 4. {12, 13, 23, 17, 19, 23}
Інтерв'юер запитував "Що робить завдання?" та "Який варіант відповіді правильний?". І "Що нагадує це завдання?" На останнє запитання я відповіла, що нагадує сортування бульбашкою, тільки там два цикли та один вкладений, який починається з кінця. Це завдання я вирішила. І навіть зраділа, що було легко. Потім йшло друге завдання "Щасливий квиток". Де сума перших трьох цифр дорівнює сумі трьох останніх у 6-ти значній кількості.
// Task2
// boolean isMyTicketLucky(? ticketNumber);
// Notes:
// - You need to choose a type of the ticketNumber input parameter yourself.
// - Ticket number consists of 6 digits like 123456 or 404404.
// - The method returns true if sum of the first three digits is equal to sum of the last three digits.
// If the sums are different the method returns false.
public static void main(String[] args) {
//isMyTicketLucky("123006");
System.out.println(isMyTicketLucky("123006"));
}
Тут потрібно вибрати тип номера квитка у вхідному параметрі. Integer
або String
. Для обох типів є рішення. Рішення для типу квитка Integer
.
private static boolean isMyTicketLucky(int ticketNumber) {
int number1 = ticketNumber / 100000;
int number2 = (ticketNumber / 10000) % 10;
int number3 = (ticketNumber / 1000) % 10;
int number4 = (ticketNumber / 100) % 10;
int number5 = (ticketNumber / 10) % 10;
int number6 = ticketNumber % 10;
return number1 + number2 + number3 == number4 + number5 + number6;
}
Рішення для типу квитка String
.
private static boolean isMyTicketLucky(String ticketNumber) {
return ticketNumber.charAt(0) + ticketNumber.charAt(1) + ticketNumber.charAt(2)
== ticketNumber.charAt(3) + ticketNumber.charAt(4) + ticketNumber.charAt(5);
}
На жаль, я розгубилася і не змогла вирішити друге завдання під час інтерв'ю. Після завдань були питання про SQL, SQL Join, system version control. Ну і зовсім наприкінці запитав "Чи є питання?" Я попросила дати критику моєї співбесіди, і інтерв'юер зазначив, що йому сподобалося, що я вголос міркувала, що робив код у першому завданні. Я прямувала за кодом і промовляла, що робить кожен рядок і кожна ітерація в циклі. Це було моє перше інтерв'ю у IT. Я його не пройшла, зате знаю над чим працювати зараз і що підучити.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ