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

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

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

Мы на бирже: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Какой результат выведет следующая программа?
👍16
Какой результат выведет следующая программа?
Anonymous Quiz
34%
Hello world!
36%
Ошибку при выполнении
29%
Ошибку компиляции
👍18🤔4😢2
Какие есть scope Spring Beans?

Scope бинов - области видимости бинов. Spring включает в себя шесть областей видимости:

Singleton - область видимости установленная по умолчанию, в случае если не установлен никакая другая видимость. Работает как любой паттерн проектирования Singleton.

Prototype - означает что каждый раз при обращении к контейнеру будет возвращен разные объекты.

Request - создает бин для одного HTTP запроса.

Session - аналогичен Request, но работает на уровне сессии.

Application - жизненный цикл ServletContext.

Websocket - создает бин для сессии веб-сокета
👍18🔥1
Какой результат выведет следующая программа?
👍12
Какой результат выведет следующая программа?
Anonymous Quiz
20%
A got caught B got caught
25%
B got caught
27%
A got caught
28%
Ошибку компиляции
👍18😢12🍌2
У вас несколько бинов реализующих один интерфейс. Какой из них будет внедрятся?

Для правильного внедрения зависимостей существуют несколько способов и подходов. Самый первый из них - аннотация @Primary означает что данный бин будет внедряться по умолчанию. Так же существует аннотация @Qualifier - позволяет указать имя бина который необходим в данном месте. Так же мы можем внедрять list/map бинов. При указании имен для всех бинов-наследников одного интерфейса мы можем внедрить map где ключом будет имя бина, а значением сам бин. При внедрении list мы получим список всех бинов.
❤‍🔥7👍2
Как объявить сервис в Spring? Назовите все способы которые знаете

Сервис в Spring - часть бизнес логики, но на самом абстрактном уровне для самого Spring все бины мало чем отличаются - каждый из них это, в первую очередь, это @Bean который можно объявить в классе конфигураций. Далее мы можем объявить наш класс как @Component. Используя аннотации мы можем объявить наш класс @Service что "облегчит" работу Spring при инициализации бина(все бины инициализируются в очередности от тех кто не требует ни каких внедрений и до тех кто "не может жить" без зависимостей. Сервисные слои инициализируются "посередине" и мы даем явно понять Spring когда создавать этот бин). Кроме того мы можем объявлять бины используя xml конфигурацию Spring.
👍23
Яндекс это же сайт, что я там буду делать?

Разговор с тимлидом команды Serverless Yandex Cloud про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков.

Смотрите выпуск на YouTube канале Yandex Cloud ➡️

00:00 Приветствие
01:19 Как держать темп разработки в распределенной команде?
03:29 Про то, как работают виртуальные команды
07:50 Как получается удержать экспертизу в команде?
10:04 Про продуктовые исследования
15:04 Про работу с сообществом и custdev
19:23 Про фичеборд и голосование
23:35 Продукт для разработчиков
24:24 Про вклад стажёров в развитие продукта
28:18 "Яндекс это же сайт, что я там буду делать?" путь Андрея в Яндексе
30:45 Топ-качества разработчиков команды Serverless
35:02 Про плов и то, что объединяет
👍8🔥1
Что делает этот код?
👍13
Какой класс в Spring отвечает за анализ входящих http-запросов и их направления в определенный контроллер?

В Spring за "разведение" http-запросов по соответствующим контейнерам отвечает класс DispatcherServlet. После получения запроса DispatcherServlet обращается к интерфейсу HandlerMapping, который и рассказывает DispatcherServlet какой именно котроллер отвечает за этот запрос. После обращения к контреллеру DispatcherServlet, получивший имя представления(View), обращается к ViewResolver для получения View по его имени. После создания View DispatcherServlet отправляет данные Модели в View который и отобразится в браузере.
👍39
Как исправить этот код, чтобы он вывел "I Love Programming Tests" корректно?
👍101
Что такое Spring Security? В чем разница между авторизацией и аутентификацией?

Spring Security - часть Spring Framework представляющий механизмы для контроля за авторизацией пользователей. Для управления Spring Security необходимо создать конфигурационный класс-наследник WebSecurityAdapter.

Аутентификация - процедура проверки подлинности, например проверка подлинности пользователя путем сравнения введенного им пароля с паролем, сохраненным в базе данных

Авторизация - предоставление определенному лицу или группе лиц прав на выполнение определенных действий.
👍23🥱1
Дайте определение понятию “процесс”

Процесс — это совокупность кода и данных, разделяющих общее виртуальное адресное пространство. Процессы изолированы друг от друга, поэтому прямой доступ к памяти чужого процесса невозможен (взаимодействие между процессами осуществляется с помощью специальных средств). Для каждого процесса ОС создает так называемое «виртуальное адресное пространство», к которому процесс имеет прямой доступ. Это пространство принадлежит процессу, содержит только его данные и находится в полном его распоряжении. Операционная система же отвечает за то, как виртуальное пространство процесса проецируется на физическую память.
👍10
Расскажите про прокси и про @Transactional. Как работает и зачем? Какие могут быть проблемы? Можно ли навесить @Transactional на приватный метод? А если вызывать метод с @Transactional внутри другого метода с @Transactional одного класса - будет работать?

Допустим, что наш сервис MyServiceImpl имеет 2 публичных метода, аннотированных @Transactional — method1 и method2(он с Propagation.REQUIRES_NEW). В method1 вызываем method2.

В связи с тем, что для поддержки транзакций через аннотации используется Spring AOP, в момент вызова method1() на самом деле вызывается метод прокси объекта. Создается новая транзакция и далее происходит вызов method1() класса MyServiceImpl. А когда из method1() вызовем method2(), обращения к прокси нет, вызывается уже сразу метод нашего класса и, соответственно, никаких новых транзакций создаваться не будет.
👍16🔥3
Где у обычного (НЕ Boot) Spring-приложения main-класс?

Старое доброе обычное Spring-приложение деплоится в контейнер сервлетов (или сервер приложений), где и расположен main-класс. При этом оно собирается в war-архив. Когда war-файл разворачивается в контейнере, контейнер обычно распаковывает его для доступа к файлам, а затем запускает приложение. Spring Boot приложение также можно собрать как war и задеплоить его таким же образом.
👍20
Дайте определение понятию “синхронизация потоков”.

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

Java поддерживает несколько потоков для выполнения. Это может привести к тому, что два или более потока получат доступ к одному и тому же полю или объекту. Синхронизация — это процесс, который позволяет выполнять все параллельные потоки в программе синхронно. Синхронизация позволяет избежать ошибок согласованности памяти, вызванных непоследовательным доступом к общей памяти.
Когда метод объявлен как синхронизированный — нить держит монитор для объекта, метод которого исполняется. Если другой поток выполняет синхронизированный метод, ваш поток заблокируется до тех пор, пока другой поток не отпустит монитор.
Синхронизация достигается в Java использованием зарезервированного слова synchronized. Вы можете использовать его в своих классах определяя синхронизированные методы или блоки. Вы не сможете использовать synchronized в переменных или атрибутах в определении класса.
👍15
Что выведет следующий код?
👍16🤔7😢1
Какие есть кэши в Hibernate и какие работают по умолчанию?

3 уровня кеширования:

• Кеш первого уровня (First-level cache). По умолчанию включен.
• Кеш второго уровня (Second-level cache). По умолчанию отключен.
• Кеш запросов (Query cache). По умолчанию отключен.
👍21