BlissCodeHub
159 subscribers
56 photos
9 videos
109 links
BlissCodeHub 🧐 — это два разработчика, которые прошли через ад собесов, выгорание, «срочные правки в пятницу вечером» и уникальные (в плохом смысле) кейсы в конторах 🗽

Ищем лучшие методы – бери и пользуйся. Прокачка без лишнего напряжения 🚀
Download Telegram
#backend #полезное

Вопросы с недавнего собеседования на позицию middle backend node.js разработчика🧐

1. Расскажите о способах улучшения производительности Node.js приложения, использующего Express.js

2. Что такое профилирование и какие инструменты или методы можно использовать для профилирования?

3. Что такое EventLoop в Node.js и как он связан с производительностью backend части?

4. Расскажите о плюсах и минусах индексов в БД

Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥6
#backend #полезно

Небольшое дополнение к предыдущему посту🧐

1. Расскажите, что такое индексы, какие бывают и как работают изнутри
2. Масштабирование: горизонтальное и вертикальное. Что это такое и в чём отличия?
3. Сборщик мусора в js: примеры работы
4. Глобальные объекты в js
5. Преимущества nest над express
6. worker's node.js
7. С какими БД работал. Отличия nosql/sql баз данных
8. Транзакции в БД, их отличия в нереляционных БД. Примеры использования

Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥5👍1
😁8🔥1🍓1
#backend #полезное

Задачка с последнего собеса подписчика на позицию middle backend node.js🧐

В каком порядке будет вывод?
(async () => {
const testFunction = async function() {
this.traceId = Math.random() // 0.1
console.log('start', this.traceId); //
await new Promise(r => setTimeout(r))(r => setTimeout(r))
console.log('finish', this.traceId);
}
testFunction();
testFunction();
testFunction();
})()


Правильный ответ 🤨:
// start 0.1
// start 0.2
// start 0.3

// finish 0.3
// finish 0.3
// finish 0.3


Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥6
#any #полезно

👉 Мы возвращаемся.
Разгребли жизненные ситуации и врываемся писать контент для вас), ждите постов на тематику тегов в закрепленном сообщении.

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤9
#backend #полезно

Разберем интересный вопрос с собеса на backend node.js (middle позиция) разработчика - Расскажите о минусах ORM🧐

1. Для сложных структур данных и запросов автогенерированные запросы иногда могут быть неэффективны по сравнению с ручным написанием SQL. В пример приведём ситуацию, когда ORM может вызвать проблему с производительностью при выполнении сложных операций, таких как n+1 запросы - то есть, при извлечении связанных сущностей делается несколько отдельных запросов, вместо одного(можно отнести сюда TypeORM).

Как это лечить?
- Использование JOIN в запросах для извлечения связанных данных за один раз вместо множественных запросов для каждого объекта
- ORM Prisma поддерживают пакетную загрузку, объединяя несколько однотипных запросов в один

2. ORM стремится абстрагировать работу с БДшкой, но это не всегда возможно. Разрабу всё равно приходится юзать SQL, так как абстракция ORM не всегда успешно охватывает всю сложность взаимодействия. Например, когда речь идёт о сложных операциях - агрегациях данных, составных запросах или использовании специфичных для БД функций (окна PostgreSQL)

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

4. TypeORM может некорректно сгенерировать SQL-запрос для блокировки строки с помощью FOR UPDATE или других методов. Если блокировка реализована неправильно, может возникнуть ситуация, когда строки не блокируются, что приведет к несогласованности данных, когда два запроса параллельно обновляют одно и то же значение.

Присоединяйтесь к нашему общему чату и Discord серверу :)
🔥8❤‍🔥1❤1
#frontend #полезно

Делюсь найденными ютуб-каналами с записями hr и тех-собесов на позицию frontend-разработчика с указанием зарплатных вилок.

Очень полезный материал, который отражает весь процесс найма. Стоит отметить, что из года в год особо ничего не меняется :) Как спрашивали топ-100 вопросов с щипоткой личных экспериментов в виде лайвкодинга так и спрашивают.

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

