Вопросы/дополнения/критика приветствуются. Уровень 33. Ответы на вопросы к собеседованию по теме уровня - 1
  1. Что такое JSON?

    JSON (JavaScript Object Notation) — простой формат обмена данными, основанный на подмножестве языка программирования JavaScript.

  2. В чем отличия Java и JavaScript?

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

    • Java реализует ООП подход, основанный на классах, JavaScript — на прототипах;
    • Java имеет статическую типизацию, JavaScript — динамическую типизацию;
    • Java загружается из скомпилированного байт-кода; JavaScript интерпретируется напрямую из файла.

    Your text to link...

  3. В чем отличия JSON и XML?

    JSON — формат обмена данными.

    XML — язык разметки (в котором можно задать синтаксис, структуру, типы данных и вообще их модель).

    Оба они могут быть использованы для передачи данных. Естественно, для работы с обоими стандартами используются различные фреймворки, отличается синтаксис.

  4. Какие фреймворки для работы с JSON вы знаете?

    33 Уровень познакомил нас с фрейворком jackson. В дополнение я приведу еще 3, и ссылку на статью, в которой они сравниваются:

    1. Jackson от FasterXML
    2. JSON.simple от Yidong Fang
    3. GSON от Google
    4. JSONP от Oracle

    Сравниваем Java-библиотеки для работы с JSON: JSON.simple, GSON, Jackson и JSONP

  5. Какие фреймворки для работы с XML вы знаете?

    Поскольку XML является форматом представления данных, технологии для работы с ним разнообразнее. Я приведу технологии, используемые для сериализации Java объектов в XML:

    1. JAXB (входит в J в JDK)
    2. Xstream

    Ссылка с кратким обзором различных фреймворков для работы с xml: JAVA + XML

  6. Какие аннотации Jackson вы знаете?

    Разберем те, которые использовались в лекциях:

    • @JsonAutoDetect — ставится перед классом. Сообщает Jackson, что необходимо использовать поля этого класса при записи или чтении. В скобках можно задать параметр (fieldVisibility = JsonAutoDetect.Visibility.ANY ), для настройки видимости полей, которые будут использоваться (по умолчанию используются только public поля).
    • @JsonIgnore — ставится перед полем. Сообщает Jackson, что данное поле нужно игнорировать при чтении/записи.
    • @JsonProperty — Ставится перед полем, getter’ом или setter’ом. Позволяет задать другое имя поля при сериализации.
    • @JsonWriteNullProperties — Ставится перед классом. Поля объекта, которые равны null не будет игнорироваться.
    • @JsonPropertyOrder — Ставится перед классом. позволяет определить порядок, в котором поля java объекта будут сериализованы в JSON.
    • @JsonDeserialize — Ставится перед полем. Позволяет определить класс, в который десериализуется JSON объект. Например из java массивы и списки сериализуются в массивы, и при десериализации можно выбрать, что именно мы хотим получить.

    Вот ссылка на сайт с некоторыми аннотациями: Jackson Annotations

  7. Какие аннотации JAXB вы знаете?

    Так же разберу только те, которые использовались в лекции:

    • @XmlRootElement — Ставится перед классом. Указывает на то, что этот объект может быть, элементом самого верхнего уровня, т.е. все остальные элементы лежат в нем.
    • @XmlType — Ставится перед классом. Добавляет в XML-схему дополнительную информацию. Можно указать некоторые атрибуты, например порядок элементов имя и тд.
    • @XmlElement — Ставится перед полем. Позволяет задать имя xml-элемента, значение по умолчанию и т.д.
    • @XmlAttribute — Ставится перед полем. Поле будет представлено как XML-атрибут.
    • @XmlElementWrapper — Ставится перед полем, либо геттером. Позволяет создать обрамляющий тэг для группы элементов.
    • @XmlJavaTypeAdapter — Ставится перед классом. В скобках указывается вспомогательный класс-адаптер, необходимый для маршилизации/демаршализации данного класса.
    • @XmlEnum — Ставится перед enum. В скобках можно указать тип, в котором будут представлены значения enum.
    • @XmlEnumValue — Ставится перед значением enum. Позволяет задать специальное значение для данного значения enum.

    Вот ссылка на сайт с некоторыми аннотациями (извиняюсь, что не сумел составить корректный перевод для аннотаций, информация воспринимается для понимания, но совершенно не представляю, как это грамотно сказать на русском): https://jaxb.java.net/tutorial/index.html

  8. В чем отличие сериализации и десериализации в JSON?

    Не понял суть вопроса. Сравнивать 2 взаимообратных процесса смысла не вижу. Возможно имелось ввиду сравнение JSON и XML, на эту тему в следующем вопросе приведена ссылка.

  9. Что лучше JSON или XML? Почему?

    Вот отличная статья, в которой сравнивается JSON и XML: JSON и XML. Что лучше?

    Пожалуй, нельзя говорить, что что-то лучше. При выборе стоит смотреть на саму задачу и то, что будет эффективнее в использовании. Плюс, выбор может зависеть от личных предпочтений разработчика.

  10. Что такое DTO?

    DTO (Data Transfer Object) — паттерн проектирования содержащий данные без какой-либо логики для работы с ними. DTO обычно используются для передачи данных между различными приложениями, либо между слоями внутри одного приложения. Их можно рассматривать как хранилище информации, единственная цель которого — передать эту информацию получателю.

Уровень 33. Ответы на вопросы к собеседованию по теме уровня - 2
Обновлено 10.11.2016 в 15.50

исправлены вопросы №2, №3, согласно замечанию