Java Guru 🤓
13.2K subscribers
884 photos
16 videos
748 links
Канал с вопросами и задачами с собеседований!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrSQZ

Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Стартануть в IT быстро и эффективно — подготовительный курс по Java-разработке.

Начинаем уже 7 ноября!

Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком.
Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником.

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

Запишитесь прямо сейчас!

Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8JzmLB
👍8
Что такое fail-fast и fail-safe итераторы?

Это не какие-то отдельные типы, а характеристики разных реализаций интерфейса Iterator. Они определяют, как поведет себя итератор при изменении перебираемой последовательности.

Fail-fast – «быстрый» итератор. Когда после его создания коллекция как-либо изменилась, он падает с ошибкой без лишних разбирательств. Так работает итератор класса ArrayList, при изменении он выбрасывает ConcurrentModificationException. Рекомендуется не основывать логику программы на fail-fast отказах, и использовать их только как признак ошибки реализации.

Fail-safe – «умный» итератор. Обычно плата за отказоустойчивость – возможная неконсистентность данных («слабая консистентность»). Итератор класса ConcurrentHashMap работает с копией данных, он не выбросит исключение при изменении коллекции, но может не увидеть часть свежих изменений. Плата за отсутствие ошибок других fail-safe итераторов может отличаться, детали всегда можно найти в документации коллекций.
👍16🔥4
Рабочий код != правильный код.
А вы точно пишите код правильно?

Школа программирования YKul приглашает пройти эффективное обучение Java, основанное на менторстве.

🎓Стать нашим студентом можно с любым уровнем подготовки!

💰Не нужно оплачивать весь курс сразу. При необходимости вы сможете сделать перерыв и не потерять деньги 😉

На обучении в школе YKul – все будет как на настоящей работе, только с поддержкой ментора - действующего разработчика.

Вы получите:

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

Хотите проверить подходит ли вам формат обучения

➡️Запишитесь на курс: https://clck.ru/36LGuR

Первые 7 дней – бесплатно❗️

Наша глобальная цель – увеличить число компетентных программистов.

Присоединяйтесь!

Реклама: ИП Кулагин Андрей Николаевич, ИНН: 740411652688
👍9🔥52
Также у нас есть группа Вконтакте https://vk.com/javatutorial в ней мы выкладываем видео, статьи, вакансии и книги. Не забудь подписаться 😉
👍6🔥2
Какие существуют примитивы?

В Java имеется 9 возможных типов значения переменной: ссылка на объект или один из восьми примитивных типов:
🔘 byte – знаковое целое число от -2^7 до 2^7-1;
🔘 short – знаковое целое число от -2^15 до 2^15-1;
🔘 int – знаковое целое число от -2^31 до 2^31-1;
🔘 long – знаковое целое число от -2^63 до 2^63-1;
🔘 float – знаковое число с плавающей точкой 32 бита стандарта IEEE 754;
🔘 double – то же, что и float, но 64 бита;
🔘 char – 16-битный символ Unicode, от '\u0000'(0) до '\uffff'(65535);
🔘 boolean – true или false;

По умолчанию поля примитивных типов принимают нулевые значения: 0, 0L, '\u0000', false. Про особенности работы, способ хранения и специальные значения чисел с плавающей точкой стоит почитать подробнее.

Отдельная интересная тема – boxing/unboxing. Каждый примитивный тип снабжен своей ссылочной версией. Примитивное значение заворачивается и разворачивается из него автоматически при необходимости. Это может приводить к большим затратам на выделение памяти, когда например int индекс цикла используется в качестве значения переменной Object и превращается в Integer без нужды – частая задача на собеседованиях. Еще классы-обертки содержат набор утилитарных методов для их примитивов.

Сколько памяти занимает примитив – вопрос с подвохом. Спецификация требует, чтобы размер был достаточным для всех значений. Конкретный размер определяется реализацией JVM, он может быть больше. Например в 64-bit HotSpot переменная boolean занимает не 1 бит, а 8.
👍19🔥5
💻 Профессия «Java-разработчик»

Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.

Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT. 

COSMO чёрная пятница: успейте получить скидку до 120 000р.

Расширяем горизонты Вселенной - добавим +6 месяцев сопровождения наставника и карьерного консультанта после завершения обучения.

Другого такого предложения в этой Вселенной вы не найдете!

Переходите по ссылке, выбирайте скидку и забирайте подарки🎁

Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670. erid: LjN8JwMmz
👍6🔥1
Какой результат выведет следующая программа?
👍15🔥2🎉2
👍18🔥52
⚡️ Как написать REST-клиента на Spring?