1) https://www.youtube.com/@daniil_maximum/videos
2) https://www.youtube.com/@frontend-m0ney/videos
3) https://www.youtube.com/@brave_interviews/videos
4) https://www.youtube.com/@sanya-it/videos
5) https://www.youtube.com/@coder-interviews/videos

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤8👍1🔥1
#backend #полезно

Скоро выйдет пост о моём первом оффере(на позицию junior backend node.js). Опишу как проходил собес(теория + задачки), как боролся со стрессом, получение оффера и отказ от него🧐

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤9🔥1😱1
#backend #полезно

1 / 2 Мой первый оффер на позицию junior backend node.js разраба, в компанию, занимающуюся окнами 🧐

N лет назад я работал на фрилансе + параллельно подрабатывал на офис в другой стране. С таким ритмом жизни мне это всё дело очень сильно начало надоедать, так как тебе с 0 нужно продумывать архитектуру, общаться с заказчиком, а порой за него и додумывать как это должно быть(некая неопределенность с его стороны), та и в целом сильно много и неоправданно времени уходило на работу. Решено было пойти собеситься!

"Но как готовиться? Что говорить про себя? Как составить резюме и откликаться?" - и это только часть вопросов в моей голове, ну и ко всему этому "А что если я не справлюсь. Уволят ведь"(синдром самозванца)
С Дмитрием созвонились, почекали чужие резюме и накидали уже более-менее то, с чем можно было бы пойти на собесы. Вот тут мы плавно подошли к откликам на вакансии HH. Около недели откликов, постоянного редактирования/дополнения резюмешки и скриннингов с HR'ками дали свои плоды, меня позвали на 2 собеса - в стартап(о нём интересная история будет позже) на позицию jun+ и в крупную фирму, занимающуюся окнами(как я позже выяснил в моём доме они тоже ставили окна)

Подготовка
На протяжении недели я дёргал разную полезную инфу с инета к себе. Остались ровно сутки, чтобы закрепить материал и повторить всё по чеклисту, коряво составленному самостоятельно по собесам с Ютуба + очень хорошему чеклисту с канала UlbiTV. Вроде всё повторил, но состояние подавленности и нежелание идти на собес начинает понемногу меня пересиливать. Такое неприятное состояние испытывал я всего несколько раз в жизни, но чтобы по такому пустяку как собес - впервые. Это сейчас я понимаю, что ничего страшного в собеседованиях нет, вакансий тысячи и спокойно можно откликаться на все :)

Первый собес
Несколько часов до собеса(с учётом переноса с их стороны). Люто переживаю, перебираю разные варианты успокоить себя и вот что мне помогло:
• Стоять под холодной водой около минуты. Таким образом, высвобождается кортизол — гормон стресса, а также происходит всплеск бета-эндорфиновых гормонов, что в некоторых случаях вызывает даже эйфорию
• Небольшая физическая нагрузка: приседания, отжимания и т.п
• Крепкий зелёный чай
• Постоянное проговаривание, что фирм тысячи и один собес, особенно первый, ничего не решит и это очень полезный опыт
Уверенный в успешном прохождении собеса я подключаюсь в Google Meet, там уже меня ждала HR, а после подключились лид проекта и какой-то из разрабов. Сходу лид поздоровался и сказал, что интервью будет состоять из 3-х частей: мой рассказ об опыте, тех часть(теория + задачка), мои вопросы об их проекте. Расскажу чуть подробнее о каждом из этапов ниже👇

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤41
2 / 2 Рассказ об опыте

В целом тут можно сократить до такой формулы - где и сколько работал, какой стек и технологии, как организовывалась работа и создание фичей, что интересного/неинтересного делал, почему уходишь с предыдущего места

Тех часть
На удивление, теория была ну очень не сложная и я не ответил только на 1 вопрос, связанный с внутрянкой EventLoop в node.js. Вот список некоторых вопросов:
- В чём преимущества node.js?
- Какие способы итерации вы знаете в js?
- расскажите об async/await, что это?
- кратко расскажите принцип работы EventLoop в node.js и его отличие от EventLoop в браузере
Стандартная теория, ответы на которую почти везде есть, поэтому никаких проблем ответить на неё не было
А также, простая задачка - "Напишите функцию, которая разворачивает массив и выводит в консоль элементы: [1,2,3, [4,5,6], 8, [9]] -> 1,2,3,4,5,6,7,8,9". И с ней я тоже справился, хоть и немного затянул

