Результати пошуку за запитом: курс - практикум по frontend разработке*
4 найкращі блоги з front-end розробки
Автор: Anita Soczka
Интернет, а соответственно и сфера веб разработки, быстро и постоянно изменяется. Если ты front-end разработчик, тогда скорее всего, ты знаешь, что нужно быть в курсе новостей (уж поверь!), уметь работать с новыми инструментами, тенденциями и бизнес-процессами. Все самое важное ты сможешь найти в Интернете, но будь осторожен, поскольку в сети много ненужного мусора. Какие же блоги по front-end технологиям наилучшие?
Ежедневно публикуются сотни постов и статей. Все они беспорядочны и можно сойти с ума, пытаясь поспеть за всем. Прочитать их все просто невозможно. Более того, не нужно читать все в подряд. Именно поэтому я попросил людей из компании Merixstudio выделить лучшие технические блоги по front-end разработке, которые стоит читать, и они собрали лучшие ресурсы новостей и тенденций в мире веб разработки.
Ранее я уже публиковал статью о самых влиятельных блогах, ориентированных на технологии и веб разработку в целом. На этот раз буду подробно рассказывать о лучших front-end ресурсах (порядок сайтов случайный).
Speckyboy
Сайт позиционирует себя как журнал веб дизайна, но Paul Andrew – основатель Speckyboy – концентрируется не только на дизайн-ресурсах, но также предоставляет полезную информацию о новейших веб технологиях. Блог, безусловно, является отличным источником информации для ежедневного использования front-end разработчиком – блог предлагает отличные посты, справочники, разные источники информации и мотивирующий контент со всего мира.
• #11,771 по рейтингу Alexa Rank*
• 54,143 подписчиков на Facebook
• 75,150 подписчиков на Twitter
CSS-Tricks
Если ты хочешь улучшить свои навыки в области веб дизайна и веб разработки, тебе стоит подписаться на CSS-Tricks, который ведет интернет-гуру Chris Coyier. Это кладезь знаний по веб разработке, который непременно повысит уровень представляемого тобой веб контента. CSS-Tricks в основном фокусируется на темах, связанных с CSS. Блог предоставляет фрагменты кода, «прорывные» статьи, видео, учебные курсы, подкасты и многое другое.
• #1,253 по рейтингу Alexa Rank*
• 67,776 подписчиков на Facebook
• 298,126 подписчиков на Twitter
Codrops
Codrops можно назвать одним из самых новых и быстро растущих сайтов с документацией в сфере информационных технологий. Каждый front-end разработчик и веб дизайнер может найти много полезных материалов и фрагментов кода на Сodrops. Он также охватывает общие темы веб-разработки и веб-дизайна. Блог ведется всего лишь двумя дизайнерами – фанатами своего дела – Manoela Ilic и Pedro Botelho. Ко всем преимуществам блога можно добавить красивое оформление сайта. Этот блог стоит посещать, чтобы обучаться новым хитростям и тенденциям в индустрии.
• #3,197 по рейтингу Alexa Rank*
• 89,619 подписчиков на Facebook
• 164,845 подписчиков на Twitter
Todd Motto’s blog
Todd работает на позиции Developer Advocate в компании Telerik. Todd – основатель Ultimate Angular, а также Developer Expert в Google, спикер на конференциях и сторонник проектов с открытым кодом. В целом, он пишет на Angular и JavaScript. Его самоуверенный гид по командному стилю работы с AngularJS приобрел очень большую популярность на Reddit и Hacker News. Его блог отличный ресурс для подпитки собственных знаний, особенно, если ты заинтересован именно в таких технологиях, как Angular и JavaScript.
• #44,788 по рейтингу Alexa Rank*
• 1140 подписчиков на Facebook
• 30,396 подписчиков на Twitter
Очень важно, чтобы ты нашел свой собственный, уникальный способ отслеживать нужную тебе информацию. Так что, читай книги, журналы, отслеживай в Twitter людей, которые создают новые тенденции, смотри видеоматериалы, посещай конференции, общайся с единомышленниками и создавай новое!
*Alexa Rank – глобальный рейтинг трафика, учитывающий, как число посетителей, так и число просмотров страниц. Предоставляется компанией Alexa Internet.
Оригинал: www.merixstudio.com.
Страх профнепридатності та професійного вигоряння
Автор: Дмитро Хорошилов
Введение
Абсолютно все чего-нибудь боятся, это заложено в наших генах и от этого никуда не уйдешь.
У каждого из нас есть свои страхи, кто-то открыто их признает и борется с ними, у кого-то они живут в тайных уголках души. Но порой бывают ситуации, когда они выбираются наружу и одолевают нас, вот тогда мы и пытаемся найти пути избавления от них.
Казалось бы, разработчиков это должно касаться в меньшей степени, при возникновении бага в приложении еще никто не умирал. Но и при такой непыльной работе в умах начинающих и неопытных девелоперов рождаются страхи – как мнимые, так и вполне реальные, с которыми стоит бороться.
Одним из самых распространенных страхов является страх профнепригодности и профессионального выгорания. Далее в этой статье мы разберем по полочкам основные причины его возникновения и способы борьбы с ними.
На сегодняшний день IT-сфера является самой динамичной и постоянно развивающейся, и во избежание профнепригодности вам нужно развиваться вместе с ней.
С проблемой профнепригодности мы сталкиваемся еще со студенческой скамьи. Не успел закончить университет и получить диплом, как твоя специальность утратила популярность и ты остался на обочине индустрии с дипломом о высшем образовании в сфере, не имеющей дальнейших перспектив в развитии.
Если ты начинающий разработчик, самостоятельно выучивший пару-тройку технологий или прошедший специализированные курсы, который не применял полученные навыки и знания в реалиях суровых будней, то, скорее всего, в первое время, при приеме на работу ты впадаешь в ступор. Ты еще не успел понять архитектуру проекта, все используемые технологии, шаблоны и их связки, и ты просишь немного времени на так называемую адаптацию, но после нее ясность не приходит. У тебя начинает накатываться снежный ком, и ты опять в яме, оставшись один на один со своими вопросами.
Когда же ты уже опытный разработчик, тебе может показаться, что достаточно того, что тебе необходимо попросту справляться со своими должностными обязанностями, коммитить код и закрывать таски в назначенные сроки. Но ты как никто другой должен понимать, что, не прочитав о той или иной новой технологии, не использовав новую программу или технологию, ты как разработчик теряешь стоимость на рынке. Так как молодые и зубастые девелоперы через месяц, могут занять твое место, показав себя более ценными сотрудниками.
Касательно профессионального выгорания все довольно-таки просто. Ему подвержен каждый и основная причина такой беды – застой и рутина на работе, отсутствие новых интересных тасков, однотипность поставленных задач.
Начинающие IT-специалисты понимают это лучше других, поскольку попав на работу на позицию Trainee или Junior Developer на них сбрасывается масса тасков, накопившихся в компании, которые более или менее опытные разработчики не хотят или попросту ленятся делать. А молодежь, наслышанная о невероятных возможностях IT сферы, остается разочарованной данным положением вещей и через небольшой промежуток времени ищет другие варианты реализации себя, как специалиста.
Довольно часто выгоранию подвержены фрилансеры, уставшие от однообразности задач, предлагаемых заказчиками. Потребности рынка в новых уникальных программах и сайтах очень малы, поэтому основное количество работы не предполагает особого творчества. Тебя затягивает рутина и интерес пропадает.
Распространенной причиной профессионального выгорания является осознание бесцельности и ненужности своей работы. После нескольких месяцев упорной работы над проектом, перелопатив тонны кода и исправив не меньше багов, твое приложение все-таки заработало, вдруг оказывается, что надобности в нем уже нет и этот проект откладывается в длинный черный ящик на неопределенный срок. Мотивация работы падает и, наконец, исчезает совсем.
Одним из признаков профессионально выгорания считается появление мыслей: «Я устал», «Я мог бы работать эффективней и быстрее», «Мне скучно». Также, по истечению времени ты вдруг осознаешь, что IT – это сложно, хотя по работе ты все успеваешь делать и укладываешься в дедлайны.
Чтобы бороться и с одним, и с другим, нужно постоянно находиться в движении, постоянно заставлять свой мозг решать новые задачи, изучать новые библиотеки и frameworks. У большинства на такой стиль жизни может не хватить силы воли, поэтому обзаведитесь планировщиком задач, попросите отдельного внимания у тимлида, запишитесь на курсы повышения квалификации. Это все поможет вам переместиться в новую обстановку и даст новые возможности для проявления главной способности вашего мозга и всей нервной системы – получать новые раздражители от окружающей среды.
Иногда новые таски, обстановка и остальное не решают этой проблемы. Тогда стоит задуматься о своем проекте. Поможет или нет, это уже личное дело каждого.
Мови програмування 2026: зростання TypeScript і Rust та нові тренди ринку
Автор: Редакція ITVDN
Світ розробки програмного забезпечення змінюється швидше, ніж будь-коли. Якщо ще кілька років тому вибір технологій був переважно питанням особистих уподобань або корпоративних стандартів, то у 2026 році він дедалі більше визначається вимогами до безпеки, масштабованості та швидкості доставки продукту.
На передній план виходять дві технології з різною філософією — TypeScript і Rust. Паралельно з ними активно зростають Go, Kotlin, Swift та кілька молодших, але перспективних гравців.
Розглянемо, що відбувається з мовами програмування у 2026 році — і як ці зміни впливають на розробників, тестувальників та IT-команди.
Глобальна аналітика: що кажуть звіти та індекси
Щороку кілька великих індустріальних досліджень формують уявлення про реальну картину ринку. Серед них особливо виділяються опитування Stack Overflow, звіти GitHub Octoverse та індекс популярності мов від TIOBE.
Узагальнена картина виглядає так:
TypeScript демонструє стрімке зростання й уже випереджає JavaScript за кількістю активних комерційних проєктів.
Rust кілька років поспіль утримує статус “найулюбленішої технології” серед розробників.
Python залишається універсальним лідером за загальною кількістю користувачів, але саме TypeScript і Rust показують найцікавішу динаміку в професійному середовищі.
Це важливий сигнал: ринок рухається від простої популярності до якості інструментів і довіри до технологій.
TypeScript: професійна надбудова над JavaScript
Технічно TypeScript не є окремою мовою програмування — це надмножина над JavaScript, яка додає статичну типізацію, інтерфейси та розширені можливості для побудови великих застосунків.
Проте в професійній спільноті його дедалі частіше називають мовою програмування — через власну екосистему, синтаксичні можливості та незалежну роль у сучасних проєктах.
Чому TypeScript так швидко став стандартом?
статична типізація дозволяє знаходити помилки ще під час розробки
великі команди легше підтримують складні кодові бази
більшість сучасних фреймворків орієнтовані саме на TypeScript
типізований код краще аналізується AI-інструментами
У результаті TypeScript став ключовим інструментом для frontend-, full-stack-розробників і QA-інженерів, що працюють з автоматизацією веб-застосунків.
Rust: безпека і продуктивність без компромісів
Rust представляє інший підхід — системне програмування з акцентом на безпеку памʼяті без використання garbage collector.
Серед ключових переваг:
захист від memory-вразливостей на рівні компілятора
продуктивність, порівнювана з C/C++
сучасний інструментарій і продумана екосистема
Rust активно використовують у cloud-native сервісах, WebAssembly, blockchain-проєктах та високонавантажених backend-системах. Попри складніший поріг входу, більшість розробників, які освоїли Rust, не хочуть повертатися до альтернатив.
Інші мови, що набирають обертів
Окрім TypeScript і Rust, у 2026 році помітно зростають:
Go — фаворит DevOps та хмарної інфраструктури.
Kotlin — поступово витісняє Java в Android і заходить у backend.
Swift — стабільна основа iOS-екосистеми.
Julia, Zig, Elixir — нішеві рішення для науки про дані, low-level систем і розподілених застосунків.
Про зрілі мови: C#, Java та Python нікуди не зникли
Важливо не створювати хибного враження, що поява TypeScript і Rust означає занепад класичних мов.
Насправді C#, Java та Python залишаються основою величезної частини світової розробки.
Їхній розвиток перейшов у фазу зрілості:
темпи зростання сповільнилися
але обсяг існуючих систем — колосальний
мільйони продакшн-проєктів продовжують підтримуватися саме на цих мовах
Python домінує у data science, machine learning та автоматизації.
Java і C# залишаються ключовими мовами enterprise-сектору, банківських систем і корпоративних платформ.
Сумарно ці мови становлять левову частку всієї комерційної розробки у світі.
Зростання TypeScript і Rust не означає витіснення C#, Java чи Python — це радше диверсифікація стеків: сучасні команди дедалі частіше комбінують зрілі мови з новішими інструментами залежно від задач.
Чому рейтинги різні?
Аналітичні платформи вимірюють різні речі: пошуковий інтерес, активність у репозиторіях або субʼєктивні оцінки розробників. Саме тому позиції мов відрізняються між рейтингами.
Проте перетин усіх джерел показує чітку тенденцію: TypeScript і Rust стабільно входять до числа технологій, які активно обирають професійні команди.
Практичні рекомендації для IT-фахівців
Для розробників
веб і full-stack: JavaScript + TypeScript
backend і системні рішення: Rust або Go
Для QA-інженерів
TypeScript корисний для автоматизації тестування та інтеграційних сценаріїв у веб-проєктах.
Для DevOps
Go та Rust дедалі частіше стають основою для створення інструментів і мікросервісів.
Для початківців
Якщо ви тільки входите у веб-розробку, починати варто саме з JavaScript.
Оптимальний шлях:
спочатку JavaScript (синтаксис, async, DOM, базові концепції)
потім TypeScript як інструмент професійного рівня для великих проєктів
Висновок
JavaScript залишається фундаментом сучасного вебу, а TypeScript став його професійним надбудовним стандартом.
Rust формує нове покоління безпечного та продуктивного системного програмування.
Водночас C#, Java та Python продовжують утримувати левову частку реального production-коду у світі.
2026 рік чітко показує: нові технології не замінюють старі — вони доповнюють їх.
Для IT-фахівців це означає одне: сучасний стек — це комбінація перевірених мов і нових інструментів. А інвестуючи час у TypeScript, Rust та фундаментальні технології сьогодні, ви суттєво підвищуєте свою цінність на ринку завтра.
Вебінари Артема Мураховського з програмування на Python
Автор: Редакція ITVDN
Коли людина робить те, що вона любить, що вона сама обрала як свою справу, вона надихає інших жити і творити.
Таким був Артем Мураховський. Він працював Python розробником, у вечірній час проводив курси по пайтон у CyberBionic Systematics і провів декілька класних вебінарів на ITVDN.
На жаль, Артем загинув у березні цього року в боях під Авдіівкою, захищаючи Україну. На згадку про нього ми підготували добірку його вебінарів. Дивіться. Тут він живий. Слава герою!
Чи варто вчити Python?
Python – вельми популярна мова програмування, яка широко використовується у різних напрямках ІТ-розробки: серверна веб-розробка, десктопні та мобільні додатки, ігри, Data Science, ML, тестування ПЗ, спрощення адміністрування ОС тощо.
На вебінарі ви дізнаєтеся, хто такий Python розробник і що він робить, які знання, вміння та навички йому потрібні, з чого розпочати та як спланувати своє навчання за даним фахом, а також отримаєте корисні поради і підбірку літератури.
Прогноз погоди мовою Python
Інтенсивний тренінг зі створення Telegram-бота, який сповіщує вас про актуальну погоду. Мінімум теорії, максимум практики – підійде як новачкам, які не знайомі з програмуванням, так і розробникам-початківцям, що прагнуть випробувати себе.
Ви познайомитеся з базовим синтаксисом Python, навчитеся працювати із запитами, дізнаєтесь, що таке API і скористаєтесь Telegram API, створите бота для Telegram і навчитеся використовувати існуючі сервіси для прив'язки до вашого додатку.
BlackJack мовою Python
Інтенсивний тренінг зі створення карткової гри BlackJack для новачків та розробників-початківців. Ви навчитеся:
Писати просту програму на Python, повторюючи діі тренера.
Розбивати задачі на дрібні підзадачі і успішно їх вирішувати.
Проектувати архітектуру програми.
Писати програми на рівні класів.
Вирішувати алгоритмічні задачі.
Розуміти призначення патернів проектування.
Автоматизація парсингу сайтів
Інформація – це нафта 21-го століття. На вебінарі ми розглянемо один із найпоширеніших підходів збору та обробки інформації – парсинг сайтів (мовою Python).
Ми візьмемо один із популярних сайтів із робочими вакансіями і на його прикладі розберемо бібліотеки для парсингу веб-сайтів, бібліотеки для роботи із запитами. Розберемо види популярних баз даних і зрозуміємо, де і яку потрібно використовувати.
Швидко вчимося рахувати у двійковій та шістнадцятковій системі
Автор: Костянтин Чорний
Вступ
Іноді виникає потреба швидко прочитати чи записати числа у двійковій чи шістнадцятковій системі числення, наприклад, працюючи з різними байтовими редакторами, під час розрахунків формул з побітовими операціями чи роботі з кольором. Часто в таких ситуаціях немає можливості довго переводити числа за допомогою формул або калькулятора. Про швидкі способи переходу між системами числення йтиметься у цій статті.
Перехід від десяткової системи до двійкової
Перший випадок – рахуємо від десяткової системи до двійкової. Основне, що потрібно пам'ятати в даному випадку – це ряд ступенів двійки (1, 2, 4, 8, 16, 32, 64, 128 і т. д.). Навіть якщо його ви не знаєте, то можна просто кожне наступне число множити на двійку. Оскільки молодші розряди йдуть праворуч, а старші – ліворуч, то їх записуватимемо у зворотному порядку справа наліво.
Для прикладу будемо переводити число 115. Далі дивимося, якщо значення розряду вміщується в число, то віднімаємо від нього це значення і ставимо в цьому розряді 1, інакше ставимо 0.
Зворотний переклад ще простіше – треба підсумувати всі значення розрядів, які відзначені одиничками: 64+32+16+2+1=115.
Перехід до шістнадцяткової системи
Тепер давайте розберемося із шістнадцятковою системою. Маючи на увазі те, що кількість чисел, які кодуються тетрадою (4 біти) і одним шістнадцятковим символом співпадають, відповідно кожен символ кодує одну двійкову тетраду.
В результаті одержали число 0х73. Головне пам'ятати, що А=10, B=11, C=12, D=13, E=14, F=15.
Якщо є потреба перевести десяткове число в шістнадцяткове або навпаки, то тут найпростіше спочатку буде перевести число в двійкове уявлення, а потім тільки в шістнадцяткове або десяткове відповідно.
У результаті ми навчилися швидко переводити числа з однієї системи числення до іншої. Головне, що потрібно пам'ятати – ступені двійки і вміти гарно додавати та віднімати. Детальніше про машинну математику ви можете дізнатись у другому уроці курсу C# Стартовий.
Попрактикуйтеся самостійно і переведіть кілька чисел з однієї системи до іншої, звіряючись з калькулятором. Трохи практики – і ви всьому навчитеся.
100+ питань з Python для Junior, Middle та Senior
Автор: Редакція ITVDN
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 30 сентября 2020 года. Оригинальная версия на украинском языке доступна по ссылке.
Редакция DOU пообщалась с разработчиками, которые проводят технические собеседования Python-специалистов для различных уровней, и собрала примерный список вопросов к кандидатам. Конечно, он не является исчерпывающим, однако содержит типичные вопросы.
Вопросы для Junior
От джуниоров требуют знать и уметь применять базовые структуры данных и модули, простейшие запросы к базам данных, знать простейшие команды системы контроля версий и тому подобное.
Общее по Computer Science и Web Development:
1. Что такое инженерия и процесс разработки в целом?
2. Какие знаете принципы программирования?
3. Чем отличаются процедурная и объектов-ориентированная парадигмы программирования?
4. Какие основные принципы ООП (наследование, инкапсуляция, полиморфизм)?
5. Что такое множественное наследование?
6. Какие есть шесть этапов разработки продукта в Software Development lifecycle и какая разница между Agile и Kanban?
7. Какие есть методы HTTP-запросов и какая между ними разница?
8. Как выглядят HTTP-request / response?
9. Что такое авторизация и как она работает?
10. Что такое cookies?
11. Что такое веб уязвимость?
12. Какие знаете классические базы данных?
13. Как читать спецификацию в конкретном языке (например, PEP8 в Python)?
14. Как происходит взаимодействие клиента и сервера?
15. Какие есть подходы к проектированию API?
16. Как использовать паттерны программирования?
17. Что такое Acceptance Testing и зачем его используют?
18. Что такое модульные и интеграционные тесты, API-тесты?
19. Как писать unit-тесты?
20. Какие есть best practices в написании автотестов?
21. Какие базовые команды системы контроля версий?
22. Как использовать Git?
23. В чем разница между хешированием и шифрованием?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Базовый, Python Углублённый, Основы работы с Git.
Python:
24. Python - интерпретируемый язык или компилируемый?
25. Какие есть меняющиеся и постоянные типы данных?
26. Что такое область видимости переменных?
27. Что такое introspection?
28. Разница между is и ==?
29. Разница между __init __ () и __new __ ()?
30. В чем разница между потоками и процессами?
31. Какие есть виды импорта?
32. Что такое класс, итератор, генератор?
33. Что такое метакласс, переменная цикла?
34. В чем разница между итераторами и генераторами?
35. В чем разница между staticmethod и classmethod?
36. Как работают декораторы, контекстные менеджеры?
37. Как работают dict comprehension, list comprehension и set comprehension?
38. Можно ли использовать несколько декораторов для одной функции?
39. Можно ли создать декоратор из класса?
40. Какие есть основные популярные пакеты (requests, pytest, etc)?
41. Что такое lambda-функции?
42. Что означает *args, **kwargs и как они используются?
43. Что такое exceptions, <try-except>?
44. Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP 8, PEP 484)?
45. Напишите hello-world сервис, используя один из фреймворков.
46. Какие есть типы данных и какая разница между list и tuple, зачем они?
47. Как использовать встроенные коллекции (list, set, dictionary)?
48. В чем заключается сложность доступа к элементам dict?
49. Как создается объект в Python, для чего __new__, зачем __init__?
50. Что знаете из модуля collections, какими еще built-in модулями пользовались?
51. Что такое шаблонизатор и как в нем выполнять базовые операции (объединять участки шаблона, выводить дату, выводить данные с серверной стороны)?
52. Как Python работает с HTTP-сервером?
53. Что происходит, когда создается виртуальная среда?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Python Стартовый (урок 2, урок 4-8), Python Базовый (урок 1, урок 6, урок 7, урок 9), Python Углублённый (урок 1, урок 4).
Базы данных:
54. Какие есть базовые методы работы с SQL- базой данных в Python?
55. Что такое SQL-транзакция?
56. Как сделать выборку из SQL-базы с простой агрегацией?
57. Как выглядит запрос, который выполняет JOIN между таблицами и к самим себе?
58. Как отправлять запросы в SQL-базу данных без ORM?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Алгоритмы:
59. Что такое алгоритмы (например, Big-O notation)?
60. Какие есть базовые алгоритмы сортировки?
61. Что такое Bubble Sort и как это работает?
62. Что такое линейная сложность сортировки?
Вопросы для Middle
Если джуниору все надо подсказывать и помогать, то мидл может самостоятельно взять что-то новое и быстро его изучить и понять. У него накоплено достаточно знаний и опыта, чтобы быстро овладевать новым. Он может прийти и обсудить с опытным разработчиком, проконсультироваться, но окончательных решений не принимает.
Обычно у мидлов спрашивают:
63. Ориентируетесь ли в *nix, можете ли написать скрипты/автоматизацию для себя и коллег?
64. Что такое многопоточность?
65. Что такое архитектура веб сервисов?
66. Как работает современное нагруженное веб приложение (нарисовать и обсудить примерную архитектуру, например, Twitter или Instagram)?
67. Что нужно для сайта / сервиса среднего размера (redis \ celery \ кэш \ логирование \ метрики)?
68. Как написать, задеплоить и поддерживать (микро) сервис?
69. Как масштабировать API?
70. Як проводить Code review?
71. Что такое абстрактная фабрика, как ее реализовать и зачем ее применяют?
72. Что такое цикломатическая сложность?
Python:
73. Async Python: как работает, зачем, что под капотом?
74. Сравнить асинхронные web-фреймворки.
75. Что такое модель памяти Python?
76. Что такое SQLAlchemy (Core и ORM частей) и какие есть альтернативы?
77. Принципы работы и механизм Garbage collection, reference counting?
78. Как работает thread locals?
79. Что такое _slots_?
80. Как передаются аргументы функций в Python (by value or reference)?
81. Что такое type annotation?
82. Для чего используют нижние подчеркивания в именах классов?
83. Статические анализаторы: Flake8, Pylint, Radon.
Ответы на некоторые из этих вопросов вы можете найти в видео курсе Python Углублённый (урок 3).
Базы данных:
84. Разница между SQL и NoSQL?
85. Как оптимизировать SQL-запросы?
86. Какие есть уровни изоляции транзакций?
87. Какие есть виды индексов?
88. Точечные вопросы по выбору БД, движков БД?
89. Front-end: есть ли опыт работы с «современным» JS (Babel, Webpack, TS, ES)?
90. DevOps: работали ли с Docker-контейнерами, объяснить основные термины K8s (кластер, pod, node, deployment, service), что такое Kibana?
91. Алгоритмы: что такое временная сложность алгоритма (time complexity)?
92. Углубленные знания Linux: как зайти на внешний сервер, работать с пакетами, настроить среду и выполнять операции?
93. Специфично для Data Science: как работать с пакетами для обработки и визуализации данных (NumPy, Pandas и другие)?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Вопросы для Senior
На собеседованиях с Senior`ами обычно мало говорят о теоретической стороне технологии, больше обсуждают конкретный опыт разработчика. Поэтому формализованных вопросов здесь нет. Однако, примером могут быть:
94. Что такое @property?
95. Каким образом можно запустить код на Python параллельно?
96. Как работать с stdlib?
97. Какие задачи решали с помощью метаклассов?
98. Что такое дескрипторы?
99. Знания других языков, кроме Python (опыт).
100. Какие технологические особенности реализации распределенных систем?
101. Какие есть низкоуровневые особенности языков и фреймворков?
102. Способы и методы управления памятью.
Бонус. Практические задания
1. Спроектировать клон Instagram. Это сервис, который понятен практически любому кандидату, даже если у него нет аккаунта. На высоком уровне он очень прост: картинки, описания, комментарии. Поэтому что-то минимальное сможет описать и джуниор. Если кандидат претендует на высшие позиции, можно бесконечно копать вглубь, касаясь API, тротлинга запросов, защиты от фрода, построения фидов пользователя и тому подобное.
2. Дано рекурсивное определение чисел Фибоначчи, надо написать функцию, которая реализует это определение.
3. Есть база данных из трех таблиц — стандартная many-to-many схема. Нужно написать запрос, который объединяет три таблицы и возвращает определенный результат.
4. Даем ТЗ какого-то полезного микросервиса (сокращалка url-ов, поиск дубликатов картинок, поиск тегов в текстах) или функции (rate limiter). Просим кандидата рассказать, как бы он его реализовал. Это дает возможность узнать, что привык использовать специалист, насколько глубоко он знает и понимает различные технологии.
5. Написать какой-то несложный декоратор (выводит аргументы функции на экран или, например, измеряет сколько времени выполнялась функция).
6. Junior`у можно предложить реализовать задачу FizzBuzz test.
7. Для Middle+ я люблю давать несложные задачки на рекурсию. Например, есть вложенный список чисел и нужно что-то на нем посчитать (скажем, найти максимум). Также, можно предложить написать аналог deepcopy для конкретной структуры данных (tree, graph).
8. Для Senior - игра «спроектировать за 5 минут...». Это может быть Google, FB, Twitter, высоконагруженный интернет-магазин, сервис поиска, продажи и бронирования билетов, сайт новостей и тому подобное. Такая задача помогает понять, как кандидат решает проблемы, ход его мыслей, умеет ли он отделять главное от второстепенного, понять, какого он типа ( «в глубину» или «в ширину»).
9. Игра «у юзера что-то не работает». На примере спроектированной системы собеседователь придумывает ошибку с «дикими симптомами», которую очень сложно понять, воспроизвести. Но нужно быстро решить проблему.
10. Задание, которое демонстрирует знание и понимание list и dict comprehensions.
Looking at the below code, write down the final values of A0, A1, ...An.
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = sorted([i for i in A1 if i in A0])
A3 = sorted([A0[s] for s in A0])
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
A7 = [i if i%2 else 0 for i in A1 if 2 < i < 8]
','.join(str(j**2) for j in range(10)) – what is this object ?
11. Задача, в которой есть три функции, в них выполняются базовые операции (сортировка, фильтрация, поднесение массива к квадрату). Нужно упорядочить эти три функции в порядке возрастания времени, которое уходит на их выполнение.
Place the following functions below in order of their efficiency. They all take in a list of numbers between 0 and 1. The list can be quite long. An example input list would be [random.random () for i in range (100000)]. How would you prove that your answer is correct? - profiling?
def f1 (lIn):
l1 = sorted (lIn)
l2 = [i for i in l1 if i <0.5]
return [i * i for i in l2]
def f2 (lIn):
l1 = [i for i in lIn if i <0.5]
l2 = sorted (l1)
return [i * i for i in l2]
def f3 (lIn):
l1 = [i * i for i in lIn]
l2 = sorted (l1)
return [i for i in l1 if i <(0.5 * 0.5)]
То есть, на входе все функции имеют одинаковые данные, на выходе выдают одинаковый результат. Но из-за того, что внутри операции выполняются в разном порядке, время выполнения будет отличаться. Здесь нужно разбираться в алгоритмах и понимать, что происходит с твоими данными в процессе. Эту задачу может решить Junior, а может не решить и Middle. Казалось бы, такая мелочь, но когда мы работаем с большим количеством данных, важно, чтобы код был оптимизирован и программа выполнялась максимально быстро.
12. Простые задачи на статистику или логику. Например, определить угол между стрелками часов, которые показывают 8:40.
За подготовку материала редакция DOU выражает благодарность Михаилу Кашкину (Founder в Okumy и курсов по Python), Руслану Скире (Python Developer в CodeIT LLC), Бориславу Ларину (Python Developer в Prom.ua), Владимиру Обризану (Director в Design and Test Lab), Виктору Свирскому (Senior Developer в DataArt), Николаю Зорину (CTO в Jiji, проект Genesis), Владимиру Селюху (Team Lead в Prom.ua), Сергею Галабурде (Software Engineer в N-iX), Алексею Чуприкову (Lead Python Engineer в EPAM), Ивану Лучку (TL Data Science Specialist в Boosta), Олегу Новикову, Владимиру Щербинину, Роману Могилатову (Technical Leader в SoftServe), Вадиму Рудю, Натальи Кушнир, Андрею Лейцюсю, Роману Луцю и другим.
Перевел на русский язык Владислав Сверчков
300+ запитань щодо JavaScript на співбесіді
Автор: Влад Сверчков
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 21 декабря 2020 года. Оригинальная версия на украинском языке доступна по ссылке.
На этот раз предлагаем ознакомиться с актуальными вопросами, которые задают на технических интервью по JavaScript. Естественно, мы говорим о широком спектре специализаций, поэтому выбирайте свое направление и готовьтесь.
Junior
Общие:
1. Какие методы HTTP-запросов вы знаете?
2. Какие версии HTTP-протокола вам известны?
3. Какие знаете коды ответа (состояния) HTTP?
4. Что такое Cross-Origin Resource Sharing? Как устранить проблемы с CORS?
5. Что такое cookie?
6. Какой максимальный размер cookie?
7. Что означает директива use strict?
8. Чем JS отличается при работе на front-end и back-end?
9. Что такое статическая и динамическая типизации?
10. Как клиент взаимодействует с сервером?
11. Что такое REST?
12. Объяснить понятие мутабельность/иммутабельность? Какие типы являются мутабельными и наоборот?
13. Как искать ошибки в коде? Используете ли вы дебаггер?
14. Каких известных людей из мира JS знаете?
JS Core
15. Какие существуют типы данных в JS?
16. Как проверить, является ли объект массивом?
17. Как проверить, является ли число конечным?
18. Как проверить, что переменная равна NaN?
19. Чем отличается поведение isNaN() и Number.isNaN()?
20. Сравните ключевые слова var, let, const.
21. Что такое область видимости?
22. Что такое деструктуризация?
23. Для чего предназначены методы setTimeout и setInterval?
24. Сравните подходы работы с асинхронным кодом: сallbacks vs promises vs async / await.
25. Можно ли записывать новые свойства / функции в прототипы стандартных классов (Array, Object и т. д.)? Почему нет? В каких случаях это делать можно? Как обезопасить себя, если нужно расширить прототип?
26. Назовите методы массивов, какие помните, и скажите, для чего они нужны.
27. Какие методы перебора массива знаете? В чем их отличие?
28. Как работают операторы присваивания / сравнения / строчные / арифметические / битовые и т. д.?
29. Опишите назначение и принципы работы с коллекциями Map и Set.
30. Что означает глубокая (deep) и поверхностная (shallow) копия объекта? Как сделать каждую из них?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе JavaScript Стартовый (урок 3, урок 5, урок 10), JavaScript Базовый (урок 3, урок 13, урок 19), ECMAScript 6 (урок 6).
Функции:
31. Какая разница между декларацией функции (function declaration) и функциональным выражением (function expression)?
32. Что такое анонимная функция?
33. Расскажите о стрелочных функциях (arrow function). В чем заключаются отличия стрелочных функций от обычных?
34. Что такое и для чего используют IIFE (Immediately Invoked Function Expression)?
35. Что такое hoisting, как он работает для переменных и функций?
36. Что такое замыкание (closure) и какие сценарии его использования?
37. Как вы понимаете замыкания? Что будет выведено в консоли в этом случае?
var f = function() {
console.log(1);
}
var execute = function(f) {
setTimeout(f, 1000);
}
execute(f); // что выведет в консоль и почему
f = function() {
console.log(2);
}
38. Что такое рекурсия?
39. Что означает ключевое слово this?
40. Что такое потеря контекста, когда происходит и как ее предотвратить?
41. Методы функций bind / call / apply - зачем и в чем разница?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе JavaScript Стартовый (урок 11, урок 12) и JavaScript Базовый (урок 13, урок 14).
Front-end
42. Что такое DOM?
43. Сравните атрибуты подключения скрипта async и defer в HTML-документе.
44. Какая разница между свойствами HTML-элементов innerHTML и innerText?
45. Опишите процесс всплытия (bubbling) событий в DOM.
46. Как остановить всплытие (bubbling) события?
47. Как остановить дефолтную обработку события?
48. Чему равен this в обработчике событий (event handler)?
49. Что такое LocalStorage и SessionStorage? Какой максимальный размер LocalStorage?
50. Как получить высоту блока? Его положение относительно границ документа?
51. Что такое webpack?
52. Чем отличается dev-сборник от prod?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе JavaScript Базовый (урок 1, урок 6, урок 7, урок 8, урок 17) и ECMAScript 6 (урок 1).
Верстка
53. Что такое блочная модель CSS?
54. Какие способы центрирования блочного контента по горизонтали и вертикали знаете?
55. Какие подходы в верстке вам известны (float, flex, grid, etc.)?
56. Как сделать приложение responsive?
57. Какие есть принципы семантической верстки?
58. Зачем нужны префиксы для некоторых CSS-свойств (-webkit-, -moz- и т. д.)?
59. Как упростить написание кросс-браузерных стилей?
60. Практические задачи: прокомментировать и исправить пример плохого CSS или HTML.
61. Что такое CSS-препроцессоры? С какими работали? Что нового они приносят в стандартный CSS?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе HTML5 & CSS3 Стартовый (урок 5, урок 6), HTML5 & CSS3 Углубленный (урок 4). Курсы Верстка сайта на CSS Grid и Верстка сайта на FlexBox CSS дадут комплексные знания и практические навыки применения технологий FlexBox и Grid.
Angular
62. Перечислите основные компоненты фреймворка (модуль, роут, директива и т .п.).
63. В чем разница между компонентом и директивой?
64. Расскажите о жизненном цикле компонента.
65. Перечислите часто используемые хуки жизненного цикла компонента и расскажите, для чего они нужны?
66. В чем разница между конструктором и ngOnInit-хуком?
67. Как защитить роут от несанкционированного доступа? Какие механизмы предоставляет для этого фреймворк?
68. Что такое Lazy loading, как и для чего используется?
69. Какое назначение RouterOutlet?
70. Как компоненты могут взаимодействовать друг с другом?
71. Как создать two-way binding свойство для компонента?
72. Какие типы форм у фреймворка? В каких случаях и что лучше использовать?
73. Какие состояния у формы и как это можно применить?
74. Зачем нужны сервисы? Как с ними работать?
75. Что такое singleton-сервисы? Каково их назначение? Способ создания?
76. Какие есть способы объявления сервисов?
77. Для чего нужны модули? Сколько их должно быть в проекте?
78. Зачем нужны общие модули (shared)?
79. Какие преимущества типизации в TypeScript?
80. Какие возможности TypeScript можно использовать для типизации (здесь имеются в виду интерфейсы, типы, enum и т. д.)?
81. Какая разница между интерфейсом и классом?
82. В чем разница между интерфейсом и абстрактным классом?
83. Какая разница между интерфейсом и типом?
84. Что такое RxJS? Как он используется во фреймворке? Какие компоненты фреймворка тесно связаны с ним?
85. Чем отличаются Observable и Promise?
86. Для чего нужны Subjects? Какие типы Subjects существуют?
87. Как сделать несколько последовательных запросов к API с помощью HTTP-сервиса и RxJS?
88. Какая разница между switchMap, concatMap, mergeMap?
89. Как можно конфигурировать Angular-приложение?
90. Зачем нужны environment-файлы? Когда их лучше не использовать?
91. В чем разница между «умным» (smart) и «глупым» (dumb) компонентами? В каких случаях применяется каждый из них?
92. В чем разница между NgForm, FormGroup и FormControl и как их применяют для построения форм?
93. Зачем нужен и как работает async pipe?
94. Как следить за развитием фреймворка? Каких известных людей, связанных с Angular, знаете / читаете?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Angular Базовый и Angular Углублённый.
React
95. Работали ли вы с классовыми компонентами? В чем их особенность?
96. Какие данные лучше хранить в состоянии компонента, а какие передавать через пропсы? Приведите пример.
97. Ознакомлены ли вы с хуками? В чем их преимущества? Приходилось ли делать свои и с какой целью?
98. Знакомы ли вы с фрагментами и порталами? Зачем они нужны?
99. Когда и для чего используют рефы?
100. Какие вы знаете методы жизненного цикла компонента?
101. В каком методе жизненного цикла компонента лучше делать запросы на сервер? Почему?
102. В каком методе жизненного цикла компонента лучше делать подписку и отписку от листенера? Почему? Зачем отписываться?
103. Был ли опыт работы с контекстом? Когда его стоит использовать?
104. В чем особенность PureComponent?
105. Работали ли вы с мемоизоваными селекторами (memoized selectors)? Для чего их используют и какой принцип работы?
106. В чем видите преимущества библиотеки React?
107. Почему библиотека React быстрая? Что такое Virtual DOM и Shadow DOM?
108. Зачем в списках ключи? Можно ли делать ключами индексы элементов массива? Когда это оправдано?
109. В чем основная идея Redux?
110. Работа со стилями в React.
111. React - это библиотека или фреймворк? Какая разница между этими двумя понятиями.
112. Можно ли использовать jQuery вместе с React? Почему да / нет?
113. Что такое codemod?
114. Приходилось ли вам настраивать проект React с нуля? С помощью каких инструментов вы это делали?
115. Перечислите все библиотеки, которые использовали в связке с React.
116. Что самое сложное вам приходилось реализовывать с помощью React?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах React Базовый и React Углублённый.
Back-end
117. Что такое REPL?
118. Что такое streams в Node.js?
119. Что такое middleware?
120. Для чего используют функцию setImmediate?
121. Зачем нужен app.param() в express?
122. Что такое token based authentication?
Базы данных
123. Напишите простой запрос для вычисления трех авторов, у которых больше всего книг.
124. Напишите запрос, который выбирает последние три комментарии для конкретного пользователя для двух таблиц: комментарии и пользователи.
125. Спроектируйте простую схему базы данных для библиотеки.
126. Для чего используют SQL-оператор HAVING?
127. Зачем используют SQL-оператор LEFT JOIN?
128. Чем отличается embed- от reference-связи в MongoDB?
129. В одном проекте программисты сохраняют данные в MongoDB-коллекции комментариев, используя такие типы данных (смотрите ниже). Что плохого в этом решении?
id: ObjectID
text: string
author_id: string
created_at: Date
130. В проекте понадобилось внести изменения в структуру таблиц, добавить несколько полей и индексы. Как программисты будут делать это на продакшене?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе SQL Базовый.
Инструменты
131. Каждый раз, когда вы делаете pull, почему-то случается конфликт в последней строке во всех файлах, которые вы редактировали. Что происходит?
132. Что делает команда git fetch?
133. Какой git hygiene подходы вы знаете?
134. Что такое CI / CD? Для чего это нужно?
Практические задания
135. Расскажите, какие есть способы копирования простого объекта типа obj = {a 1, b 2, c 3}
136. Напишите deep clone для объекта.
137. Назовите различные способы, как поменять местами значения двух переменных.
138. Менеджер попросил в задаче поменять статусы из «active, inactive» на «active, removed», но в коде фигурируют только цифры и непонятно, какой статус соответствует какой цифре. Как помочь будущим программистам не лезть в документацию по коду? Вопрос ставят на конкретном примере с кодом.
139. Необходимо сделать мини проект - список пользователей с формой создания / редактирования пользователя:
Для хранения пользователей используйте Firebase (это бесплатно).
Для стилизации используйте Bootstrap.
Минимальный набор полей пользователя:
имя;
фамилия;
электронная почта;
телефон (в формате +380 (XX) XXX-XX-XX)
дата рождения;
будет плюсом - добавление аватара и возможность crop-картинки.
Пользователи должны иметь возможность фильтрации и пагинацию.
Проект должен содержать README-файл с шагами для запуска.
Middle
Общие
1. Расскажите о пирамиде тестирования.
2. Какие типы автоматизированных тестов выпадала возможность писать? Какие библиотеки при этом использовали? Каким инструментам отдаете предпочтение и почему?
3. Что такое unit-тесты? Какое место в пирамиде тестирования занимают unit-тесты?
4. Что такое code coverage? Обязательно 100% покрытие тестами кода?
5. Как запретить браузеру отдавать кэш на HTTP-запрос?
6. Что такое XSS (Cross-Site Scripting)?
7. Расскажите о паттернах Observer, Pub / Sub. Какая между ними разница? Приведите примеры реализации этих паттернов в известных фреймворках / библиотеках / браузерных API.
8. С какой целью может быть использован event listener события fetch self.addEventListener ( 'fetch', event => {})?
9. Что такое Event loop и как он работает? Расскажите о микрозадачах и макрозадачах.
JS Core
10. Какие типы данных бывают в JavaScript? Какой будет результат выполнения кода?
let firstObj = { name: 'Hello' };
let secondObj = firstObj;
firstObj = { name: 'Bye' };
console.log(secondObj.name);
11. Что такое temporal dead zone?
12. Как работает boxing / unboxing в JavaScript?
13. В чем разница между оператором in и методом hasOwnProperty?
14. Опишите, с помощью чего в JS реализуются такие ООП-парадигмы, как инкапсуляция, полиморфизм, абстракция?
15. Что такое прототип? Как работает прототипное наследование в JS? Объясните работу кода.
function Main () {}
Main.prototype = { protected: true };
const obj = new Main();
Main.prototype = { protected: false };
console.log('Object protection: ', obj.protected);
16. Какая разница между композицией и наследованием?
17. Почему не стоит использовать конструкторы типа new String?
18. Расскажите о базовом устройстве и механизме работы Event loop.
19. Что такое записи (records) и кортежи (tuples)? Чем они отличаются от обычных объектов?
20. Какие различия в поведении ES5 функции-конструктора и ES2015 класса?
21. Как реализовать паттерн «Модуль»?
22. Почему typeof null возвращает object?
23. Что такое приведение (преобразование) типов в JS?
24. Что такое явное и неявное приведение (преобразование) типов данных в JS? Как происходит преобразование типов в следующих примерах:
{}+[]+{}+[1]
!!"false" == !!"true"
['x'] == 'x'
25. Что такое Garbage Collector?
26. Опишите основные принципы работы «сборщика мусора» в JS-движках (engines).
27. Опишите назначение и принципы работы с коллекциями WeakMap и WeakSet? Чем они отличаются от коллекций Map и Set соответственно?
28. Чем отличается Observable от Promise?
29. Что такое Promise? Назовите порядок выполнения then и catch в цепочке.
Promise.resolve(10)
.then(e => console.log(e)) // ??
.then(e => Promise.resolve(e))
.then(console.log) // ??
.then(e => {
if (!e) {
throw 'Error caught';
}
})
.catch(e => {
console.log(e); // ??
return new Error('New error');
})
.then(e => {
console.log(e.message); // ??
})
.catch(e => {
console.log(e.message); // ??
});
30. Расскажите о последовательном и параллельном выполнении асинхронных функций. В чем разница между Promise.all() и Promise.allSettled()?
31. Что такое дескрипторы свойств объектов? Расскажите об их практическом применение.
32. Назовите несколько способов создания постоянного (неизменного) объекта в JavaScript.
33. Как создать свойство у объекта, которое нельзя будет изменить?
34. Зачем нужен конструктор Proxy? Приведите пример использования.
35. Что такое ArrayBuffer? В чем разница между Uint32Array и Float32Array? Каков результат выполнения кода?
const uint32Array = new Uint32Array();
Array.isArray(uint32Array);
36. Каким будет результат сравнения?
const url = “HTTPs://xyz.com/path<to>page.html”;
encodeURI(url) == encodeURIComponent(url);
37. Расскажите о генераторах и итераторах.
38. Объясните, что делает приведенный ниже код:
function * fn(num) {
for (let i = 0; i < num; i += 1) {
yield console.log(i);
}
}
const loop = fn(5);
loop.next();
loop.next();
39. Расскажите о типе данных Symbol и его практическом применении. Как перевести число с 10-разрядной системы в 16 (2,8) разрядную систему счисления?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе JavaScript Стартовый (урок 3, урок 4, урок 13, урок 14) и JavaScript Базовый (урок 18, урок 19), ECMAScript 6 (урок 6).
Функции
40. Объясните, что означает currying. Приведите пример использования на практике.
41. Приведите пример функции с мемоизацией. Когда следует применять эту технику?
42. Что такое чейнинг функций? Напишите пример с использованием этого подхода.
43. В чем разница между function и arrow function? Каким будет результат выполнения кода?
const pluckDeep = key => obj => key.split('.').reduce((accum, key) => accum[key], obj)
const compose = (...fns) => res => fns.reduce((accum, next) => next(accum), res)
const unfold = (f, seed) => {
const go = (f, seed, acc) => {
const res = f(seed)
return res ? go(f, res[1], acc.concat([res[0]])) : acc
}
return go(f, seed, [])
}
Front-end
44. В чем принципиальная разница между событиями mouseleave и mouseout?
45. В каком порядке обрабатываются пользовательские события в DOM (click, mouseover и т .д.)? FIFO или LIFO?
46. Что такое Event bubbling и Event capturing?
47. Сравните методы объекта event stopPropagation и stopImmediateProparation.
48. Какие есть подходы оптимизации производительности веб-страницы?
49. Как реализован механизм same-origin policy в браузере? На какие браузерные API он распространяется?
50. Назовите способы хранения данных в браузере. Сравните их.
51. Web worker`ы. Опишите особенности передачи данных между worker`амы и основным потоком, между разделенными worker`амы.
51. Что такое Transferable-объекты?
52. Расскажите о способах оптимизации выполнения ресурсоемких операций JS для улучшения производительности рендеринга контента на странице.
53. Почему ResizeObserver вызывает события изменения размера до воспроизведения элемента, а не после?
54. Расскажите, как вы понимаете Web Accessibility?
55. Опишите алгоритм создания функционала, который обеспечивает чтение содержимого .txt файла при перетаскивании его из файловой системы в окно браузера.
56. Что такое Virtual DOM?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе HTML5 & CSS3 Углубленный (урок 3), JavaScript Базовый (урок 1, урок 2, урок 3).
Верстка
57. Объясните разницу между единицами измерения px, em, rem.
58. Для чего нужны CSS-переменные? Приведите несколько примеров использования.
59. Что произойдет при добавлении следующего селектора?
* {Box-sizing: border-box; }
60. Как адаптировать страницу для печати?
61. Опишите особенности кастомизации стилей стандартных элементов форм.
62. Что такое progressive рендеринг? Какие подходы используются?
63. Назовите несколько способов реализации lazy-loading медиаресурсов на странице.
64. Назовите популярные шаблонизаторы для фронтенд-разработки. Опишите особенности их использования.
65. Назовите популярные CSS-методологии и их различия.
66. Как работает CSS Grid?
67. Какие форматы изображений поддерживают анимацию?
68. Как отследить прогресс / окончание CSS @keyframes анимаций или плавных переходов, реализованных с помощью transition, в JS?
69. Какие CSS-свойства могут быть обработаны непосредственно через GPU? Что такое композитные слои и почему большое их количество может привести к аварийному завершению работы браузера на мобильных устройствах?
70. Как переиспользовать Инлайн SVG-элементы на странице?
71. Опишите способы оптимизации SVG-файлов.
72. Как реализовать иконочный шрифт из определенного набора SVG-файлов?
73. Что такое ложное жирное или ложное курсивное (Faux) начертание шрифтов?
74. Что такое #shadow-root в инспекторе HTML-страницы?
75. Зачем нужны Custom Elements?
76. Почему удаление лишних символов пробелов / символов переноса в HTML не отражается на конечной производительности загрузки страницы?
77. Что такое контекст отображения canvas? Какие существуют типы контекста для рендеринга двумерной и трехмерной графики?
Ответы на некоторые из этих вопросов вы можете найти в видео курсе HTML5 & CSS3 Углубленный.
Angular
78. Как работает Dependency injection? Зачем это нужно? Расскажите об использовании кастомных инжекторов.
79. Что такое zone.js? Для чего Angular использует зоны? С какой целью можно использовать NgZone-сервис?
80. Как работает Change detection? Как можно оптимизировать компонент с помощью схем Change detection? Какие еще есть приемы для оптимизации рендеринга (связанные с Change detection)?
81. Как выполнить конфигурацию HTTP-сервиса? Зачем она нужна? Обработка HTTP-ошибок?
82. Какие есть подходы к организации работы с данными?
83. Как подготовить сборник к деплою?
84. Что такое NgRx? Когда стоит использовать?
85. В каких случаях лучше использовать Renderer-сервис вместо нативных методов? И наоборот?
86. Как работают и для чего нужны резолверы? Как получить данные, загруженные резолверами?
87. Как работают и зачем нужны динамические компоненты? Приведите примеры их целесообразного использования.
88. Какая разница между @ViewChild и @ContentChild?
89. Что делает код и как иначе можно связать класс компонента с переменной?
@HostBinding ( 'class.valid') isValid;
90. Как можно кэшировать данные, используя сервисы или RxJS?
91. Что такое асинхронная валидация форм? Когда применяется и как реализуется?
92. Зачем нужна forRoot-функция модуля?
93. Какая разница между декларированием и экспортом компонента из модуля?
94. Почему плохо «провайдить» сервис с shared-модуля в lazy-loaded модуль? (Вопрос о scope модулей.)
95. Что такое :: ng-deep и для чего используется?
96. Какие тесты можно запустить для Angular-программы? Какие инструменты используют для тестирования Angular-программы?
97. Как протестировать API-сервис?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах Angular Базовый и Angular Углублённый.
React
98. Что такое JSX? Что лежит в его основе?
99. Как работает алгоритм Virtual DOM?
100. Для чего нужно свойство key во время рендеринга списков?
101. В чем разница между функциональными и классовыми компонентами?
102. Зачем и когда нужно передавать props в super() при использовании классовых компонентов?
103. Почему нужно использовать setState() для обновления внутреннего состояния компонента?
104. В чем заключается принцип «подъема состояния»?
105. Какие библиотеки менеджмента состояния React-приложения вы знаете? Зачем они нужны?
106. Когда следует использовать Redux? Какие есть альтернативы?
107. Redux vs Mobx?
108. Расскажите о базовом принципе работы React Hooks.
109. В чем разница между createRef и useRef?
110. Когда следует использовать React refs? Когда не стоит?
111. Какие недостатки библиотеки React видите?
112. Какие паттерны используете вместе с React?
113. Как относитесь к типизации вместе с React?
114. Как построить хорошую архитектуру React-проекта?
115. Оптимизация React-приложений? Как измерить производительность программы?
116. Можно ли приложение на React встроить в другое приложение на React?
Ответы на некоторые из этих вопросов вы можете найти в видео курсах React Базовый и React Углублённый.
Back-end
117. Почему Node.js однопоточный, а не многопоточный?
118. Что такое event driven development?
119. Сравните fork() и spawn() методы.
120. Расскажите о Node.js фреймворках, которые использовали. Какая между ними разница?
121. Опишите словам код ендпоинта, который должен сохранить с клиента файл размером 4 гигабайта и положить его на S3 или другой CDN.
122. Что такое микросервисы, зачем их используют?
123. В каких случаях вы бы выбрали монолит, а в каких - микросервисы?
124. Как понять, что приложение в определенный момент работает исправно?
125. Как понять, что приложение за последние три дня работал исправно?
126. Как происходит проверка правильности пароля при использовании bcrypt?
127. Что такое JWT?
128. Джуниор прислал код на ревью. Что здесь не так? Как исправить?
router.post ( '/ users', async (req, res, next) => {
const user = await db.createUser (req);
if (user) {
return res.json (users);
}
res.json ({error: "can not create user"})
})
Базы данных
129. Что такое Redis и для чего его используют?
130. Какие базы данных использовали? Какая разница между SQL и NoSQL?
131. Для двух таблиц - комментарии и пользователи - напишите запрос, который выбирает последние три комментария для каждого пользователя.
132. Я как заказчик прошу выбрать вас базу данных для нового проекта. Ваши действия?
Инструменты и другое
133. Для чего нужен package-lock.json?
134. В чем разница между npm install и npm ci?
135. Для чего нужны бандлеры?
136. Расскажите о модульном подключении скриптов. Приведите пример использования загрузчиков / бандлеров модулей.
137. Чем различаются git merge и git rebase?
138. Что такое staging area в git?
139. Опишите процесс code review. Назовите основные правила, способы разрешения конфликтов и споров во время его проведения.
Практические задания
140. Напишите функцию Sleep (ms), которая останавливает выполнение async-функции на заданный промежуток времени.
141. Реализуйте один из методов массива (например, splice).
142. Напишите функцию с RegExp для нахождения всех HTML-ссылок в строке.
143. Реализуйте функцию, которая исполнит callback для всех элементов определенной ветви DOM-дерева.
144. Реализуйте таблицу с виртуальным скролом.
145. Реализуйте функцию преобразования URL query строки в JSON.
const inData = "user.name.firstname=Bob&user.name.lastname=Smith&user.favoritecolor=Light%20Blue";
function queryObjectify(arg) {
// ??
}
queryObjectify(inData)
/* Результатом виконання для вхідного рядка, повинен бути наступний об’єкт
{
'user': {
'name': {
'firstname': 'Bob',
'lastname': 'Smith'
},
'favoritecolor': 'Light Blue'
}
};
*/
146. Реализуйте функцию нахождения пересечения двух массивов.
const first = [1, 2, 3, 4];
const second = [3, 4, 5, 6];
function intersection (a, b) {
// ??
}
intersection(first, second) // -> [3, 4]
147. Реализуйте функцию / класс для генерации HTML.
const HTMLConstruct = {};
HTMLConstruct.span('foo'); // -> <span>foo</span>
HTMLConstruct.div.span('bar'); // -> <div><span>bar</span></div>
HTMLConstruct.div.p(
HTMLConstruct.span('bar'),
HTMLConstruct.div.span('baz')
); // -> <div><p><span>bar</span><span>baz</span></p></div>
148. Если есть проект с ограниченными сроками и некритичной производительностью, чем будете руководствоваться при выборе библиотек, подходов? Или все же будете обращать внимание на производительность? Или наоборот: сроки нелимитированные, производительность важна. Ваши действия?
Senior
Общие
1. Расскажите о функциональном программировании.
2. Что такое TDD (Test Driven Development) / BDD (Behaver Driven Development)?
3. Расскажите подробно о работе HTTPS.
4. Какой стек технологий можно выбрать для реализации клона какого-нибудь известного проекту и почему?
5. Имеется проект на старых технологиях, необходимо в него вносить изменения. Как это сделать лучше всего?
6. Если у кандидата есть опыт работы с несколькими фреймворками: какой будете использовать для следующего проекта? Какие факторы будут влиять на выбор?
7. Что такое V8 Engine?
JS Core
8. Реализация паттерна Class Free OOP (HTTPs://observablehq.com/@bratter/class-free-oop).
9. Патерн async disposer (HTTPs://advancedweb.hu/what-is-the-async-disposer-pattern-in-javascript).
10. использование регулярных выражений. Когда приемлемо / неприемлемо? Как они работают? Как можно сделать читабельный код?
Front-end
11. Как браузер определяет, можем ли мы общаться между вкладками?
12. Что такое Content Security Policy?
13. Как избежать загрузки кэшированных файлов скриптов и стилей?
14. Что такое requestAnimationFrame?
15. Расскажите о микросервисной архитектуре Front-end App.
16. Что такое Shadow DOM?
17. Сравните nextElementSibling и nextSibling.
18. Какие знаете метрики веб-сайта?
Angular
19. Как проводится конфигурация NgZone-модуля? Когда это необходимо?
20. Что раздражает в фреймворке? Что бы вы изменили?
21. Если бы вы решали, что добавить в следующем релизе фреймворка, какая фича это была бы?
22. Писали ли вы кастомные декораторы? Если да, то зачем?
23. Сделать ревью кода и дать замечания по архитектуре.
24. Расскажите, как бы вы делали такие фичи. Опишите архитектуру фичи в приложении.
Back-end
25. Сравните Common.js с AMD Modules и ES6 Imports.
26. Какой фреймворк выбрали бы для бэкенда, почему?
27. Опишите своими словами, как работает OAuth v2.
28. Есть проект с источниками памяти, как их обнаружить, устранить и предотвратить это в будущем?
29. Есть проект с performance issues, как их обнаружить, устранить и предотвратить в будущем?
Базы данных
30. Какие альтернативные виды баз данных используете?
31. Что такое RDS и почему он иногда не подходит?
32. Что такое SQL Injections и как их избежать?
33. Почему для запросов в БД надо использовать плейсхолдеры?
34. Как спроектировать кластер на MongoDB?
35. Для чего используют MongoDB Aggregation framework?
36. Расскажите о GraphQL.
Инструменты
37. Можете ли вы описать суть методологии git flow в двух словах?
38. Что означает требование делать squash commits во время rebase?
39. Каково ваше мнение об альтернативных системы контроля версий (Version Control System)?
40. Какие конвенции знаете и используете для git?
41. Расскажите о своем опыте использования / внедрения CI / CD.
42. Необходимо настроить деплой проекту на несколько сред. Расскажите, как бы вы построили процесс? Какие инструменты использовали бы?
Практические задания
43. Реализуйте асинхронный метод filter для Array (должны работать await).
44. Реализуйте функцию reduce при помощи рекурсии.
45. Как можно было бы сделать toggle-компонент, как в iPhone, без использования JS?
Благодарим за помощь в подготовке статьи Вячеславу Колдовскому, Ивану Рыженку, Николаю Галкину, Александру Бурмистрову, Владу Балабашу, Андрею Шумаде, Ивану Кувацкому, Андрею Кладочному.
Як підготуватися до співбесіди англійською мовою в IT
Автор: Влад Сверчков
Англійська в IT. Для яких задач потрібна?
English у школі. Досвід автора.
Яка англійська необхідна для розробників і тестувальників?
Що не працює.
Що реально працює у вивченні English.
Як це організувати.
Глосарій.
Рекомендації з вивчення англійської + бонус!
Висновок.
Друзі, пропонуємо до вашої уваги цікаву статтю, написану на основі інтерв’ю одного IT-спеціаліста з Кремнієвої долини. Свого часу йому потрібна була англійська для роботи над крутими міжнародними проєктами, однак на заваді став розмовний English. Це коротка та повчальна історія про те, як наш герой перепробував безліч варіантів, але таки зміг знайти той самий, що допоміг йому "заговорити" та досягти бажаного в IT. Приємного читання!
Вітаю!
Сьогодні ми поговоримо про те, як швидко прокачати англійську для співбесід в IT-компанію. Я розповідатиму на прикладі свого досвіду, коли рішення на базі штучного інтелекту ще не були поширені.
Трохи про себе. Мене звуть Олександр, зараз я працюю аналітиком в EPAM у Каліфорнії, проєкт у нас у компанії Google. В минулому в мене вже був досвід управління проєктами. Сам я з цеху програмістів, але зараз займаюся бізнес-аналізом.
Ця стаття буде корисна насамперед для тих, хто хоче підтягнути свою англійську для роботи в інформаційних технологіях. Даний спосіб підходить не тільки для IT, а й для будь-якої іншої сфери.
Коли говоримо про навчання, потрібно розуміти, що є безліч способів і варіантів. Я допоможу обрати найкращий спосіб саме в контексті роботи в IT.
Після прочитання статті ви зрозумієте, як заощадити час на вивчення англійської мови. Час – це найдорогоцінніший ресурс, тому думаю, що вам буде корисно.
Англійська в IT. Для яких завдань потрібна?
Декілька слів про IT і яка англійська потрібна.
Наведу свій приклад: коли я був розробником, English зводився до того, що я читав мануали англійською мовою, першоджерела, використовував Stack Overflow, читав на форумах. Здебільшого це була текстова інформація, тобто побіжне читання великих обсягів інформації. Якщо говоримо про якусь документацію, протоколи тощо, я виділяю це як первинний рівень знання мови.
Також згадаю про англійську для резюме. Стикався з тим, що в людей чудовий інгліш, і в них у резюме зазначено, що рівень B2 або TOEFL. Але стосовно роботи це не приносило бенефітів. Потрібно чітко розділити англійську в плані роботи, особливо в IT, на два рівні.
Англійська для різних ролей в IT
Англійська, яка потрібна тестувальникам і розробникам, є першим вхідним порогом. Наступний поріг - це там, де потрібна комунікація, наприклад, для ролей бізнес-аналітика або проєктного менеджера, які спілкуються з англомовними замовниками або стейкхолдерами.
Якщо говорити про розробників, тестувальників, архітекторів, то один із важливих аспектів - це технічне інтерв'ю. Воно може бути для співбесіди в компанію або внутрішнім. У моєму випадку, щоб підтвердити свою компетентність, я проходив assessment – іспит, на якому були присутні п'ятеро людей з різних країн із різним рівнем знання мови та акцентами. Потрібно було відповідати на фахові запитання й наводити приклади з минулого досвіду.
Говорячи про технічне інтерв'ю, важливо зазначити, що англійська мова необхідна не тільки для розуміння запитань, а й для передання свого досвіду і знань. Крім того, є поняття поведінкового інтерв'ю, де теж важливо володіти мовою.
Англійська в школі. Досвід автора
Розповім про свій досвід вивчення англійської в школі. У нас English був із другого класу, це були базові букви та слова. У п'ятому класі почалася звичайна шкільна англійська: багато граматики, складні слова, які потрібно було заучувати напам'ять. Вимові приділялося менше уваги, особливо якщо говорити не про гімназії та школи з поглибленим вивченням мови.
Ми ділилися на групи за рівнем знань. В одній групі були учні з сильнішою англійською, куди потрапив і я. В іншій групі вчителював професійний перекладач без викладацької освіти: учні слухали пісні, спілкувалися тільки англійською – навчання було більше в ігровій формі без особливого акценту на граматику. Бали в другій групі, відповідно, були нижчими.
У підсумку, незважаючи на хороші оцінки в школі та інституті, в реальному житті – під час поїздок до Європи – я переконався, що моя англійська була недостатньо хорошою для повсякденного спілкування. Я не розумів людей, так само і вони мене.
Чого не вчать у школі:
Простоті та зрозумілості. У школі не дають базових ужиткових фраз, які можна завчити і використовувати в повсякденному житті.
Швидкості й плавності. Шкільна програма не вчить швидкому читанню і розумінню загального сенсу тексту або мови без детального перекладу кожного слова. Також не вчать говорити плавно і невимушено, як і розумінню живої мови співрозмовника.
Практичним навичкам. Навчитися говорити природно і розуміти співрозмовника в реальному часі – це те, що приходить із практикою і що в школі не викладають.
Англійська, необхідна для розробників і тестувальників
Перший і найважливіший ресурс - це час. Усі хочуть швидко вивчити мову, але в реальності це вимагає часу та зусиль. Для того щоб підтягнути англійську, потрібно нею регулярно займатися, а також використовувати на практиці.
Другий ресурс - гроші. В ідеалі, щоб усе було безкоштовно. Однак навіть якщо у вас є кошти, потрібно розуміти, скільки ви віддасте і яку якість отримаєте натомість.
Поріг входу
Для тестувальників і розробників початковим порогом є базове володіння англійською, щоб розуміти й використовувати технічну документацію, писати прості звіти про баги, взаємодіяти з іншими членами команди. Однак, якщо ви претендуєте на роль бізнес-аналітика або проєктного менеджера, де потрібна постійна взаємодія з англомовними замовниками та стейкхолдерами, рівень англійської має бути значно вищим.
Технічні та внутрішні інтерв'ю
Як я вже згадував вище, англійська стане в пригоді для співбесід на роботу в іноземну команду / роботу з іноземним замовником, а також можуть бути внутрішні технічні інтерв'ю (для підтвердження кваліфікації, наприклад). Важливо вміти відповідати на фахові запитання та наводити приклади зі свого досвіду.
Що не працює
Вчитель-академік. Академічний підхід з акцентом на граматику і теорію мало допомагає в розвитку навичок вільного спілкування.
Листи, чати та статті. Письмова практика не дає значних результатів у розвитку розмовних навичок.
Голосові повідомлення. Запис голосових повідомлень створює ілюзію навчання, але не розвиває навички швидкої реакції, схоплювання на льоту та розуміння в реальному часі.
Зазубрювання теорії та слів. Заучування теоретичних запитань і слів не допомагає в реальній розмові, оскільки будь-яке відхилення від завченого сценарію збиває з пантелику.
Перегляд фільмів і серіалів. Хоча це корисно для загального розуміння мови, цей метод не сприяє розвитку активних навичок спікінгу та розуміння на високому рівні.
Що дійсно працює під час вивчення англійської
Дуже ефективним є щоденне спілкування англійською мовою по 45 хвилин або по годині на день. Це може бути розмова з носієм мови або людиною з рівнем, вищим за ваш. Важливо, щоб це була активна розмовна практика, а не пасивне сприйняття інформації. Практика в екстремальних умовах, коли потрібно швидко реагувати та формулювати думки, значно покращує спікінг-навички.
Як це організувати
Знайдіть співрозмовників усередині компанії. Надішліть листа колегам із пропозицією готуватися разом до професійного інтерв'ю / іспиту або чогось такого. Вкажіть список запитань і запропонуйте зідзвонюватися раз на тиждень. Таким чином, у вас буде постійна практика.
Використовуйте сервіси для спілкування. Як приклад - сервіси на кшталт Conversation Exchange або Italki. Вони допоможуть знайти людей для практики, з якими можна регулярно зідзвонюватися і спілкуватися англійською - як професійних викладачів, так і простих ентузіастів, готових займатися за невелику платню. Саме так я заповнював свій щоденний годинний спринт.
Платні викладачі. У разі якщо колег недостатньо або ви хочете підвищити інтенсивність занять, можна звернутися до платних викладачів на тому ж Italki.
Глосарій
У моїй практиці словниковий запас виявився особливо важливим, оскільки необхідно було впевнено використовувати професійні терміни, специфічні для розробки, тестування, архітектури та бізнес-аналізу. І щоб вільно спілкуватися, я створив свій глосарій.
Як я створив свій глосарій:
Взяв книжки, які вважаються "бібліями" в галузі управління проєктами та бізнес-аналізу:
PMBOK (Project Management Body of Knowledge) для менеджерів проєктів.
BABOK (Business Analysis Body of Knowledge) для бізнес-аналітиків.
Завантажив ці книги у форматі PDF, потім скопіював їхній вміст у текстовий файл.
Замінив усі пробіли на переноси рядка, щоб сформувати одну колонку тексту.
Для аналізу тексту і виділення найбільш часто використовуваних слів - Excel. В Excel я створив зведену таблицю (pivot table), щоб визначити частоту слів.
З тисячі слів я вибрав 40 найуживаніших і завчив їх. Це дало мені змогу швидко розширити свій професійний словниковий запас і почати активно використовувати ці терміни у своїй мові.
Під час побудови глосарію важливо використовувати перевірені та авторитетні джерела. Книжки, як-от PMBOK і BABOK, надають стандартизовані терміни, які часто вживаються в професійних колах. Це гарантує, що глосарій буде достовірним і актуальним.
Можете обрати інші авторитетні книжки. Головне - слідувати методиці: створіть колонку з текстом, проаналізуйте частотність слів і виберіть терміни, які найчастіше зустрічаються, для заучування.
Рекомендації з вивчення англійської
Щоденна практика. Перша і найважливіша рекомендація - щодня приділяти не менше однієї години на спілкування англійською мовою. Хочете добре говорити та проходити співбесіди англійською? Просто говоріть і слухайте. Уже через місяць-два регулярної практики ви побачите результати.
Визначення каналу сприйняття. Важливо визначити, як ви найкраще сприймаєте інформацію: через аудіо, текст або візуальні матеріали.
Експериментування. Пробуйте різні методи вивчення мови та знайдіть те, що працює саме для вас. Не бійтеся робити помилок!
Підтримка мовного середовища. Оточіть себе джерелами англійської мови для поліпшення сприйняття і запам'ятовування:
текстовий формат: книги, статті та новини англійською мовою;
аудіо: подкасти, аудіокниги;
використовуйте стікери з новими словами і розклеюйте їх на видних місцях, щоб легше запам'ятовувати;
переведіть інтерфейси телефонів і комп'ютерів на англійську мову.
Бонус: безкоштовний сервіс для практики англійської мови
А тепер я хочу поділитися з вами справді корисним бонусом - це безкоштовний сервіс під назвою Pramp. Він дає вам змогу знаходити співрозмовників з усього світу, які мають різний рівень підготовки. Ви можете обрати тему для інтерв'ю, чи то технічну, чи то поведінкову співбесіду.
Алгоритм використання Pramp простий:
Знайдіть людину для спілкування: на вибір безліч країн, співрозмовники з різним рівнем англійської.
Виберіть тему для інтерв'ю: FrontEnd, системний дизайн, поведінкове інтерв'ю тощо.
Організація зідзвону, який триває близько 30 хвилин. У вас є заздалегідь підготовлений набір запитань.
Ставите запитання своєму співрозмовнику, робите нотатки про те, що сподобалося і що можна поліпшити.
Обмін ролями: ваш співрозмовник ставить вам запитання.
У сервісі є безліч готових наборів запитань для кожної тематики. Ви можете слідувати їм або використовувати свій власний список. Так само може вчинити і співрозмовник.
Повторюся: сервіс безкоштовний. Ви зможете спілкуватися з людьми з різних країн і з різним професійним досвідом; питання і теми максимально наближені до реальних співбесід. Ви не лише покращите свої мовні навички, а й отримаєте цінні поради щодо проходження інтерв'ю.
Я використовував цей сервіс для підготовки і можу сказати, що це чудова можливість. Спілкувався з менеджерами проєктів, інженерами з Америки, Азії та Індії. Pramp ідеально поєднує в собі всі необхідні елементи для успішної підготовки до проходження співбесід.
Висновок
Найголовніше у вивченні англійської - це регулярність та інтенсивність практики. Щоденні заняття по годині в стресових умовах із різними співрозмовниками допоможуть швидко підвищити рівень англійської мови, поліпшити швидкість і плавність мовлення, а також розвинути навички розуміння співрозмовника. Свого часу мені дуже допомогли Conversation Exchange, Italki, Pramp.
У моєму випадку я перепробував багато різних варіантів: тексти, статті, аудіокниги, серіали, подкасти, викладачі англійської. Спостерігав збільшення словникового запасу, вдосконалення граматики, але "заговорити" так і не міг.
Зрештою, саме регулярний живий розмовний формат і допоміг мені досягти успіху на англомовній співбесіді та здійснити мої кар'єрні амбіції. Впевнений, що мій досвід виявиться цінним для багатьох із вас. Успіхів у вивченні англійської!
Як зайти в рекрутинг у 2026 році: повний покроковий план для новачків
Автор: Редакція ITVDN
Світ змінюється, і разом із ним трансформується ринок праці. Якщо раніше рекрутинг сприймали як суто «відбір резюме», то у 2026 році це високотехнологічна професія на стику психології, маркетингу, аналітики та штучного інтелекту. Як стати частиною цієї індустрії з нуля, який напрямок обрати та на які зарплати розраховувати? Розберемо покроково.
1. Рекрутер 2026 року: Хто це насправді?
Рекрутер — це не просто посередник. Це архітектор команд. Від цієї людини залежить, хто саме створюватиме продукти майбутнього. У 2026 році професія вимагає бути «інженером людських ресурсів». Ви маєте не лише знайти людину, а й поєднати бізнес-задачі з амбіціями спеціаліста.
Ключова формула успіху рекрутера:
Хард-скіли: Володіння AI-інструментами та розуміння технічного стеку.
Софт-скіли: Емпатія, критичне мислення та етичність.
Sales Mindset: Вміння «продати» вакансію кандидату та кандидата — бізнесу.
2. Чотири ключові напрямки: Що обрати вам?
Перед тим як почати навчання, важливо визначитися з нішею. Кожна з них має свій поріг входу та специфіку.
IT-рекрутинг (Високий поріг входу)
Це гра «вдовгу». Тут ви працюєте з розробниками, архітекторами та інженерами.
Особливість: Потрібно вивчити «іноземну мову» — термінологію розробки (різниця між Java та JavaScript, розуміння Front-end та Back-end).
Ризик: Втрата часу дорогих експертів через нерелевантних кандидатів.
Класичний рекрутинг (Середній поріг входу)
Фокус на масових професіях та адміністративному персоналі.
Особливість: Величезний потік людей. Головна задача — швидко відсіювати невідповідних за софт-скілами.
Ризик: Постійна плинність кадрів і велике навантаження.
Арбітраж (Низький поріг входу)
Найдинамічніший напрямок. Тут результат потрібен «на вчора».
Особливість: Найнижчі фіксовані ставки, але найбільші бонуси. Робота з молодими, агресивними та амбітними командами.
Ризик: Швидке емоційне вигорання через надвисокий темп.
Miltech (Новий і найвідповідальніший напрямок)
Рекрутинг для оборонного сектору України.
Особливість: На першому місці — місія та ідеологія. Кандидати проходять жорстку перевірку (поліграф, СБ).
Ризик: Величезна ціна помилки. Тут немає місця сумнівам.
3. Точки перетину: Чому AI — ваш найкращий друг?
У 2026 році ви не зможете бути конкурентними без штучного інтелекту. AI — це не заміна рекрутера, а його підсилювач.
Sourcing: Швидкий пошук кандидатів за допомогою AI-плагінів.
Screening: Автоматизований аналіз сотень резюме за лічені секунди.
Метрики (Data-driven): Ви маєте рахувати все: Time to Hire (час на найм), Cost per Hire (вартість найму) та конверсію воронки.
4. Фінансові орієнтири: Скільки платять у 2026-му?
Зарплата рекрутера складається зі ставки та бонусів за кожного найнятого спеціаліста.
Junior (до 1 року досвіду): Починають від $500–$750. Якщо є високий рівень англійської (B2/C1), стартова планка може піднятися до $1000.
Middle (2+ роки): Середня медіана становить $1100–$1500.
Senior/Team Lead: Від $2000 і вище.
Цікавий факт: Спеціалісти, які активно використовують AI у роботі, заробляють в середньому на 23–40% більше, ніж їхні колеги, що працюють «по-старому».
5. Покроковий план входу в професію
Крок 1: Навчання (База)
Ви можете обрати курси або займатися самоосвітою. Головне — системність. Читайте книги з психології оцінки, дивіться відео про профайлинг та вивчайте ринок. Порада: Обирайте курси з максимальною кількістю практики, де є симуляція співбесід.
Крок 2: Перший досвід (Стажування та Волонтерство)
Не чекайте ідеальної вакансії. Доєднайтеся до волонтерських проєктів (наприклад, у секторі Miltech або соціальних ініціативах). Це дасть вам реальні кейси для портфоліо.
Крок 3: Створення портфоліо (Не лише резюме!)
У 2026 році резюме — це мало. Роботодавець хоче бачити ваше портфоліо:
Приклади побудованих пошукових запитів (Boolean Search, X-Ray).
Скрипти спілкування з кандидатами.
Кейси використання AI для автоматизації рутини.
Крок 4: Нетворкінг
Рекрутинг — це про зв'язки. Вступайте в професійні ком'юніті (LinkedIn, Telegram-канали на кшталт People First або Хурма). Будьте активними: коментуйте дописи експертів, відвідуйте вебінари.
Крок 5: Підготовка до співбесіди
Коли вас запрошують на інтерв'ю, ви маєте знати про компанію все. Дослідіть їхній продукт, культуру та відгуки. На самій співбесіді демонструйте свою стійкість. Роботодавцю важливо знати, що після десяти відмов від кандидатів ви не опустите руки, а знайдете одинадцятого — ідеального.
6. Чому 90% новачків отримують відмови?
За статистикою вебінару, більшість новачків «зрізаються» на таких помилках:
Шаблонність: Використання copy-paste повідомлень без персоналізації.
Низькі технічні знання: Нерозуміння того, чим займається спеціаліст, якого ви шукаєте.
«Вода» в резюме: Відсутність цифр та конкретних досягнень.
Брак емпатії: Рекрутер має чути справжню мотивацію кандидата, а не просто ставити галочки в опитувальнику.
Висновок
Рекрутинг у 2026 році — це драйвова, складна, але надзвичайно перспективна сфера. Щоб зайти в неї, вам потрібні не лише знання, а й готовність до безперервного навчання. Почніть із вибору напрямку, опануйте штучний інтелект і не бійтеся починати з малого. Кожна закрита вакансія — це ваш внесок у розвиток бізнесу та успішне майбутнє країни.
Матеріал підготовлено на основі вебінару Вікторії Чабан для платформи CodeUA.
Створюємо Telegram бота на Python частина-1
Автор: Армен Маїлян
Существует множество различных статей и учебных пособий по созданию ботов для телеграмм, некоторые из них достаточно сложны, часть требует знания отдельных технологий и фреймворков. В данной статье мы рассмотрим создание чат бота в мессенджере Telegram с нуля. От нас не будет требоваться каких-то специальных знаний. Для начала достаточно будет начальных знаний языка Python в качестве языка программирования.
Часть 1: Регистрация нового Telegram Bot-а
Для начала вы должны быть зарегистрированы в Telegram- мессенджере. Далее, вы в мобильной, десктопной или web-версии мессенджера открываете общение с ботом @BotFather, либо по ссылке https://telegram.me/botfather.
После начала общения с этим ботом, нажав /start, вы получите ответ от бота с указанием его возможностей. Нас интересует создание нового бота - /newbot.
После того как мы введем /newbot нас попросят придумать имя для нашего нового бота. Пусть оно будет MyFirstTestBot.
Далее нам нужно придумать юзернэйм для нашего бота. В нашем случае это будет mft001_bot.
После этого BotFather высылает нам специальный токен:
Наш токен оказался: 851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM (В вашем случае токен будет другой.)
Этот токен понадобится нам при настройке нашего бота. Токен должен быть сохранён. Именно он является единственным ключем для взаимодействия с ботом.
Также мы получаем ссылку на нашего бота. В моем случае это t.me/mft001_bot.
Теперь наш Tekegram-бот создан. Мы можем начать настраивать своего бота, например, установить изображение для бота, изменить или добавить описание бота и тп.
С регистрацией бота мы закончили. Наш бот уже есть, но на данный момент он еще ничего не умеет. Теперь нам нужна его начинка – какой-то механизм, который будет обрабатывать наши запросы к этому боту и возвращать нам ответы.
Часть 2 Написание кода
Как и написано выше мы будем создавать нашего бота на языке Python. Установите его с официального сайта, если вы используете Windows или выполните команду в терминале на Linux:
sudo apt-get install python python-pip
Далее воспользуемся системой управления пакетами PIP, которая используется для установки и управления программными пакетами, и установим библиотеку PyTelegramBotAPI (Telebot):
pip install pytelegrambotapi –user
Создадим логику работы нашего бота. Используя полноценный IDE или простой текстовый редактор создадим файл ourbot.py и заполним его необходимой логикой.
Для начала нам нужно выполнить импорт библиотеки PyTelegramBotAPI (Telebot), написав в нашем файле:
import telebot
Далее подключим нашего бота, используя полученный ранее токен:
bot = telebot.TeleBot('851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM')
Теперь создадим метод, для получения сообщений.
Возможности PyTelegramBotAPI позволяют отправлять боту аудио (content_types=['audio'), видео (content_types=['video'), документы (content_types=['document'), текст (content_types=['text'), географический адрес (content_types=['location'), данные контакта (content_types=['contact') и стикеры (content_types=['sticker'). Мы, для простоты опыта, будем общаться с ботом только текстом:
@bot.message_handler(content_types=['text'])
def handle_text_messages(message):
Теперь рассмотрим логику обработки наших текстовых сообщений. Мы хотим захардкодить простое общение бота с пользователем: бот должен уметь здороваться, когда с ним здороваются, уметь отвечать на вопросы «Кто ты?», «Как тебя зовут?» и «Что ты умеешь?».
if message.text == "Привет":
bot.send_message(message.from_user.id, "Привет")
elif message.text == "Кто ты?":
bot.send_message(message.from_user.id, "Я тестовый чатбот для учебного примера.")
elif message.text == "Как тебя зовут?":
bot.send_message(message.from_user.id, "Меня зовут MyFirstTestBot.")
elif message.text == "Что ты умеешь?":
bot.send_message(message.from_user.id, "Я умею отвечать на несколько простых вопросов - кто я, как меня зовут и что я умею делать.")
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши что-то другое.")
После тела метода, обрабатывающего наши запросы к боту, добавим вызов метода:
bot.polling(none_stop=True, interval=0)
Задачей этого метода является создание потока, в котором бот отправляет запросы на сервер, уточняя таким способом, не писал ли ему кто-то сообщение. Параметр none_stop: False означает, что наша программа будет продолжать отправлять запросы на сервер после получения сообщения об ошибке от сервера Telegram.
Сохраним наш код:
Мы можем протестировать работу нашего бота, запустив его код в той IDE, в которой мы писали. И написав нашему боту в мессенджере.
Все работает.
Наш учебный Telegram-бот создан. Мы можем запустить наш файл локально, и он будет отрабатывать запросы к нему через мессенджер прямо на нашем компьютере, выступающим в роли сервера. Но это не очень удобная практика. Для нормальной работы код желательно залить на отдельный сервер и запустить его там.
Вопросы заливки нашего простого бота на сервер мы рассмотрим в следующей статье.
Резюме
Как мы увидели, создание работающего бота на Python для Telegram мессенджера достаточно просто. Для простых ботов не нужно использовать сложные решения - есть удобная библиотека PyTelegramBotAPI, позволяющая решить такие задачи. В нашем учебном примере мы рассмотрели только работу с текстом, но, благодаря этой библиотеке, бот может работать и с другими форматами данных. Попробуйте сами сделать своего бота, отвечающего на ваши вопросы.
С нашей стороны мы рекомендуем ознакомиться с курсом подготовки Python-разработчика. Знания, полученные после прохождения данного курса позволят вам не только создавать различные приложения, но и получить полноценную профессию разработчика программного обеспечения.