Dev community interviewboom
340 subscribers
94 photos
16 videos
2 files
25 links
Розробка софта, обмін досвідом, готуйся до технічних співбесід професійно з нами
Мій сайт, де ти можеш перевірити свої скіли https://interviewboom.com
Мій TikTok канал https://www.tiktok.com/@interviewboom
Download Telegram
Коли хтось питає "Як ти вирішив стати програмістом"? В мене все банально просто, це сидіння годинами перед екраном телека і граючи в денді. Коли за вікном морози і довгі канікули, що могло бути крутіше?
Це робило життя цікавішим, яскравішим. 8-ми бітні приставки, жалюгідні китайські підробки, але цифровий світ затягував і дарував нові і незабутні емоції.
Ці часи поглинали сірі будні, початку 2000-х років. Зараз будь який смартфон це вже по дефолту потужний компьютер в кармані, тоді ця коробочка з однією платою, яка весь час глючила, давала розуміння майбутнього, яке нас всіх чекало
6
👉 Анонс нового матеріалу по JavaScript: “Deep dive into Event Loop”

Планую зробити серію відео по Event Loop, вже зібрав матеріал, з глибоким зануренням в саму архітектуру і source code NodeJS.
Ми відповідмо на питання як JS код працює з асинхронними операціями на найнижчому рівні і на прикладі NodeJS (оскільки браузерна версія подібна). Прослідкуємо як асинхронні виклики проходять шлях від функцій в коді до проходження через кожний компонент архітектури NodeJS.

Багато хто говорить що розуміє як працює Event Loop і вважає що це посуті і є JavaScript, але Event Loop це всього лиш один з багатьох компонентів які забезпечують виконання JS коду.
Ви скажите: “Навіщо мені це знати? це ж цілком достатньо просто розуміти що джс однопоточний і не блокувати івент луп.” А вам не хотілось ніколи розуміти повну картину архітектури JavaScript backend/frontend? Щоб бачити всі тонкощі і відповідати на технічній співбесіді з повним розумінням що відбувається під копотом, замість зачитування стандартних фраз без реального усвідомлення як це працює.

Деякі ключові теми, які ми розберемо детально:

• Що таке runtime в JavaScript, і як це повязано з асинхронними викликами
• Як NodeJS обробляє асинхронний код з Event Loop під капотом, проведемо прямий звязок між компонентами архітектури, при виконанні асинхронних коллбеків.
• JS ефективний у high-load не тому, що Node/libuv “розуміють JS”, а тому що вони розділяють відповідальність і ефективно роблять всю “асинхронну” роботу для JS.
• Чому NodeJS написаний на С++ але при цьому використовує 60% JavaScript під капотом.
• Що таке Event Loop фази і як вони взаємодіють з асинхронрим кодом
• Що таке Event Loop tick і як розуміти асинхронний механізм JavaScript в тіках.
• Читаємо асинхронні приклади коду на рівні проходження повного циклу через всю архітектуру NodeJS/Frontend.
• JS Memory management: Розуміння як JavaScript працює з пам'яттю, зберігає структури даних. І як робити профілювання

Дайте лайк кому цікаво!
8👍3
Вітаю, друзі! 🙌
Пропоную пройти разом тест по JavaScript, я буду з вами відповідати на питання і робити роз'яснення по відповідям.

Зараз в мене є приорітет зробити більш якісні питання в тестах, бо є випадки коли питання некоректні або занадто переускладнені, або навпаки занадто прості. Нажаль я особисто можу покращувати і розвивати тільки напрямок JS (backend/frontend), ну і ще PHP, бази даних, Cloud providers, бо це те з чим я працював/працюю тривалий час.

Я думаю що наразі сфокусуюсь виключно на цих напрямках, і їх буду постійно покращувати і наповнювати базу.

Другий момент це підвищення ефективності самих тестів, через персоналізацію самих питань під конкретного юзера. Наприклад якщо юзер ставить собі за ціль отримати рівень senior, але не може успішно пройти ці тести, то ми будемо адаптувати тест таким чином, щоб ті скіли, де у юзера є складнощі частіше з'являлись в тесті, до тих пір, поки юзер не покаже впевнене зання цього напрямку.

Але мені треба дуже ваша підтримка 🙏, і бажаючі пройти разом зі мною тест по JavaScript, і почути ваші відгуки, і покращити ваш досвід!
Формат тестування:
- Я запланую трансляцію в телеграмі на неділю, 8 лютого, на 19:00.
- Вам потрібно приєднатись до трансляції, я поділюсь з вам посиланням на сам тест на JavaScript.
- Приєднатись до проходження теста зможе будь хто, потрібно тільки авторизвуватись на сайті.
- Прохоження тесту без обмеження по часу
- Приєднатися можна в будь який момент
- Коли всі дадуть відповідь на питання і будуть готові рухатись далі, ми переходимо на наступне тестове питання всі разом.
- У кожного юзера буде в фіналі теста свої індивідуальні результати. Які будуть доступні виключно вам.
- Після проходження теста ми разом пройдемось по кожному питанню і перевіримо де правильні відповіді, і проаналізуємо чому саме ці відповіді.

