На выходных немного исчез, а сейчас вовзращаюсь с двумя фактами и одним опросом
🧳 Факт 1: В эти выходные уже второй раз сходил на занятие по яхтенному спорту, теперь знаю много новых слов.
Если вдруг вам зачем то нужны малоизвестные слова, вот несколько - стаксель, галс, оверштаг.
Фотка прилагается
💻 Факт 2: Сделал нормальный сайт вместо notion, вывод - конструкторы сайтов круто
Сам сайт вот - dsvdev.com
Заходите, смотрите, записывайтесь)
Ну и опрос
🔽 🔽 🔽
Если вдруг вам зачем то нужны малоизвестные слова, вот несколько - стаксель, галс, оверштаг.
Фотка прилагается
Сам сайт вот - dsvdev.com
Заходите, смотрите, записывайтесь)
Ну и опрос
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Сегодня простой и достаточно популярный вопрос на собеседованиях:
Что выведет этот код?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет этот код?
Anonymous Quiz
29%
true, true
24%
false, false
35%
true, false
0%
false, true
12%
Посмотреть ответы
Для начала стоит отметить, что оператор == корректно работает только с примитивными типами данных. Например, такой код выведет 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 можно встретить Kotlin.
Это относительно новый язык, который появился только в 2011 году, а используется чаще всего для разработки под android.
Иногда опыт работы с ним пишут в пожеланиях к кандидату или даже в требованиях вакансии.
По моим ощущениям, Kotlin упоминается примерно в 20-25% всех Java вакансий.
Kotlin — язык, который, как и Java, компилируется в bytecode JVM, а еще он полностью совместим с Java. Это значит, что внутри одного проекта можно совмещать код на Java и на Kotlin.
Поэтому некоторые компании и команды начинают переносить на него часть своих бэкенд-сервисов.
Например у меня в команде новые проекты пишут целиком на Kotlin, а в уже существующих на нем реализуют Unit и интергационные тесты.
В эту пятницу на внутренней IT-конференции в Т
Запись выложил на YouTube-канал — найти можно по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Чем хорош Kotlin | Доклад на внутреннем митапе Т-Банка
Персональный менторинг по Java - https://dsvdev.com
Обучающие материалы по Java и разборы реальных вопросов с собеседований в ТГ канале - https://news.1rj.ru/str/dsvdev
______
Запись выступления с внутренней IT конференции Т-Банка
Кратко рассказал про преимущества…
Обучающие материалы по Java и разборы реальных вопросов с собеседований в ТГ канале - https://news.1rj.ru/str/dsvdev
______
Запись выступления с внутренней IT конференции Т-Банка
Кратко рассказал про преимущества…
🔥1
Твоя язык программирования не важен!
На прошлой неделе написала HR из «Авито» с предложением пройти собеседование на Golang-разработчика.
Я ответил, что этот язык почти не знаю, а мой стек — Java/Kotlin.
На это мне сказали, что им не важно, на каком языке я пишу, главное — общие знания по бэкенд-разработке и инженерное мышление.
От собеседования я отказаться не смог, как минимум потому, что очень интересно, какие вопросы зададут на интервью, если стеки кандидата и вакансии не совпадают.
Вчера состоялся первый этап собеседования, сегодня HR написала, что я его успешно прошел и можно планировать следующий.
На первом этапе пообщались про работу сетей, какие есть протоколы, в каких случаях лучше применять TCP, а в каких UDP, зачем нужен HTTPS, какие бывают виды HTTP и из чего состоят запросы.
Поговорили про общие подходы к разработке, зачем нужен таймаут на выполнение запроса сервисом и как определить, какой он должен быть.
Также обсудили, как сервисы могут взаимодействовать между собой, а в конце затронули контейнеризацию — Docker и Kubernetes.
Интересный был опыт, впереди еще 2–3 этапа, посмотрим, как пойдет.
Хотите разбор некоторых общих вопросов, не связанных напрямую с Java, которые могут спросить на любом собеседовании разработчика?
👍 - да
🤔- нет
На прошлой неделе написала 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: Выполняет тестовый запрос для получения обратной связи маршрута, пройденного запросом.
#собесы
Какие методы HTTP запросов существуют?
Начнем с основных запросов, которых чаще всего хватит для ответа на собеседовании
GET: Запрашивает данные с сервера. Запросы с использованием этого метода должны только извлекать данные.
Примеры: Получение поста, получение комментариев к посту, получение количества лайков.
POST: Используется для создание новых данные в сервисе.
Примеры: Написание нового комментария, регистрация пользорвателя и т.д
PUT: Заменяет все текущие данные данными из запроса. Обычно используется для обновления существующих данных.
PATCH: Используется для частичного обновления данных. В отличие от PUT, который заменяет все данные, PATCH изменяет только указанные поля.
Примеры: Редактирование поста, редактирование комментария, обновление информации профиля.
DELETE: Удаляет указанный ресурс.
Примеры: Удаление поста, удаление комментария.
Еще четыре метода, которые используются редко (я за все время работы не разу не сталкивался с этими запросами на практике)
Но если вы назовете их, можете выбить для себя пару плюсиков на собесе
HEAD: Запрашивает ресурс так же, как и метод GET, но без тела ответа. Используется для получения метаданных.
OPTIONS: Используется для описания параметров связи с ресурсом. Например, может определить, какие методы поддерживаются сервером.
CONNECT: Устанавливает туннель к серверу, определённому ресурсом.
TRACE: Выполняет тестовый запрос для получения обратной связи маршрута, пройденного запросом.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
Хочу поделиться интересным вопросом, на который я сам не сразу смог ответить правильно.
Что выведет этот код?
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
Что выведет этот код?
Anonymous Quiz
24%
Zero 0 0
0%
Zero 0 1
18%
Zero 1 0
35%
Zero 1 1
15%
0 0
0%
0 1
0%
1 0
9%
1 1
Иерархия коллекций
На собеседованиях часто спрашивают о коллекциях. Обычно начинают с вопроса о том, как выглядит иерархия классов. Вот достаточно полное описание:
➡️ В 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
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
ТОП-10 вопросов по Java | Разбор самых популярных вопросы с собеседований по Java Core
Персональный менторинг по Java - https://dsvdev.com
Телеграм канал с полезными материалами по Java - https://news.1rj.ru/str/dsvdev
Больше об иерархии коллекций - https://news.1rj.ru/str/dsvdev/60
Таймкоды:
00:00 Начало
00:10 Откуда вопросы?
00:23 Расскажите про класс String?…
Телеграм канал с полезными материалами по Java - https://news.1rj.ru/str/dsvdev
Больше об иерархии коллекций - https://news.1rj.ru/str/dsvdev/60
Таймкоды:
00:00 Начало
00:10 Откуда вопросы?
00:23 Расскажите про класс String?…
🔥1
Кого ты, блядь, выберешь? Java или Go? Go или Java?
Недавно писал о том, как меня позвали проходить собесы на позицию Go разработчика в Авито.
Из запланированных 5 этапов уже пройдено 3
✔️ Скоринг - пол часа общих вопросов, чтобы отсеять тех кто точно совсем не шарит, подробно писал здесь
✔️ Алгоритмическая часть - такие я провожу сам в Т-Банке, было непривычно оказаться с другой стороны. По ощущениям в авито проще, надо решить две задачи а не три, и код не обязательно должен запускаться, главное описать верный алгоритм. В итоге решил две задачки, первая по уровню сложности примерно как easy с литкода, вторая сначала тоже казалась не очень сложной, пока интервьюер не сказал, что решать ее надо без сортировки. Додумался до оптимального решения только после небольшой подсказки интервьюера.
✔️ Секция по языку - На удивление была отдельная секция именно по Java, кажется хотели просто проверить насколько хорошо кандидат владеет тем инструментом которым пользуется в данные момент, понятное дело что для Go разработки знание Java не нужно. Поговорили про особенности реализации стримов, разницу между анонимными классами и лямбда выражениями, также была практическая задача на то, чтобы реализовать свою структуру данных алгоритмически эффективно.
Что еще осталось:
⏰ System design - нормально проходил его только один раз, и на тот момент прошел не очень, секция запланирована на вторник, сейчас активно перечитываю две книги по проектированнию распределенных систем которые у меня есть, очень хочется пройти хорошо. По результатам этой секции будет решаться итоговый грейд между Middle+ и Senior
⏰ Итоговая встреча с командой - на этом этапе обсуждаются уже задачи команды, задачи кандидата в команде в случае выхода, взаимная мотивация. Происходит знакомство с потенциальным тимлидом.
Про что из прошедших этапов рассказать подробнее?
👾 - алгоритмы
✍️ - секция по языку
Недавно писал о том, как меня позвали проходить собесы на позицию Go разработчика в Авито.
Из запланированных 5 этапов уже пройдено 3
Что еще осталось:
Про что из прошедших этапов рассказать подробнее?
👾 - алгоритмы
✍️ - секция по языку
Please open Telegram to view this post
VIEW IN TELEGRAM
✍4👾4
Откуда у тебя все эти вопросы?
Чтобы эффективнее готовить учеников к собеседованиям, нужно иметь на руках список актуальных вопросов, которые там задают
Поэтому я периодически хожу на разные интервью
На скрине итоги одного из них - собес был на проект газпромбанка, состоял из одного часового этапа
Забавно сравнивать такой подход и подход Яндекс/Т-банк/Авито и прочих российских FAANG компаний где нужно пройти 3-5 этапов перед получением оффера
Чтобы эффективнее готовить учеников к собеседованиям, нужно иметь на руках список актуальных вопросов, которые там задают
Поэтому я периодически хожу на разные интервью
На скрине итоги одного из них - собес был на проект газпромбанка, состоял из одного часового этапа
Забавно сравнивать такой подход и подход Яндекс/Т-банк/Авито и прочих российских FAANG компаний где нужно пройти 3-5 этапов перед получением оффера
🔥3❤1
Если задавать слишком много вопросов, тебя уволят
Многие начинающие программисты боятся задавать вопросы своей команде. Они думают:
Но это не так.
На самом деле, риск быть уволенным выше у тех, кто не задаёт вопросы. Ведь быстро разобраться во всех особенностях проекта, используемых технологиях и подходах самостоятельно практически невозможно. А без этого ты вряд ли сможешь начать выполнять задачи.
В новом видео рассказываю, что делать, чтобы успешно пройти испытательный срок и не потерять работу.
Многие начинающие программисты боятся задавать вопросы своей команде. Они думают:
Если я чего-то не знают, то я плохой разработчик и меня точно уволят.
Но это не так.
На самом деле, риск быть уволенным выше у тех, кто не задаёт вопросы. Ведь быстро разобраться во всех особенностях проекта, используемых технологиях и подходах самостоятельно практически невозможно. А без этого ты вряд ли сможешь начать выполнять задачи.
В новом видео рассказываю, что делать, чтобы успешно пройти испытательный срок и не потерять работу.
YouTube
ТИМЛИД ТЕБЯ УВОЛИТ | Как программисту не вылететь с работы в первые три месяца
Персональный менторинг по Java - https://dsvdev.com
Телеграм канал с полезными материалами по Java - https://news.1rj.ru/str/dsvdev
Таймкоды:
00:00 Начало
00:07 Мой опыт
00:24 Soft скилы
00:45 Зачем нужны 1to1
1:11 Как правильно задавать вопросы
1:54 Hard скилы
2:04…
Телеграм канал с полезными материалами по Java - https://news.1rj.ru/str/dsvdev
Таймкоды:
00:00 Начало
00:07 Мой опыт
00:24 Soft скилы
00:45 Зачем нужны 1to1
1:11 Как правильно задавать вопросы
1:54 Hard скилы
2:04…
🔥3