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

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

Что выведет этот код?


int a = 0;
int b = 0;
if (a++ == 0 || b++ == 0) {
System.out.println("Zero");
}
System.out.println(a);
System.out.println(b);
Please open Telegram to view this post
VIEW IN TELEGRAM
Иерархия коллекций

На собеседованиях часто спрашивают о коллекциях. Обычно начинают с вопроса о том, как выглядит иерархия классов. Вот достаточно полное описание:

➡️В Java Collection Framework на вершине иерархии находятся два интерфейса: Collection и Map. Они разделяют коллекции на простые последовательные наборы элементов и наборы пар «ключ — значение» (словари).

➡️Collection наследуется от интерфейса Iterable. Он представляет собой набор однородных элементов, которые могут повторяться определённое количество раз.

➡️Интерфейс Collection определяет основные методы работы с простыми наборами элементов, которые будут общими для всех реализаций этого интерфейса. Например add(), remove() и size().

➡️Реализации интерфейса Map включают HashMap, LinkedHashMap и TreeMap. Есть ещё WeakHashMap, но для понимания этой реализации нужно разбираться с типами ссылок в Java.

➡️Реализации интерфейса List включают Vector, Stack, ArrayList и LinkedList.

➡️Интерфейс Set — это абстракция над математическим понятием множества. Главная особенность множества — отсутствие дубликатов. Его реализации: HashSet, LinkedHashSet и TreeSet.

➡️Интерфейс Queue описывает коллекции с предопределённым способом вставки и извлечения элементов — очереди FIFO. Его реализует, например, LinkedList.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Кого ты, блядь, выберешь? Java или Go? Go или Java?

Недавно писал о том, как меня позвали проходить собесы на позицию Go разработчика в Авито.

Из запланированных 5 этапов уже пройдено 3

✔️ Скоринг - пол часа общих вопросов, чтобы отсеять тех кто точно совсем не шарит, подробно писал здесь

✔️ Алгоритмическая часть - такие я провожу сам в Т-Банке, было непривычно оказаться с другой стороны. По ощущениям в авито проще, надо решить две задачи а не три, и код не обязательно должен запускаться, главное описать верный алгоритм. В итоге решил две задачки, первая по уровню сложности примерно как easy с литкода, вторая сначала тоже казалась не очень сложной, пока интервьюер не сказал, что решать ее надо без сортировки. Додумался до оптимального решения только после небольшой подсказки интервьюера.

✔️ Секция по языку - На удивление была отдельная секция именно по Java, кажется хотели просто проверить насколько хорошо кандидат владеет тем инструментом которым пользуется в данные момент, понятное дело что для Go разработки знание Java не нужно. Поговорили про особенности реализации стримов, разницу между анонимными классами и лямбда выражениями, также была практическая задача на то, чтобы реализовать свою структуру данных алгоритмически эффективно.

Что еще осталось:

System design - нормально проходил его только один раз, и на тот момент прошел не очень, секция запланирована на вторник, сейчас активно перечитываю две книги по проектированнию распределенных систем которые у меня есть, очень хочется пройти хорошо. По результатам этой секции будет решаться итоговый грейд между Middle+ и Senior

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

Про что из прошедших этапов рассказать подробнее?


👾 - алгоритмы
✍️ - секция по языку
Please open Telegram to view this post
VIEW IN TELEGRAM
4👾4
Откуда у тебя все эти вопросы?

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

Поэтому я периодически хожу на разные интервью

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

Забавно сравнивать такой подход и подход Яндекс/Т-банк/Авито и прочих российских FAANG компаний где нужно пройти 3-5 этапов перед получением оффера
🔥31
Если задавать слишком много вопросов, тебя уволят

Многие начинающие программисты боятся задавать вопросы своей команде. Они думают:
Если я чего-то не знают, то я плохой разработчик и меня точно уволят.

Но это не так.

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

В новом видео рассказываю, что делать, чтобы успешно пройти испытательный срок и не потерять работу.
🔥3
...и хотя он отлично работает, <...> другие объявляют его неработающим. Ситуация превращается в какой-то кошмар: <...> насильно тащат "на кладбище", а он отбивается и кричит "Я жив!". Но, поскольку никто его криков не слышит, похоронная процессия неуклонно продолжает движение

© Мартин Клеппман


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

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

Спокойной ночи
😱3👍1🤯1
📹 Первая тысяча просмотров на ютуб

Из этой тысячи некоторые подписались и сюда, так что добро пожаловать)

Хочу спросить здесь - какое видео интересно было бы посмотреть дальше?

Опрос ниже
🔽🔽🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
💸Торговаться ли за бо́льшую сумму в оффере?

Конечно да!

Я могу привести аргументы, почему это так, но, не буду.

Вместо этого поделюсь скрином переписки с HR компании, где мне изначально предложили зарплату около 360 000 рублей на руки.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Зовите меня блогер
🔥4
Личный бренд, mutherfucker

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

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

А само видео, если кто-то вдруг пропустил, можно найти здесь - ТОП-10 вопросов по Java
🔥4
Попался на глаза твит про джуна, который в первый рабочий день гуглили слова, которые услышал и не понял. В связи с чем опрос: понимаете ли вы эту фразу?

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