Gh0st dev | Всякое про IT – Telegram
Gh0st dev | Всякое про IT
97 subscribers
53 photos
22 links
Тут полезные материалы, советы и мемы про айтишечку и всякое около нее
___
by @dsvtlg
Download Telegram
Channel name was changed to «dsvdev | Дмитрий Свиридов про IT»
Настало время оживить это место! Подробности про меня в закрепе, а сейчас расскажу про рубрики, которые будут на канале

#собесы - вопросы и ответы с собеседований
Первый пост из этой рубрики выйдет уже сегодня в 18:00, там поделюсь несколькими вопросами и ответами с собеседования на Senior Java-разработчика, а полная запись собеседования уже на Boosty

В программе Java Core, Spring, микросервисы и обсуждение практического опыта

Подпишись если интересно!
🔥21👏1
🔤🔤🔤🔤🔤🔤

💬 Первый пост из рубрики #собесы

Недавно прошел собес в зеленый банк на позицию Senior Java Developer
Поделюсь несколькими вопросами отуда

👩‍💻 Тема - Java Core

Какое значение будет выведено на экран?

public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
System.out.println(myClass.getValue());
}
}

class MyClass {
private static int value = 1;

static {
value = 2;
}

{
value = 3;
}

public MyClass() {
MyClass.value = 4;
}

public int getValue() {
return value;
}
}


Опрос ниже
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻2🤔1
Что будет выведено в консоль?
Anonymous Quiz
10%
1
8%
2
5%
3
55%
4
23%
Посмотреть результаты
3👨‍💻2
👩‍💻 Тема - Многопоточность

Какой вариант лучше использовать при вызове синхронизированного кода если синхронизировать нужно методы first() и second()

Вариант 1:

synchronized void foo() {
first();
second();
third();
}


Вариант 2:

void foo() {
synchronized (this) {
first();
second();
}
third();
}


Опрос ниже
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻2
👩‍💻 Тема - Базы данных

Какие уровни изоляции транзакций существуют в Spring?


@Transactional(isolation = ???)
public void log(String message){
// ...
}


Опрос ниже
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
Завтра вечером выложу подробный разбор ответов на все три вопроса
Если интересно - подпишись!
🔥3
🆘Объяснение вчерашних вопросов

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

class MyClass {
static {
//1
}

{
//2
}

public MyClass() {
//3
}
}


📌 Все становится немного сложнее, когда классы объединены иерархией наследования

Сначала выполняются все статические блоки инициализации начиная с родительских классов, и только после них, поочередно блоки инициализации и конструкторы также начиная с родительских классов

class MyClass {
static {
//1
}

{
//3
}

public MyClass() {
//4
}
}

class MySecondClass extends MyClass {
static {
//2
}

{
//5
}

public MySecondClass() {
//6
}
}


Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🆘Объяснение вчерашних вопросов 2

Второй вопрос связан с одной из самых сложных тем на собеседованиях, но сам по себе довольно прост

Главное помнить - что синхронизировать нужно только непотокобезопасный код, в нашем случае методы first() и second()

Поэтому выбираем вариант 2
void foo() {
synchronized (this) {
first();
second();
}
third();
}


Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🆘Объяснение вчерашних вопросов 3

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


➡️READ_UNCOMMITED - Одна транзакция может прочитать изменения другой транзакции, которая еще не завершилась (Не закоммитила свои изменения).

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

Такую проблему называют проблемой грязного чтения или DIRTY READ


➡️READ_COMMITED - Одна транзакция может прочитать только примененные (закоммиченные) изменения другой транзакции.

⚠️ Этот уровень изоляции применяется в большинстве баз по умолчанию

При таком уровне изоляции нет угрозы чтения неактуальных данных, но первая транзакция может получить другие данные при повторном чтении, если вторая что-то в них поменяла.

Эту проблема называется неповторяемое чтение или NON-REPEATABLE READ


➡️REPEATABLE_READ - Уровень изоляции, при котором можно избежать предыдущей проблемы.

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

Здесь может возникать проблема фантомного чтения (PHANTOM_READ), когда транзакция, при одинаковых запросах получает разное количество строк таблицы.



➡️SERIALIZABLE - Уровень изоляции, при котором транзакции вообще не запускаются параллельно, а выполняются строго друг за другом.

Это позволяет избежать всех проблем из списка выше, но сильно замедляет работу программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻2
Как настроить Хуёкер?

🍌 Меня, как и всех остальных в России забанили в Docker

При попытке скачать docker-образ вы увидите примерно следующее:
403 Forbidden
Since Docker is a US company, we must comply with US export control regulations. In an effort to comply with these, we now block all IP addresses that are located in Cuba, Iran, North Korea, Republic of Crimea, Sudan, and Syria.

(Ставь лайк если на Кубе или в Иране)

Я полез искать варианты обхода блокировок, потому что каждый раз включать VPN не хотелось, и наткнулся на него
Вашему вниманию - 👩‍💻 ХУЕКЕР!

Во-первых, у него смешное название
Во-вторых он реально работает

Короче - минусов нет

Для тех, кому нужна инструкция по настройке - она ниже



Как начать ползоваться Хуекером:

1. Заходим в Docker Desktop, нажимаем Настройки

2. Выбираем раздел Docker Engine

3. Вставляем в конфигурацию строчку

"registry-mirrors": ["https:\/\/huecker.io"]


4. Жмем Apply & restart

5. Теперь можете всем говорить Докер-Хуёкер
Please open Telegram to view this post
VIEW IN TELEGRAM
👏21🔥1
👩‍💻 Практическая задача c #собесы

🖥 Тема - #SQL

В базе данных существуют две таблицы:

🟢В первой хранятся данные по заказам

 - ord_num - номер заказа
- purch_amt - сумма заказа
- ord_date - дата заказа
- customer_id - ID клиента, совершившего заказ
- salesman_id - ID продавца


🟢Во второй данные о клиентах

 - customer_id - ID клиента
- cust_name - имя клиента
- city - город проживания
- status - статус в программе лояльности


👩‍💻 Задача - написать SQL запрос, с помощью которого можно для всех заказов с суммой от 500 до 2000 вывести:
- Номер заказа
- Сумму заказа
- Имя покупателя
- Город покупателя

Ответ выложил в комменты
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻2👾1
Это я вчера первое видео на канал снимал, сейчас монтируется уже
🔥6👨‍💻2🙈1