Узнаете на бесплатном открытом уроке «Разработка REST-клиентов на Spring» от OTUS.

На эфире рассмотрим Rest Template и WebClient, SOAP-сервисы и SOAP-клиентов на Spring.

📢📢 Занятие пройдёт 14 ноября в 20:00 мск и будет приурочено к старту курса «Разработчик на Spring Framework».

🎫 После урока вы сможете приобрести полный курс в рассрочку.

Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени.

➡️ Регистрируйтесь на мероприятия прямо сейчас: https://otus.pw/wbB6/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Что такое static?

Ключевое слово static используется для объявления вложенных классов, статических методов, полей, блоков инициализации и статических импортов.

Статические поля и методы – члены класса а не экземпляра, потому к ним можно обращаться через имя класса. Код статического блока или метода имеет доступ только к статическим членам. Статические поля не участвуют в сериализации.

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

Статический блок инициализации выполняется потокобезопасно, один раз сразу после загрузки класса класслоадером. Инициализаторы статических полей выполняются в неявном статическом блоке. Блоков может быть несколько, выполнятся они в порядке объявления.

Статический импорт (static import) импортирует статические члены классов в .java-файл.
👍21🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Бэкенд-команды Яндекса отправляются в тур по городам России

С 13 по 17 ноября ребята из наших команд проведут встречи в Москве, Нижнем Новгороде, Екатеринбурге, Новосибирске и Санкт-Петербурге. Мы хотим рассказать местным разработчикам о себе: как устроены наши сервисы, что за технологии мы используем, почему гордимся тем, что делаем. Участвуют представители 14 разных сервисов Яндекса. После официальной части вместе отдохнём: послушаем стендап Севы Ловкачева и поболтаем о жизни в неофициальной обстановке.

Кроме этого, мы устроим онлайн-трансляцию встречи из Москвы — вы сможете подключиться и пообщаться с нашими разработчиками из любого города России.

Вот расписание встреч:

🔸 13 ноября онлайн-трансляция

🔸 13 ноября офлайн-встреча в Москве

🔸 14 ноября офлайн-встреча в Нижнем Новгороде

🔸 15 ноября офлайн-встреча в Екатеринбурге

🔸 16 ноября офлайн-встреча в Новосибирске

🔸 17 ноября офлайн-встреча в Санкт-Петербурге

А с 20 по 26 ноября мы проведём Week Offer Backend: предложим всего за одну неделю получить офер в одну из 14 участвующих команд. Приглашаем кандидатов с опытом разработки от трёх лет на одном из этих языков программирования: С++, С#, Python, Java, Go и Scala. Принимаем заявки до 19 ноября.

Узнать подробности и зарегистрироваться можно здесь.

Реклама. ООО "Яндекс". erid: 2VtzqwfRiE2
👍9🤣3🍌3🔥1
В чем разница между разными модификаторами доступа?

🔘 private – доступ только непосредственно из этого класса и его внутренних/вложенных классов;
🔘 package-private – доступ из всех классов этого пакета. Наследники доступа не имеют. Применяется когда модификатор не указан;
🔘 protected – доступ из всех классов этого пакета и всех наследников;
🔘 public – никаких ограничений доступа;

Модификаторы доступа применяются к классам, интерфейсам, методам и полям. Они нужны для реализации принципа наименьших привилегий и для отделения внутренней реализации от частей публичного API.
👍19🔥41😁1
🌟 Открываем двери в мир Scala-разработки! 🚀

Присоединяйтесь к бесплатному онлайн-занятию «Применение механизма implicits в Scala» от OTUS: регистрация

В рамках вебинара:
— Познакомимся с историей возникновения и мотивацией за разными компонентами данного механизма.
— Разберем возможности и опасности которые таят в себе implicit преобразования
— Узнаем, как использовать и для чего служат implicit параметры
— Рассмотрим правила, по которым Scala ищет подходящего implicit кандидата и какие требования к нему предъявляются.

Вебинар подойдет тем, кто имеет первичный опыт работы со Scala и хочет разобраться, как работает механизм implicit.

💼 По завершении урока вы сможете оформить полный курс в беспроцентную рассрочку

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KMAqX
👍5🔥1
Опишите процесс создания экземпляра класса

Сначала класс и цепочка его предков должны быть загружены, сверху вниз. Рассмотрим ClassLoader и процесс загрузки классов в будущих постах. Здесь важно сказать, что класс загружается только один раз, при первом к нему обращении в рамках одного класслоадера.

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

Далее инстанциируется сам экземпляр. Как и с загрузкой классов, процесс выполняется для всей цепочки наследования, с самого дальнего родителя:
1. Выделяется память в куче для экземпляра, получается ссылка на этот экземпляр;
2. Выполняются инициализации нестатических полей и блоков инициализации в порядке объявления;
3. Вызывается конструктор;

