четвер, 30 вересня 2010 р.

Чтобы пройти собеседование на Java-программиста..

Чтобы пройти собеседование на Java-программиста в серьезную компанию нужно всего три вещи:

1) Хоть какой-нибудь опыт работы Java-программистом (чтобы было, что написать в резюме).
2) Достойный уровень английского.
3) Правильно ответить на вопросы интервьюера.

В данном блоге не описано, как овладеть 1 и 2 (в общем, как и 3 :-) ). Здесь просто собраны вопросы, с которыми часто приходилось сталкиваться автору на собеседованиях. А прошел он их немало за 3 года. Вопросы разделены на тематические группы.

I. ООП
1. Назовите основные принципы ООП.
2. Что такое наследование?
3. Что такое полиморфизм? Какие проявления полиморфизма в Java Вы знаете?
4. Что такое инкапсуляция?

II. Java core
1. Опишите модификаторы доступа в Java.
2. Чем абстрактный клас отличается от интерфейса? В каких случаях Вы бы использовали абстрактный класс, а в каких интерфейс?
3. Может ли объект получить доступ к private-переменной класса? Если, да, то каким образом?
4. Какие существуют типы вложенных классов? Для чего они используются?
5. Что такое autoboxing?
6. Что такое Generics?
7. Каким образом передаются переменные в методы, по значению или по ссылке?
8. Какие методы есть у класса Object? Какие методы можно переопределять, а какие нет?
9. Правила переопределения метода Object.equals().
10. Правила переопределения метода Object.hashCode().
11. Правила переопределения метода Object.clone().
12. Что такое конструктор по умолчанию?
13. Опишите метод Object.finalize().
14. Чем отличаются слова final, finally и finalize?
15. Опишите иерархию исключений.
16. Что такое checked и unchecked Exception?
17. Как создать свой unchecked Exception?
18. Что такое Error?
19. Опишите работу блока try-catch-finally.

III. Collections framework
1. Назовите основные интерфейсы коллекций и их имплементации.
2. Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?
3. Чем отличается HashMap от Hashtable?
4. Чем отличается ArrayList от Vector?
5. Обясните отличия между HashSet, LinkedHashSet, TreeSet.
6. Каким образом можно синхронизировать методы HashMap, ArrayList?
7. Особенности интерфейса Set.
8. Каким образом можно отсортировать коллекцию?
9. Как правильно удалить элемент из ArrayList?

IV. Multithreading

1. Каким образом можно создать поток?
2. Какие способы синхронизации в Java?
3. Как работают методы wait и notify/notifyAll?
4. Чем отличается работа метода wait с параметром и без параметра?
5. Как работает метод Thread.yield()? Чем отличаются методы Thread.sleep() и Thread.yield()?
6. Как работает метод Thread.join()?
7. Что такое dead lock?
8. Как правильно завершить работу потока? (Иногда говорять, убить поток).
9. На каком объекте происходит синхронизация при вызове static synchronized метода?
10. Для чего используется ключевое слово volatile?

V. Сериализация1. Для чего используется ключевое слово transient?
2. Как изменить стандартное поведение сериализации/десериализации?

VI. Swing1. Что такое Event Dispatch Thread (поток обработки событий)? Как он работает?
2. Как можно производить обработку событий клавиатуры в JTextField?
3. Для чего исользуется класс SwingWorkers?

VII. JDBC
1. Этапы работы с базой данных с использованием JDBC?
2. Как создать Connection?
3. Чем отличается Statement от PreparedStatement?
4. Как вызвать хранимую процедуру?
5. Как правильно закрыть Connection?

VIII. Hibernate1. Что такое lazy-initialization?

IX. JSP, Servlets
1. Чем отличается redirect от forward?
2. Как сделать redirect незаметно для пользователя?
3. Какие скоупы переменных существуют в JSP?
4. Какие есть методы отправки данных с клиента на сервер? Чем они отличаются?
5. Методы сервлета (обычно имеется ввиду HttpServlet).
6. Чем статический include отличается от динамического? (вопрос по JSP)
X. EJB
1. Какие есть типы бинов?
2. Какие есть типы session bean'ов?

XI. Базы данных
1. Что такое нормализация.
2. Какие есть типы связей в базе данных. Приведите пример.
3. Что такое primary key (первичный ключ)?
4. Что такое foreign key (внешний ключ)?
5. Что такое индексы в базе данных? Для чего их используют? Чем они хороши и чем плохи?

XII. SQL
1. Какие есть типы JOIN'ов. Кратко опишите каждый из типов.
2. Что такое LEFT JOIN, RIGHT JOIN? Чем они отличаются?
3. Для чего используется слово HAVING?
4. Задача: есть две сущности АВТОРЫ и КНИГИ, связь М-М (многие к многим). Создайте структуру таблиц для этих сущностей и напишите запрос, который выберет всех авторов, которые НЕ являются соавторами ни к одной из книг.
Звідси

3 коментарі: