Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Вопросы к собеседованию #1

Open
PavelDemyanenko opened this issue Jun 26, 2017 · 5 comments
Open

Вопросы к собеседованию #1

PavelDemyanenko opened this issue Jun 26, 2017 · 5 comments
Assignees

Comments

@PavelDemyanenko
Copy link
Owner

  • Базовый класс в Java, как известно, Object. Какие его методы Вы можете назвать?
  • Расскажите, что такое equals() и hashCode()? Какие правила и соглашения существуют для реализации этих методов? Когда они применяются? Каким образом реализованы методы hashCode() и equals() в классе Object?
  • Почему метод clone() объявлен как protected? Что необходимо для реализации клонирования?
  • Расскажите о методах wait(), notify(), notifyAll(). Как они применяются, когда, зачем нужны? Что такое synchronized? Почему wait() и notify() нужно вызывать именно из блока synchronized?
  • Какие модификаторы доступа в Java вы знаете? Какой из модификаторов более строгий: protected или package-private? Если у класса-родителя есть метод, объявленный как private, может ли наследник расширить его видимость? А если protected? А сузить видимость?
  • Что означает ключевое слово final? Имеет ли смысл объявлять метод private final? Какие особенности инициализации final переменных? Что будет, если единственный конструктор класса объявлен как final?
  • Что означает ключевое слово static? К каким конструкциям Java применим модификатор static? Что будет, если в static блоке кода возникнет исключительная ситуация? Можно ли перегрузить static метод? Что такое статический класс, какие особенности его использования? Какие особенности инициализации final static переменных?
  • Какие типы классов бывают в java (вложенные и т.д.) Каким образом из вложенного класса получить доступ к полю внешнего класса. Какие особенности создания вложенных классов: простых и статических. Каким образом можно обратиться к локальной переменной метода из анонимного класса, объявленного в теле этого метода? Есть ли какие-нибудь ограничения для такой переменной?
  • Какие виды исключений в Java вы знаете, чем они отличаются? Предположим вам необходимо создать свой собственный класс Exception. Какими мотивами вы будете руководствоваться при выборе типа исключения checked/unchecked?
  • Какая конструкция используется в Java для обработки исключений? Возможно ли использование блока try-finally (без catch)? Предположим, есть блок try-finally. Всегда ли исполняется блок finally? Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?
  • В блоке try возникло исключение и выполнение переместилось в блок catch. В блоке catch тоже возникло исключение. Какое из трёх исключений "выпадет" из блока try-finally? Что случится со вторым исключением?
  • Предположим, есть блок кода, который может выбросить IOException и FileNotFoundException. В какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
  • Почему множественное наследование не поддерживается в Java?
  • Как в Java представлены символы юникода? Сколько байт под них выделяется? Какие есть способы представления Unicode?
  • Как в Java представлены строки? Как работает метод substring? Какие с этим связаны проблемы?
  • Почему в Java строки неизменяемы?
  • Почему массив символов (или массив байт) лучше чем строка для хранения паролей в Java?
  • Расскажите про механизм пулинга строк и примитивных типов в Java.
  • Что случится если ваш Serializable класс содержит поле не Serializable. Как это исправить?
  • Расскажите, что такое Reflection? Что оно позволяет делать? Для чего чаще всего используется? На сколько reflection-вызов метода быстрее/медленнее, чем прямой вызов метода? Почему?
  • Что такое JDK-proxy? Использует ли эта технология Reflection?
@PavelDemyanenko PavelDemyanenko self-assigned this Jun 26, 2017
@PavelDemyanenko
Copy link
Owner Author

PavelDemyanenko commented Sep 28, 2017

https://habrahabr.ru/post/265373/
Object это базовый класс для всех остальных объектов в Java. Каждый класс наследуется от Object. Соответственно все классы наследуют методы класса Object.
Методы класса Object:
public final native Class getClass()
public native int hashCode()
public boolean equals(Object obj)
protected native Object clone() throws CloneNotSupportedException
public String toString()
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout) throws InterruptedException
public final void wait(long timeout, int nanos) throws InterruptedException
public final void wait() throws InterruptedException
protected void finalize() throws Throwable

@PavelDemyanenko
Copy link
Owner Author

PavelDemyanenko commented May 26, 2018

Разбираемся с hashCode() и equals(): https://habr.com/post/168195/
Еще с DZone (en)

@PavelDemyanenko
Copy link
Owner Author

PavelDemyanenko commented May 26, 2018

Почему clone() объявлен как protected: https://javatalks.ru/topics/50317

@PavelDemyanenko
Copy link
Owner Author

@PavelDemyanenko
Copy link
Owner Author

PavelDemyanenko commented Jun 2, 2018

Методы wait(), notify(), notifyAll() класса Object: http://techarxiv.blogspot.com/2007/11/java-object-wait-notify-notifyall.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant