Gh0st dev | Всякое про IT – Telegram
Gh0st dev | Всякое про IT
97 subscribers
53 photos
22 links
Тут полезные материалы, советы и мемы про айтишечку и всякое около нее
___
by @dsvtlg
Download Telegram
👩‍💻 Практическая задача 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
👩‍💻 Java vs Kotlin 👩‍💻

Последнее время в описании стека многих вакансий на Java можно встретить Kotlin.
Это относительно новый язык, который появился только в 2011 году, а используется чаще всего для разработки под android.
Иногда опыт работы с ним пишут в пожеланиях к кандидату или даже в требованиях вакансии.

По моим ощущениям, Kotlin упоминается примерно в 20-25% всех Java вакансий.


💻 Причём тут Java?

Kotlin — язык, который, как и Java, компилируется в bytecode JVM, а еще он полностью совместим с Java. Это значит, что внутри одного проекта можно совмещать код на Java и на Kotlin.

Поэтому некоторые компании и команды начинают переносить на него часть своих бэкенд-сервисов.

Например у меня в команде новые проекты пишут целиком на Kotlin, а в уже существующих на нем реализуют Unit и интергационные тесты.

В эту пятницу на внутренней IT-конференции в Тинькофф-Банке рассказал, чем удобен Kotlin, и показал на примере, как можно часть классов в Java-проекте перенести на Kotlin за пару минут.

Запись выложил на YouTube-канал — найти можно по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Твоя язык программирования не важен!

На прошлой неделе написала HR из «Авито» с предложением пройти собеседование на Golang-разработчика.

Я ответил, что этот язык почти не знаю, а мой стек — Java/Kotlin.

На это мне сказали, что им не важно, на каком языке я пишу, главное — общие знания по бэкенд-разработке и инженерное мышление.

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

Вчера состоялся первый этап собеседования, сегодня HR написала, что я его успешно прошел и можно планировать следующий.

На первом этапе пообщались про работу сетей, какие есть протоколы, в каких случаях лучше применять TCP, а в каких UDP, зачем нужен HTTPS, какие бывают виды HTTP и из чего состоят запросы.

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

Интересный был опыт, впереди еще 2–3 этапа, посмотрим, как пойдет.

Хотите разбор некоторых общих вопросов, не связанных напрямую с Java, которые могут спросить на любом собеседовании разработчика?

👍 - да
🤔- нет
👍11🤔1
Понял, выкладываю 🫡
Методы HTTP запросов

#собесы

🖥 Тема - #сети

Какие методы HTTP запросов существуют?

Начнем с основных запросов, которых чаще всего хватит для ответа на собеседовании

GET: Запрашивает данные с сервера. Запросы с использованием этого метода должны только извлекать данные.
Примеры: Получение поста, получение комментариев к посту, получение количества лайков.



POST: Используется для создание новых данные в сервисе.
Примеры: Написание нового комментария, регистрация пользорвателя и т.д



PUT: Заменяет все текущие данные данными из запроса. Обычно используется для обновления существующих данных.

PATCH: Используется для частичного обновления данных. В отличие от PUT, который заменяет все данные, PATCH изменяет только указанные поля.
Примеры: Редактирование поста, редактирование комментария, обновление информации профиля.



DELETE: Удаляет указанный ресурс.
Примеры: Удаление поста, удаление комментария.




Еще четыре метода, которые используются редко (я за все время работы не разу не сталкивался с этими запросами на практике)
Но если вы назовете их, можете выбить для себя пару плюсиков на собесе


HEAD: Запрашивает ресурс так же, как и метод GET, но без тела ответа. Используется для получения метаданных.


OPTIONS: Используется для описания параметров связи с ресурсом. Например, может определить, какие методы поддерживаются сервером.


CONNECT: Устанавливает туннель к серверу, определённому ресурсом.


TRACE: Выполняет тестовый запрос для получения обратной связи маршрута, пройденного запросом.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21