Результати пошуку за запитом: курс - практикум по frontend разработке*
Годинник цокає! Встигни до півночі. Преміум за 90 USD
Автор: Редакція ITVDN
Новогодние праздники стучатся в дом! Елка, подарки, угощения, встречи с друзьями – все мы в предвкушении чудес. Остались последние приготовления. Очень важно подумать о подарках, которые могут изменить вашу жизнь.
Мы приготовили для вас новогодний сюрприз. Это предложение, от которого трудно отказаться.
Что же случится на Новый год?
30, 31 декабря и 1 января с 00:00 и до 9:00 стоимость пакета «Премиум» (12 месяцев) будет 90 USD! Хотите стать Full-Stack разработчиком? За год вы можете освоить не одну, а несколько специальностей, тратя при этом на обучение всего 7,5 долларов в месяц.
Что входит в пакет Премиум
Сейчас в Каталоге ITVDN более 220 курсов по всем самым популярным языкам программирования и сопутствующим технологиям. Все они будут доступны для вас в течение года.
Также в пакете Премиум - проверка домашних заданий, консультации с тренером, онлайн тестирование и сертификаты по всем пройденным технологиям, учебные материалы и не ограниченный доступ к интерактивному тренажеру навыков.
Вы можете изучать что угодно в произвольном порядке или пройти последовательное обучение с нуля по специальностям, которые есть на ITVDN
Часы тикают!
Итак, с полуночи до 9:00 стоимость пакета Премиум будет 90 USD.
C 9 утра и до 15:00 цена также будет очень привлекательной – 100 USD.
C 15:00 и до 21:00 – 110 USD, а после 21:00 и до полуночи – 120 USD.
* Время - Киев (UTC+2)
Вот такой новогодний подарок мы подготовили для тех, кто хочет изучать программирование в новом году на ITVDN!
Мы благодарим вас за то, что вы с нами и желаем счастья в Новом году!
+ Подарки для друзей!
Подарочные сертификаты Премиум во время акции тоже можно приобрести по супер цене! Покупай в новогоднюю ночь, дари, когда угодно в течение года.
Примечание. Если у вас есть действующая подписка, то при покупке новой подписки срок продлевается соответственно на 12 месяцев.
Годинник цокає! Встигни до півночі. Преміум за 90 USD
Автор: Редакція ITVDN
Новогоднее настроение все больше проникает в наши дома и сердца, обещая много радостных встреч и подарков. Этот праздник самый любимый и у детей, и у взрослых. Возможно, потому что в душе всем мы остаемся все теми же детьми, которые продолжают ждать чуда?
31 декабря, в последний день уходящего года вас ждет сюрприз. Он обрадует вас, если вы хотите и любите учиться. Это предложение, от которого трудно отказаться.
Что же случится 31 декабря?
31 декабря с 00:00 и до 9:00 стоимость пакета «Премиум» (12 месяцев) будет 90 USD! Хотите стать Full-Stack разработчиком? За год вы можете освоить не одну, а несколько специальностей, тратя при этом на обучение всего 7,5 долларов в месяц.
Что входит в пакет Премиум
Сейчас в Каталоге ITVDN более 200 курсов по всем самым популярным языкам программирования и сопутствующим технологиям. Все они будут доступны для вас в течение года.
Также в пакете Премиум - проверка домашних заданий, консультации с тренером, онлайн тестирование и сертификаты по всем пройденным технологиям, учебные материалы и не ограниченный доступ к интерактивному тренажеру навыков.
Вы можете изучать что угодно в произвольном порядке или пройти последовательное обучение с нуля по специальностям, которые есть на ITVDN
Часы тикают!
Итак, с полуночи до 9:00 стоимость пакета Премиум будет 90 USD.
C 9 утра и до 15:00 цена также будет очень привлекательной – 100 USD.
C 15:00 и до 21:00 – 110 USD, а после 21:00 и до полуночи – 120 USD.
* Время - Киев (UTC+2)
UPD. Акция продлитcя до 4 января! С Новым годом!
Вот такой новогодний подарок мы подготовили для тех, кто хочет изучать программирование в новом году на ITVDN!
Мы благодарим вас за то, что вы с нами и желаем счастья в Новом году!
PS. Подарочные сертификаты во время акции тоже можно приобрести по супер цене! Покупай в новогоднюю ночь, дари, когда угодно в течение года.
Купить подписку по акционной цене
Розіграш подарункових сертифікатів на навчання
Автор: Редакція ITVDN
Дорогие друзья! Мы благодарим всех, кто выбирает ITVDN для изучения программирования. У нас для вас приятный сюрприз - в 2020 году на ITVDN ежемесячно будет проводиться розыгрыш подарочных сертификатов на обучение.
Один раз в месяц мы будем разыгрывать:
1 подарочный сертификат Премиум.
1 подарочный сертификат Базовый.
1 подарочный сертификат Стартовый.
С перечнем услуг, которые входят в каждый пакет подписки, вы можете ознакомиться на странице Подписка.
Как стать участником розыгрыша подарочных сертификатов?
Участником розыгрыша становится каждый пользователь ITVDN, совершивший покупку 1 курса или пакета подписки в течение месяца. В феврале проводится розыгрыш среди тех, кто сделал покупку в январе и т.д.
Шансы на выигрыш будут выше у тех, кто приобрел подписку на больший срок.
К розыгрышу не будут допущены пользователи, не указавшие свое имя и фамилию в Личном кабинете.
Розыгрыш подарочных сертификатов будет происходить в прямой трансляции на YouTube канале ITVDN в первый рабочий день каждого нового месяца (3 февраля, 2 марта и т.д.) в 16:00. Результаты будут опубликованы на сайте ITVDN и в социальных сетях.
Подарочный сертификат победитель может использовать для себя или подарить другу. Сертификат действителен в течение 1 года. Подробнее о Подарочных сертификатах можно почитать тут.
Итоги розыгрыша подарочных сертификатов от 3 февраля 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 марта 2020 года.
Итоги розыгрыша подарочных сертификатов от 3 апреля 2020 года.
Итоги розыгрыша подарочных сертификатов от 5 мая 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 июня 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 июля 2020 года.
Итоги розыгрыша подарочных сертификатов от 5 августа 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 сентября 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 октября 2020 года.
Итоги розыгрыша подарочных сертификатов от 4 ноября 2020 года.
Итоги розыгрыша подарочных сертификатов от 2 декабря 2020 года.
Кто есть кто в IT компании. Структуры и роли
Автор: Александр Марченко
<p>Большое количество начинающих в IT считает, что разработчик — это специалист, спрятанный за семью мониторами и постоянно пишущий тонны программного кода. Однако, само создание ПО — это лишь часть его труда. Помимо прямых обязанностей разработчик играет важную роль в экосистеме команды: участвует в митингах, взаимодействует с другими членами команды для поиска путей решения проблем, перенимает знания и навыки у опытных коллег и т. д. Поэтому любому новичку необходимо быть в курсе “кухни” его IT-компании, чтобы быть максимально эффективным.</p>
<p>Каким образом разработчик должен взаимодействовать с рабочей инфраструктурой и коллективом? Каковы зоны ответственности у каждого члена компании и к кому можно обращаться за помощью? Как юному девелоперу стоит оценивать себя с точки зрения продуктивности? Обо всем этом мы поговорим на встрече с Александром Марченко, у которого за плечами 8 летний опыт работы в IT. </p>
<p><strong>На встрече будут рассмотрены следующие темы:</strong></p>
<ul>
<li>Почему разработка ПО — это сложный многоуровневый процесс?</li>
<li>Структура менеджмента: разбор иерархии должностей и зон ответственности</li>
<li>Автоматизация работы: ее важность и умение использовать соответствующие инструменты</li>
<li>Как сделать результаты своей работы прозрачными для “нетехнических” менеджеров?</li>
<li>Что обозначают KPI, OKR и прочие аббревиатуры?</li>
</ul>
<p><strong>Целевая аудитория</strong>: начинающие разработчики, студенты учебного центра CyberBionic Systematics.</p>
Як прокачати англійську для співбесіди до IT-компанії.
Автор: Олександр Залуцький
<p dir="ltr">На текущий момент существует большой бизнес на тему изучения английского языка. Кто-то предлагает онлайн-курсы, кто-то преподавателя, а некоторые — чудесное мобильное приложение, которое сделает все за вас. Что действительно нужно для прохождения интервью на английском в IT-компанию? Какие техники прокачки английского работают, а какие — попросту тратят ваше время? На эти и другие вопросы Александр Залуцкий попытается дать ответы в этом вебинаре!</p>
<p dir="ltr">Александр Залуцкий — IT-специалист из Кремниевой Долины, который недавно познакомил нас со своей историей становления и профессионального роста на вебинаре “<a href="https://itvdn.com/ru/webinars/description/siberia-to-siliconvalley">Из Сибири в Кремниевую Долину</a>” </p>
<p dir="ltr"><strong>План вебинара:</strong></p>
<ol dir="ltr">
<li>Цель вебинара.</li>
<li>Каким образом английский язык применяется в работе IT-специалистов.</li>
<li>Английский в школе — чему там учат?</li>
<li>Какие приемы в изучении английского языка НЕ работают.</li>
<li>Что нужно делать, чтобы прокачать свой английский для собеседования.</li>
<li>Общие рекомендации по изучению английского языка.</li>
<li>Обсуждение, вопросы и ответы.</li>
</ol>
<p dir="ltr"><strong>Целевая аудитория:</strong></p>
<p dir="ltr">Начинающие IT специалисты, которые хотят узнать, как за короткий срок подготовиться к прохождению интервью на английском в IT-компанию.</p>
Шахова IT Арена для програмістів. III тур - Прохідна пішака та рокірування
Автор: Євген Волосатов
<p>Если ты силен в программировании и готов к сражению – докажи это в честном бою! Участвуй в Первой шахматной IT Арене, которая проходит на ITVDN с 9 июня по 7 июля 2019 года. <a href="https://itvdn.com/ru/news/article/chess-arena" target="_blank">Подробности.</a></p>
<p>Состязания проходят в 4 тура.</p>
<p>16 июня состоялось подведение итогов первого тура - определение победителей, разбор задач и постановка заданий второго тура. Смотрите <a href="https://www.youtube.com/watch?v=nXt0C5jDHNI" target="_blank" rel="nofollow">видео запись</a>.</p>
<p>Для решения заданий перейдите <a href="https://itvdn.com/ru/start-practice" target="_blank">по ссылке.</a></p>
<p>Решения заданий второго тура принимаются до 12:00 часов 23 июня. </p>
<p>В каждом туре есть призы и подарки - трое лучших получают подписку ITVDN на три месяца, а остальные участники, выполнившие все задания, получают в подарок 1 видео курс на выбор.</p>
<p><strong>Тема задач третьего тура </strong>- Проходная пешка и рокировка.</p>
<p>На решение задач даётся 1 неделя, до начала следующего тура. На следующем вебинаре 30 июня <strong>мы рассмотрим решения задач, определим победителей третьего тура</strong> и расскажем об условиях новых задач.</p>
<p>Задания можно решать на одном из 5 языков программирования - <strong>Python, C#, Java, C++ или Pascal.</strong></p>
<p>До встречи на поле сражений!</p>
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.