Результаты прохождения теста Java основы пользователем Mikhail

Результат прохождения теста "Java основы" - Пройден

+57

  • Кто проходил: Mikhail
  • Дата прохождения: 31.01.2019
Выберите правильные объявления переменных.
Ваши ответы
short x [];
short [] y;
short [] z [] [];
Какие интерфейсы предоставляют возможность хранить объекты в виде пары "ключ-значение"?
Ваши ответы
java.util.SortedMap
java.util.Map
Может ли класс быть объявлен с модификатором transient?
Ваши ответы
Нет
Объяснение:

Только поля класса могут быть объявлены как transient. Это ключевое слово говорит о том, что значение поля не нужно сохранять при сериализации.

Зачем нужна аннотация @Override когда вы переопределяете (или реализовываете) методы?
Ваши ответы
Чтобы своевременно обнаружить изменение в сигнатуре метода у класса-предка (или интерфейса).
Объяснение:

Предопределённая аннотация @Override используется для выявления логических ошибок на этапе компиляции.
Этой аннотацией желательно помечать каждый метод, который будет перекрывать метод из суперкласса или реализовывать метод из интерфейса.
Если в суперклассе или интерфейсе нет метода с такой же сигнатурой, то возникнет ошибка компиляции. Это позволяет легко выявлять ситуации, когда в суперклассе или интерфейсе была удалена или изменена сигнатура перекрываемого метода.

Что выведет на консоль?
try { 
   int a = 0; 
   int b = 42/a; 
   System.out.print("A"); 
} catch (Exception e) { 
   System.out.print("C"); 
} catch (ArithmeticException e) { 
   System.out.print("B"); 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

Подкласс должен следовать раньше своего суперкласса в серии catch-операторов. Если это не так, то будет создан недостижимый код
и будет ошибка компиляции.

Что напечатает следующий код:
public class Funcs extends java.lang.Math { 
   public int add(int x, int y) { 
       return x + y; 
   } 
   public int sub(int x, int y) { 
       return x - y; 
   } 
   public static void main(String[] a) { 
       Funcs f = new Funcs(); 
       System.out.println("" + f.add(1, 2)); 
   } 
} 
Ваши ответы
Код не скомпилируется
Объяснение:

Класс java.lang.Math объявлен как final, то есть наследоваться от него нельзя.

Что произойдет если выполнить данный код:
class Test { 
   List<Integer> list; 
   Test(){ 
       list = new ArrayList<Integer>(); 
       someVoid(list); 
   } 
   void someVoid(List<Integer> l){ 
       l.add(0); 
       l=null; 
   } 
   public static void main(String[] args) { 
       Test test=new Test(); 
       System.out.println("Size is: "+test.list.size()); 
   } 
} 
Ваши ответы
Код откомпилируется и выведет- "Size is: 1" без кавычек
Что выведет программа в консоль?
public class Test { 
   public static void main(String[] args) { 
       boolean b = true; 
       int x = 0; 
 
       do { 
           if (x++ > 5) 
               b = false; 
           System.out.print(x); 
       } while (b); 
   } 
} 
Ваши ответы
1234567
Объяснение:

Очевидно, что числа на экран будут выводиться последовательно. Остаётся только разобраться, какое число будет выведено первым, а какое – последним.
Поскольку при каждой проверке условия переменная x будет увеличиваться, то первым выведется число 1.
На последней итерации условие x++ > 5 должно стать истинным. Поскольку значением выражения x++ является исходное значение переменной, то это будет при x = 6. Но на экран уже будет выведено новое, увеличенное значение, т.е. 7.
Получаем ответ: 1234567.

Что напечатает следующий код:
int i = 0; 
System.out.print(++i); 
System.out.print(i++); 
System.out.print(i); 
Ваши ответы
112
Объяснение:

Пре-инкремент увеличит значение переменной до его непосредственного использования, тогда как пост-инкремент - после.

Выберите единственный верный из приведенных результат компиляции и выполнения кода.
public class Strings { 
   public static void main(String[] args) { 
       String s1 = new String("Bicycle"); 
       String s2 = new String("bicycle"); 
       System.out.println(s1.equals(s2) == s2.equals(s1)); 
   } 
} 
Ваши ответы
Программа выведет "true" без кавычек
Что будет выведено на экран?
class A { 
   int x = 1; 
 
   public void printX() { 
       System.out.println(getX()); 
   } 
 
   public int getX() { 
       return x; 
   } 
} 
 
class B extends A { 
   int x = 2; 
 
   public int getX() { 
       return x + 1; 
   } 
} 
 
public class Test { 
   public static void main(String[] args) { 
       A classA = new B(); 
       classA.printX(); 
   } 
} 
Ваши ответы
3
Объяснение:

Метод printX() выводит на экран значение, которое возвращает метод getX(). При этом вызывается перекрытый метод из класса B, который возвращает x+1, причём значение поля x также берётся из класса B.

Какой результат выполнения программы:
class Tack { 
   static short s = 17; 
   public Tack(short ss) { 
       new Tack(); 
       s *= ss; 
   } 
   public Tack() { ; } 
} 
public class Bridle extends Tack { 
   public Bridle(int s) { System.out.println(s + 1); } 
   public static void main(String[] args) { 
       Bridle b = new Bridle(3); 
   } 
} 
Ваши ответы
4
Какой результат выдаст этот код:
int []a = {5,5}; 
int b = 1; 
a[b] = b = 0; 
System.out.println(Arrays.toString(a)); 
Ваши ответы
[0, 5]
Что будет напечатано в результате выполнения данного кода?
public class MathTest { 
 public static void main(String... args) { 
   System.out.println((-7 % 5) > (7 % -5)); 
   System.out.println(Math.abs(Math.ceil(-2.5)) < Math.ceil(Math.abs(-2.5))); 
 } 
} 
Ваши ответы
false
false
Объяснение:

Знак остатка, возвращаемого оператором %, совпадает со знаком делимого. Поэтому -7 % 5 = -2 7 % -5 = 2 и первое неравенство возвращает false. Метод ceil() округляет в большую сторону. Поэтому Math.ceil(-2.5) = -2, Math.abs(-2) = 2 Math.abs(-2.5) = 2.5, Math.ceil(2.5) = 3 и второе неравенство возвращает true.

В какой строке возникнет первая ошибка компиляции?
public class Test {     
   /* 1 */ public final static class A {} 
   /* 2 */ static private class B {} 
   /* 3 */ abstract static class C {} 
   /* 4 */ static final private class D {} 
   /* 5 */ final public abstract class E {} 
   /* 6 */ static final abstract class F {} 
} 
Ваши ответы
3
Объяснение:

Класс не может быть одновременно abstract и final