Будемо прокачувати скіли і навчатись разом!
Хто бажає прийняти участь, дайте лайк будь ласка 🙏!
🔥32
Live stream scheduled for
Вітаю! Сьогодні в 19:45 спробуємо пройти тест JavaScript разом, я буду шарити скрін тут на телеграм трансляції в цьому каналі, а на тікток запустю трансляцію і будемо відповідати на питання в тесті і спілкуватись разом.
Посилання на тест: https://interviewboom.com/categories/1/test/107/session-sse/88776b29-5151-40b5-9303-6892711d4661
🔥1
Друзі, чи варто питання в тесті перекласти на українську мову чи лишити на англійській?
Anonymous Poll
49%
Англійська
24%
Українська
27%
Без різниці
Live stream started
Live stream finished (1 hour)
JavaScript особливості роботи з об'єктами в функціях

У нас є декілька прикладів коду. 1 і 2 приклади показують роботу з масивом, а 3 і 4 приклади з об'єктом.
У обох кейсах ми робимо оновлення для об'єкта і для масива, які передаються через аргументи в функцію update.
Спробуйте зрозуміти який буде результат, чи зміняться об'єкт або масив після кожного з 4 випадків?

Відповідь:
Для 1 прикладу коду зовнішній об'єкт "objectNumbers" не зміниться, не дивлячись на те що ми намагаємось його переасайнити в середині функції "update()" таким чином obj = {}.

Чому ж це ніяк не впливає на змінну objectNumbers? Оскільки об'єкти в JS передаються по reference в функції (не створюється новий об'єкт, а передається на нього посилання в пам'яті). А ми переприсвоюємо об'єкт obj і тим самим втрачаємо reference на зовнішній об'єкт objectNumbers. Тепер змінна obj рівносильна тому що ми створили новий об'єкт в функції update. І зв'язок з objectNumbers втрачений.

Для прикладу коду 2 ми замість переприсвоєння, міняємо властивість numbers в об'єкті obj, але так як ми раніше вже згадували вищє об'єкти в JS передаються по reference в функції, то будь які прямі маніпуляції з аргументом obj приведуть до мутації зовнішнього об'єкта objectNumbers, бо і obj і objectNumbers посилаються на одну і ту саму адресу в пам'яті.

Те саме відбувається і для прикладів 3 і 4 з масивом 'numbers'. Оскільки масиви теж передаються by reference в функції.
Dev community interviewboom
Photo
Висновок: обидва варіанти не юзабельні в продакшн коді. Потрібно завжди робити копію масива чи об'єкта в функції перед тим як робити будь які маніпуляції з ними. Це завжди робочий і 100% безпечний варіант в світі JS.

Fix:
Ті хто прочитав код уважно знайшли помилку, дякую що допомагаєте 🫡
Насправді spread оператор в JS робить shallow copy, тому правильний варіант буде зі spread оператором виглядати якось так:

const update = (obj) => {
const newObject = {
...obj,
numbers: [
...obj.numbers,
]
};
newObject.numbers.push(12);
return {};
}

Або все ж таки використати нативну функцію structuredClone()
👏1
Недавно був свідком як розробник перейшов з свого "нагрітого" і комфортного місця на галері в маленьку продуктову компанію, яка займається розробкою онлайн ігор.

Що може мотивувати розробників перейти працювати з великої, інтернаціональної української топ аутсорс компанії в маленький продукт?

- Більша ЗП, запропонували більше ніж зараз, тоді як в аутсорсі потрібно пройти через бюрократичні і довготривалі процедури, щоб підтвердити свою цінність і отримати аппруви на всіх рівнях. І це ще далеко не факт що у вас вийде.

- Підвищення, як шанс випробувати себе і ривок вгору по кар'єрним сходинкам. Але більша відповідальність, а відповідно і необхідність швидко навчатись і призвичаїтись до нових реалій.

- Друзі або знайомі перетягнули до себе в команду, працювати з своїм близьким оточенням це звичайно більш комфортно ніж у середовищі де купа незнайомих і часто не дружніх колег, до яких треба знайти ще підхід.

