📓 Книги по Java
870 subscribers
340 photos
27 videos
5 files
835 links
📓 Книги по Java

Самый крутой канал c подборкой книг, статей, но и как без рекламы все в одном месте
По ворпосам размещения @qa_autom
Download Telegram
Как Junior разработчику найти свою первую работу?

Легко! Ребята из codereview помогают джунам с трудоустройством👇

1. Разработают стратегию поиска, расскажут где искать, на какие вакансии откликаться и сколько откликов делать

2. Составят тебе крутое резюме и помогут с оформлением LInkedIn и Github, чтобы ты начал получать приглашения на собеседования

3. Каждую неделю будут проводить с тобой Mock Interview: технические и поведенческие интервью + помогут с самопрезентацией

4. Будут сами помогать тебе с поиском вакансий и организовывать собеседования в компании партнеры

5. В течение полугода будут сопровождать тебя, пока ты не получишь оффер

🔥 Самое крутое - основную часть можно оплатить после трудоустройства с первой зп!

🚀 За год они трудоустроили более 150 разработчиков, со средней зарплатой 120 тыс., которые сейчас работают в Сбере, OZON, VK, Яндекс и других IT компаниях👨🏼‍💻

👉 Оставляй заявку на бесплатную консультацию с нашим HR или Senior разработчиком

✌️Let’s go искать работу вместе!
#Вопросы_с_собеседования

Какой оператор позволяет принудительно выбросить исключение?

Это оператор throw.
Чистый код Java: как его написать? Лучшие практики от экспертов

азработка программного обеспечения — сложное ремесло.

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

Разработчики должны выяснить, какой подход будет работать лучше всего и как писать качественный чистый код.

В этой статье мы сосредоточимся на написании чистого кода на Java. Почему так важно писать легко читаемый код? Каковы лучшие практики разработки кода на Java? Продолжайте читать, чтобы узнать!

https://stratoflow.com/java-clean-code/
Get Programming with Scala

Автор:
Daniela Sfregola
Год издания: 2021

#scala #java #english

Скачать книгу
This media is not supported in your browser
VIEW IN TELEGRAM
Тут вакансия для Java-разработчиков от подписчиков — ребят из Финтеха Яндекса. Обещает давать интересные задачи, уважать и баловать. Стоит присмотреться 👀

Работать нужно с сервисами, которые уже заслужили доверие миллионов и продолжают активно развиваться. Java-разработчик будет заниматься продуктовым движком, бизнес-логикой и инфраструктурой. Для этого пригодятся знания Kotlin, Spring Boot, Kubernetes, Grafana + Prometheus, YDB, PostgreSQL, ClickHouse и Kafka.

Финтех Яндекса — молодой сервис, где не любят бюрократию и сложные процессы. Здесь легко придумывать новое, менять готовое, да хоть сразу предлагать идеи CEO (если получится его поймать). Работать можно и из дома, и из офиса в Москве или Белграде.

Всяческие корпоративные блага прилагаются. Подробности на сайте, и там же можно ответить на один вопрос — и сразу попасть в Телеграм с рекрутёром
Работа с ошибками

Отлов багов – это, возможно, самая трудоемкая составляющая процесса разработки на Java. Трассировка стека позволяет отследить, в каком именно месте проекта было выброшено исключение.
Java developer (middle)
#удаленка
ЗП: 150 000 ₽
Компания: DreamSoft

Обязанности:
● Проектирование и разработка интерфейсов приложений/ключевых технологических и прикладных микросервисов платформы
● Внедрение новой функциональности
● Написание unit и интеграционных тестов
● Оптимизация скорости работы приложений
● Участие в разработке концепций, архитектурных решений и подходов
● Участие в развитии CI/CD процессов
● Проведение Code Review

Требования:
● Опыт разработки приложений на Java от 5+ лет
● Опыт разработки Enterprise-решений с использованием Spring framework / Spring Boot / Spring WebFlux
● Опыт использования брокера сообщений Kafka
● Опыт использования PostgreSQL
● Опыт использования NoSQL решений Redis, Elastic
● Опыт работы с k8s / OpenShift / Nomad / Docker Swarm или другими схожими технологиями
● Опыт использования Docker или других контейнеров
● Опыт работы с git
Kotlin заходит в Telegram!

Рассказываем про Kotlin — молодой язык родом из Питера, который вовсю теснит Java в мобильной и бэкенд-разработке.