Мои вопросы об их проекте (всё стандартно)
- Расскажите о стеке проекта
- Какая архитектура
- Сколько человек команда
- Как выстроен процесс разработки

Оффер и отказ от него
Через пару часов мне дали оффер(он был в виде фидбека от HR в лс, с поздравлением об успешном прохождении собеса и предложением пойти к ним работать). В тот момент я так сильно, мягко говоря, удивился, радости не было предела. Но я задался вопросом, а нужно ли мне сидеть на уже не актуальном стеке - Node.js без фреймворков(чистый), ведь таких проектов почти нет и нужно расти в знаниях. Дальше ведь будет тяжело идти по собесам, если долгое время просидел на чём-то устаревшем. И я отказался от оффера, в пользу следующих собеседований, где получил оффер на зп чуть больше и проект с актуальными технологиями🔥

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤61
Flutter🧑‍💻

Невероятно интересный блог про разработку нашей отечественной Российской операционной системы Аврора🤘 на стеке Flutter. В скором времени будет «Meetup at home | KODE x Mobile Broadcast», на который был приглашен автор канала в качестве эксперта в сфере ОС Авроры для помощи написания доклада. А вот и сам канал разработчика и моего коллеги с одного из проектов - Микаила Тайсунова Антихрупкость Разработчика.

Если у вас тоже есть свой канал, который хотите развивать делитесь им в комментариях🧐

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤4❤‍🔥11
#frontend #полезно

Один из функционалов во фронтенде, суть которого не покрасить кнопку или сверстать форму и отправить ее на сервер.

Недавно была таска - "подхватить" ширины и высоты для excel колонок. У нас на проекте есть полноценная веб версия экселя со всеми копированиями, сдвигами, формулами, ресайзами, шаблонами и прочим функционалом O_o. Использовались данные библиотеки - раз, два и три. Однако больше половины логики была самописной (десятки файлов на 200-900 строк).

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

Не все так просто. Сразу вылезли всякие ошибки по типу undefined'ов, функция не является функцией - в этом роде. Пришлось еще покопаться в коде и понять, что конкретно для модуля, в котором я работал нужно указать другие поля у получаемой с сервера таблицы и достучаться до нужных свойств в объекте и потом засетить эти ширины и высоты в функции, которая считывает эксель файл с бекенда и отдает его в формате массива массивов с колонками и строками.

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

Присоединяйтесь к нашему общему чату и Discord серверу :)
❤5❤‍🔥11
#any

Мы не пропадаем😉
Посты будут публиковаться чуть реже.
Кое-что готовим для вас 🧐

Присоединяйтесь к нашему общему чату и Discord серверу :)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🙏311
9🤪1
#backend #полезно

Пробую писать примитивный CI/CD для Nest.js приложения с использованием GitHub Actions и PM2(часть 1)🧐

О том, что такое CI/CD простыми словами, можно почитать тут

1. Создание файла workflow

В корне вашего проекта создайте папку .github/workflows, а внутри нее файл deploy.yml
workflow — это набор инструкций для автоматизации процессов сборки, тестирования, деплоя и др, которые обычно выполняются вручную.

name: Deploy Nest.js app

on:
push:
branches:
- development # Триггер для запуска workflow при пуше в ветку "development". Для этого вам необходимо создать у себя эту ветку

jobs:
build:
runs-on: ubuntu-latest #Используется Ubuntu как окружение для запуска

steps:
- name: Checkout code
uses: actions/checkout@v3 #Клонируем репозиторий

- name: Set up Node.js
uses: actions/setup-node@v3 # Устанавливаем Node.js окружение
with:
node-version: 18 #Устанавливаем версию Node.js 18

- name: Install dependencies
run: yarn install # Установка зависимостей проекта

deploy:
runs-on: ubuntu-latest # Среда для выполнения деплоя
needs: build #Выполняется после этапа сборки

steps:
- name: Checkout code
uses: actions/checkout@v3 #Снова клонируем код на этапе деплоя

