🐘 PHP test has been released!
https://interviewboom.com/categories/4
Тест вже доступний для проходження, вже по новому алгоритму складності! і кількість питань і скілів буде з часом збільшуватись!
https://interviewboom.com/categories/4
Тест вже доступний для проходження, вже по новому алгоритму складності! і кількість питань і скілів буде з часом збільшуватись!
❤1🔥1
До рефакторінгу і після!
Don't over-engineer!
A good software engineer writes simple code.
Don't over-engineer!
A good software engineer writes simple code.
🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
Я знаю тут не тільк JS devs, будуть інші мови і фічі, просто тегніть в коментах ваш напрямок 😉
Чому використання for...of ефективніше ніж forEach() в JavaScript?
Цикли for...of зазвичай вважаються більш ефективними для ітерації над Arrays, Strings, Maps, Sets порівняно з forEach() при роботі з великими масивами даних. forEach() використовує callback для кожного елемента, а це overhead, оскільки коллбеки потрібно викликати для кожного елемента масиву, що збільшує використання ресурсів.
Використання await безпосередньо всередині циклу for...of дозволяє обробляти асинхронні операції послідовно. А з forEach callback з await буде виконано не послідовно а паралельно (concurrently).
Використання await разом з for...of
Використання await разом з forEach
Error exceptions в циклах for...of та forEach
Ось приклад асинхронної функції яка викидає помилку у випадку якщо в параметри буде передане значення 6.
І давайте перевіримо як це буде працювати з циклом forEach
в консолі буде виведено всі елементи масиву не дивлячись на помилку яку викидає функція і в кінці побачимо
Тоді як з for...of поведінка буде інакша:
як тільки цикл дійде до значення 6 то цикл буде зупинено через помилку. Ітерація зупиняється оскільки error був в main context. І послідовне виконання усіх ітерацій відбувається в тому самому контексті, тоді як forEach виконує незалежно кожен коллбек тому вони не блокують один одного.
А зараз трохи про JS
Чому використання for...of ефективніше ніж forEach() в JavaScript?
Цикли for...of зазвичай вважаються більш ефективними для ітерації над Arrays, Strings, Maps, Sets порівняно з forEach() при роботі з великими масивами даних. forEach() використовує callback для кожного елемента, а це overhead, оскільки коллбеки потрібно викликати для кожного елемента масиву, що збільшує використання ресурсів.
Використання await безпосередньо всередині циклу for...of дозволяє обробляти асинхронні операції послідовно. А з forEach callback з await буде виконано не послідовно а паралельно (concurrently).
Використання await разом з for...of
for (const item of items) {
await doSomethingAsync(item);
}Використання await разом з forEach
items.forEach(async (item) => {
await doSomethingAsync(item);
});Error exceptions в циклах for...of та forEach
Ось приклад асинхронної функції яка викидає помилку у випадку якщо в параметри буде передане значення 6.
const items = [
1,3,4,4,3,2,5,6,2,23,5,6,7
];
const doSomethingAsync = async (it) => {
return new Promise((res, reject) => {
setTimeout(() => {
if (it === 6) {
reject(new Error('6 is not available'));
}
console.log(it, 'it');
res();
}, 100);
})
}
І давайте перевіримо як це буде працювати з циклом forEach
(async () => {
items.forEach(async (item) => {
await doSomethingAsync(item);
});
})();в консолі буде виведено всі елементи масиву не дивлячись на помилку яку викидає функція і в кінці побачимо
Uncaught (in promise) Error: 6 is not availableТоді як з for...of поведінка буде інакша:
(async () => {
for (const item of items) {
await doSomethingAsync(item);
}
})();як тільки цикл дійде до значення 6 то цикл буде зупинено через помилку. Ітерація зупиняється оскільки error був в main context. І послідовне виконання усіх ітерацій відбувається в тому самому контексті, тоді як forEach виконує незалежно кожен коллбек тому вони не блокують один одного.
❤6👏4
Невеличкий нічний стрім на YT, проходимо тести на сайті
https://youtube.com/live/0_G5VwwpVYc?feature=share
https://youtube.com/live/0_G5VwwpVYc?feature=share
YouTube
Сайт для швидкої перервірки знань перед технічною співбесідою interviewboom
Привіт я створив сайт для програмістів, для підготовки до технічних співбесід
Спробуємо такий формат?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Вашу фічу (яку ви вже змержили в master гілку) потрібно терміново задеплоїти на продакшн, але в master є ще 10 непотрібних зараз фіч. Як діяти?
Anonymous Quiz
70%
Створити hotfix-гілку від останньої продакшн версії, cherry-pick свого PR, пройти CI/QA й задеплоїти
0%
Задеплоїти master цілком, щоб пришвидшити процес
5%
Зробити revert в мастері всіх змін яких ще немає на продакшн, окрім вашої фічі і задеплоїти мастер
25%
Створити нову гілку від мастера і там зробити reset усіх змін до вашого коміта, задеплоїти на прод
Dev community interviewboom
Наступна фіча буде можливості вибору скілів/фіч, які вас цікавлять перед тим як проходити тест
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Dev community interviewboom
Тест по Soft Skills готовий! Питання будуть додаватись ще, але це не заважає спробувати вже зараз!
Мабуть варто проходити без таймера, а взагалі знаю що англійською тяжко, чи варто додати переклад на українську, щоб питання і відповіді зручно читати і кращє розуміти на рідній мові?
Тренування читання англійської мови дуже корисно, але чи варто робити переклад дайте плюс
Мабуть варто проходити без таймера, а взагалі знаю що англійською тяжко, чи варто додати переклад на українську, щоб питання і відповіді зручно читати і кращє розуміти на рідній мові?
Тренування читання англійської мови дуже корисно, але чи варто робити переклад дайте плюс
❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Нарешті! Я обіцяв що буде перегляд відповідей теста, Done! ✅
Тепер ви можете переглядати кожне питання і правильні відповіді на нього!
Next task: Можливість вибору скілів перед початком теста WIP.
Тепер ви можете переглядати кожне питання і правильні відповіді на нього!
Next task: Можливість вибору скілів перед початком теста WIP.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Anonymous Poll
100%
Все зрозуміло, вибрав скіли які мені цікаві і почав тест
0%
Складно, заплутано, не подобається
0%
Подобається, але є рекомендації як покращити
Всім привіт! Планую організувати стрім на тему челленджів при проходженні технічних співбесід і не тільки:
- Як діяти якщо мало досвіду, стратегія пошуку роботи в умовах високої конкуренції.
- Як підвищити свої шанси на успіх на співбесіді.
- Стрес і вигорання, які є шляхи пошуку баланса щоб не втрачати ентузіазм і мотивацію.
- Зона комфорту, чому це небезпечно для вашої кар'єри
- Досвід використання AI LLMs для програмування
До зв'язку!
- Як діяти якщо мало досвіду, стратегія пошуку роботи в умовах високої конкуренції.
- Як підвищити свої шанси на успіх на співбесіді.
- Стрес і вигорання, які є шляхи пошуку баланса щоб не втрачати ентузіазм і мотивацію.
- Зона комфорту, чому це небезпечно для вашої кар'єри
- Досвід використання AI LLMs для програмування
До зв'язку!
❤3
👉 Є такі дуже цікаві і не розкриті теми: це System Design Frontend і System Design Backend.
Не раз бувало що технічна співбесіда проходила успішно, але на етапі співбесіди з клієнтом були фейли через не знання як їх використати на практиці. Ці топіки для розробників як інженерів важливі, щоб розвивати культуру якісного коду. Дайте лайк якщо цікаво, спробую сформувати тести в контексті сучасних технологій і requirements.
Не раз бувало що технічна співбесіда проходила успішно, але на етапі співбесіди з клієнтом були фейли через не знання як їх використати на практиці. Ці топіки для розробників як інженерів важливі, щоб розвивати культуру якісного коду. Дайте лайк якщо цікаво, спробую сформувати тести в контексті сучасних технологій і requirements.
❤10👍1
Dev community interviewboom
👉 Є такі дуже цікаві і не розкриті теми: це System Design Frontend і System Design Backend. Не раз бувало що технічна співбесіда проходила успішно, але на етапі співбесіди з клієнтом були фейли через не знання як їх використати на практиці. Ці топіки для…
This media is not supported in your browser
VIEW IN TELEGRAM
Перша, це те що скоро запустимо другу версію тестів, це означатиме що всі хто вже використав свої 3 спроби на кожен з тестів матиме ще додаткові 3 спроби!
Друга це ми нарешті релізнули нову фічу! Це вибір скілів/фіч, які вам актуальні, таким чином ви обираєте самостійно цікаві вам топіки і під них буде сформований тест.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⏳ Працюю над можливістю проходити тест разом під час трансляції, я буду шарити з вами лінк на тест, і зможемо разом проходити тест, ви зможете відповідати на питання в режимі реального часу, а потім зробим ревью всіх відповідей. І роботу над помилками, Дайте лайк якщо цікаво спробувати 👍🏻
👍5
І це робиться не навмисно, а тому, що його навчили так в Інтернеті, де факти змішані з вигадками.
Сподобалась ця думка, досить чітко пояснює парадокс чому GPT-5 модель не стала ніяким революційним кроком, а в деяких випадках результати відчуваються значно гіршими ніж в GPT-4. Вся справа в даних на яких ці моделі тренуються. З кожним роком інформації стає більше і її складніше відділити від фейків, хайпу не обґрунтованих висновків. AI перетворюється на людину яка знає дуже багато, але розуміє все менше.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Update: Будемо бачити кількість юзерів які проходять тестування в real time, реалізацію спробуємо через Server-Sent Events (SSE). Дизайнер переконує що це не зовсім зрозуміло в чому сенс, тому це буде експерементальний значок, що думаєте?
👍4
🌟 Як уникнути God Class і High Coupling антипатернів або коли код перетворюється в спагеті
Проблема стосується не тільки React, але й усіх технологічних стеків. Коли ваші класи, компоненти або сервіси розростаються, ви повинні вирішити, як їх декомпозувати та зменшити витрати на обслуговування (maintenance overhead), підтримку. Саме тут на допомогу приходять software design та system design.
Складність буває глибока, коли в одному компоненті накопичено дуже багато складної логіки. Складна логіка це коли 1 блок коду відповідає за вирішення багатьох бізнес задач/сценаріїв одночасно. Функція обростає стількома залежностями і різними варіантами її вирішення в різних сценаріях що кількість коду сягає 1 тис. і більше строк коду. Наприклад 1 функція одразу вирішує підрахунок ціни товарів у корзині онлайн магазина і вирішує чи даний товар відноситься до категорії акційних і як рахувати ціну для авторизованих, не авторизованих і т.д.
А також буває лінійна складність, де 1 блок коду вирішує одну конкретну задачу, але вирішення включає велику кількість кодової бази. Наприклад 1 функція вирішує як рахувати ціну товара але алгоритм підрахунку ціни ускладнюється з появою нових умов і обростає залежностями, кожна лінія коду потрібна для вирішення 1 конкркетної задачі, але цих ліній коду стає дедалі більше і призводить до величезного не читабельного файлу.
Як тільки ми визначили тип складності, наступний крок це декомпозиція:
Для глибокої складності де 1 блок коду (функція, клас, компонент, сервіс) вплутаний у різні бізнес сценарії потрібно виносити кожен окремий кейс в окремий блок, наприклад винести в іншу функцію підрахунок ціни акційного товара. Таким чином щоб зміна логіки підрахунку акційного товара не впливала на інші сценарії.
Для лінійної складністі: послідовний список операцій розділяти на менші під-групи. Нариклад алгоритм підрахунку ціни включає: визначення країни юзера, визначення валюти і курсу, конвертація по курсу, додавання скидок і націнок. Ми просто виносимо валютні операції в іншу функцію, дисконти в іншу і т.д. При цьому назва функції одразу описує за що відповідає код в ній і спрощує/пришвидшує читання коду. Наприклад нам не потрібні зараз валютні оперції, нам треба чекнути функціонал дисконту, відповідно ми просто скіпнули функцію по валютам не читаючи в ній код.
Дану тему я планую розкрити в своїх майбутніх відео по рефакторінгу, якщо цікаво то став лайк!
Проблема стосується не тільки React, але й усіх технологічних стеків. Коли ваші класи, компоненти або сервіси розростаються, ви повинні вирішити, як їх декомпозувати та зменшити витрати на обслуговування (maintenance overhead), підтримку. Саме тут на допомогу приходять software design та system design.
Складність буває глибока, коли в одному компоненті накопичено дуже багато складної логіки. Складна логіка це коли 1 блок коду відповідає за вирішення багатьох бізнес задач/сценаріїв одночасно. Функція обростає стількома залежностями і різними варіантами її вирішення в різних сценаріях що кількість коду сягає 1 тис. і більше строк коду. Наприклад 1 функція одразу вирішує підрахунок ціни товарів у корзині онлайн магазина і вирішує чи даний товар відноситься до категорії акційних і як рахувати ціну для авторизованих, не авторизованих і т.д.
А також буває лінійна складність, де 1 блок коду вирішує одну конкретну задачу, але вирішення включає велику кількість кодової бази. Наприклад 1 функція вирішує як рахувати ціну товара але алгоритм підрахунку ціни ускладнюється з появою нових умов і обростає залежностями, кожна лінія коду потрібна для вирішення 1 конкркетної задачі, але цих ліній коду стає дедалі більше і призводить до величезного не читабельного файлу.
Як тільки ми визначили тип складності, наступний крок це декомпозиція:
Для глибокої складності де 1 блок коду (функція, клас, компонент, сервіс) вплутаний у різні бізнес сценарії потрібно виносити кожен окремий кейс в окремий блок, наприклад винести в іншу функцію підрахунок ціни акційного товара. Таким чином щоб зміна логіки підрахунку акційного товара не впливала на інші сценарії.
Для лінійної складністі: послідовний список операцій розділяти на менші під-групи. Нариклад алгоритм підрахунку ціни включає: визначення країни юзера, визначення валюти і курсу, конвертація по курсу, додавання скидок і націнок. Ми просто виносимо валютні операції в іншу функцію, дисконти в іншу і т.д. При цьому назва функції одразу описує за що відповідає код в ній і спрощує/пришвидшує читання коду. Наприклад нам не потрібні зараз валютні оперції, нам треба чекнути функціонал дисконту, відповідно ми просто скіпнули функцію по валютам не читаючи в ній код.
Дану тему я планую розкрити в своїх майбутніх відео по рефакторінгу, якщо цікаво то став лайк!
👍3❤1