Подробный ответ в статье, которую сам недавно заюзал https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/
Что такое JSON
Полное название JavaScript Object Notation. Джейсон нужен для представления объекта в виде строки. Такое представление часто используют разработчики для передачи данных с фронта на сервер и в обратную сторону.
Структура Джейсона - это набор пар ключ: значение. Простой пример:
Значениями могут быть:
— Объект
— Массив
— Строка в двойных кавычках
— Число
— Логическое значение
—
Полное название JavaScript Object Notation. Джейсон нужен для представления объекта в виде строки. Такое представление часто используют разработчики для передачи данных с фронта на сервер и в обратную сторону.
Структура Джейсона - это набор пар ключ: значение. Простой пример:
{ "firstName": "Иван" }
. Значениями могут быть:
— Объект
{ ... }
— Массив
[ ... ]
— Строка в двойных кавычках
— Число
— Логическое значение
true
/false
—
null
Пример посложнее:
{
"orderID": 123,
"shopperName": "Ваня Ибрагимов",
"shopperEmail": "[email protected]",
"contents": [
{
"productID": 34,
"productName": "Boroda",
"quantity": 1
},
{
"productID": 56,
"productName": "Giroskuter",
"quantity": 2
}
],
"orderCompleted": true,
"comment": null
}
Java Developer via @vote
Ситуация. Вы ходили по собеседованиям и получили три оффера. У каждой компании свой плюс: тимлид, зарплата, технологии. Что повлияет на ваш выбор?
anonymous poll
Крутые технологии – 223
👍👍👍👍👍👍👍 44%
Опытный тимлид – 171
👍👍👍👍👍 34%
Высокая зарплата – 113
👍👍👍👍 22%
👥 507 people voted so far.
anonymous poll
Крутые технологии – 223
👍👍👍👍👍👍👍 44%
Опытный тимлид – 171
👍👍👍👍👍 34%
Высокая зарплата – 113
👍👍👍👍 22%
👥 507 people voted so far.
5 принципов хорошего программиста
Два года назад прочитал крутую статью "как повысить продуктивность" [https://habr.com/post/299/]. Я переформулировал её в "5 принципов хорошего программиста", которым стараюсь постоянно следовать. Вот эти принципы:
1. Использовать поиск. Не ищите глазами нужный файл, текст, строку. Пользуйтесь функциями поиска везде, где это возможно.
2. Автоматизировать. Если какое-то действие повторяете больше 10 раз, его стоит автоматизировать.
3. Учить скриптовые языки. Python, Perl, Bash - эти парни облегчают жизнь программистам, если умеешь ими пользоваться.
4. Освоить IDE. IDE или среда разработки - оружие разработчика. А чтобы владеть ею мастерски, изучайте горячие клавиши.
5. Саморазвиваться. Выделять каждый день время на изучение новых технологий. Когда я не развиваюсь, то чувствую, что деградирую.
Хороший программист пишет код за минимальное время, отлично знает свою IDE, развивается и автоматизирует то, что приходится часто повторять.
Два года назад прочитал крутую статью "как повысить продуктивность" [https://habr.com/post/299/]. Я переформулировал её в "5 принципов хорошего программиста", которым стараюсь постоянно следовать. Вот эти принципы:
1. Использовать поиск. Не ищите глазами нужный файл, текст, строку. Пользуйтесь функциями поиска везде, где это возможно.
2. Автоматизировать. Если какое-то действие повторяете больше 10 раз, его стоит автоматизировать.
3. Учить скриптовые языки. Python, Perl, Bash - эти парни облегчают жизнь программистам, если умеешь ими пользоваться.
4. Освоить IDE. IDE или среда разработки - оружие разработчика. А чтобы владеть ею мастерски, изучайте горячие клавиши.
5. Саморазвиваться. Выделять каждый день время на изучение новых технологий. Когда я не развиваюсь, то чувствую, что деградирую.
Хороший программист пишет код за минимальное время, отлично знает свою IDE, развивается и автоматизирует то, что приходится часто повторять.
Code Conventions
Code convetions или соглашения по написанию кода нужны для его читаемости. Любую строчку кода можно написать по-разному. Code conventions приводят проект к единому стилю, который известен каждому программисту. Не должно получиться так, что человек переходя с одного проекта на другой страдал, привыкая к новому стилю написания.
Для каждого языка программирования разработчики используют свои соглашения. На большинстве Java-проекта часто принимают за основу Google Java Style Guide https://google.github.io/styleguide/javaguide.html
IntelliJ IDEA умеет сама поправлять код по Code Style. Для этого используйте комбинацию
Code convetions или соглашения по написанию кода нужны для его читаемости. Любую строчку кода можно написать по-разному. Code conventions приводят проект к единому стилю, который известен каждому программисту. Не должно получиться так, что человек переходя с одного проекта на другой страдал, привыкая к новому стилю написания.
Для каждого языка программирования разработчики используют свои соглашения. На большинстве Java-проекта часто принимают за основу Google Java Style Guide https://google.github.io/styleguide/javaguide.html
IntelliJ IDEA умеет сама поправлять код по Code Style. Для этого используйте комбинацию
CTRL+ALT+L
#CleanCodeТехнический лидер
Есть множество терминов, которые обозначают технического руководителя разработчиков: Team Lead, Tech Lead, Lead Developer. Люди на этих должностях в зависимости от компании выполняют разные обязанности. Технический лидер всё это обобщает.
Технический лидер – это старший товарищ на проекте с большим опытом разработки. Часто он лучше всех знает проект и дольше всех на нём работают.
Чем техлид занимается:
- ведет техническую часть проекта
- принимает технические решения
- ответственен за качество кода, но не за продукт
- ревьюит код
- менторит джунов
- управляет кодом, который пишут участники проекта
Чем не занимается:
- не вмешивается в процесс создания продукта
- не занимается руководством командой
- не отвечает за сам продукт
Есть множество терминов, которые обозначают технического руководителя разработчиков: Team Lead, Tech Lead, Lead Developer. Люди на этих должностях в зависимости от компании выполняют разные обязанности. Технический лидер всё это обобщает.
Технический лидер – это старший товарищ на проекте с большим опытом разработки. Часто он лучше всех знает проект и дольше всех на нём работают.
Чем техлид занимается:
- ведет техническую часть проекта
- принимает технические решения
- ответственен за качество кода, но не за продукт
- ревьюит код
- менторит джунов
- управляет кодом, который пишут участники проекта
Чем не занимается:
- не вмешивается в процесс создания продукта
- не занимается руководством командой
- не отвечает за сам продукт
Олег Мохов @olegmokhov (руководитель службы разработки интерфейсов Яндекса) писал в своём канале о частой ошибке в компаниях – назначении техлида руководителем. Он называет её «убийство разработчика».
Многие считают это логичным продолжением карьеры: разработчик –> старший разработчик –> техлид -> руководитель. Техлид не занимается руководством командой. Многие техлиды не хотят руководить, им нравится писать код и они эффективны именно в этом, но будут не эффективны как руководители или могут вообще уволиться через полгода, после «долгожданного повышения».
Многие считают это логичным продолжением карьеры: разработчик –> старший разработчик –> техлид -> руководитель. Техлид не занимается руководством командой. Многие техлиды не хотят руководить, им нравится писать код и они эффективны именно в этом, но будут не эффективны как руководители или могут вообще уволиться через полгода, после «долгожданного повышения».
Сегодня буду выкладывать задания из тестирования на OCA. OCA - Oracle Certified Associate.
Ответ — false. В классе Name не переопределен метод hashCode. Соответственно не соблюдён контракт для equals и hashCode, который необходим для нормальной работы HashSet.
Про hashCode и equals подробно на примерах написано тут: https://habr.com/post/168195/
Про hashCode и equals подробно на примерах написано тут: https://habr.com/post/168195/
Контракт equals и hashCode
1. Если объекты равны, то их хэшкоды тоже должны быть равны
2. Если хэшкоды равны, то объекты не обязательно равны
1. Если объекты равны, то их хэшкоды тоже должны быть равны
2. Если хэшкоды равны, то объекты не обязательно равны
Java Developer
Что произойдёт после старта приложения?
На 4 строчке будет брошено исключение
NullPointerException
, блок catch
не обработает данное исключение, выполнение перейдёт в блок finally
. В итоге на экране будет написано c
, иключение пробросится выше и программа завершит выполнение, выведя стэк трейс с NullPointerException
.Какие из перечисленных переменных являются ссылочными?
int[] ints;
long[] longs;
String[] strings;
Object[] objects;