- name: Deploy to server via SSH with password
uses: appleboy/ssh-action@v0.1.2 # Используем экшн для SSH подключения
with:
host: ${{ secrets.SERVER_HOST }} # Host сервера из секретов
username: ${{ secrets.SERVER_USER }} # Имя пользователя для SSH-подключения
port: ${{ secrets.SERVER_PORT }} // SSH порт
password: ${{ secrets.SERVER_PASSWORD }} # Пароль для SSH, хранимый в секретах
script: | # Набор команд, которые будут выполняться на сервере
cd /uzver/BlissCode # Переходим в директорию проекта на сервере
git pull origin development --strategy-option=theirs # При выполнении команды git pull вы можете столкнуться с ошибкой - "Need to specify how to reconcile
divergent branches". Это происходит, когда в вашей локальной и удаленной ветке есть расхождения, и Git не знает, какую стратегию выбрать. Решение - указать стратегию слияния theirs, чтобы всегда использовать изменения из удаленной ветки

npx prisma migrate dev # Применяем миграции Prisma
yarn install # Устанавливаем зависимости проекта на сервере
yarn build # Собираем проект
pm2 restart all # Перезапускаем все процессы через pm2


2. Настройка секретов GitHub
Чтобы избежать хардкодинга важных данных, таких как SSH-пароли или ключи, используем GitHub Secrets:

• Перейдём в репозиторий на GitHub
• Откроем: Settings -> Secrets and variables -> Actions
• Создадим секреты для сервера (SERVER_HOST, SERVER_PASSWORD, SERVER_USER, SERVER_PORT)

3. Тестим

Попробуйте создать PR и слить в ветку development🖥

Присоединяйтесь к нашему общему
чату и Discord серверу :)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤322
#frontend #полезно

Наткнулся на видосы, где кандидат проходит собес на фронтендера с накрученным опытом и в конце всех этапов признается в том, что у него нет реального коммерческого опыта - часть 1 и часть 2.

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

Тем не менее, обратная связь положительная и если бы автор не сознался, то ему 100% выслали бы оффер, потому что подготовился к формату собесов и правильно отвечал на теоретические вопросы, грамотно рассказал о своем опыте.

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

О подготовке - делюсь полезными ресурсами:
- Вопросы с собесов:
1. канал с вопросами с собесов
2. ресурс easyoffer
- Ютуб-каналы с записями собесов:
1. https://www.youtube.com/@daniil_maximum
2. https://www.youtube.com/@frontend-m0ney
3. https://www.youtube.com/@brave_interviews
4. https://www.youtube.com/@sanya-it
5. https://www.youtube.com/@coder-interviews
6. https://www.youtube.com/@ITBeast_IT

🟥 YouTube
™️ TikTok
⛩ Общий чат
🔵 Discord
🤜 Отзывы
Please open Telegram to view this post
VIEW IN TELEGRAM
57❤811
#backend #полезно

Всех приветствую 🧐

Давно не было постов про backend, поэтому следующий будет о моих похождениях на собесы по Golang(начал около недели назад вкатываться). Также дам гайд, о котором узнал также недавно, по оформлению резюме для любого направления backend

🟥 YouTube
™️ TikTok
⛩ Общий чат
🔵 Discord
🤜 Отзывы
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤8🦄11
Хорошая попытка 🧐

🟥 YouTube
™️ TikTok
⛩ Общий чат
🔵 Discord
🤜 Отзывы
Please open Telegram to view this post
VIEW IN TELEGRAM
16🤨3🫡1
#backend #полезно

Всех приветствую🧐

Что расскажу в этом посте:
1️⃣ Мой опыт по быстрому вкату в Golang и прохождение собесов
2️⃣ Как там на скринингах и к чему стоит готовиться?
3️⃣ Небольшой гайд по оформлению резюме backend разработчика

1️⃣ Вообще, идея залететь в Golang у меня была ещё пару месяцев назад, но по некоторым обстоятельствам я ей уделял слишком мало времени, по итогу общее изучение go у меня было ~10 дней. Таким образом, я дотянул до декабря и начал проходить собесы с этой небольшой базой(тут стоить учитывать, что на бэке у меня есть опыт в Node.js, поэтому что-то общее я могу рассказать). На текущий момент пройдено: 2 тех собеса, 1 тех скрининг, 6 скринингов с HR агентами(немного, но какой-то вывод могу сделать)