Его официально поддерживает Google, используют Jira и Adobe, а разработчики топовых приложений для Android переписывают на Kotlin свои продукты. Советуем подписаться, чтобы узнавать больше!
👩‍💻 GraphQL в Spring Boot и проблема N + 1

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

Относительно недавно в Spring Boot появился компонент для работы c GraphQL и мы сделаем проект на его основе. Для удобства отладки также подключим отладочный веб-интерфейс graphiql.

Ещё
рассмотрим проблему N+1, когда для каждого элемента результирующего списка выполняется дополнительный запрос.
Производительность различных типов индексов в БД

Знаете ли вы, что композитные (многоколоночные) индексы работают в 10 раз быстрее чем комбинированные индексы? 😳

А знаете ли вы, почему при этом в Postgres выигрыш больше, чем в MySQL?

Если ваши ответы отрицательные, то предложенная сегодня восполнит эти пробелы.

Приятного чтения!

Читать статью
#статья

Топ 5 проектов на Java для начинающих!

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

Специально для вас собрали 5 идей проектов на Java!


Ещё больше интересных статей и полезной информации вы можете читать на нашем Яндекс Дзен канале!
😎Сегодня на рынке труда знание Clojure — навык редкий, но высокооплачиваемый. Хотите расширить свой арсенал навыков? OTUS подготовил для вас продвинутый онлайн-курс «Clojure Developer». За 5 месяцев обучения вы научитесь писать код на Clojure, а в конце вас ждет выпускной проект — создание программы с помощью Clojure для вашего портфолио.

👉Пройдите вступительный тест из 20 вопросов и займите место в группе по спеццене!

🎫Возможна оплата курса в рассрочку

Хотите протестировать учебный процесс заранее? Регистрируйтесь на бесплатные вебинары курса:

«Интерактивная разработка на языке Clojure»: https://otus.pw/pHRx/

«Разработка скриптов на Clojure»: https://otus.pw/Cfcj/

«Пишем игру «Game Of Life» на Clojure»: https://otus.pw/MZ8J/
Можно ли добавить одному элементу несколько одинаковых аннотаций?

По умолчанию нельзя. До Java 8 нужно было создавать дополнительную аннотацию-контейнер, в ней в виде проперти объявлять массив интересующих аннотаций. При применении набор аннотаций нужно было оборачивать в этот контейнер (см. на картинке).

Начиная с Java 8 в стандартную библиотеку добавлена мета-аннотация
@Repeatable.
Механизм ее действия такой же, как раньше: помечая ей интересующую аннотацию, необходимо указать параметром
@Repeatable аннотацию-контейнер. Нововведение заключается в синтаксисе использования: теперь набор аннотаций оборачивается в контейнер неявно.

Со стороны Reflection при чтении мета-информации тоже появилась возможность не оперировать контейнером явно – метод getAnnotationsByType при необходимости найдет и развернет этот контейнер.
Стойте! Если хотите шарить, или уже шарите в Java или Kotlin, то эти каналы однозначно для вас!

После их прочтения вы 100%
повысите свой уровень в несколько раз! Админ каналов Senior-разработчик, а значит ему можно доверять своё обучение:

1. Java Библиотека — Книги, статьи, фичи и советы. Сборная солянка для прогеров.

2. Kotlin Developer - самый топовый канал для котлин разработчика!

3. Книги для Java Программистов — Название говорит само за себя. Лучшие платные и бесплатные книги собраны в одном месте!

4. Java Guru — Хотите пройти собеседование и рубить по 300.000₽ в месяц? Всё возможно, но для этого надо прорешать не одну сотню задач и тестов — на этом канале как раз всё собрано.

5. Java News — А этот канал ежедневно вводит в курс дела и новостей любимого ЯП!

Подписывайтесь на все 5 каналов и станьте мега-программистом!
Просто ли стать Java-разработчиком? Нет. Всем ли подойдет IT? Тоже нет. Стоит ли попробовать? Да.

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

На этом построен процесс обучения на Хекслете. На профессии «Java-разработчик» вас ждет не только теория, но и много практики:

✔️ Сотни упражнений в браузере.
✔️ 5 проектов для портфолио на GitHub.
✔️ 150 тестовых заданий от наших партнёров.
✔️ Вебинары, сессии лайвкодинга с наставником 1-2 раза в неделю.

