Читать нас в Telegram

10 интересных вопросов по Java, которые вам могут задать на собеседовании

Рубрика: Переводы
,
54407

Мы собрали 10 каверзных примеров программ, которые выводят какую-либо информацию. Вы должны взглянуть на код и сказать, что же выведет программа. Не исключено, что программа даже не скомпилируется. В этом случае вам надо указать, что выведет компилятор.

Такие вопросы любят задавать на собеседованиях, а потому не лишним будет освежить свои знания языка программирования Java. В спойлерах будут скрыты ответы — то, что выведет программа или компилятор. Постарайтесь подумать сами, прежде чем смотреть правильный ответ.

Что выведет следующая программа?

package com.instanceofjava;
 
public class B {
 
  B b = new B();
 
 public int show(){
      return (true ? null : 0);
 }
 
 public static void main(String[] args)  {
 
        B b = new B();
        b.show();
    }
}
Exception in thread "main" java.lang.StackOverflowError
at com.instanceofjava.B.(B.java:3)
at com.instanceofjava.B.(B.java:5)
at com.instanceofjava.B.(B.java:5)

Что выведет следующая программа?

package com.instanceofjava;
 
public class A{

 
 public static void show(){
 
        System.out.println("Static method called");
 }
 
 public static void main(String[] args)  {
 
        A obj = null;
        obj.show();
 
    }
}

Что выведет следующая программа?

package com.instanceofjava;
 
public class A{
 
static int a = 1111;
static
{
        a = a-- - --a;
}
    
{
        a = a++ + ++a;
}
 
 public static void main(String[] args)  {
       System.out.println(a);
    }
}

Что выведет следующая программа?

package com.instanceofjava;
 
public class A{
 int GetValue()
 {
        return (true ? null : 0);
 }
 
 public static void main(String[] args)  {
      A obj = new A();
      obj.GetValue();
 }
}
Exception in thread "main" java.lang.NullPointerException

Что выведет следующая программа?

package com.instanceofjava;
 
public class A{ 
 public static void main(String[] args)  {
   Integer i1 = 128;
   Integer i2 = 128;
   System.out.println(i1 == i2);

   Integer i3 = 127;
   Integer i4 = 127;
   System.out.println(i3 == i4);
 }
}

Что выведет следующая программа?

package com.instanceofjava;
class A
{   
 void method(int i)
 {
 
 }
}
 
class B extends A
{
 @Override
 void method(Integer i)
 {
 
 }
}
Compile time Error:The method method(Integer) of type B must override or implement a supertype method
package com.instanceofjava;
class A
{   
 public static void main(String [] args)
 {
  Integer i = new Integer(null);
  String s = new String(null);
 }
}
Compile time Error at line number 9:The constructor String(String) is ambiguous

Что выведет следующая программа?

package com.instanceofjava;
class A
{   
 public static void main(String [] args)
 {
  String s = "ONE"+3+2+"TWO"+"THREE"+5+4+"FOUR"+"FIVE"+5;
  System.out.println(s);
 }
}
ONE32TWOTHREE54FOURFIVE5

Что выведет следующая программа?

package com.instanceofjava;
class A
{
 
 static int method1(int i)
 {
  return method2(i *= 11);
 }
 
 static int method2(int i)
 {
  return method3(i /= 11);
 }
 
 static int method3(int i)
 {
 return method4(i -= 11);
 }
 
 static int method4(int i)
 {
  return i += 11;
 }   
 
 public static void main(String [] args)
 {
  System.out.println(method1(11));
 }
}

Что выведет следующая программа?

package com.instanceofjava;
class A
{   
 public static void main(String [] args)
 {
  System.out.println(null);
 }
}

Что происходит при написании System.out.println(null);?

Происходит, разумеется, ошибка компиляции. У метода println есть несколько вариаций. Он может принимать String, Object или char[]. При передаче в эту функцию аргумента null компилятор не может определиться, к какому из трех методов обращаться.

Перегруженные методы:

Для компилятора вызов System.out.println(null) является неоднозначным, поскольку для вывода null‘a могут более-менее подойти два метода: println(String) и println(char[]). Но компилятор не знает, к какому конкретно методу обратиться. Чтобы компиляция прошла успешно, следует написать:

Но здесь нужно быть внимательным. Вызов System.out.println((char[])null); приведет к исключению runtime exception.

Перевод статьи «10 Interesting Core Java Interview Coding Questions and Answers»

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации