Gh0st dev | Всякое про IT – Telegram
Gh0st dev | Всякое про IT
97 subscribers
53 photos
22 links
Тут полезные материалы, советы и мемы про айтишечку и всякое около нее
___
by @dsvtlg
Download Telegram
🆘Объяснение вчерашних вопросов 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
Итоги того самого собеседования подъехали кстати
🔥7
🔥 Их боялись даже синьоры...

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

Я тоже проводил такие собеседования с кандидатами, и заметил, что даже опытные программисты, претендующие на должности senior, tech lead или team lead, часто не могут справиться с алгоритмическими задачами.

С другой стороны, студенты и стажеры часто успешно проходили этот этап и получали оценку Middle или Middle+.

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

Если хотите потренироваться — вот задача, которая есть в открытом доступе leetcode и которую я встречал на реальном алгоритмическом собеседовании.


Дан массив nums содержащий n различные чисел в диапазоне от 0 до n. Нужно вернуть единственное число из этого диапазаона, которое отсутствует в массиве

Примеры:
Input: [3, 0, 1]
Output: 4

Input: [0, 1]
Output: 2

Input: [9, 6, 4, 2, 3, 5, 7, 0, 1]
Output: 8



➡️Попробовать решить можно - здесь

⚠️Усложнение:
если решил задачу с помощью сортировки массива - решить без сортировки массива
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Java понятный язык - говорили они
В программировании все логично - утверждали они
🤯1😱1
На выходных немного исчез, а сейчас вовзращаюсь с двумя фактами и одним опросом

🧳 Факт 1: В эти выходные уже второй раз сходил на занятие по яхтенному спорту, теперь знаю много новых слов.
Если вдруг вам зачем то нужны малоизвестные слова, вот несколько - стаксель, галс, оверштаг.

Фотка прилагается

💻 Факт 2: Сделал нормальный сайт вместо notion, вывод - конструкторы сайтов круто

Сам сайт вот - dsvdev.com
Заходите, смотрите, записывайтесь)

Ну и опрос
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
В универе говорили, что настоящий программист может писать код на листочке

Штош
3
🤔 Рубрика "Неочевидная Java"

🖼️ Тема - Java Core

Сегодня простой и достаточно популярный вопрос на собеседованиях:

Что выведет этот код?
Please open Telegram to view this post
VIEW IN TELEGRAM
Отвечай в опросе
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
Объяснение предыдущего вопроса

Для начала стоит отметить, что оператор == корректно работает только с примитивными типами данных. Например, такой код выведет true:


int a = 200;
int b = 200;
System.out.println(a == b);
//true


Когда мы сравниваем объекты класса Integer с помощью оператора ==, мы фактически сравниваем не их значения, а адреса в памяти, по которым они хранятся. Это означает, что оператор == вернёт true только тогда, когда мы сравниваем один и тот же объект с самим собой.

Именно поэтому такой код напечатает false


Integer a = 200;
Integer b = 200;
System.out.println(a == b);
//false

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

Это связано с особенностями реализации класса Integer.

Когда мы создаём новый объект с помощью автоупаковки (autoboxing), используя примитивное значение, например 100 или 200, и если это значение находится в пределах от -128 до 127 (по умолчанию), то фактически мы не создаём новый объект, а получаем ссылку на уже существующий. Это позволяет экономить память, так как нет необходимости создавать множество одинаковых объектов.

Таким образом, оба объекта со значением 100 являются одним и тем же объектом, поэтому код ниже выведет true.


Integer a = 100;
Integer b = 100;
System.out.println(a == b);
//true


Чтобы изменить это поведение, можно создавать объект Integer с помощью оператора new, например, так:


Integer a = new Integer(100);
Integer b = new Integer(100);
System.out.println(a == b);
//false


Такой код напечатает false
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2🤔1🤯1