#вопросы_с_собеседований
Как изменить стандартное поведение сериализации/десериализации?
Как изменить стандартное поведение сериализации/десериализации?
✔️ Реализовать интерфейс java.io.Externalizable, который позволяет применение пользовательской логики сериализации. Способ сериализации и десериализации описывается в методах writeExternal() и readExternal(). Во время десериализации вызывается конструктор без параметров, а потом уже на созданном объекте вызывается метод readExternal.
✔️ Если у сериализуемого объекта реализован один из следующих методов, то механизм сериализации будет использовать его, а не метод по умолчанию:
writeObject() - запись объекта в поток;
readObject() - чтение объекта из потока;
writeReplace() - позволяет заменить себя экземпляром другого класса перед записью;
readResolve() - позволяет заменить на себя другой объект после чтения.
✔️ Если у сериализуемого объекта реализован один из следующих методов, то механизм сериализации будет использовать его, а не метод по умолчанию:
writeObject() - запись объекта в поток;
readObject() - чтение объекта из потока;
writeReplace() - позволяет заменить себя экземпляром другого класса перед записью;
readResolve() - позволяет заменить на себя другой объект после чтения.
#вопросы_с_собеседований
1. Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode()?
2. Могут ли у разных объектов быть одинаковые hashCode()?
1. Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode()?
2. Могут ли у разных объектов быть одинаковые hashCode()?
1. Общий совет: выбирать поля, которые с большой долью вероятности будут различаться. Для этого необходимо использовать уникальные, лучше всего примитивные поля, например такие как id, uuid. При этом нужно следовать правилу, если поля задействованы при вычислении hashCode(), то они должны быть задействованы и при выполнении equals().
2. Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения. Ситуация, когда у разных объектов одинаковые хэш коды называется коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хэш кода.
2. Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения. Ситуация, когда у разных объектов одинаковые хэш коды называется коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хэш кода.
Java Programming (2018)
Автор: Joyce Farrell
Даже если вы начинающий программист, книга поможет вам быстро приступить к разработке полезных программ, при этом овладев основными принципами структурного и объектно-ориентированного программирования. Книга содержит уникальные, понятные для читателя объяснения и содержательные упражнения по программированию. Дополнительные цифровые учебные ресурсы в MindTap предоставляют интерактивные инструменты обучения, а также IDE (среда разработки) для отработки и развития ваших навыков.
Скачать книгу
Автор: Joyce Farrell
Даже если вы начинающий программист, книга поможет вам быстро приступить к разработке полезных программ, при этом овладев основными принципами структурного и объектно-ориентированного программирования. Книга содержит уникальные, понятные для читателя объяснения и содержательные упражнения по программированию. Дополнительные цифровые учебные ресурсы в MindTap предоставляют интерактивные инструменты обучения, а также IDE (среда разработки) для отработки и развития ваших навыков.
Скачать книгу
Telegram
Книги для программистов (reserved)
Java Programming (2018)
Автор: Joyce Farrell
Автор: Joyce Farrell
Forwarded from Java jobs — вакансии для java-разработчиков
Разыскивается Senior Java Developer в крупный федеральный банк в Москве (офис)
Требования:
— Java (core, collections, io, generics, multithreading, concurrency, security);
— Junit, TestNG, Mockito
— MS SQL Server (T-SQL) или другими PostgreSQL / Oracle
— CI/CD
— Git
Условия:
— Зарплатная вилка 170 - 300 К рублей / месяц + премии
— Официальное трудоустройство
— Расширенный соц.пакет и ДМС со стоматологией
— Релокационный пакет
➡️ Подробности - https://proglib.io/vacancies/senior-java-developer-iskusstvo-rekrutinga-mezhdunarodnyy-kadrovyy-centr-2020-05-05
Требования:
— Java (core, collections, io, generics, multithreading, concurrency, security);
— Junit, TestNG, Mockito
— MS SQL Server (T-SQL) или другими PostgreSQL / Oracle
— CI/CD
— Git
Условия:
— Зарплатная вилка 170 - 300 К рублей / месяц + премии
— Официальное трудоустройство
— Расширенный соц.пакет и ДМС со стоматологией
— Релокационный пакет
➡️ Подробности - https://proglib.io/vacancies/senior-java-developer-iskusstvo-rekrutinga-mezhdunarodnyy-kadrovyy-centr-2020-05-05
📕 25 лучших книг для программистов
Список наиболее часто рекомендуемых книг о программировании, составлен по результатам анализа упоминаний в интернет-публикациях. Книги об алгоритмах, чистом коде, паттернах проектирования, а также пособия для развития soft skills и прохождения собеседований.
https://proglib.io/w/d604cfd8
Список наиболее часто рекомендуемых книг о программировании, составлен по результатам анализа упоминаний в интернет-публикациях. Книги об алгоритмах, чистом коде, паттернах проектирования, а также пособия для развития soft skills и прохождения собеседований.
https://proglib.io/w/d604cfd8
#вопросы_с_собеседований
1. Что позволяет сделать PriorityQueue?
2. Оцените количество памяти на хранение одного примитива типа byte в ArrayList.
1. Что позволяет сделать PriorityQueue?
2. Оцените количество памяти на хранение одного примитива типа byte в ArrayList.
1. Особенностью PriorityQueue является возможность управления порядком элементов. По-умолчанию, элементы сортируются с использованием «natural ordering», но это поведение может быть переопределено при помощи объекта Comparator, который задаётся при создании очереди. Данная коллекция не поддерживает null в качестве элементов.
Используя PriorityQueue, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.
Используя PriorityQueue, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.
2. ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
#вопросы_с_собеседований
Как написать собственное («пользовательское») исключение?
Как написать собственное («пользовательское») исключение?
#вопросы_с_собеседований
1. Возможно ли использование блока try-finally (без catch)?
2. Может ли один блок catch отлавливать сразу несколько исключений?
1. Возможно ли использование блока try-finally (без catch)?
2. Может ли один блок catch отлавливать сразу несколько исключений?
1. Такая запись допустима, но смысла в такой записи не так много, всё же лучше иметь блок catch, в котором будет обрабатываться необходимое исключение.