- Отримати унікальний досвід роботи в продукт компаніях, це зазвичай більша динаміка, тут може бути і фінансова нестабільність оскільки менші масштаби і будь які коливання і падіння прибутковості буде набагато болісніше ніж у великих IT корпорацій, і менші дедлайни і більша відповідальність, бо немає зверху вас ніяких менеджерів, які будуть захищати вас перед замовником, і у разі незацікавленості ваших послуг можуть перекинути на інший проєкт. На продукті ви працюєте напряму з вашим бізнесом і ніяких компромісів, або тут і зараз або "гудбай". Але при цьому в разі успіху в продуктовій компанії можна як швидко впасти, так і швидко зростати як по кар'єрі так і по рівню зп. І отримати досвід як побудувати власну успішну компанію.

У будь якому випадку це ризик, в аутсорс середовищі ви завжди знаходитесь в більш стабільному і комфортному середовищі. Для тих, хто не любить "пригоди" типу овертаймів і постійні зміни вимог, то це найкращий варіант. Також аутсорс це хороший варіант коли вам потрібна стабільність особливо фінансова.
Але якщо у вас "кипить кров" і є бажання себе випробувати і вийти з зони комфорта, можливо навіть це вас приведе до дуже успішного майбутнього. Але тут все сильно залежить від вас особисто. Тому вибір за вами!
3
Коротко про лінкедін, і чому багатьох він просто бісить 👍
Dev community interviewboom
Друзі, чи варто питання в тесті перекласти на українську мову чи лишити на англійській?
Виходячи з результатів опитування англійська мова в тестах всіх влаштовує? Будемо одночасно і тести проходити і англійську мову вчити ) Бо перевага сильна в сторону інгліш, значить для більшості це не критично, але я всеодно підтримаю тих, хто голосував за українську, знаю що вас менше, але заради вас ми зробимо це 💪
2
Екстремальне програмування на практиці, або як можна за один момент випадково видалити код, який писав дуже довго і дуже тяжко, а потім знову повернути все до життя.
Дякую IDE WebStorm! Бо навіть після найнебезпечнішої команди "git reset --hard", ця IDE врятувала всю мою кодову базу, яку я навіть не встиг закомітити.
WebStorm все пам'ятає, бо зберігає local history всіх змін файлів, які були в проекті. І я просто зробив ролбек.
Цікаво а VSCode так вміє?
🤔3
AI Engineering - це не Vibe coding

Мені прийшла крута ідея, разом з вами попрактикувати AI Engineering і побудувати власну RAG-систему на LangChain фреймворку для генерації тестових питань. Суть в тому що я багато тестових питань пишу вручну, іноді беру ідеї з різних джерел, але потім роблю рефакторінг і покращення контексту і складності питання за допомогою Open AI API і спеціально тренованої для цього модельки (Fine-tune).
Але ця система не ефективна, хочу покращити якість і досягти більш релевантних питань, щоб більше автоматизувати процес і менше робити ручну валідацію.

- Розберемось що таке LangChain
- Як працює RAG-система
- Інтегруємо все з Open API модельками

Чи буде цікаво вам побачити як я налаштовую LangChain і RAG-систему з використанням векторної бази даних, це буде мій перший досвід у світ AI інжинирінгу. Будемо навчатись разом новим трендовим скілам?
10
Майбутнє розробників під загрозою? 🤔

Панове, ми рухаємось з вами в напрямку коди AI асистенти перетворять код проектів на black box. Це коли програмістам більше не потрібно читати і писати код взагалі, це умовно кажучи буде папочка "X", в якій лежать ісходніки. І всім буде однаково що там і як воно працює, і чи відповідає цей код software design patterns чи там "портянка" де все максимально НЕ читабельно і не оптимізовано.
Якщо щось не працює то вайбкодери просто попросять AI все пофіксити, і відповідно людина в якої нуль досвіду з програмування не зможе критично осмислити чи той код якісний, чи то гавно код. А клієнти будуть радо хлопати в долоні і казати ось як швидко вайбкодер мені запиляв задачку!
Ось така реальність вже наступає і відповідно дев комьюніті розділилось і зараз відбувається реально революція між олдами, які руцями будували все і проходили всі етапи самостійно і між "вайбкодерами", які зараз пишуть промпти і за них все автоматично робить AI асистент.

Давайте не забувати хто ми, і що всі AI асистенти навчені на кодовій базі GItHub і StackOverflow, і сліпо довіряти чомусь не можна, бо ми тоді перестаємо бути інженерами розробниками, давайте збережемо культуру і красу написання коду і будемо передавати ці знання новачкам, не дамо поколінню "вайберів" проміняти чистий код на "чорний ящик".

Доречі залив відос не про хайпову AI тему, а стараюсь поширювати навчальний контент і все ж таки слідувати принципу вивчи програмування, а потім юзай AI.
https://vt.tiktok.com/ZSm54MpV5/
👍4😁1