Сделайте шаг к карьере IT-специалиста уже сегодня! Переходите по ссылке выше и начните обучение!

🎁 Пройдите первые 10 бесплатных уроков из профессии и получите дополнительно скидку 10% на курс!
Перечислите принципы, которым вы следуете в многопоточном программировании?

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

• Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача. OrderProcessor, QuoteProcessor или TradeProcessor намного информативнее, чем Thread1, Thread2 и Thread3. Имя должно отражать задачу, выполняемую данным потоком.
• Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
• Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
• Помните об обработке исключений. Выброшенные InterruptedException должны быть адекватно обработаны, а не просто подавлены. Так же не стоит пренебрегать Thread.UncaughtExceptionHandler. При использовании пула потоков необходимо помнить, что он зачастую просто «проглатывает» исключения. Так, если вы отправили на выполнение Runnable нужно обязательно поместить код выполнения задачи внутрь блока try-catch. Если в очередь пула помещается Callable, необходимо удостоверится, что результат выполнения всегда изымается помощью блокирующего get(), чтобы в случае возникновения существовала возможнотсь заново выбросить произошедшее исключение.
• Между синхронизаторами и wait() и notify() следует выбирать синхронизаторы. Во-первых, синхронизаторы, типа CountDownLatch, Semaphore, CyclicBarrier или Exchanger упрощают написание кода. Очень сложно реализовывать комплексный управляющий поток, используя wait() и notify(). Во-вторых, эти классы написаны и поддерживаются настоящими мастерами своего дела и есть шанс, что в последующих версиях JDK они будут оптимизированы изнутри или заменены более производительной внешней реализацией.
• Почти всегда использование Concurrent сollection выгоднее использования Synchronized сollection, т.к. первые более современны (используют все доступные на момент их написания новшества языка) и масштабируемы, чем их синхронизированые аналоги.
#Вопросы_с_собеседования

🎙️ В чем различия между массивами и ArrayList в Java?

Ответ на картинке.
Почему не рекомендуется использовать метод Thread.stop()?

При принудительной остановке (приостановке) потока, stop() прерывает поток в недетерменированном месте выполнения, в результате становится совершенно непонятно, что делать с принадлежащими ему ресурсами. Поток может открыть сетевое соединение - что в таком случае делать с данными, которые еще не вычитаны? Где гарантия, что после дальнейшего запуска потока (в случае приостановки) он сможет их дочитать? Если поток блокировал разделяемый ресурс, то как снять эту блокировку и не переведёт ли принудительное снятие к нарушению консистентности системы? То же самое можно расширить и на случай соединения с базой данных: если поток остановят посередине транзакции, то кто ее будет закрывать? Кто и как будет разблокировать ресурсы?

👉@BookJava
🔔 Погрузитесь в тестирование с первого занятия на курсе “Автоматизация тестирования на Java”

Тема открытого занятия курса: «Разрабатываем первый автотест Java/Selenide» вместе с ребятами из школы автоматизации тестирования QA.GURU

🗓 Когда?
23-го марта в 20:00 МСК.

Что будет на занятии?
▫️Для новичков:
— Разработаем ваш первый автотест на поиск в Google
—Расскажем о рынке QA. Кто, кому, за что и сколько платит?
— Все участники получат домашнее задание, а мы проверим его.
▫️Для опытных:
— Расскажем про актуальный фреймворк на Java
— Покажем боевой проект с полной инфраструктурой (Web, API)
— Сессия вопросов и ответов с QA Lead

➡️ Занятие бесплатное — для участия вступайте в чат @qa_guru_chat или регистрируйтесь на сайте - https://clck.ru/33nYPR

qa.guru
Школа инженеров по автоматизации тестирования
Media is too big
VIEW IN TELEGRAM
Рисуем звук. Почувствуй себя нейросетью. Java, Guice

Сегодня java, guice и другие - помогут нам записать звук в представление чуть более непонятное чем эквалайзер (по крайней мере для меня). Вы при желании можете записать что-то другое.

00:00 Demo
01:34 Under the hood
02:44 Quickstart Archetype
04:28 BytesFetcher interface
05:32 AudioBytesFetcher
15:00 ImageDrawService
27:44 Guice module
28:51 App
34:40 Start
35:36 Success
36:23 Result

GitHub

источник

👉@BookJava