#вопросы_с_собеседований
Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?
✔️Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.
✔️Для создания объекта статического вложенного класса объект внешнего класса не требуется.
✔️Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
✔️Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
✔️В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статического такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.
✔️Для создания объекта статического вложенного класса объект внешнего класса не требуется.
✔️Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
✔️Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
✔️В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статического такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.
Kotlin Cookbook: A Problem-Focused Approach (2019)
Используйте Kotlin для создания Android-приложений, веб-приложений и многого другого, изучая нюансы этого популярного языка. С помощью этой уникальной книги разработчики могут узнать, как применять этот язык в своих проектах. Как опытные программисты, так и новички в Kotlin получат пользу от практических рецептов из книги.
Скачать книгу
Используйте Kotlin для создания Android-приложений, веб-приложений и многого другого, изучая нюансы этого популярного языка. С помощью этой уникальной книги разработчики могут узнать, как применять этот язык в своих проектах. Как опытные программисты, так и новички в Kotlin получат пользу от практических рецептов из книги.
Скачать книгу
Telegram
Книги для программистов (reserved)
Kotlin Cookbook: A Problem-Focused Approach (2019)
Автор: Ken Kousen
Автор: Ken Kousen
Часть собеседования на позицию Junior Java разработчика. Тема - Collection API.
https://proglib.io/w/90539455
https://proglib.io/w/90539455
YouTube
Java Junior реальное собеседование | Collection API | Часть 3
В этом видео я покажу вам фрагмент из реального собеседования на позицию Java Junior Developer. В этой части мы покроем одну из самых наиболее популярных тем на собеседовании - Сollection API.
Друзья, задавайте в комментариях свои вопросы, обязательно всем…
Друзья, задавайте в комментариях свои вопросы, обязательно всем…
Troubleshooting Java Performance: Detecting Anti-Patterns with Open Source Tools (2017)
Автор: Erik Ostermueller
Это небольшая книга, посвященная некоторому количеству антипаттернов производительности. Читая книгу, вы обнаружите, что большинство проблем, с которыми вы сталкиваетесь, вписываются в какой-либо из этих анти-шаблонов. Автор приводит разнообразные способы нахождения и устранения проблем в ваших проектах.
Скачать книгу
Автор: Erik Ostermueller
Это небольшая книга, посвященная некоторому количеству антипаттернов производительности. Читая книгу, вы обнаружите, что большинство проблем, с которыми вы сталкиваетесь, вписываются в какой-либо из этих анти-шаблонов. Автор приводит разнообразные способы нахождения и устранения проблем в ваших проектах.
Скачать книгу
Telegram
Книги для программистов (reserved)
Troubleshooting Java Performance: Detecting Anti-Patterns with Open Source Tools (2017)
Автор: Erik Ostermueller
Автор: Erik Ostermueller
Object — это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследует его методы:
public boolean equals(Object obj) – служит для сравнения объектов по значению; int hashCode() – возвращает hash код для объекта; String toString() – возвращает строковое представление объекта; Class getClass() – возвращает класс объекта во время выполнения; protected Object clone() – создает и возвращает копию объекта; void notify() – возобновляет поток, ожидающий монитор; void notifyAll() – возобновляет все потоки, ожидающие монитор; void wait() – остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout, int nanos) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; protected void finalize() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
public boolean equals(Object obj) – служит для сравнения объектов по значению; int hashCode() – возвращает hash код для объекта; String toString() – возвращает строковое представление объекта; Class getClass() – возвращает класс объекта во время выполнения; protected Object clone() – создает и возвращает копию объекта; void notify() – возобновляет поток, ожидающий монитор; void notifyAll() – возобновляет все потоки, ожидающие монитор; void wait() – остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; void wait(long timeout, int nanos) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта; protected void finalize() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
Создавай цифровые решения будущего и получи приз!
Мы объявляем онлайн-хакатон VirusHack от Ростелекома, организованный в партнерстве с Агентством инноваций Москвы и РАЭК. В нем вы прокачаете свои навыки в разработке технологий, которые помогут людям, бизнесу и государству приспосабливаться к нестандартным условиям жизни.
Победитель реализует свой проект при поддержке крупнейших компаний страны!
Призовой фонд хакатона 2 500 000 рублей!
Онлайн-хакатон пройдет с 3 по 5 мая 2020 года — успейте зарегистрироваться на него до 30 апреля 2020-го: https://proglib.io/w/6cc9408c
Добавляйтесь в чат хакатона: https://bit.ly/2RAQgOx
Мы объявляем онлайн-хакатон VirusHack от Ростелекома, организованный в партнерстве с Агентством инноваций Москвы и РАЭК. В нем вы прокачаете свои навыки в разработке технологий, которые помогут людям, бизнесу и государству приспосабливаться к нестандартным условиям жизни.
Победитель реализует свой проект при поддержке крупнейших компаний страны!
Призовой фонд хакатона 2 500 000 рублей!
Онлайн-хакатон пройдет с 3 по 5 мая 2020 года — успейте зарегистрироваться на него до 30 апреля 2020-го: https://proglib.io/w/6cc9408c
Добавляйтесь в чат хакатона: https://bit.ly/2RAQgOx
#вопросы_с_собеседований
Что вы знаете об OutOfMemoryError?
Что вы знаете об OutOfMemoryError?
OutOfMemoryError выбрасывается, когда виртуальная машина Java не может создать (разместить) объект из-за нехватки памяти, а сборщик мусора не может высвободить достаточное её количество.
Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:
🔵 java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
🔵 java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
🔵 java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
🔵 java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.
Область памяти, занимаемая java процессом, состоит из нескольких частей. Тип OutOfMemoryError зависит от того, в какой из них не хватило места:
🔵 java.lang.OutOfMemoryError: Java heap space: Не хватает места в куче, а именно, в области памяти в которую помещаются объекты, создаваемые в приложении программно. Обычно проблема кроется в утечке памяти. Размер задается параметрами -Xms и -Xmx.
🔵 java.lang.OutOfMemoryError: PermGen space: (до версии Java 8) Данная ошибка возникает при нехватке места в Permanent области, размер которой задается параметрами -XX:PermSize и -XX:MaxPermSize.
🔵 java.lang.OutOfMemoryError: GC overhead limit exceeded: Данная ошибка может возникнуть как при переполнении первой, так и второй областей. Связана она с тем, что памяти осталось мало и сборщик мусора постоянно работает, пытаясь высвободить немного места. Данную ошибку можно отключить с помощью параметра -XX:-UseGCOverheadLimit.
🔵 java.lang.OutOfMemoryError: unable to create new native thread: Выбрасывается, когда нет возможности создавать новые потоки.
Пожалуйста, присылайте вопросы, которые вам задавали на собеседованиях, в бота @java_interviews_bot (желательно с ответами). Мы будем анонимно публиковать ваши вопросы с решениями в этом канале. Этим вы можете помочь развитию нашего сообщества программистов. Бот: @java_interviews_bot
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «Пожалуйста, присылайте вопросы, которые вам задавали на собеседованиях, в бота @java_interviews_bot (желательно с ответами). Мы будем анонимно публиковать ваши вопросы с решениями в этом канале. Этим вы можете помочь развитию нашего сообщества программистов.…»
В Java поля классов и объектов, которые не имеют явного инициализатора, автоматически инициализируются со значением по умолчанию для их типа (false для boolean, 0 для всех числовых типов, null для всех ссылочных типов). Локальные переменные в Java должны быть обязательно инициализированы до того, как к ним будет получен доступ, иначе будет ошибка компиляции.
Java Coding Problems: Improve your Java Programming skills by solving real-world coding challenges (2019)
Автор: Anghel Leonard
Развивайте свои навыки программирования, изучая концепции и техники Java, такие как строки, объекты и типы, структуры данных и алгоритмы, параллелизм и функциональное программирование. В своей книге автор показывает читателям, как применять ООП-подход к распространенным задачам, объясняя правильные методы и решения в отношении сложности, производительности, удобочитаемости и многого другого.
Скачать книгу
Автор: Anghel Leonard
Развивайте свои навыки программирования, изучая концепции и техники Java, такие как строки, объекты и типы, структуры данных и алгоритмы, параллелизм и функциональное программирование. В своей книге автор показывает читателям, как применять ООП-подход к распространенным задачам, объясняя правильные методы и решения в отношении сложности, производительности, удобочитаемости и многого другого.
Скачать книгу
Telegram
Книги для программистов (reserved)
Java Coding Problems: Improve your Java Programming skills by solving real-world coding challenges (2019)
Автор: Anghel Leonard
Автор: Anghel Leonard
#вопросы_с_собеседований
Как работает сборщик мусора?
Как работает сборщик мусора?
Механизм сборки мусора - это процесс освобождения места в куче, для возможности добавления новых объектов.
Объекты создаются посредством оператора new, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например присвоив переменной ссылку на другой объект или значение null; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (garbage), который будет удален.
Виртуальная машина Java, применяя механизм сборки мусора, гарантирует, что любой объект, обладающий ссылками, остается в памяти — все объекты, которые недостижимы из исполняемого кода, ввиду отсутствия ссылок на них, удаляются с высвобождением отведенной для них памяти. Точнее говоря, объект не попадает в сферу действия процесса сборки мусора, если он достижим посредством цепочки ссылок, начиная с корневой (GC Root) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде.
Память освобождается сборщиком мусора по его собственному «усмотрению». Программа может успешно завершить работу, не исчерпав ресурсов свободной памяти или даже не приблизившись к этой черте и поэтому ей так и не потребуются «услуги» сборщика мусора.
Мусор собирается системой автоматически, без вмешательства пользователя или программиста, но это не значит, что этот процесс не требует внимания вовсе. Необходимость создания и удаления большого количества объектов существенным образом сказывается на производительности приложений и если быстродействие программы является важным фактором, следует тщательно обдумывать решения, связанные с созданием объектов, — это, в свою очередь, уменьшит и объем мусора, подлежащего утилизации.
Объекты создаются посредством оператора new, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например присвоив переменной ссылку на другой объект или значение null; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (garbage), который будет удален.
Виртуальная машина Java, применяя механизм сборки мусора, гарантирует, что любой объект, обладающий ссылками, остается в памяти — все объекты, которые недостижимы из исполняемого кода, ввиду отсутствия ссылок на них, удаляются с высвобождением отведенной для них памяти. Точнее говоря, объект не попадает в сферу действия процесса сборки мусора, если он достижим посредством цепочки ссылок, начиная с корневой (GC Root) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде.
Память освобождается сборщиком мусора по его собственному «усмотрению». Программа может успешно завершить работу, не исчерпав ресурсов свободной памяти или даже не приблизившись к этой черте и поэтому ей так и не потребуются «услуги» сборщика мусора.
Мусор собирается системой автоматически, без вмешательства пользователя или программиста, но это не значит, что этот процесс не требует внимания вовсе. Необходимость создания и удаления большого количества объектов существенным образом сказывается на производительности приложений и если быстродействие программы является важным фактором, следует тщательно обдумывать решения, связанные с созданием объектов, — это, в свою очередь, уменьшит и объем мусора, подлежащего утилизации.