Вопросы на java-собеседовании

 
 
 
Сообщения:2030
Переехал в другой город, устраиваюсь на работу, хожу по собеседованиям. Мне показалось, что вопросы, которые там задаются, хотя и известны, тем не менее, собранные вместе, могут помочь подготовиться и чувствовать себя более уверенно.

Вопросы на понимание принципов построения СУБД.
1. Что такое первая нормальная форма и процесс нормализации? Какие бывают нормальные формы?
2. В чем смысл индекса СУБД, как они устроены, как хранятся? Как бы вы реализовали тот же функционал? Последний вопрос задают в случае, если нет четкого понимания индексов.
3. Нарисуйте отношение Многие-ко-многим. Например: таблицы Авторы и Книги. У одного автора может быть несколько книг, и книга может быть написана несколькими авторами. Составьте SQL запрос на выборку книг определенного автора.

Базовые вопросы о Java.
4. Базовый класс в Java, как известно, Object. Какие его методы Вы можете назвать?
5. Расскажите, что такое equals и hashCode? Какие правила и соглашения существуют для реализации этих методов? Когда они применяются?
6. Расскажите о методах wait, notify, notifyAll. Как они применяются, когда, зачем нужны? Что такое synchronized?
7. Что такое finalize? Зачем он нужен? Что Вы можете рассказать о сборщике мусора и алгоритмах его работы.
8. Почему метод clone объявлен как protected? Что необходимо для реализации клонирования?
9. Какие есть модификаторы (доступа и остальные)? Что такое volatile и transient? Для чего и в каких случаях можно было бы использовать default?

Java Collection Framework
10. Какие существуют интерфейсы коллекций в Java? Объясните в чем их отличие.
11. Какие Вы знаете реализации этих интерфейсов?
12. Чем отличаются друг от друга ArrayList и LinkedList. Как они устроены? В каких случаях их стоит использовать.
13. Чем отличаются HashMap и TreeMap? Как они устроены и работают? Что со временем доступа к объектам, какие зависимости?
14. Что такое Hashtable, чем она отличается от HashMap? На сегодняшний день она deprecated, как все-таки использовать нужную функциональность?

Исключения
15. Что такое исключение? Какие типы исключений Вы знаете, чем они отличаются?
16. Может быть предложена задачка с блоками try-catch-finally и вопросом, что вернется или какое исключение будет в итоге передано наверх?

Алгоритмы
17. Какие алгоритмы сортировки Вам известны? Какие вообще знаете алгоритмы?
Причем, здесь возможны различные дополнительные вопросы об оценке сложности алгоритмов, их сравнению между собой.

Паттерны проектирования.
18. Знакомы ли Вам какие-либо паттерны проектирования?
19. Напишите Singleton... А с ленивой загрузкой. А если он должен быть потоко-безопасным? А в каких случаях ленивая загрузка хуже?
20. Что можете сказать про MVC? Нарисуйте диаграмму и объясните, как MVC работает.

Серия вопросов на понимание набора технологий J2EE.
21. Что такое сервлет, jsp, их отличие?
22. Что такое Ajax? Как принципиально устроена эта технология?
23. Что такое ORM, как это перевести и как это должно работать?

Простые задачи на написание алгоритмов.
24. Напишите функцию вычисления факториала.
25. Дана функция вычисления чисел Фибоначчи, известно, что она работает. Найдите логическую ошибку. Оцените сложность получившегося алгоритма.
26. Переверните строку.
27. Посчитайте среднее массива.

Полезно помнить, что, чувствуя себя не очень уверенно, не нужно говорить лишних слов. Скажешь лишнее слово, и за него цепляются, раскручивают цепочку. Раскручивают в том, в чем не очень уверен. Этой способностью людей – цепляться – нужно пользоваться, но с выгодой для себя ;-)

Знание и понимание… вещи достаточно сильно отличающиеся, поэтому
- разные алгоритмы, например сортировки, стоит написать самому, пусть даже и с учебника. Посмотреть насколько они друг от друга отличаются, сравнить их сложность.
- полезно посмотреть разные утилиты и библиотеки, принципы группировки классов в пакеты и стиль написания кода, комментирования. Очень может помочь в понимании модификаторов доступа, организации проекта.
- разбираясь в чем-нибудь конкретном, можно помочь тем, кто знает меньше. Зайти на любой форум и попытаться ответить на вопросы интересной для темы. В обсуждении можно взять что-то и для себя. Можно написать небольшую статью. Разумеется, нужно хорошо разобраться в теме.
Любая работа, направленная на повышение собственной квалификации, будет видна грамотному интервьюеру и без внимания не останется. Единственное, что говорить о ней нужно честно, не стоит преуменьшать своих возможностей и способностей.
Чтобы иметь какой-либо ориентир подготовки или развития себя как специалиста, можно смотреть на что-то похожее этому.

Собственно, перечисленные выше вопросы – это уровень Junior Developer, как я себе это представляю. Где-то, может быть, более глубоко, где-то менее, но как факт - Junior.

Всякое решение плодит новые проблемы
Изменен:03 апр 2009 15:47
 
 
Сообщения:103
Супер! Давно искал такого плана подборку вопросов, будет теперь чем на выходных занятся, по ищу ответы:)

The new is always better
 
 
Сообщения:600
В сети гуляет пдф-ная книга ( у меня в ПДФ :) ), которая содержит основный и самые распостраненные вопросы, которые задают на интерью в софтверных канторах. Как по мне, то очень даже полезная.

Искать приблизительно сл.: Java/J2EE Job Interview Companion ISBN 978-1-4116-6824-9
 
 
Сообщения:516
Хороший материал! Очень хороший! Может стоит прилепить его в учёбу и добавить развернутые ответы по всем вопросам? Только отдельными постами, чтобы человек мог смначало попытаться сам ответить на ворпос, потом с помощью книги-интернета, а потом сравнил свое понимание вопроса с ответом.
 
 
Сообщения:2030
2 infinity: чрезвычайно полезная книга. Скачал, начал читать. Спасибо!

2 frodo5: хорошая мысль! Мне только кажется, что лучше, чтобы оно все-таки повисело таким образом. Если дать ответы - их будут читать сразу. Позже можно будет оформить.

Всякое решение плодит новые проблемы
 
 
Сообщения:600
:wink:
 
 
Сообщения:595
Jean:

Собственно, перечисленные выше вопросы – это уровень Junior Developer, как я себе это представляю. Где-то, может быть, более глубоко, где-то менее, но как факт - Junior.


Может тогда добавить вопросы посерьезнее, на мидла какого-нибудь или сеньора?
Кстати, вы на какую позицию устраиватесь? :)

While (!Life.EOF) {
You.Money++;
You.Girls.Add(new Girl(90,60,90));
BeHappy();
}
 
 
Сообщения:2030
В условиях жесточайшего кризиса и недостаточно глубоких теоретических знаний... на какую возьмут.

Я здесь описал то, чем меня озадачивали.

Всякое решение плодит новые проблемы
 
 
Сообщения:162
Хорошая информация! Давно искал вроде того! :)

The late, then never.
 
 
Сообщения:9725
http://samolisov.blogspot.com/2007/11/blog-post_18.html
 
 
Сообщения:236
вот также подборка от матерых ребят, как они сами себя называют
---------------------------------------------------------------------------------
1. Что такое класс Object? Какие в нем есть методы?
2. Что такое метод equals(). Чем он отличается от операции ==.
3. Если вы хотите переопределить equals(), какие условия должны удовлетворяться для переопределенного метода?
4. Если equals() переопределен, есть ли какие-либо другие методы, которые следует переопределить?
5. Для чего нужен метод hashCode()?
6. Какая связь между hashCode и equals?
7. Каким образом реализованы методы hashCode и equals в классе Object?
8. Что будет, если переопределить equals не переопределяя hashCode? Какие могут возникнуть проблемы?
9. Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode?
10. Как вы думаете, будут ли какие-то проблемы, если у объекта, который используется в качестве ключа в hashMap изменится поле, которое участвует в определении hashCode?

11. Какие модификаторы доступа в Java вы знаете?
12. Какой из модификаторов более строгий: protected или package-private?
13. Если у класса-родителя есть метод, объявленный как private, может ли наследник расширить его видимость? А если protected? А сузить видимость?
14. Что означает ключевое слово final?
15. Имеет ли смысл объявлять метод private final?
16. Какие особенности инициализации final переменных?
17. Что будет, если единственный конструктор класса объявлен как final?

