Библиотека джависта | 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) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде.
Память освобождается сборщиком мусора по его собственному «усмотрению». Программа может успешно завершить работу, не исчерпав ресурсов свободной памяти или даже не приблизившись к этой черте и поэтому ей так и не потребуются «услуги» сборщика мусора.
Мусор собирается системой автоматически, без вмешательства пользователя или программиста, но это не значит, что этот процесс не требует внимания вовсе. Необходимость создания и удаления большого количества объектов существенным образом сказывается на производительности приложений и если быстродействие программы является важным фактором, следует тщательно обдумывать решения, связанные с созданием объектов, — это, в свою очередь, уменьшит и объем мусора, подлежащего утилизации.
Предположим, что класс В наследует класс А. Какое утверждение обязательно верно?
Anonymous Quiz
16%
если класс А имеет только private-конструкторы, то и конструкторы класса В должны быть private
42%
если класс А имел статический метод, то метод в классе B с той же сигнатурой должен быть статическим
8%
если класс А - абстрактный, то класс В тоже должен быть абстрактным
6%
если класс А объявлен как final, то класс В тоже должен быть final
29%
если класс А объявлен как public, то и класс В должен быть public
Варианты 3 и 5 не обязательны, 1 и 4 - не допускают наследование.
#вопросы_с_собеседований
Опишите процесс сериализации/десериализации с использованием Serializable.
Опишите процесс сериализации/десериализации с использованием Serializable.
При использовании Serializable применяется алгоритм сериализации, который с помощью рефлексии (Reflection API) выполняет:
✔️ запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор SerialVersionUID, идентификаторы полей класса);
✔️ рекурсивную запись в поток описания суперклассов до класса java.lang.Object (не включительно);
✔️ запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса;
✔️ рекурсивную запись объектов, которые являются полями сериализуемого объекта.
При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками.
Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.
✔️ запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор SerialVersionUID, идентификаторы полей класса);
✔️ рекурсивную запись в поток описания суперклассов до класса java.lang.Object (не включительно);
✔️ запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса;
✔️ рекурсивную запись объектов, которые являются полями сериализуемого объекта.
При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками.
Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.
Не теряй время, мы собрали все материалы по Java в одной online программе. У нас ты изучишь востребованный стек технологий с наставником и получишь опыт коммерческой разработки необходимый для старта в IT. Оплата только после трудоустройства. А если не найдешь работу, то обучение бесплатно.
Пройти тестовое задание 🙋♂️👉 https://clck.ru/NDYV4
👇Что ждет студента:
1. Подготовка с личным ментором online по индивидуальной программе за 6 месяцев
2. Жесткий контроль знаний на каждом этапе
3. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который дает опыт и строчку для резюме
5. Общение с одногруппниками и студентами-разработчиками других потоков групповом чате slack (уже более 1500 участников)
6. Быстрое карьерное и финансовое развитие за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
7. Гарантированное трудоустройство и первая зарплата от 100 000 рублей
Требования к кандидату:
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
Пройти тестовое задание 🙋♂️👉 https://clck.ru/NDYV4
👇Что ждет студента:
1. Подготовка с личным ментором online по индивидуальной программе за 6 месяцев
2. Жесткий контроль знаний на каждом этапе
3. Обучение востребованному на рынке стеку технологий: Java Core, Maven, Git, Junit, Tomcat, Servlet, Spring MVC, Core, Security, Hibernate
4. Отработка знаний в настоящем бизнес проекте, который дает опыт и строчку для резюме
5. Общение с одногруппниками и студентами-разработчиками других потоков групповом чате slack (уже более 1500 участников)
6. Быстрое карьерное и финансовое развитие за счет программы поддержки на 2 года: митапы, мастер-классы, закрытые лекции со спикерами и offline интенсивы
7. Гарантированное трудоустройство и первая зарплата от 100 000 рублей
Требования к кандидату:
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
Beginning Java Data Structures and Algorithms (2018)
Автор: James Cutajar
Хоть ваше приложение хорошо выполняет свои задачи, оно может не быть эффективным и быстрым. Читая книгу, вы изучите методы, позволяющие точно прогнозировать эффективность кода, легко отбрасывать неэффективные решения и повышать производительность вашего приложения.
Скачать книгу
Автор: James Cutajar
Хоть ваше приложение хорошо выполняет свои задачи, оно может не быть эффективным и быстрым. Читая книгу, вы изучите методы, позволяющие точно прогнозировать эффективность кода, легко отбрасывать неэффективные решения и повышать производительность вашего приложения.
Скачать книгу
Telegram
Книги для программистов (reserved)
Beginning Java Data Structures and Algorithms (2018)
Автор: James Cutajar
Автор: James Cutajar
Forwarded from Библиотека программиста | программирование, кодинг, разработка via @like
Мы теперь есть в Яндекс.Мессенджере. Присоединяйтесь:
https://yandex.ru/chat/#/join/627c55a9-89c7-4d27-86ed-287d33a5ce7d
https://yandex.ru/chat/#/join/627c55a9-89c7-4d27-86ed-287d33a5ce7d
#вопросы_с_собеседований
Как изменить стандартное поведение сериализации/десериализации?
Как изменить стандартное поведение сериализации/десериализации?