пятница, 25 декабря 2009 г.

Ответы на вопросы собеседований по Java (на должность Java-программист, Java-разработчик). Том.1

Постольку поскольку я сейчас в процессе смены рабочего места, и, между нами говоря, Java-программист я начинающий... меня не берут, потому что слишком глуп.

Я решил начать коллекционировать вопросы различных собеседований, в основном речь пойдет о J2SE/JavaCore и SQL.
Начнем с того, что я рекомендую заучить:
Ответы на вопросы для собеседования по Java SE (Часть 1)
Ответы на вопросы для собеседования по Java SE (Часть 2)
Ответы на вопросы для собеседования по Java SE (Часть 3)

Собеседование в Силиконовой долине (часть 1 - General Java)
Собеседование в Силиконовой долине (часть 2 - General Java)

Названия компаний решено было не печатать.
Итак, что же интересного спрашивали лично у меня.

J2SE (JavaCore)


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

  1.     StringBuffer s1 = new StringBuffer();
  2.     StringBuffer s2 = new StringBuffer();
  3.     new Thread() {
  4.       public void run() {
  5.         synchronized(s1) {
  6.           s1.append("A");
  7.         }
  8.         synchronized(s2) {
  9.           s2.append("B");
  10.         }
  11.         System.out.print(s1);
  12.         System.out.print(s2);
  13.       }
  14.     }.start();
  15.     new Thread() {
  16.       public void run() {
  17.         synchronized(s2) {
  18.           s2.append("C");
  19.         }
  20.         synchronized(s1) {
  21.           s1.append("D");
  22.         }
  23.         System.out.print(s1);
  24.         System.out.print(s2);
  25.       }
  26.     }.start();
* This source code was highlighted with Source Code Highlighter.
первым может выполниться как первый поток, так и второй, выведет либо "DCDACB" либо "ABADBC"
Раскрыть ответ
Должен ли абстрактный класс иметь хотя бы один метод?
должен :)
Раскрыть ответ
Какие бывают области видимости(модификаторы доступа)?
Public: видно всем
Private: видно только внутри класса
Protected: видно внутри класса и наследникам в том же пакете
default: видно всем внутри пакета
Раскрыть ответ

А можно в производном классе сменить модификатор с protected на public?
Можно, но только в сторону большей видимости (protected на public, private->protected->public)
Раскрыть ответ

Модифицируйте программу таким образом, чтобы при запуске она выводила "Hello world", при условии, что метод "main" изменять нельзя
public class Test {
public static void main(String[] args) {
System.out.print("world");
}
}
public class Test {
static { System.out.print("Hello "); }
public static void main(String[] args) { System.out.print("world"); } }
Раскрыть ответ


JSP, Servlets


В чем разница между sendRedirect() и forward()
1. sendRedirect() выполняется на серверной стороне, forward() - на клиентской
2. forward() выполняется на серверной стороне, sendRedirect() - на клиентской
3. нет разницы
2 - forward() выполняется на серверной стороне, sendRedirect() - на клиентской
Раскрыть ответ


продолжение следует...