Статические поля интерфейсов не инициализируются при создании объекта, а другого состояния интерфейс не имеет – это исключает вопрос порядка инициализации предков при множественном наследовании.

В процессе конструирования объекта может возникать проблема виртуального вызова в конструкторе, свойственная для многих языков.
Effective Java Item 17 рекомендует не использовать переопределяемые методы в расширяемом классе. Иллюстрация неочевидного поведения в результате приведена выше на картинке
👍131
REST, Spring, SQL, ООП — это не что-то на айтишном, а ежедневная рутина, с которой сталкивается любой Java-бэкендер. Если вы ищите фундаментальных знаний и высоких зарплат, то нам по пути.

14 и 16 ноября в 19:00 по Москве в рамках недели Java в школе Smartup пройдут два бесплатных вебинара. Мы собрали 40 лет опыта IT-экспертов и упаковали их в два вечера.

На вебинаре «От заката до рассвета. Один день из жизни разработчика»
- Узнаете больше о буднях разработчика 
- Поймете, что разработчик гораздо больше чем кодер.

На вебинаре «Как пройти путь от первой строчки кода до оффера в международную компанию?»
- Узнаете, как пройти путь от студента до всезнающего разработчика.
- Получите план развития на первый год.

📆 Ближайший вебинар уже 14.11! Регистрируйтесь                                                                                    
Всем участникам дарим чек-лист «Как вырасти от Джуна до Сеньора».➡️   Записаться на вебинары 

Реклама. ООО "СМАРТАП ТЕХНОЛОДЖИ". ИНН 5501278983. erid: LjN8KHQ3t
👍5🔥2
Какой результат выведет следующая программа?
👍8🔥4
Какой результат выведет следующая программа?
Anonymous Quiz
31%
A.print() is called
49%
B.print() is called
4%
Ошибку при выполнении
16%
Ошибку компиляции
👍16🔥5
💪Начал изучать Java?

⚡️ Приходи на бесплатный практический урок «Пишем веб-сервер на Java» от OTUS.

📌 На вебинаре изучим сетевые взаимодействия на Java с помощью сокетов на примере простейшего веб-сервера. Будет теория и практика, вы сможете задать преподавателю-эксперту все возникшие вопросы!

📢📢 Занятие пройдёт 23 ноября в 20:00 мск и будет приурочено к старту курса «Java-разработчик».
Программа обновлена и полностью отвечает современным требованиям рынка.

👉 Для бесплатного участия и получения записи регистрируйтесь прямо сейчас: https://otus.pw/YTC6/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
new Integer(128) == 128?

Для всех классов-оберток над примитивами кроме Float и Double работает механизм кэширования. Некоторые значения создаются на этапе инициализации класса, и переиспользуются когда объект создается не оператором new (например с помощью valueOf).

Кэшируемые значения – оба возможных Boolean, Character до '\u007f' (127) и все целые числа от -128 до 127 включительно. С Java 7 верхнюю границу для Integer можно увеличить параметром java.lang.Integer.IntegerCache.high.

Значения кэшируются и во многих других встроенных классах: BigDecimal, Currency, пустые коллекции. Детали можно узнавать из исходников и документаций, так как эти кэши реализованы не на уровне JVM а в коде классов.

В конкретно этом примере скрыт еще один подвох: объект класса-обертки сравнивается с примитивом. Это приводит к анбоксингу и сравнению значений. И ответ на вопрос – да.
👍22🔥31🍌1
💥 Бросьте вызов скучным рутинным задачам на Java!

🔥🔝 Изучите продвинутые навыки разработки с помощью онлайн-курса «Java Developer. Professional» в OTUS.

Тест по Java от OTUS

6️⃣ За 6 месяцев обучения:
- Научишься создавать современные java-приложения
- Поймешь основы функционирования JVM (сборка мусора, byteCode)
- Освоишь приемы применения многопоточности
- Напишите выпускной проект на любую тему под наставничеством преподавателя

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

В конце обучения вы напишете выпускной проект на любую тему под контролем преподавателя и после обучения сможете претендовать на зарплату от 200 тыс. рублей.

➡️ Не упускайте свой шанс стать профессионалом в Java-разработке!
Проходите тест и записывайтесь в группу!

🎫 Курс можно приобрести в рассрочку

👉 ПРОЙТИ ТЕСТ КУРСА: https://otus.pw/IYdT/

🎁 Черная пятница в OTUS! Успей применить промокод BLACK23 и получить скидку 15% на курс!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2