Что хочу подметить, касаемо скринингов с HR. Возможно такое было только у меня, но проходящим собесы на заметку, теперь почти на всех скринингах могут задать несколько тех вопросов по внутрянке, а также попросить рассказать что будет выводить код(скидывают в тг и тебе нужно рассказать поведение куска кода). Поэтому внимательнее🍿

О собесах не могу как-то судить, потому что это мои первые собесы(в бигтехи) по go и не с чем сравнивать, но если вкратце, то очень много внутрянки в блоке с теорией: сборщик мусора, планировщик, в чем выигрыш горутин, устройство каналов и map. То есть основной упор идет в теории именно на знание внутрянки. Поэтому делаем выводы🤓

2️⃣Как упомянул выше, на скринингах могут задавать(по крайней мере у меня в большинстве случаев) тех вопросы. И это не относится только к Go, а также и к Node.js, так как опыт прохождения текущий и там имеется. Поэтому лучше подготовиться и к таким неожиданным моментам🔥

3️⃣ Ну и киллер-фича этого поста - небольшой гайд по оформлению резюме по backend направлению, который помогает нам🔍

➡️ Старайтесь в достижениях делать вывод из непосредственно достижения. Например, "Реализовал интеграцию с сервисом для управления бенефитами пользователям, тестирование показало, что выросла на 79% или в 1.7 раза". Тут главное показать, что вы действительно принесли пользу своей реализацией
➡️ Очень любят HR агенты, когда рассказываешь о самостоятельной реализации какого-либо микросервиса, судя по наблюдениям и количеству вопросов об этом на скринингах, как в Node.js, так и в Golang. Поэтому если есть такие достижения - указывайте✅

🟥 YouTube
™️ TikTok
⛩ Общий чат
🔵 Discord
🤜 Отзывы
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤8🔥55
#any

Всех приветствуем
🤝
Подведем итоги уходящего 2024 года, на основе нашего флоу и тезисно выделим основные моменты👨‍💻

1️⃣ Своим опытом убедились, что большой опыт работы ❗️🟰🟰 большая экспертность. Несколько раз нам встречались интервьюеры, которые сами не понимали в технологиях, но спрашивали о них
2️⃣ На наш взгляд собесы стали немного сложнее, все больше стало вопросов, проверяющих не поверхностное владение технологией, а именно понимание её внутреннего принципа работы и в каких случаях она может стать полезной, а то и навредить
3️⃣ Очень много лайвкодинга, на всех наших собесах он присутствовал. Но хотим заметить, что задачи не усложняются, а имхо, становятся немного проще, в сравнении с предыдущим годом🎹
4️⃣ Мы выработали некоторые практики общения с интервьюерами/HR агентами, которые действительно очень хорошо себя показали на 2-х вкатунах, проходивших собесы и получившие офферы(frontend и backend)🖐
5️⃣ Дефицит опытных разработчиков действительно ощущается, как минимум это стало понятно из разговора с 3-мя HR агентами и тому как рьяно компании пытаются переманить. Поэтому нужно идти на собесы😴
6️⃣ Тенденция на странные критерии отбора, которая наталкивает на мысль, что найм максимально доламывает себя. Эту темы мы раскроем в отдельном посте😎
7️⃣ В дальнейшем будем рассказывать как мы научились совмещать несколько работ и учёбу⌨️
8️⃣ Помните, что если отказали на одном собесе - дадут оффер на другом. Поэтому отказ не повод останавливаться проходить собесы👁‍🗨
9️⃣За 6 собесов по backend получилось залутать 3 оффера(в общей сложности потратил 3 недели)🤜

В завершении хотим поздравить вас с наступающим Новым годом и пожелать сочных вилок и интересных проектов🔥💟💪

🟥 YouTube
™️ TikTok
⛩ Общий чат
🔵 Discord
🤜 Отзывы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11❤‍🔥22