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

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

+31

  • Кто проходил: Андрей1
  • Дата прохождения: 07.02.2019
Что произойдет при попытке скомпилировать и запустить данный код?
public class PrintTest { 
   public static void main(String[] args) { 
       System.out.println("1" + 2 + 3); 
   } 
} 
Ваши ответы
123
Каким будет результат выполнения программы?
public class Tenor extends Singer { 
   public static String sing() { return "fa"; } 
   public static void main(String[] args) { 
       Tenor t = new Tenor(); 
       Singer s = new Tenor(); 
       System.out.println(t.sing() + " " + s.sing()); 
   } 
} 
class Singer { public static String sing() { return "la"; } } 
Ваши ответы
fa la
Объяснение:

Полиморфизм не применяется к статическим методам

Какой будет результат компиляции и выполнения данного кода?
public class Test1 { 
   public static void main(String[] args) { 
       int i = 1; 
       i <<= 1; 
       float f = 1; 
       f = f << 1; 
       System.out.println( i + ", " + f); 
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

operator << cannot be applied to float,int

Выберите правильные высказывания относительно концепции взаимосвязи методов hashCode() и equals(Object o)
Ваши ответы
Если при сравнении двух объектов метод equals возращает значение true, то значения, возвращаемые методами hashCode() этих объектов, должны совпадать.
Объяснение:

Ключевая концепция взаимосвязи методов hashCode() и equals(Object o) предполагает возвращение одинаковых значений хеша в случае равенства объектов, но не обязывает возвращать разные значения в случае неравенства объектов.

Каким образом можно выделить большее максимальное количество памяти для Java Virtual Machine.
Ваши ответы
Необходимо запустить JVM с ключом -Xmx и соответствующим значением количества памяти. Например -Xmx256m.
Объяснение:

Для выделения нужного количества памяти, необходимо запускать JVM с определёнными ключами. Так например ключ -Xmx задаёт максимальное количество памяти, а -Xms начальное количество памяти.

Что будет выведено на экран?
public class Tasks { 
   public static Tasks instance = new Tasks(); 
   private static final int DELTA = 5; 
   private static int BASE = 7; 
   private int x; 
 
   public Tasks() { 
       x = BASE + DELTA; 
   } 
   public static int getBASE() { 
       return BASE; 
   } 
   public static void main(String[] args) { 
       System.out.println(Tasks.instance.x); 
   } 
} 
Ваши ответы
5
Объяснение:

Инициализация статических полей осуществляется в том порядке, в котором они записаны.
В этом примере первым будет проинициализировано поле instance, а уже затем - BASE. Поэтому в момент вызова конструктора Tasks() поле BASE ещё содержит 0.
Поле DELTA является переменной-константой, поэтому компилятор сразу подставляет в выражение вместо DELTA его значение.
В итоге получаем: x = 0 + 5;

Какие модификаторы позволяют обращаться к полю/методу публичного класса верхнего уровня из других классов верхнего уровня, находящихся в том же пакете?
Ваши ответы
public
Какие реализации java.util.Set сортируют элементы в их естественном порядке (или на основании Comparator'а)?
Ваши ответы
java.util.LinkedHashSet
Объяснение:

TreeSet сортирует элементы (она реализует SortedSet). LinkedHashSet позволяет управлять порядком добавления элементов, но не сортирует их.

Что выведет на экран следующий фрагмент кода?
int n = 33; 
int s = 0; 
while (n > 0) { 
   s += n % 2; 
   n /= 2; 
} 
System.out.println(s); 
Ваши ответы
Ничего не выведет
Что выведет следующий код?
public class Main { 
   public static void main(String[] args) { 
       recur(99); 
   } 
   public static void recur(int a) { 
       if (a <= 100) { 
           System.out.println("a=" + a); 
           recur(++a); 
           System.out.println("a=" + a); 
       } 
   } 
} 
 
Ваши ответы
a=99
a=100
a=100
a=99
Объяснение:

Сначала выдаст значение а = 99,а после префиксного инкремента выполнится снова метод recur с параметром 100, который выведет а=100, следующий recur будет вызван с параметром 101, но условие выполняться не будет, так как передаваемый параметр больше 100, и будет выведено на экран значение параметра а=101, закончится выполнение этого метода, и программа возвратится к предыдущему выполнению этого метода, и выдаст значение а=100, таким, каким бы выдало его, если бы метод recur и вовсе не вызывался сам в себе, а просто переменная а увеличилась бы на 1.

Что выведет программа:
package tutorial.base; 
 
public class TypesTutorial { 
 
   public static void main(String... atgs) { 
       A alpha = new B(); 
   } 
} 
 
class A { 
   A(){ 
       System.out.print("A"); 
       a(); 
   } 
 
   void a() { 
       System.out.print("a"); 
   } 
} 
 
class B extends A { 
   B() { 
       System.out.print("B"); 
       a(); 
   } 
 
   void a() { 
       System.out.print("b"); 
   } 
} 
Ваши ответы
AaBb
Объяснение:

Первым вызывается конструктор класса-родителя A, в нем вызывается переопределенный метод класса-потомка B, по типу созданного обьекта. Далее вызывается конструктор класса-потомка B, который вызывает тот же метод.

Какой будет результат компиляции и выполнения нижеприведенного кода?
1. public static void main(String[] args) { 
2.     for (int i = 0; i <= 10 ; i++) { 
3.         if (i > 6) break; 
4.     } 
5.     System.out.println(i); 
6. } 
Ваши ответы
7
Объяснение:

Переменнная "i" существует только в пределах цикла. В строке 5 она уже за пределами видимости.

Что будет напечатано в результате выполнения следующего кода:
public class Exceptions { 
   public static void main(String[] args) { 
       try { 
           throw new UnsupportedOperationException(); 
       } catch(Throwable t) { 
           System.out.print("1"); 
       } catch(Exception e) { 
           System.out.print("2"); 
       } catch(UnsupportedOperationException uoe) { 
           System.out.print("3"); 
       } 
   } 
} 
Ваши ответы
3
Объяснение:

Код не скомпилируется. Все исключения в java наследуются от Throwable. В нескольких блоках catch обработка исключений должна идти вверх по иерархии исключений (в данном случае от более конкретного - UnsupportedOperationException до более общего - Throwable, но не наоборот).

Что будет выведено, если скомпилировать и запустить следующий код:
public class Main { 
   public static void main(String s[]) { 
       System.out.println(true ? false : true == true ? false : true); 
   } 
} 
Ваши ответы
true
Объяснение:

Аналогично:

Что произойдет в результате компиляции и выполнения программы:
class Aaa { 
   private double x = 2; 
   public static void multX(Aaa a, double n){ 
       a.setX(a.getX()*n); 
   } 
   public double getX() {return x;} 
   public void setX(double xn) {x = xn;} 
   public static void trippleValue(double x){ 
       x*=3; 
   } 
   public static Aaa resetX(Aaa a){ 
       a = new Aaa(); 
       return a; 
   } 
    public static void main(String[] args) { 
         int x = 3; 
         trippleValue(x); 
         Aaa anA = new Aaa(); 
         multX(anA,x); 
         resetX(anA); 
         x=0; 
         System.out.print(anA.getX());         
   }  
}  
Ваши ответы
Ошибка компиляции
Объяснение:

При вызове trippleValue(x) значение x не меняется, т.к. это переменная простого типа, которая передается по значению. При вызове resetX(anA) объект, на который ссылается anA не меняется, т.к. anA - это ссылка на объект, которая передается по значению.