18. Что означает ключевое поле static?
19. К каким конструкциям Java применим модификатор static?
20. Что будет, если в static блоке кода возникнет исключительная ситуация?
21. Можно ли перегрузить static метод?
22. Что такое статический класс, какие особенности его использования?
23. Какие особенности инициализации final static переменных?

24. Какие типы классов бывают в java (вложенные… и.т.д.)
25. Каким образом из вложенного класса получить доступ к полю внешнего класса.
26. Какие особенности создания вложенных классов: простых и статических.
27. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли каке-нибудь ограничения для такой переменной?

28. Какие вы знаете способы запустить некоторое действие в отдельном потоке?
29. Какие вы знаете способы прекратить выполнение потока?
30. Какие ключевые слова Java, связанные с многопоточностью Вы знаете?
31. Для чего используется ключевое слово syhcronized?
32. Есть некоторый метод, который исполняет операцию i++. Переменная i типа int. Предполагается, что код будет исполнятся в многопоточной среде. Следует ли синхронизировать блок?
33. Что служит в качестве mutex, если метод объявлен synchronized?
34. Можно ли вызвать в разных потоках два synchronized метода одного и того же объекта?
35. Что используется в качестве mutex, если метод объявлен static synchronized? Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?
36. Объясните, что такое deadlock? Приведите пример кода, который демонстрирует deadlock.
37. Для чего используется ключевое слово volatile?
38. Какие особенности использования метода wait? При каких условиях поток может выйти из режима ожидания?
39. Предположим в методе run возник RuntimeException, который не был пойман. Что случится с потоком? Есть ли способ узнать о том, что Exception произошел (не заключая все тело run в блок try-catch)? Есть ли способ восстановить работу потока после того как это произошло?
40. Какие стандартные инструменты Java вы бы использовали для реализации пула потоков?

41. Какие виды исключений в Java вы знаете, чем они отличаются?
42. Назовите несколько классов из вершины иерархии исключений в Java.
43. Что такое Error? В каком случае используется Error. Приведите пример Error’а.
44. Какая конструкция используется в Java для обработки исключений?
45. Возможно ли использование блока try-finally (без catch)?
46. Предположим, есть блок try-finally. В блоке try возникло исключение и выполнение переместилось в блок finally. В блоке finally тоже возникло исключение. Какое из двух исключений “выпадет” из блока try-finally? Что случится со вторым исключением?
47. Всегда ли исполняется блок finally?
48. Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
49. Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
50. Предположим вам необходимо создать свой собственный класс Exception. Какими мотивами вы будете руководствоваться при выборе типа исключения: checked/unchecked? :)

liberate the pigeons
 
 
Сообщения:610
Вопросы к последнему сообщению...

Quote:
Что будет, если единственный конструктор класса объявлен как final?


В вопросе ошибка, или это вопрос с подвохом на то, что у конструкторов нельзя писать final ??

И ещё

Quote:

Можно ли перегрузить static метод?


Перегрузить или переопределить?

Стоимость устранения одной ошибки, обнаруженной после выхода продукта, превышает затраты на исправление одной ошибки, обнаруженной во время проектирования, в 4-5 раз, а если баг был выявлен через техническую поддержку, в 100 раз.
 
 
Сообщения:6977
Маленькое уточнение по первоначальному списку вопросов, конкретно по 14-му. Hashtable НЕ ЯВЛЯЕТСЯ deprecated на сегодняшний момент: http://java.sun.com/javase/6/docs/api/java/util/Hashtable.html. Это распространенное заблуждение. И если вам задали такой вопрос - это говорит о собеседнике достаточно много. Не в его пользу.

P.S. То же самое про Vector. http://java.sun.com/javase/6/docs/api/java/util/Vector.html

С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
 
 
Сообщения:610
Добавьте плиз куда-нить в

"Простые задачи на написание алгоритмов."
-Написать пример гарантированного deadlock

Стоимость устранения одной ошибки, обнаруженной после выхода продукта, превышает затраты на исправление одной ошибки, обнаруженной во время проектирования, в 4-5 раз, а если баг был выявлен через техническую поддержку, в 100 раз.
 
 
Сообщения:1517
http://www.javabeat.net/articles/interview-questions/1/
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет