Собеседовалась я в одну Американскую компанию, у которой есть офисы и в Санкт-Петербурге, и в Саратове, и в Харькове, и в Польше, ну и в Силиконовой долине Калифорнии. Много русских там.
Назначили мне техническое интервью на позицию 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. Я его не прошла, но зато я знаю над чем работать сейчас и что подучить.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