Методическая разработка Единого урока по безопасности в сети «Интернет». Безопасна ли сеть Интернет?
Цели: а) образовательная: формирование информационной компетентности через ознакомление обучающихся с потенциальными опасностями в сети Интернет, изучение мер безопасности при выполнении образовательных задач на компьютере или мобильном телефоне с использованием сети Интернет (при нахождении нужного материала по изучаемому предмету, участии в онлайн-конкурсах, работе с электронной почтой, участии в дистанционном образовательном процессе с применением программы Скайп);
б) воспитательная: воспитание ответственности за собственные здоровье и безопасность, а также благополучие своих родных; формирование адекватного восприятия и оценки информации, ее критического осмысления на основе нравственных и культурных ценностей;
в) развивающая: развитие умений применять знания в новых условиях, предвидеть возможные трудности работы в сети Интернет, находить пути решения возникших проблем.
Тип урока: изучение нового материала.
Методы и методические приемы: рассказ, рассказ-беседа, проблемная беседа, дискуссия по отдельным вопросам темы, демонстрация компьютерной презентации, просмотр и обсуждение анимационных материалов, выполнение тестированного задания.
Оборудование и материалы: компьютер, материалы сайта Единого урока: www. Единый урок. рф
1. Актуализация знаний по теме
1. Вступительное слово учителя
В Российских школах проходит Единый урок по безопасности в сети Интернет в соответствии с решениями парламентских слушаний «Актуальные вопросы обеспечения безопасности и развития детей в информационном пространстве», прошедшими 17 апреля 2017 года в Совете Федерации, и планом мероприятий по реализации Концепции информационной безопасности детей на 2018-2020 годы, утверждённым приказом Минкомсвязи России №88 от 27.02.2018.
Единый урок проходит при активной поддержке Минобрнауки РФ, Минкомсвязи РФ, Института развития Интернета, федеральных и региональных органов власти, а также представителей интернет-отрасли и общественных организаций.
Единый урок представляет собой цикл мероприятий для школьников, направленных на повышение уровня кибербезопасности и цифровой грамотности, а также на обеспечение внимания родительской и педагогической общественности к проблеме обеспечения безопасности и развития детей в информационном пространстве.
В нашем учреждении пройдут тематические уроки, родительские собрания и другие мероприятия.
2. Беседа, дискуссия
1.Как ты ответишь на вопрос: «Безопасен ли Интернет?» Аргументируй свой вариант ответа. (Дискуссия в случае положительного ответа.)
2.Как свести опасности к минимуму? Сначала надо о них все узнать.
2. Изучение нового материала
1. Рассказ учителя
«Интернет сегодня — не просто технологии, это безграничные возможности развития и личностного роста, это формирование новых навыков совершенствования и познания. Но как и любая высокотехнологичная система, Интернет требует хорошего уровня знаний и квалификации, иначе из друга и сподвижника он может превратиться во врага и источник повышенной опасности…» Бокова Людмила Николаевна Член Совета Федерации ФС РФ, Председатель Временной комиссии Совета Федерации по развитию информационного общества
Конвенцией Совета Европы виды киберпреступлений объединены в пять групп.
Первая группа включает все компьютерные преступления, направленные против компьютерных данных и систем (например, незаконный доступ, вмешательство в данные или системы в целом).
Вторую группу составляют противоправные деяния, связанные с использованием технологий (подлог, извлечение, блокировка или изменение данных, получение экономической выгоды иными способами) – мошенничество в Интернете. Правонарушения третьей группы связаны с содержанием данных или контентом – негативный интернет.
Нарушение авторских и смежных прав (пиратство) относится к четвертой группе, выделение определенных видов преступлений в которой отнесено к законодательству конкретных государств.
Кибертерроризм и использование виртуального пространства для совершения актов насилия, а также другие деяния, посягающие на общественную безопасность, включаются в пятую группу киберпреступлений .
Количество киберпреступлений, совершаемых в мире, неуклонно растет. За последние пять лет их число колеблется в пределах 8 тыс. – 17 тыс., с ежегодной динамикой около 10%. Такое торжество преступности в виртуальном пространстве не может обойтись безнаказанно. Законодательство большинства стран мира предполагает уголовную ответственность за совершение преступлений данного вида.
2. Демонстрация презентации «Безопасный Интернет» (Материалы к уроку в старших классах (Презентация) https://www.xn--d1abkefqip0a2f.xn--p1ai/index.php/proekty/urok ), ее обсуждение и выводы о потенциальных опасностях
Вопросы к обучающимся:
1. С какими проблемами вы встречались при работе на компьютере в сети Интернет?
2. Знаете ли вы, что такое вирусные программы? Мешали ли они вам?
3. Приходилось ли вам или вашим родным что-либо покупать в интернет-магазинах? Не возникало ли при этом проблем?
4. Сформулируйте выводы о рисках при пользовании Интернетом.
Существует несколько типов рисков, c которыми дети могут встретиться, пользуясь Интернетом:
1. Дети могут получить доступ к неподходящей их возрасту информации. К ней относятся: порнография, дезинформация, обман, пропаганда ненависти, нетерпимости, насилия, жестокости.
2. Дети могут получить доступ к информации, совершить действия и купить товары, потенциально опасные для них. Существуют сайты, предлагающие инструкции по изготовлению взрывчатых веществ, продающие оружие, алкоголь, отравляющие и ядовитые вещества, наркотики, табачные изделия, а также сайты, предлагающие принять участие в азартных онлайн играх.
3. Дети могут быть подвержены притеснениям со стороны других пользователей Сети (чаще всего злоумышленниками оказываются другие дети), которые грубо ведут себя в Интернете, пишут оскорбления и угрожают. Дети также могут загрузить себе на компьютеры вирусы или подвергнуться нападению хакеров.
4. Дети могут выдать важную и личную информацию, заполняя анкеты и принимая участие в онлайн конкурсах и, в результате, стать жертвой безответственных торговцев, использующих нечестные, запрещенные маркетинговые методы.
5. Дети могут стать жертвами обмана при покупке товаров через Интернет, а также выдать важную финансовую информацию другим пользователям (например, номер кредитной карточки, пин-коды и пароли).
6. Дети могут стать жертвой киберманьяков, ищущих личной встречи с ребенком.
3. Беседа о мерах безопасности. Формулирование мер безопасности.
Вопросы к обучающимся:
1. Как снизить названные риски?
2. Как защитить компьютер от вирусов?
3. Как защитить свои персональные данные при регистрации на сайтах?
Безопасность при навигации по сайтам и по приему почты будет достигнута при соблюдении следующих рекомендаций
1. Установить на своем компьютере антивирусную программу, следить за ее обновлением, реагировать на ее сообщения, а также новейшую версию браузера для работы в Интернете с предварительно настроенными параметрами безопасности.
2. Существуют случаи рассылки вирусов, а также вскрытия крупнейших узлов бесплатной почты. Поэтому не исключено, что даже со знакомого адреса может прийти вирус. Если на вашу электронную почту пришло письмо с прикрепленным к нему незнакомым вложением, ни в коем случае нельзя открывать это вложение, а лучше сразу удалить и очистить корзину в программе чтения почты.
3. Никогда не посылать никому свой пароль.
4. При регистрации на сайте необходимо использовать для паролей трудно запоминаемый набор цифр, букв и знаков, причем включить в пароль не менее 6 символов. Об этом часто приходит подсказка при регистрации.
4. Рассказ-беседа о потенциальных угрозах при использовании сети Интернет с мобильного телефона и формулирование мер безопасности
Мобильные мошенники
Сейчас почти у каждого человека есть мобильный телефон. Новое веяние – это подключение услуги доступа в сеть Интернет с мобильного телефона. Также есть риск получения негативной информации и контента путем получения SMS- или MMS -сообщений. Крупные мобильные операторы на своих сайтах дают разного рода рекомендации и предлагают ряд уроков по защите своего мобильного телефона. Около 10 млн. пользователей мобильной связи в той или иной степени пострадали от действий мобильных мошенников. Не только мобильные телефоны, но и различного рода планшетные устройства также нуждаются в защите.
Вопросы к обучающимся:
— Известны ли вам случаи мошенничества посредством телефона по отношению к вашим родственникам?
— Если — да, то каковы последствия таких событий?
— Как вы думаете, каким образом надо действовать в подобных случаях?
Формулирование мер безопасности.
— Ребята, попытайтесь сформулировать меры безопасности при получении сообщения с незнакомого номера телефона.
— Познакомимся с рекомендациями от компании «Билайн» и подумаем, выполняем ли мы их?
Убедитесь в достоверности информации, полученной по телефону от неизвестных, представившихся сотрудниками правоохранительных органов, радиостанции, оператора сотовой связи, чиновниками, вашими родственниками, знакомыми или прочими лицами.
Не торопитесь предпринимать действия по инструкциям неизвестных людей, полученным посредством телефонного звонка или SMS, в особенности, если их инструкции требуют перевода или передачи вами денежных средств каким-либо способом. Позвоните в Центр поддержки клиентов своего оператора и уточните информацию. Поспешные действия могут привести к финансовому ущербу.
Уточняйте у оператора стоимость платных номеров, предлагающих участие в акциях и викторинах, проводимых контентпровайдерами.
Не торопитесь давать телефон на «один звонок» незнакомому человеку. Помните, что в последнее время участились случаи краж телефонов именно таким способом.
Не открывайте файлы, пришедшие посредством MMS от неизвестных отправителей, а если есть сомнения – то и от известных. По возможности, установите на мобильное устройство одну из многих антивирусных программ.
Не спешите звонить или отправлять SMS на короткий номер, который обещает разблокировку компьютера от вируса или рекламирует сервис, основанный на доступе к персональным данным других людей. Уточните информацию у своего оператора.
Для разблокировки компьютера от вирусов используйте антивирусные программы известных разработчиков, в том числе бесплатные версии, размещенные на их сайтах. Не стоит верить сообщениям, гарантирующим избавление от вируса или исчезновение Интернет-баннера при отправке SMS на короткий номер.
Вы можете подключить услугу «Черно-белые списки», которая позволяет блокировать доступ к сервисам, предоставляемым контентпровайдерами, по Вашему желанию.
— Какие рекомендации вам известны? О каких вы услышали впервые?
3. Закрепление знаний, умений, навыков, формирование информационной компетентности
Тест по теме «ОЦЕНКА УРОВНЯ ЦИФРОВОЙ ГРАМОТНОСТИ ПО УПРАВЛЕНИЮ ПЕРСОНАЛЬНЫМИ ДАННЫМИ В ИНТЕРНЕТЕ»
Инструкция для проведения теста: Вам будет предложено 20 заданий, касающихся вопросов безопасности обращения с персональными данными в Интернете. Каждое задание содержит все необходимые для ее решения условия и имеет один правильный вариант ответа. Ваша задача выбрать и отметить вариант ответа, который вы считаете правильным.
1. Какой набор информации может быть отнесен к персональным данным? A. Фамилия, имя, отчество. B. Дата и место рождения. C. Место учебы. D. Политические и религиозные убеждения. E. Все предложенные варианты.
2. Ниже приведены разные категории персональных данных. Какие из них позволяют однозначно идентифицировать пользователя в нашей стране? A. Имя, фамилия, год рождения. B. Фамилия, год рождения, номер школы. C. Имя, номер паспорта РФ, город проживания. D. Имя, фамилия, город проживания. E. Ни один из предложенных вариантов.
3. Этим летом Маша Иванова вместе с классом ездила в Царское село. В конце экскурсии классный руководитель сделал групповую фотографию класса на фоне Екатерининского дворца. Фотография получилась удачной, поэтому учитель поместил ее на своей странице в социальной сети с подписью «9 «Б» в Царском селе» и отметил на ней несколько человек, включая Машу. Какая информация о Маше Ивановой содержится в этой записи? A. Внешние данные. B. Место учебы. C. Место проведения экскурсии. D. Имена одноклассников Маши Ивановой. E. Все предложенные варианты.
4. На выходных Вася гостил у своего друга Пети. Пару раз он воспользовался компьютером друга, чтобы оформить покупку новой компьютерной игры в интернет-магазине и почитать новости. Какая Васина информация могла сохраниться на Петином компьютере? A. История поисковых запросов. B. История посещений сайтов. C. Личная переписка в социальной сети. D. Скачанные файлы. E. Ни один из предложенных вариантов.
5. Ксюша, находясь в кафе с лучшей подругой Светой, воспользовалась ноутбуком ее двоюродной сестры Кати для входа в браузер. Что нужно сделать Ксюше, чтобы оставить минимум личной информации на Катином ноутбуке? A. Очистить журнал посещений после выхода из браузера. B. Не сохранять пароли во время работы в Сети. C. Использовать режим инкогнито во время работы в браузере. D. Сменить пользователя на ноутбуке. E. Очистить папку временных файлов после работы за компьютером.
6. Таня познакомилась с Колей на портале популярной онлайнигры Lineage. Долгое время они играли за одну команду и не раз выручали друг друга в виртуальных боях. Как-то раз Таня собралась в очередной рейд, но в последний момент узнала о контрольной работе по геометрии и поняла, что не сможет принять участие в сражении. Коля предложил Тане дать пароль от ее аккаунта его другу, который бы мог заменить ее на время в игре. Как лучше всего поступить Тане в такой ситуации и почему? A. Коля поручился за своего друга, поэтому можно спокойно передать ему пароль. B. Нет ничего страшного в том, чтобы сообщить пароль другому игроку – это всего лишь игра. C. Колиному другу можно передать пароль, поскольку даже если он украдет аккаунт, его можно будет восстановить. D. Следует отказаться от Колиного предложения, поскольку пользовательское соглашение запрещает игрокам передавать пароль третьим лицам. E. Тане нужно собрать максимум информации о Колином друге, а потом принять окончательное решение.
7. При регистрации на сайте у вас запросили номер телефона. В каком случае это наиболее безопасно? A. Вы регистрируетесь на крупном и хорошо известном онлайн-ресурсе, например, на портале mail.ru. B. Вы первый раз совершаете покупку в Интернет-магазине, на сайте которого размещены положительные отзывы других пользователей. C. Вы регистрируетесь на игровом портале, который порекомендовали вам ваши друзья и знакомые. D. Вы хотите скачать новый фильм на файлообменнике, и от вас требуется регистрация во всплывающем окне. E. Во всех обозначенных выше случаях.
8. Какой из приведенных ниже паролей можно считать самым надежным? A. SupermanVasya2005 B. QwErTy123456 C. A!z8@;) D. Q1jk45)@da E. M@$h@2oo!
9. Какой из способов хранения пароля от аккаунта можно считать самым надежным? A. В записной книжке в нижнем ящике письменного стола. B. В текстовом файле в скрытой папке на компьютере. C. В специальной программе, бесплатно скачанной в Интернете. D. Все перечисленные выше способы можно считать полностью надежными. E. Все перечисленные выше способы считать полностью надежными нельзя
10. Однажды вечером Аня обнаружила, что кто-то взломал ее аккаунт, разместил на ее стене неприличные изображения и стал рассылать оскорбления ее друзьям в личной переписке. Аня восстановила доступ к аккаунту и поменяла пароль, но было уже поздно. Многие удалили ее из друзей и добавили в черный список, а кто-то даже перестал разговаривать в школе. Что следует сделать Ане для того, чтобы восстановить свою репутацию? А. Удалить все неприятные сообщения со своей страницы. B. Разместить на странице пост, разъясняющий причины произошедшего, извиниться перед читателями. C. Сменить пароли ко всем аккаунтам на других онлайн- ресурсах. D. Постараться лично поговорить с самыми близкими друзьями и объяснить им ситуацию. E. Все вышеперечисленные варианты.
11. В социальной сети Вове пришло личное сообщение, в котором сообщалось о попытке взлома его аккаунта с чужого устройства. Вове настоятельно рекомендовалось пройти по ссылке, указанной в сообщении, для смены пароля. Как правильно поступить в такой ситуации? A. Пройти по ссылке, указанной в письме, и сменить пароль. B. Проигнорировать письмо и добавить его в спам. C. Написать в ответ гневное письмо с критикой работы социальной сети. D. Самостоятельно зайти в свой аккаунт социальной сети и сменить пароль. E. Ответить на это письмо и уточнить информацию.
12. Мила решила начать вести здоровый образ жизни. Она скачала на смартфон фитнес-треккер, который позволяет регистрировать пройденное расстояние и количество калорий, потраченных во время занятий спортом. Приложение было бесплатным, но требовало обязательного доступа к определенному набору персональных данных и функций смартфона. Какое из этих требований можно считать чрезмерным?
A. Доступ к фотокамере и медиафайлам, хранящимся на устройстве. B. Информация о местонахождении и перемещении. C. Возможность совершать покупки внутри приложения. D. Пол, возраст, вес, рост. E. Все перечисленные требования разумны.
13. Какая персональная информация, размещенная на онлайнресурсе, может быть удалена из поисковой системы по запросу пользователя?
A. Любое групповое фото, на котором есть изображение данного пользователя. B. Перепост пользовательского поста, размещенного в открытом доступе на странице данного пользователя в социальной сети. C. Номер паспорта или любого другого официального документа пользователя. D. Никакая персональная информация о пользователе не подлежит обязательному удалению. E. Любая персональная информация о пользователе может быть удалена из Интернета.
14. Как поступить, если злоумышленники взломали ваш аккаунт на онлайн-ресурсе и поменяли пароль и адрес почтового ящика, к которому был привязан аккаунт? A. Ничего страшного не произошло, не стоит тратить силы на восстановление аккаунта, всегда можно завести новый. B. Обратиться к администрации ресурса с просьбой восстановить вам доступ к аккаунту. C. Обратиться к злоумышленникам с просьбой вернуть аккаунт. D. Обратиться к знакомому хакеру с просьбой взломать ваш аккаунт еще раз и вернуть его законному владельцу. E. Это безвыходная ситуация – потерянный аккаунт в принципе невозможно вернуть.
15. Влад – Наташин одноклассник, с которым она сидит за одной партой. Влад – очень любопытный молодой человек. Какое из действий Влада будет являться нарушением Наташиной приватности? A. Рассказал другим одноклассникам о том, что у Наташи аллергия на сладкое. B. Сфотографировал спящую на парте Наташу и выложил это фото в социальную сеть. C. Взял с парты Наташин смартфон и посмотрел историю звонков. D. Прочел вслух записку, которую Наташа написала перед уроком Ване. E. Все вышеперечисленные варианты.
16. Какие виды Наташиных персональных данных Влад может распространять с полной уверенностью в том, что это никак ей не навредит? A. Номер телефона; ФИО родителей; домашний адрес. B. Страна проживания; номер школы; информация о перенесенных заболеваниях. C. Хобби; номер и адрес школы; логин от страницы в социальной сети. D. Возраст; рост и вес; оценки в журнале. E. Никакие из перечисленных видов данных.
17. Какое из утверждений является полностью верным? A. Каждому человеку необходимо защищать свою персональную информацию и сохранять как можно больше сведений о себе втайне от других людей. B. Каждый человек может самостоятельно решать, какая информация и при каких условиях может быть сохранена в секрете или передана другим людям. C. Бесполезно контролировать свои персональные данные в Интернете, поэтому нет смысла об этом беспокоиться. D. Каждому человеку следует предоставлять как можно больше сведений о себе, поскольку это позволяет пользоваться всеми возможностями Интернета. E. Ни один из перечисленных вариантов.
18. Оля рассталась с Васей и теперь встречается с Антоном. Они часто гуляют, делают совместные фотографии и выкладывают их в сеть. Оля по-прежнему хорошо относится к Васе, но не хочет расстраивать его фотографиями с новым молодым человеком. Как ей лучше поступить? A. Ограничить для Васи доступ к своим фотографиям. B. Прекратить выкладывать все свои фотографии в социальную сеть. C. Попросить Васю не заходить на ее страницу. D. Удалить Васю из друзей. E. Внести Васю в черный список.
19. Выберите верное утверждение. Авторские посты, размещаемые пользователями в социальных сетях и блогах: A. Показывают уникальность человека и всегда позитивно влияют на его репутацию. B. Никогда не содержат персональной информации, поэтому их публикация не несет серьезных последствий. C. Оцениваются читателями по-разному, поэтому невозможно предсказать, как публикация поста отразится на репутации его автора. D. Всегда содержат излишнюю персональную информацию о человеке, что может навредить не только его репутации, но и личной безопасности. E. Не содержат ничего хорошего, поскольку свидетельствуют исключительно о желании похвастаться и продемонстрировать то, чего на самом деле нет.
20. Каким из правил НЕ стоит руководствоваться при публикации информации в Интернете? A. Писать посты, руководствуясь первым эмоциональным порывом, с целью донести до читателя бурю своих переживаний. B. Публиковать сведения и комментарии о важных фактах и событиях только после ее проверки в нескольких первоисточниках. C. Выкладывать в сеть данные о другом человеке только в том случае, если он дал на это свое предварительное согласие. D. Оценивать публикуемую информацию с точки зрения друзей, взрослых людей и незнакомых пользователей. E. Все вышеперечисленные правила верны.
Правильные ответы: 1 – E, 2 – C, 3 – E, 4 – B, 5 – C, 6 – D, 7 − A, 8 – D, 9 – E, 10 – Е, 11 – D, 12 – A, 13 – C, 14 – B, 15 – E, 16 – E, 17 – B, 18 – A, 19 – C, 20 – А. Уровень освоения программы оценивается в соответствии со следующей таблицей: Количество правильных ответов. Примерная оценка по пятибалльной шкале 17–20 Отлично. 14–16 Хорошо. 10–13 Удовлетворительно. Менее 10 Неудовлетворительно.
4. Просмотр и обсуждение анимационных материалов, словенского мультсериала «SheepLive» перевод которого на русский язык был осуществлен НП «Лига безопасного интернета»: В глупом положении , Затуманенные головы .
— Приходилось ли вам попадать в подобные ситуации?
— Какой выход из них вы можете предложить?
5. Подведение итогов. Рефлексия. Выводы
Итак, вы изучили материал о рисках в сети Интернет и их предупреждении. Как вы ответите на вопрос: ««Безопасен ли Интернет?» Почему?
— Следует ли отказаться от использования сети Интернет? Почему?
— Считаете ли вы необходимым продолжить самообразование по теме?
В вашем самообразовании по безопасному использованию сети Интернет вам помогут следующие рекомендации:
Какой из приведенных ниже паролей можно считать самым надежным ответ на тест единый урок
Автор: Влад Сверчков
На что влияет выбор языка программирования? Какие языки выбирают первыми? Рейтинги языков программирования. Индекс TIOBE. Индекс PYPL. Stack Overflow Developer Survey 2022. Рейтинг от GitHub. Какие языки наиболее популярны в соответствии с этими рейтингами? Какие языки выбирают украинские разработчики? Количество вакансий и отзывов в Украине. Выводы. Первый язык программирования (сокращенно – ЯП) открывает мир создания кода перед новичком. И от выбранного языка очень часто зависит то, каким будет этот «мир» – интересным и увлекательным, или же недружественным и слишком сложным. Если вы хотите из этого знакомства извлечь максимальную пользу для себя, стоит внимательно подойти к выбору первого языка программирования – и наша статья вам в этом поможет. Мы разберем языки программирования, которые могут быть отличными в качестве первых языков. Вы узнаете, в каких IT-профессиях востребован тот или иной язык – а также много другой полезной и интересной информации. На что влияет выбор языка программирования? Для новичка выбор первого языка – важный шаг, который может определить его дальнейший путь развития в качестве разработчика. Главные пункты, на которые влияет ЯП: Скорость овладения базой. Языки программирования имеют различную сложность изучения. К примеру, JavaScript довольно легко изучается, в то время как C++ носит более хардкорный характер, а языки семейства Assembler могут бросить вызов даже тем, кто уже является разработчиком. Языки с динамической типизацией (JavaScript, Python, Ruby и т. д.) изучаются быстрее, чем языки со статической (C#, Java, C/C++ и др.). Парадигма мышления. Языки имеют разные парадигмы, согласно которым вы будете создавать код: процедурная, императивная, объектно-ориентированная, функциональная и т. д. От парадигмы выбранного вами языка зависит то, как вы будете подходить к решению задач. К примеру, если вы изучаете ООП-язык, то при столкновении с языком с функциональной парадигмой вы потратите дополнительное время, чтобы понять его и писать код по-другому (например переход с Java на Scala). Перспективы трудоустройства. Каждый язык имеет свои сферы применения – и вы должны это учитывать, если планируете после овладения ЯП искать работу. Иначе придется учить новый, теряя драгоценное время. Направление разработки. Хотя самые популярные языки программирования достаточно универсальны, всё же есть направления, в которых они ценятся больше всего. Например, для Java – это Enterprise и мобильная разработка, JavaScript – веб-разработка, Python – BackEnd веб-разработка, написание скриптов, нейронные сети, C# — корпоративные приложения, бэкенд и игры на Unity, C/C++ — высоконагруженные приложения, Embedded разработка и тому подобное. Соответственно, если вы выберете JavaScript, то работать по Embedded направлению у вас не получится – какие-то библиотеки для работы с микроконтроллерами с использованием JavaScript вы, возможно, найдете, но работодателя – вряд ли. Зачем забивать гвоздь монитором, если есть молоток? Поиск ментора и комьюнити. У каждого ЯП свое комьюнити и свои джедаи, которые готовы брать к себе юных падаванов на обучение. У популярных языков больше аудитория, есть хорошие и подробные документации, легче найти ментора – это позволяет удобнее и быстрее учиться. В более нишевых ЯП комьюнити скромнее, поэтому найти практикующего разработчика, который возьмет к себе ученика, чтобы научить его программировать, а также найти качественные гайды – ещё те задачи. Ментор важен тем объемом знаний и практических навыков, которые может передать: подсказать, как правильнее делать, где вы ошибаетесь, на чем сосредоточить внимание. Эти советы ускорят ваше изучение ЯП и позволят быстрее двигаться дальше навстречу желанной IT-специальности. Стиль программирования. Пункт очень похож на 2-й, но если там дело касалось этики языка программирования, то здесь речь больше об этике самого программиста. В разных языках могут быть разные правила написания кода, согласованные сообществом программистов. Поэтому овладев одним языком, вы можете столкнуться с совершенно другой кодерской этикой при переходе к другому ЯП (в качестве примера – переход с Go на Java). Легкость поиска ответов. Чем популярнее язык, тем легче гуглить и искать ответы, поскольку множество других разработчиков до вас интересовались теми же вопросами (высоковероятно). Однако если вы хотите использовать язык в экстравагантных целях – для которых он не предназначен – могут возникнуть проблемы с ответами. Переход на другой язык. Некоторые технологии и языки устаревают и приходится учить новый стек. Например, так произошло с мобильными iOS разработчиками, которые писали на языке Objective-C и были вынуждены перейти на Swift, поскольку компания Apple так решила. Учитывайте и это при выборе языка. Какие языки выбирают первыми? Ранее изучение программирования начиналось в школах с языков Pascal либо Basic. Эти языки хорошо подходят для знакомства с алгоритмическим подходом, структурами данных и фундаментальными концепциями программирования. Они учат грамотности и рациональному подходу к решению программистских задач, но в коммерческой разработке сегодня почти не используются. В школах всё более распространенными становятся такие популярные языки, как Python и JavaScript (JS). Они достаточно просты в овладении и позволяют быстро преодолеть расстояние между началом обучения и получением настоящего конечного результата. Скрипт на JS вообще можно написать с помощью обычного блокнота в Windows и запустить в любом браузере – даже устанавливать дополнительное ПО не нужно. Проще говоря, эти два языка просто более интересны и дают больше удобств и возможностей, чем Pascal или Basic. Изучение JavaScript и Python в школе имеет целью заинтересовать учащихся программированием и показать, насколько легко и просто это может быть, какие возможности может дать умение писать код. Чтобы почувствовать силу того же пайтона, можете посмотреть интересную подборку из 10 проектов длиной в 10 строк кода по ссылке. Таким образом, эти языки не только знакомят с программированием, но и позволяют максимально быстро влиться в IT и создавать современные приложения. Рейтинги языков программирования Чтобы лучше понимать, какие языки сегодня пользуются спросом, рассмотрим несколько соответствующих рейтингов. Индекс TIOBE Первый десяток языков в соответствии с индексом TIOBE (за январь 2023 года): Python C C++ Java C# Visual Basic JavaScript SQL Assembly language PHP Аналитика индекса TIOBE отталкивается от количества квалифицированных инженеров во всем мире, а также от того, какое количество курсов и сторонних поставщиков есть сейчас. Индекс PYPL Первый десяток языков в соответствии с индексом PYPL (январь 2023 года): Python Java JavaScript C# C/C++ PHP R TypeScript Swift Objective-C Аналитика данного индекса выстроена вокруг частоты поиска туториалов (учебных материалов) по тому или иному языку программирования в поисковике Google. Stack Overflow Developer Survey 2022 Теперь посмотрим на опрос Stack Overflow Developer Survey 2022 (более 70 000 опрошенных со всего мира). На картинке ниже можно увидеть, какие языки чаще всего используют те, кто только изучает программирование и IT (на двух картинках ниже продемонстрированы не все языки из рейтинга): Наибольший спрос среди новичков вызывают языки верстки HTML & CSS (ими создают визуальное оформление веб-сайтов), а также языки программирования JavaScript и Python. Остальные языки идут с отрывом в более 19%. То есть, современные начинающие всё больше и больше отходят от классических Java, C#, а также Pascal и Basic, выбирая более простые языки, с которыми быстрее попадешь в IT. Следующая картинка показывает, какими языками чаще всего пользуются профессиональные разработчики: На первом месте JavaScript – маст-хэв язык для создания клиентской логики веб-сайтов и веб-сервисов, далее следует HTML & CSS, язык запросов SQL для работы с базами данных, уже известный лаконичный Python, синтаксический сахар для JavaScript – язык TypeScript (TS), классические Java и C#, а также другие языки. Рейтинг от GitHub Аналитика ниже построена на основе того, какие языки чаще всего используются в публикуемых на GitHub проектах. Это самый известный ресурс для разработчиков, где они размещают свои проекты, что позволяет не только демонстрировать свои разработки другим, но и удобно вести командную разработку. В лидерах – JavaScript, Python и Java, за ними – строго типизированный TypeScript, C#, C++ и другие. Какие языки наиболее популярны в соответствии с этими рейтингами? Очень часто на первых позициях стоит Python. Это и неудивительно – он прост, лаконичен и имеет множество библиотек и модулей, которые еще больше упрощают процессы создания приложений и способствуют более быстрому решению задач. Основные сферы применения: системное администрирование, DevOps инженерия, обработка данных, Big Data, Data Science (большие массивы данных), ML (машинное обучение), серверная веб-разработка (BackEnd). В связи с прекращением поддержки пайтона версий 2.x (сейчас поддерживается только 3.x), возникла необходимость переписывать старый код (legacy) в соответствии с третьей версией – это создает дополнительный спрос на Python разработчиков. JavaScript также отличается простотой и лаконичностью, но ее основная область использования ограничена WEB-ом, хотя JS имеет достаточно средств, чтобы на ней вести удобную разработку серверного ПО, мобильных и десктопных приложений и т. д. Рейтинг от Stack Overflow показал, что именно эти два языка программирования чаще всего предпочитают начинающие. TypeScript – это тот же JavaScript, но со строгой типизацией и другими фишками, которые делают код более структурированным и уменьшают количество потенциальных ошибок. Следующие позиции обычно занимает Java – классический и универсальный язык, созданный в конце 20 века, но при этом до сих пор популярный и востребованный. Успешнее всего себя зарекомендовал в кроссплатформенных приложениях, Enterprise (создание ПО для крупного бизнеса), а также в мобильной разработке, хотя его сфера применения ими не ограничивается. Также существует много легаси кода на Java, который требует поддержки и обновления, что создает дополнительную востребованность грамотных Java девелоперов. Часто упоминаются C/C++ — это корифеи среди современных языков программирования, зачастую изучаются в ВУЗах. Сложны в овладении, но очень мощны в использовании. Именно они применяются в ресурсоемких приложениях, микроконтроллерах и других приложениях, которым важно контролировать затраты памяти. Если вы хотите быстро попасть в IT – C/C++ не вариант, но в качестве языков для изучения программистской базы они – то, что нужно. Изучив «плюсы», вы сможете с легкостью переходить на другие языки. C# – популярный универсальный язык от компании Microsoft, который прежде всего ориентирован на создание приложений под ОС Windows, однако выход платформы .NET Core позволил создавать ПО и под другие популярные платформы. Больше всего применяется в разработке корпоративных приложений, серверной стороны веб-приложений, игр на Unity, десктопных приложений. PHP – популярный язык для серверной веб-разработки. Несмотря на его почтенный возраст, до сих пор активно используется в бэкенде. Имеет своеобразный синтаксис и неоднозначное отношение со стороны кодерского сообщества, хотя по своей легкости напоминает Python и JavaScript. На языке PHP написано много legacy кода, поэтому кроме создания новых приложений есть необходимость переписывать код на других языках. SQL – классический язык запросов для манипуляций с данными. Используется всеми разработчиками, которые работают с реляционными базами данных, поэтому и пользуется относительно высокой популярностью. Bash/Shell – это командные оболочки для написания скриптов, позволяющих автоматизировать выполнение рутинных задач. Важные инструменты в работе системных администраторов и DevOps инженеров. Какие языки выбирают украинские разработчики? Также обратимся и к аналитике от DOU – сообщества профессиональных украинских разработчиков, а именно – рассмотрим зарплаты украинских девелоперов (зима 2023). Узнаем, какие ЯП наши разработчики используют в качестве основных: Первыми идут языки для создания фронтенда, поскольку почти весь веб FrontEnd создается на языках JavaScript и/или TypeScript. За ними – универсальные языки C#, Java, Python и язык серверной разработки PHP. Kotlin и Swift – это мобильная разработка под Android и iOS соответственно. Далее идут менее популярные направления. Таким образом, сейчас более 85% украинских разработчиков-респондентов в качестве основного ЯП используют один из восьми вышеприведенных языков. Теперь рассмотрим медианные зарплаты украинских разработчиков в соответствии с ЯП, которые они используют в качестве основных: Наиболее высокооплачиваемыми для отечественных Junior разработчиков-респондентов являются Ruby и C++. Но другие языки от них не сильно отстают. На уровень заработной платы также влияет навык прохождения собеседований, поскольку многие работодатели просто не указывают в объявлениях конкретную сумму, следовательно, чем лучше вы пройдете собеседование, тем большую сумму вам смогут предложить. Динамика зарплат для джунов за последние полгода: JavaScript – не изменилась. Java – на уровне декабря 2021 года. C#/.NET – повысилась на 50 USD. PHP – снизилась на 50 USD. Python – снизилась на 45 USD. C++ – выросла на 100 USD. Ruby/Rails – выросла на 125 USD (но количество респондентов невелико, поэтому число может не отражать реальную ситуацию). Swift – повысилась на 50 USD. Kotlin – повысилась на 100 USD. TypeScript – повысилась на 60 USD. Количество вакансий и отзывов в Украине Рассмотрим еще одну аналитику от DOU, которая касается количества вакансий и отзывов по состоянию на декабрь прошлого года. К некоторым позициям приведем используемые языки программирования: Наибольшее соотношение отзывов к вакансиям во FrontEnd (кроме JavaScript и TypeScript используются ещё языки верстания HTML & CSS) – конкуренция одна из самых высоких на рынке IT. Меньше конкуренции в Java, Python, .NET – их области использования и языки уже разобрали выше. Node.js – платформа для серверной разработки на языке JavaScript или TypeScript. Big Data и Data Science – в этих областях чаще всего используется Python. iOS/macOS разработка ведется на языке Swift, реже – Objective-C. Flutter – это мобильная разработка под Android и iOS на языке Dart. Unity – создание игр при помощи C# на движке Unity. React Native – разработка мобильных и десктопных приложений на языках JavaScript & TypeScript. Blockchain – разработка с помощью Java, Node.js, Golang, Rust и т. д. Android – создание мобильных приложений на языках Java & Kotlin (Kotlin – гораздо востребованнее здесь). DBA (Database Administrator) – разработка ведется на языке SQL, PL/SQL с использованием различных СУБД (PostgreSQL, MySQL и т. д.). Ruby – бэкенд разработка на языке Ruby. DevOps – используется язык Python, инструменты Bash/Shell. Выводы Какой же язык программирования выбрать в качестве первого? Есть три основных варианта в зависимости от того, какую цель вы перед собой ставите: Если вы хотите овладеть программистским фундаментом, сформировать правильное алгоритмическое мышление, а уже потом ориентироваться на более прикладные вещи – начинайте свой путь в программировании вместе с Pascal, Basic или C++. Первые два языка изучаются ещё в школе и закладывают правильные кодерские привычки, надежную базу, в то время как C++ — это гораздо более сложный язык, часто рассматриваемый в университетах, но он также хорош в изучении фундамента. Стоит заметить, если вы будете успешны в C++, другие языки сможете очень легко изучать и будете быстро развиваться дальше по конкретному направлению разработки. Этот вариант подойдет тем, у кого есть время (если идти по пути Pascal, Basic) или тем, у кого есть не только время, но и любовь к вызовам (C++). Если вы хотите овладеть правильным программистским фундаментом, но хотите изучать язык, который уже активно применяется в разработке и при этом не требует таких усилий для изучения, как более сложные C/C++ – выбирайте между Java или C#. Это классические языки, которые научат вас базе и при этом будут достаточно востребованы на IT-рынке еще долгое время, что позволит относительно быстро найти работу. Это лучший вариант из всех трех с точки зрения компромисса между легкостью изучения, быстротой становления в дальнейшем разработчиком и получением кодерской базы. Если вы хотите максимально быстро попасть в IT – обратите внимание на JavaScript и Python. Они легки в овладении, быстро изучается синтаксис, у рынка достаточно много вакансий под JavaScript. Также эти языки имеют большое комьюнити, поэтому материалов для изучения вы найдете в изобилии. Многие хотят попасть в IT именно через последний – третий вариант. Но в чем его недостатки? Начнем с JS: большая конкуренция (упоминали при рассмотрении аналитики); слишком большая вариативность – каждый разработчик может писать код по своим собственным правилам и будет трудно читать и понимать логику его работы; в интернете много ответов низкого качества; из джаваскрипта труднее переходить на другие языки программирования, чем наоборот; значительный шанс упустить базовые концепции программирования и высокий риск написания плохого кода. В Python примерно те же проблемы плюс наличие своеобразного синтаксиса, который может путать. Это не значит, что данные языки – плохие. Абсолютно у каждого есть как свои плюсы, так и минусы – и это нормально. ЯП нужно выбирать, отталкиваясь от сферы, в которой вы собираетесь себя реализовывать. Только тогда этот выбор будет максимально удачным и полезным вам. Вкратце резюмируя: если вас интересует разработка веб-сайтов – всего того, что на стороне клиента, вы хотите постоянно видеть наглядный результат своей работы – выбирайте JavaScript. Если интересует кроссплатформенное ПО, Enterprise или мобильная разработка под Android – учите Java (в мобильной разработке затем доучите Kotlin). C# – хороший выбор для тех, кто хочет работать с инструментами от Microsoft, создавать корпоративные приложения, BackEnd веб-приложения, игры, десктопные приложения под Windows. Python – незаменимый в автоматизации рутинных задач, популярный в работе с большими данными, BackEnd-ом, искусственным интеллектом. Эти 4 языка покрывают достаточно большой процент IT-специальностей, поэтому выбрав один из них вы не прогадаете. Где можно выучить языки программирования? Наши курсы помогут каждому, кто собирается учить популярные языки программирования и сопутствующие технологии. Портал ITVDN насчитывает более 230 видео курсов и имеет собственные программы обучения по 15 популярнейшим IT-профессиям, среди которых: Верстальщик сайтов FrontEnd Developer Java Developer Python Developer C#/.NET Developer Android Developer Unity/Game Developer PHP Developer и другие. Обучение происходит в формате записанных видео курсов – вы можете учиться в то время, которое для вас комфортно. Со всеми специальностями можно подробно ознакомиться, перейдя на страницу специальностей ITVDN. Если вас интересует изучение только языка программирования, соответствующие курсы вы найдете в нашем каталоге. Желаем успешного обучения и достижения ваших амбиций в IT!
Как правильно заключить договор на разработку сайта: советы для фрилансеров
Автор: Богдана Гайворонская
Фрилансеры не всегда заключают договор на разработку сайта с заказчиками, полагаясь на договоренности, озвученные устно или сформулированные в переписке. Ведь сам процесс согласования и подписания документов занимает определенное время и требует усилий. Впрочем, сотрудничество на доверии достаточно рискованно для обеих сторон. Кроме того, что один из участников может безнаказанно отказаться от выполнения своих обязанностей, есть немало нюансов, которые затрудняют сотрудничество в случае отсутствия документально заверенных алгоритмов работы. Даже когда обе стороны намерены добросовестно выполнить все договоренности, их может подвести банальное недоразумение. Договор не только гарантирует защиту как исполнителя, так и заказчика. Он представляет собой определенную дорожную карту, которая описывает каждый этап работ, каждую возможную ситуацию, действия партнеров в случае форсмажоров и алгоритм урегулирования спорных вопросов. Даже подписание типового договора частично уменьшает риски, но мы все же рекомендуем создавать отдельный контракт для каждого заказчика. Хостинг-провайдер и регистратор доменных имен Cityhost.ua предлагает читателям нашего блога материал, созданный совместно с IT-юристами, чтобы разобраться во всех аспектах создания договора на разработку сайта. Этапы согласования и заключения договора Заключение договора начинается в момент, когда заказчик и исполнитель обсуждают и согласовывают все детали проекта. Поэтому этот этап также должен быть задокументирован в виде брифа. Кроме того, нужно составить детальное ТЗ и сформировать сам договор. Давайте рассмотрим каждый шаг по этому пути. Заполнение брифа Заказчики очень не любят заполнять бриф и пытаются пропустить этот этап, обсудив все детали по телефону или в чате. Часто случаются ситуации, когда заказчик говорит: «Вы профессионал, посмотрите сами, что там нужно сделать и изложите свои предложения». Такая позиция нередко выливается в результат: «Нет, это не то, что нужно, предложите что-нибудь другое». На самом же деле бриф необходим для сотрудничества, потому что в нем содержатся ответы на важные для исполнителя вопросы. Каждый разработчик заключает свой бриф, который может выглядеть подобным образом: Название и отрасль работы компании. Целевая аудитория. Локация (местная, всеукраинская, международная). Ценности, миссия. Корпоративный стиль — слоган, корпоративные цвета, стиль промо-материалов (желательно отправить эти материалы на почту). Тип сайта, который хотите заказать (визитка, интернет-магазин, корпоративный сайт, наличие/отсутствие блога и т.п.). Ориентировочная структура сайта, названия разделов. Пожелания по оформлению сайта. Примеры сайтов, на которые вы хотели бы ориентироваться. Можно создать типичный бриф, но все же стоит вносить в него дополнительные вопросы, предназначенные для конкретного заказчика. Составление технического задания После заполнения брифа заказчик уточняет вопросы и вносит предложения, каким он видит будущий сайт — основную концепцию, количество разделов, визуальный стиль. На основе этих переговоров составляется техническое задание и одновременно начинается разработка договора. В техзадании прописывается конкретный результат и все услуги, предоставляемые разработчиком. Это очень важно, поскольку «сделать сайт» довольно размытое понятие. Может случиться, что владельцы фирмы обратились к фрилансеру, который только пишет код, и не занимается дизайном и контентом. Он будет ждать от заказчика макет, тексты и фото. Другие фрилансеры могут сделать сайт «под ключ» и имеют разветвленную сеть субподрядчиков — дизайнеров, копирайтеров, фотографов и т.д. Техзадание прописывается максимально подробно и включает в себя измеряемые параметры, например: «Сайт должен состоять из 5 разделов: главная страница, страница «О нас», страница контактов, страница для представления товара, раздел для блога». Если у сайта есть блог или раздел новостей, в ТЗ также пишется, должен ли исполнитель заполнить этот раздел 2-3 новостями или делает только структуру блога. Чем подробнее будет описан каждый аспект разработки сайта, тем меньше остается места для недоразумений. Обсуждение и согласование текста договора Для начала нужно определиться с типом договора. Есть два типа — договор на оказание услуги и договор подряда. Они отличаются тем, что в первом случае ключевым является сам процесс работы, а во втором — результат. К примеру, SEO-продвижение не имеет конечного результата и продолжается всегда, пока существует сайт — тогда заключается договор на сотрудничество. Для разработки сайта больше подходит договор подряда, поскольку заказчику нужен сайт, его интересует завершенная работа и его плоды. Далее нужно поочередно прописать все главные этапы сотрудничества: Предоставление заказчиком материалов разработчику. Это могут быть тексты, фото, видео, логотип и т.д. Создание и утверждение макета. Создание сайта. Внесение поправок. Проверка и приём работы. Подписание актов о выполнении работ. Оплата проделанной работы. Это ориентировочный список, потому что у каждого сайта могут быть свои этапы. Например, исполнитель не только разрабатывает сайт, но и проводит маркетинговые исследования, анализирует конкурентов и на основе полученной информации дает рекомендации заказчику насчет концепции сайта — это отдельный этап, который также требует усилий и влияет на формирование стоимости заказа. Основные правила составления договора Есть элементы договора, без которых он не сможет стать четким документом, дисциплинирующим стороны в процессе работы. Сроки Обязательно нужно прописать сроки выполнения каждого этапа. Если внимательно присмотреться к порядку действий, вы увидите, что часть работы зависит от исполнителя (создание сайта, внесение правок), а вторая часть — от заказчика (предоставление материалов, проверка, прием работы). Если в договоре прописана только финальная дата, когда разработчик должен сдать сайт, он может попасть во временную ловушку — сроки затянуты, но не по его вине. Также следует прописать действия сторон в случае, если кто-то из партнеров выполняет свои обязанности ненадлежащим образом. К примеру, если заказчик не осуществил прием работы в течение семи дней, она автоматически считается принятой. Прописывайте не конкретные даты, а время между этапами, например: «Разработчик обязуется предоставить начальный макет сайта в течение 4 дней с момента получения материалов». Измеримость Все пункты в договоре должны быть описаны таким образом, чтобы их можно было измерить каким-либо конкретным параметром — временем, действием, результатом. Например, обсуждение и внесение правок происходит в течение недели после того, как разработчик пришлет по электронной почте ссылку на готовый сайт на такой-то адрес (конкретный). Таким образом снижается вероятность путаницы, когда одна сторона ждет результата в Вайбере, другая пишет сообщение в Фейсбуке, а время истекает. Конкретика Очень важно прописывать четкие формулировки. К примеру, «предоставить макет сайта» — это нечеткая формулировка. А вот «предоставить макет сайта в виде проекта в Figma с доступом редактора» — это уже нечто конкретное. Также нужно прописывать, какие материалы ожидает разработчик — фотографии в формате .png с разрешением не менее 600 пикселей по ширине, тексты в формате Google Docs с открытым комментированием. Далеко не все заказчики ориентируются в компьютерных технологиях. Если ваш клиент — небольшое строительное предприятие или ФЛП, ремонтирующий велосипеды, для него не существует никаких опций по умолчанию. Поэтому конкретное и детальное описание всех требований и этапов — это скорее необходимость, иначе клиента и разработчика может ожидать много сюрпризов. Сбалансированность В договоре должны быть равномерно соблюдены права и обязанности обеих сторон. Не должно быть такого, что во всем виноват заказчик или вся ответственность лежит на исполнителе. Если какой-то этап работы зависит от действий определенной стороны — она несет ответственность за его реализацию или уплачивает неустойку (или подпадает под другие санкции) в случае невыполнения обязанностей по собственной вине. Пункты договора, требующие внимания В этот раздел вынесем те аспекты сотрудничества, о которых начинающие фрилансеры могут не знать или не уметь правильно их урегулировать. 1) Количество и порядок поправок, внесение изменений в ТЗ Важен вопрос количества возможных правок и внесения изменений в техническое задание. Лучший и проверенный метод — когда заказчик отправляет все правки в одном документе, а исполнитель вносит их сразу. Оптимально делать три круга правок; если у клиента появляются дополнительные правки, это должно оплачиваться. Такая политика в первую очередь защищает исполнителя от десятков переделок и дисциплинирует заказчика, который более продуманно решает, нужна ли эта правка. Правки должны быть конкретными и аргументированными, без формулировок наподобие «сделайте как-то иначе, но не так, как есть». Насчет ТЗ — все изменения, которые заказчик хочет внести в него уже во время работы, должны также дополнительно оплачиваться. В случае необходимости можно прописать, какие изменения и какого масштаба можно вносить, сколько стоит каждое из них. Одно дело поменять фотографию, и совсем другое, когда заказчик на финальной стадии решает заменить CMS (по факту это значит делать все заново). 2) Авторские и имущественные права Вопрос авторских прав касается как материалов, используемых на сайте при разработке, так и использования материалов сайта после завершения работ. Важно отслеживать, уникален ли контент, который предоставляет заказчик или предлагает исполнитель. Для обеспечения обеих сторон нужно прописать порядок действий по предотвращению ситуаций, когда могут быть нарушены авторские права третьих лиц или одного из участников проекта. К примеру, сторона, предоставляющая материалы, должна приобщить документы, подтверждающие право собственности на них — квитанции на приобретение фото- и видеоматериалов или другой контент. Или для упрощения процедуры можно просто отметить, что ответственность за нарушение авторского права несет сторона, предоставившая материалы. К объектам авторского права относятся название сайта, тексты, фото, видео, дизайн и код. В договоре должно быть указано, кому принадлежат имущественные и авторские права на все элементы проекта после его завершения и может ли разработчик использовать какие-либо материалы для дальнейшей работы. Для ориентира используйте Закон об авторском праве и смежных правах. 3) Сотрудничество с другими подрядчиками Сайт состоит из многих компонентов, и не все работы подрядчик может выполнить самостоятельно. Если он обращается к субподрядчикам для создания дизайна или текстов, это также должно быть зафиксировано в договоре. Но в любом случае за качество конечного результата отвечает исполнитель. 4) Ответственные лица за коммуникацию с исполнителем Этот момент особенно стоит внимания, если компания-заказчик большая, в ней есть много разных отделов и работников. Скорее всего, исполнитель не будет работать напрямую с директором, а будет общаться с кем-то из менеджеров. В таком случае договор должен содержать ФИО, должность и контакты лица, ответственного за коммуникацию. Не мешает указать, какие каналы общения считаются официальными — ими могут быть не только почта, но и аккаунт в Телеграме или страница в Facebook. В случае, если разные аспекты будут согласовываться с разными людьми, это также должно быть указано. Например, за финансовые вопросы отвечает бухгалтер, за согласование макета — дизайнер компании, все остальные вопросы — к менеджеру. Но все же лучше, когда проект курирует один конкретный человек и несет ответственность за своевременную и эффективную коммуникацию. 5) Форсмажерные обстоятельства Бывают ситуации, когда кто-то не может выполнить свои обязанности по не зависящим от него причинам. На этот случай следует вынести отдельным пунктом преодоления форсмажорных обстоятельств: что можно считать такими обстоятельствами и порядок действий в случае их возникновения (например, отсрочка для исполнителя для завершения работ или отсрочка оплаты для заказчика). Обычно в этот список входят пожары, стихийные бедствия, боевые действия, забастовки, введение карантина и другие обстоятельства, которые нельзя предусмотреть и подготовиться к ним. 6) Финансовые вопросы В эту категорию входит не только порядок оплаты за проделанную работу (аванс, гонорар), но и сопутствующие расходы. Сюда можно отнести оплату домена и хостинга, заказы текстов, дизайна, фотосъемки и т.д. Исполнитель может эти расходы включить в сумму гонорара, но можно положить их и на заказчика. Это все обсуждается и прописывается. Также в договоре должны быть зафиксированы такие моменты, как порядок налогообложения, расчетная валюта, счета для получения средств, порядок перечисления и способ подтверждения получения средств исполнителем. 7) Прием работы или отказ от него На проверку и прием работы выделяется определенный срок, в течение которого заказчик может выдвинуть обоснованные замечания и требования по доработке сайта или отказаться принять работу, предоставив четкие аргументы. Отказаться от приема работы можно только в случае, если сайт не отвечает технической задаче, выполнен с нарушением законов или имеет другие объективные недостатки, которые делают невозможным его использование и которые можно доказать. Не могут быть учтены субъективные аргументы, когда сайт исполнен по всем договоренностям, но разработчик представлял себе его как-то иначе. Если разработчик выполнил все пункты ТЗ и договор, клиент не может отказаться от подписания акта. В случае, если речь идет о масштабных проектах с большой суммой оплаты, советуем обратиться за консультацией к юристу, который поможет прописать договор максимально четко и избежать «лазеек» для двойной трактовки.
Что должен знать FrontEnd разработчик в 2023 году
Автор: Влад Сверчков
Основные технологии HTML5 & CSS3 Flex и Grid CSS CSS препроцессоры Git & GitHub Знание о веб-технологиях и сети интернет JavaScript JavaScript Core (DOM, AJAX, JSON) REST API Алгоритмы и структуры данных Фреймворки JavaScript Инструменты управления состоянием программы (State Management) TypeScript Основы Figma Английский язык Необязательные технологии Паттерны проектирования JavaScript Линтеры Тестирование Webpack Gulp/Grunt SOLID принципы Зарплаты FrontEnd разработчиков Итоги FrontEnd – одна из самых легких профессий разработчика в IT. Она выгодно отличается тем, что сочетает в себе программирование и творчество, поскольку девелопер работает над оживлением дизайнерского макета и созданием соответствующей пользовательской логики. Также преимуществом фронтенда является то, что увидеть результат работы можно почти сразу – в любом браузере. Относительная легкость фронтенда рождает большую популярность среди желающих попасть в IT, а учитывая последствия открытой агрессии по отношению к Украине – особенно большую популярность, ведь это возможность работать удаленно (на IT-компанию или на фрилансе) и получать хорошую зарплату. Соответственно, конкуренция среди Trainee/Junior FrontEnd разработчиков весьма высока, поэтому работодатели вынуждены закручивать гайки и повышать требования к кандидатам, чтобы отобрать лучших. Так как стать фронтенд разработчиком? Какими технологиями необходимо владеть, чтобы стать Intern/Junior FrontEnd разработчиком в 2023 году? Проанализировав вакансии на украинском рынке айти, мы составили список актуальных инструментов, которые обычно требуют работодатели от кандидатов. Их перечень – ниже в статье. Frontend developer roadmap. Основные технологии HTML5 & CSS3 HTML5 и CSS3 — это фундаментальные технологии, без знания которых не обойтись ни одному веб-разработчику. С помощью языка гипертекстовой разметки HTML создается разметка (каркас) каждой интернет-страницы. Затем язык стилей CSS преображает сайт и придает ему привлекательный и эффектный внешний вид. Помимо этого, необходимо владеть: кроссбраузерной адаптивной версткой, чтобы уметь создавать сайты под мобильные устройства, планшеты и широкоформатные экраны и для различных браузеров; семантической версткой для повышения качества разметки и улучшения поисковой индексации сайта; валидной версткой, которая предполагает полное соответствие кода разработчика всем стандартам W3C — организации, которая создает и внедряет технологические стандарты для World Wide Web. Уделите особое внимание верстке под мобильные устройства, так как современный веб-потребитель очень много времени проводит в смартфоне. Существует даже специальный подход, при котором сначала верстается веб-сайт под мобильные устройства, а только потом под десктопы — называется Mobile First. Это общие требования по верстке. Теперь же рассмотрим более детально требования конкретно по языку стилей. Здесь вы должны знать основные свойства CSS3: фоны, градиенты, тени, анимации, трансформации, переходы, а также технологии Flex и Grid, о которых мы еще поговорим. Хорошее владение HTML и CSS уже позволяет заниматься версткой сайтов и зарабатывать деньги. Именно с этих двух базовых технологий начинается путь к профессии FrontEnd разработчика. Качественно изучить HTML и CSS вы сможете при помощи следующих наших курсов: HTML5 & CSS3 Стартовый; HTML5 & CSS3 Базовый; HTML5 & CSS3 Углубленный. Flex и Grid CSS Технологии верстки надежных адаптивных веб-страниц, которые позволяют легче создавать динамические сайты и удобнее структурировать их содержимое. Лучше всего Flex-верстку в действии показывает интерактивный сайт flexboxfroggy.com, а Grid-верстку — cssgridgarden.com. На нашем ресурсе также есть курсы, которые хорошо объясняют темы Flex и Grid верстки: “Верстка сайта на CSS Grid”, “Верстка сайта на FlexBox CSS”. CSS препроцессоры CSS препроцессор — это программа, которая имеет свой собственный синтаксис, но может сгенерировать из него CSS код. Самыми популярными считаются SASS, Stylus, LESS и PostCSS, однако, наибольшее комьюнити имеет именно SASS. Препроцессоры предназначены для: ускорения процесса написания кода; упрощения чтения кода и дальнейшей его поддержки; минимизации рутинной работы при написании кода. Для повышения эффективности написания CSS кода вполне достаточным будет изучение лишь одного препроцессора. Git & GitHub Git — наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Git & GitHub — очень важные инструменты для любого IT-разработчика, изучением которых следует заняться как можно раньше. Мы рекомендуем изучать Git на ITVDN при помощи курса “Основы работы с Git”. Знания о веб-технологиях и сети интернет Чтобы качественно выполнять свою работу, фронтенд разработчик должен разбираться в вебе и понимать принципы его функционирования. Таким образом, необходимо знать: как работает интернет; протоколы HTTP/HTTPS, веб-сокеты; как работают браузеры; что такое DNS и как он работает; что такое доменное имя; что такое хостинг. Также будет неплохо, если вы попробуете настроить сайт на каком-нибудь бесплатном хостинге, привяжете домен к этому хостингу. JavaScript Язык программирования, который используется как при разработке клиентской стороны веб-приложения, так и серверной. При помощи JavaScript (сокращенно — JS) можно писать даже настольные и мобильные приложения, используя определенные программные платформы и библиотеки. Этот язык позволяет: динамически изменять разметку; осуществлять интерактивное взаимодействие с пользователем; анимировать изображения; совершать валидацию форм; управлять мультимедиа и т. д. Другими словами, JavaScript “оживляет” страницу и добавляет ей функциональности. Хорошее владение данным языком программирования является обязательным для каждого FrontEnd разработчика. JavaScript использует официальный стандарт ECMAScript (сокращенно — ES), который подразумевает определенное формальное описание синтаксиса, базовых объектов и алгоритмов. На данный момент существует множество различных версий ES. Работодатели чаще всего требуют знание ES6+. Однако, вначале необходимо изучить чистый JavaScript (vanilla JavaScript) и лишь потом вникать в новые стандарты. Как ни крути, а классику надо знать. Благодаря хорошему владению JS можно быстро разобраться в любой версии ES и затем освоить любой фреймворк или библиотеку. ITVDN предоставляет возможность изучить JavaScript с нуля до продвинутого уровня при помощи курсов: JavaScript Стартовый; JavaScript Базовый; JavaScript: Расширенные возможности. JavaScript Core (DOM, AJAX, JSON) DOM (Document Object Model) — объектное представление исходного HTML-документа. Ключевым является понятие DOM-дерева, которое описывает структуру страницы. С помощью объектной модели JavaScript получает полную власть над HTML-документом: возможность редактировать, удалять и добавлять элементы и атрибуты HTML, менять CSS код и т. д. AJAX (Asynchronous JavaScript And XML) — это синтез технологий JavaScript и XML, который фактически представляет собой комбинацию: встроенного в браузер XMLHttpRequest-объекта (чтоб запрашивать данные с веб-сервера); JavaScript и HTML DOM (чтобы отображать или использовать данные). AJAX позволяет веб-страницам совершать асинхронное обновление, обмениваясь данными с веб-сервером. Благодаря этой технологии страница не нуждается в перезагрузке — обновляется лишь конкретная ее часть (вспомните ленту новостей в социальных сетях). JSON (JavaScript Object Notation) — это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий JavaScript, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP. Все три технологии являют особую ценность для каждого веб-разработчика и раскрывают организацию работы интернет-приложения. REST API API – Application Programming Interface – это набор правил, при соблюдении которых программы могут взаимодействовать между собой. Разработчик создает API на сервере и позволяет клиентам обращаться к нему. Красноречивым примером будет API от Google Maps, позволяющий веб-разработчику указать на гугл карте расположение определенного здания (точку выдачи интернет-заказов, офис компании и т. д.) на своем сайте. Таким образом, программист лишает себя необходимости самому разрабатывать собственную карту и пользуется уже готовым решением от Google, используя набор правил от API. REST – Representational State Transfer – это архитектурный подход, регламентирующий, как именно API должны выглядеть. Этому набору правил должен следовать девелопер при создании собственного приложения. Простыми словами, REST – это обычный запрос вида «клиент-сервер» с использованием HTTP-протокола. Фронтенд разработчику необходимо разбираться в REST API, поскольку эта технология используется везде, где необходимо работать с данными от сервера. Алгоритмы и структуры данных Понимание алгоритмов и структур данных — обязательные знания для любого программиста. К структурам данных относятся: стеки, очереди, связанные списки, графы и т. д. Изучив их, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач. Когда говорят об алгоритмах, обычно имеют ввиду алгоритмы сортировки и поиска: сортировки прямым включением, прямым выбором, слиянием, пирамидальная, прямой поиск, бинарный, индексно-последовательный и другие. Важно разбираться и в нотации Big O, которая описывает сложность каждого алгоритма. Данный механизм помогает определить, при каких условиях выгоднее использовать тот или иной алгоритм. Отметим, что как новичку, вам не надо нырять вглубь этих тем. Будет достаточно теоретического владения, а также умения написать несколько алгоритмов. В разработке сайтов это не очень нужно, но практически ни одно собеседование не обходит стороной тему алгоритмов и структур данных. Фреймворки JavaScript Это инструменты, с помощью которых создаются динамические веб/мобильные/десктопные приложения на языке JavaScript. Они ускоряют разработку веб-приложений и предусматривают четко структурированную организацию кода, повышая его качество и чистоту. Самыми популярными фреймворками для фронтенд-разработки можно назвать Vue.js, Angular, а также библиотеку React. Каждый из них предназначен для решения своего спектра задач и имеет различную степень сложности: Vue.js — самый легкий (но и с наименьшим сообществом), React — средней сложности, Angular — высокой сложности. Стоит сконцентрироваться на глубоком изучении одного фреймворка, но в то же время очень рекомендуется знать особенности и сферу применения всех вышеперечисленных технологий. Какой фреймворк все же выбрать? Мнения на этот счет расходятся. Инструментарий выбирается индивидуально под проект и трудно предугадать, какие задачи вам нужно будет решать. На данный момент наибольшей популярностью пользуется React, поскольку он сбалансирован как с точки зрения сложности, так и с точки зрения богатства функционала. К тому же, наибольшее количество вакансий припадает именно на этот фреймворк, а значит, что он интересен не только разработчикам, но и бизнесу. Каждый из фреймворков доступен для изучения на платформе ITVDN. По направлению Angular: Angular 11.0 Базовый; Angular Углубленный. По направлению React: React Базовый; React Углубленный. По направлению Vue.js: Vue.js Стартовый; Vue.js Базовый. Инструменты управления состоянием программы (State Management) Большие веб-приложения постоянно растут в сложности, а потому хранить данные, которые могут использоваться в разных местах становится все сложнее. Для решения этой проблемы были придуманы отдельные библиотеки, идущие параллельно с фреймворками — они служат для управления глобальным хранилищем данных всего веб-приложения и называются менеджерами состояний. Их применение уже стало стандартом во FrontEnd разработке. Для девелоперов, которые используют Vue.js, это VueX, для React-разработчиков — Redux и MobX, для Angular-девов — RxJS, NgRx. TypeScript Кроссплатформенный строго типизированный язык, который является расширением JavaScript. Строгая типизация позволяет уменьшить количество потенциальных ошибок в исходном коде, написанном на TypeScript. Также, этот язык реализует концепции, которые близки объектно-ориентированным языкам, таким как C#, Java и подобным. TypeScript повышает скорость и удобство написания сложных комплексных программ, вследствии чего их становится легче поддерживать, масштабировать и тестировать. В вакансиях этот язык встречается довольно часто вне зависимости от целевого фреймворка. При этом для Angular разработчиков знание TypeScript обязательно. Из-за высокой востребованности данного языка мы поместили его в список обязательных для изучения. Основы Figma Figma является популярным дизайнерским инструментом для создания интерактивных прототипов приложений или веб-сайтов. С его помощью дизайнер создает дизайн, который фронтенд разработчик затем верстает с помощью HTML/CSS и добавляет интерактивность при участии JavaScript. Знание основ фигмы позволяет девелоперу удобно взаимодействовать с дизайнерским прототипом: быстро узнавать необходимые размеры тех или иных элементов, производить экспорт картинок и иконок и т. д. Дополнительный плюс – возможность использования браузерной версии Figma. Английский язык План обучения Front-end должен обязательно включать в себя подтягивание English. Знание английского является одним из основных требований к фронтенду-разработчику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного использования иностранных ресурсов (Intermediate). Однако чем выше уровень вашего английского, тем больше шансов получить job-оффер. Инглиш используется не только при работе с документацией, но и при коммуникации с командой и клиентами. Среди программистов бытует выражение: «Какой язык программирования следует учить первым? Учи английский!». Поэтому не пожалейте ваше время и хорошенько подтяните английский – вполне вероятно, что именно хорошее владение им станет решающим при рассмотрении вашей кандидатуры. Необязательные технологии Паттерны проектирования JavaScript Это лучшие практики, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Знание шаблонов проектирования позволяет писать более чистый, понятный и читаемый код, а также избегать “изобретения велосипеда”. Более того, владение паттернами показывает вашу грамотность, как разработчика, и повышает вашу ценность в глазах работодателя, что поможет выделиться на фоне конкурентов. Чтобы вы могли хорошенько разобраться с темой шаблонов в JavaScript, рекомендуем курс “JavaScript Шаблоны”. Линтеры Инструменты, позволяющие анализировать качество JavaScript-кода в соответствии со стандартом ES. Они встраиваются в среду разработки и указывают на наличие несоответствий стандарту кода, если таковые имеются. Данный механизм полезен как для единоличной разработки (для самоконтроля), так и для командной, когда каждый разработчик должен следовать тем же языковым конструкциям, чтобы на выходе получить единый, целостный проект. Один из самых известных линтеров – ESLint. Это необязательный инструмент для работодателя, но он очень полезен для веб-разработчиков из-за его возможностей по контролю качества кода. Тестирование Jest и Cypress — главные инструменты модульного тестирования, которое возлагается на плечи разработчика. Но что это такое? Unit тестирование (оно же — модульное тестирование) — процесс, который заключается в создании тестов для проверки работоспособности отдельных участков написанного программистом кода. Выполняется непосредственно автором кода. Какую пользу приносит Unit тестирование: существенное сокращение багов в коде; упрощение рефакторинга кода; обеспечение качественного отделения интерфейса от реализации; лучшее понимание написанного кода; возможность протестировать мельчайшие участки кода. Все инструменты учить не надо — достаточно научиться управляться лишь с одним из них. Webpack Мощный сборщик модулей, позволяющий скомпилировать в один файл несколько разных модулей. Используется для работы над объемными проектами. Успешно используется как во фронтенд-разработке, так и при создании бэкенда. Gulp / Grunt Системы сборки, автоматизирующие рутинные задачи разработчиков: минификацию кода, оптимизацию изображений, тестирование, анализ качества кода и прочее. Подходят для разработки небольших проектов. SOLID принципы SOLID – это принципы, являющиеся своеобразным ремнем безопасности для тех, кто работает в соответствии с парадигмами объектно-ориентированного программирования. Они были созданы с целью обезопасить ООП-ориентированного разработчика от непонятного, запутанного спагетти-кода, который также очень трудно поддерживать. SOLID – это акроним, состоящий из пяти букв, которые кодируют пять основных принципов: S – Single Responsibility Principle (принцип единой ответственности) O – Open-Closed Principle (принцип открытости-закрытости) L – Liskov Substitution Principle (принцип подстановки Барбары Лисков) I – Interface Segregation Principle (принцип разделения интерфейса) D – Dependency Inversion Principle (принцип инверсии зависимостей) Владение этими принципами позволяет грамотно проектировать и разрабатывать такие программные системы, которые с большой вероятностью смогут длительное время развиваться, расширяться и поддерживаться. Хотя SOLID принципы написаны преимущественно для ООП, их идеи вполне применимы и к современной JavaScript-разработке, что поможет фронтенд разработчикам создавать более чистый и лаконичный код. Зарплаты FrontEnd разработчиков Обратимся к статистике, опубликованной на странице украинского IT-сообщества DOU, а именно – к зарплатной аналитике украинских разработчиков за лето 2023 года. Медианная зарплата всех украинских разработчиков, принявших участие в опросе (а их 6605), следующая: Intern Software Engineer – 450 USD; Junior Software Engineer – 1000 USD; Middle Software Engineer – 2600 USD; Senior Software Engineer – 4900 USD. Теперь взглянем на медианную ЗП FrontEnd разработчиков: Junior – 950 USD; Middle – 2500 USD; Senior – 4750 USD. Выходит, медиана фронтендщиков на всех тайтлах немного меньше, чем общая медиана, однако разрыв весьма небольшой. Давайте взглянем, сколько зарабатывает этот специалист за пределами Украины. В этом нам помогут результаты опроса Stack Overflow Developer Survey 2023 (свыше 90 000 респондентов из США, Индии, Германии, Канады, Великобритании и других стран). Эта цифра – 59 970 USD в год (примерно 5000 USD на месяц). При этом будет важно сказать, что фронтендщики из данного опроса имеют в среднем 8 лет профессионального кодинга – и это один из самых низких показателей. Ниже них располагаются лишь Data Scientist / ML Specialist – 7.9 лет опыта, а также студенты, которые имеют чуть больше 2.8 лет опыта в профессиональном создании кода. Итоги FrontEnd разработчик – достаточно универсальный боец в мире веб-разработки. Он должен уметь и верстать, и создавать логику работы клиентской части, и понимать работу серверной части веб-приложения. Для овладения таким большим инструментарием стоит запастись временем, терпением и упорством. Указанные в статье средства разработки сайтов также имеют аналоги, поскольку для решения различных задач подходят разные веб-инструменты. Однако мы выбрали самые популярные и эффективные из них. Если у вас есть желание осваивать эту профессию и вы хотите самостоятельно “пощупать”, чем занимается фронтенд разработчик, на ITVDN создана комплексная программа обучения в формате видео обучения, которая включает 44 видео курса. Чтобы получить доступ ко всем видео курсам на ITVDN сроком на 12 месяцев с возможностью скачивать на ваше устройство видеоматериалы (что очень актуально во время блэкаутов), советуем рассмотреть пакет подписки «Премиум Plus». Если вам больше нравится живое онлайн обучение с тренером и в группе с другими учениками, предлагаем формат Live Online для изучения специальности FrontEnd (Angular или React направления). Желаем вам успехов в достижении ваших целей! Оставайтесь с ITVDN!
Что должен знать C#/.NET разработчик в 2023 году
Автор: Влад Сверчков
Язык программирования C# ООП Алгоритмы и структуры данных Шаблоны проектирования Базы данных SQL Entity Framework Core LINQ ASP.NET ASP.NET Core Git Основы FrontEnd Английский язык Итоги На сегодняшний день .NET программист может применять свои навыки в различных сферах разработки программных продуктов: создание веб-приложений и веб-сервисов создание настольных приложений; создание облачных сервисов; создание игр; создание мобильных приложений. Когда говорят о .NET разработчиках, имеют в виду программистов, которые пишут на языке С#. Этот язык программирования, как и вся платформа .NET, был создан, развивается и поддерживается компанией Microsoft, которая стабильно уже несколько десятилетий входит в ТОП-10 компаний — мировых лидеров рынка информационных технологий. Все продукты компании Microsoft созданы на платформе .NET. Какие же технологии необходимо изучить, чтобы стать .NET программистом? Поскольку львиная доля .NET-вакансий приходится именно на веб-сегмент, данная статья будет охватывать как фундамент, которым обязаны владеть все разработчики этой платформы, так и основные технологии серверной стороны веб-девелопмента. Язык программирования C# (“си шарп”) Любой .NET разработчик не может называться и быть таковым, если он не умеет хорошо программировать на языке C#. Это универсальный объектно-ориентированный язык, который является мощным инструментом создания программного обеспечения с широкой областью применения. При столь высокой функциональности он является достаточно несложным в изучении и отлично подойдет тем, кто собирается сделать первый шаг навстречу программированию. Благодаря широкому спектру применения, С# является очень востребованным языком. Различные ресурсы по поиску работы предлагают большое количество вакансий, причем, как на крупные проекты с четко определенным консервативным стеком технологий, так и в компании, которые создают новый программный продукт с применением наиболее современных инструментов. Компания Microsoft активно развивает свое детище — .NET направление, потому C# всегда актуален, идет расширение функционала, добавляются новые возможности. Тенденция последних лет — кроссплатформенность, реализуемая в .NET Core. Огромное количество учебных материалов, качественная официальная документация, видео курсы, образовательные вебинары, дружное комьюнити — всё это создает максимально комфортные условия для грамотного поэтапного изучения данного языка. ООП Объектно-ориентированное программирование — это методология разработки программного обеспечения, в основе которой лежат четыре главных принципа: абстракция, инкапсуляция, наследование и полиморфизм. Поскольку C# является объектно-ориентированным языком, необходимость изучения и полного понимания ООП парадигм обязательно. Однако, есть и приятная новость: все принципы быстро и легко усваиваются во время изучения C#. Алгоритмы и структуры данных Понимание алгоритмов и структур данных – также обязательно для любого программиста. Изучив структуры данных, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные программы, которые будут эффективно работать с памятью. Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач. Шаблоны проектирования Паттерны (они же шаблоны) представляют собой архитектурные конструкции, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако знать их все — это обязанность архитектора, а не разработчика платформы .NET. Обычно в одном проекте используется небольшое количество паттернов, поэтому вам достаточно помнить лишь самые популярные из них. Базы данных Каждое приложение оперирует данными – от интернет-магазинов и банковских систем до корпоративных приложений и социальных сетей. Регистрация, авторизация и аутентификация пользователя, прием, изменение и отправка данных на сервер или даже простое сохранение конфигурации приложения – все это данные, требующие отдельного места для их хранения. Этим хранилищем служат базы данных (БД), представляющие собой организованную структуру для приема, хранения и обработки данных различного формата – от ФИО и номеров телефона до изображений и видео контента. Именно поэтому знания БД очень важны в том числе и для .NET разработчиков. Необходимо владеть базовой теорией по БД: основные термины, реляционные и нереляционные базы данных (вы будете работать именно с реляционными – имеющими реляционную структуру), нормализация, отношение one-to-one, one-to-many и many-to-many, поиск и упорядочение информации, работа с таблицами и т.п. SQL Structured Query Language — декларативный язык структурированных запросов, который создан для взаимодействия с базами данных. Особенность SQL состоит в том, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены. Изучение языка запросов очень тесно связано с изучением теории баз данных, поэтому углубляясь в БД, вы непременно начнете практиковаться и набивать руку и с SQL. Entity Framework Core Entity Framework — специальная объектно-ориентированная технология на базе фреймворка .NET, которая позволяет разработчикам получать доступ к данным, используя концептуальную объектную модель, а не непосредственно реляционную базу данных. Это дает возможность абстрагироваться от самой БД и работать с данными на более высоком уровне абстракции, который более понятен и удобен для человека. Благодаря такому подходу уменьшается количество кода, необходимого для получения доступа к базе, растет производительность и уменьшается время на поддержку объектов в приложениях, которые работают с данными. В двух словах, эта технология позволяет программисту абстрагироваться от самой базы данных и работать с данными независимо от типа хранилища. LINQ Language Integrated Query (язык интегрированных запросов) — это простая и удобная .NET технология доступа к данным. Особенность данного языка запросов: возможность применения ко всем источникам данных (XML-документы, XML-потоки, наборы данных ADO.NET, базы данных SQL, массивы и коллекции .NET и т. д.) одного и того же самого подхода выборки данных. ASP.NET Active Server Pages для .NET — платформа, использующая среду выполнения .NET Framework и предоставляющая необходимые службы для создания серверных веб-приложений и веб-сервисов. Является развитием более ранней технологии Microsoft ASP. ASP.NET базируется на среде выполнения Common Language Runtime (CLR), которая является основой всех приложений Microsoft .NET. Также данная платформа имеет преимущество в скорости по сравнению со скриптовыми технологиями. ASP.NET MVC является расширением ASP.NET и представляет собой платформу для создания веб-сервисов при помощи паттерна MVC. Данный шаблон предусматривает разделение приложения на три компонента: Модель, Представление, Контроллер, благодаря чему реализуется концепция разделения и закрепления ответственности за каждым компонентом, что упрощает разработку проектов. ASP.NET Core Фреймворк от компании Microsoft, который использует среду выполнения .NET Core, предназначен для разработки качественных современных веб-приложений и является продолжением развития платформы ASP.NET. Однако, это не просто обновленная технология. Выход ASP.NET Core фактически обозначил качественное изменение всей платформы. Последняя версия 7.0 была выпущена не так давно – весной 2022 года. Главные особенности ASP.NET Core: наличие открытого исходного кода на GitHub; кроссплатформенность; модульность; расширяемость; возможность применения облачных технологий. Более подробную информацию обо всех нововведениях можно найти на официальном сайте Microsoft. Таким образом, платформа .NET Core существенно расширила области применения технологии ASP.NET и предоставила разработчикам большое количество возможностей по созданию программного продукта. Git Наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы. Не во всех вакансиях можно встретить среди требований владение системой контроля версий, однако, знание Git или ее аналогов даст вам дополнительное преимущество перед остальными кандидатами. Основы FrontEnd В большом количестве вакансий работодатели ожидают, что .NET разработчик серверной части также должен быть знаком и с фронтенд-технологиями, которые используются на клиентской стороне при создании веб-приложений: HTML & CSS – языки верстки веб-сайтов и веб-сервисов. HTML служит каркасом, определяющим основную архитектуру внешнего вида, а CSS – каскадные таблицы стилей, помогающие обогатить внешний вид приложения. Очень легкие языки верстки, которые изучаются быстро и без проблем. Основы JavaScript (JS) – это язык программирования, на котором создается программная логика клиентской стороны веб-приложений, а также различные анимации. JavaScript является одним из самых легких языков программирования, поэтому если вы будете хорошо знать C#, разобраться в JS для вас будет очень быстрым делом. Основы Angular или React. React – фронтенд-библиотека, которая имеет относительно невысокий порог вхождения и пользуется большой популярностью благодаря своей универсальности, в то время как Angular – мощный, более сложный фреймворк, но при этом лучше себя проявляет в массивных масштабируемых проектах. Знание FrontEnd-стека не во всех вакансиях является обязательным, но во многих они отмечены. Соответственно, владение основами этих инструментов дает большой бонус при рассмотрении резюме или на собеседовании. Английский язык Традиционное требование для каждого разработчика в IT. Знания языка на уровне чтения технической документации и комментирования кода вполне достаточно. Но чем выше уровень английского у вас будет, тем больше шансов получить job-офер, поскольку английский может использоваться как для коммуникации с другими членами команды, так и для взаимодействия с заказчиком. Подведем итоги В статье были перечислены основные технологии, которыми должен обладать каждый .NET-программист. Поскольку веб-разработка ныне является очень популярной и востребованной, мы также добавили в список .NET средства, которые используются во время создания соответствующих серверных веб-решений. Однако среди всех пунктов наиболее важным является знание языка С# — каждый “дотнетчик” обязан им владеть на высоком уровне. В свою очередь, перечень можно дополнить такими технологиями, как TDD (разработка через тестирование), WCF, Unit тестирование, рефакторинг приложений. Их знание не является обязательным для джунов, однако выгодно выделяет вас среди других кандидатов и показывает, что вы уделяете особое внимание чистоте, опрятности и читабельности кода. Также вы можете ознакомиться со списком всех необходимых для изучения технологий на странице специальности .NET Developer. Комплексная программа обучения состоит из 55 видео курсов общей продолжительностью более 410 часов. Перейдя на страницу, вы найдете много полезной информации как для новичка, так и разработчика, желающего углубить и дополнить свои знания. Если вас больше интересует живое онлайн обучение в группе с ментором и другими студентами, рекомендуем обратить внимание на формат Live Online обучения. Регулярные занятия в Zoom, выполнение и проверка д/з, разработка курсовых проектов, общение и поддержка в телеграм-группе с ментором и одногруппниками – это и многое другое способствует максимально качественному и быстрому овладению специальностью .NET Developer на ITVDN. Полезные ресурсы для изучения C# и .NET вы найдете в нашем вебинаре «Обзор полезных ресурсов для изучения C# и .NET с нуля». ITVDN желает вам достижения ваших целей и готов быть надежным помощником в вопросах обучения программированию. Оставайтесь с ITVDN!
Какую IT-специальность выбрать в 2023 году?
Автор: Влад Сверчков
Кратко об украинском IT в 2022 году. Украинский IT-специалист в 2022 году. Аналитические обзоры современного IT. Какие IT-специальности будут востребованы в 2023 году? Кому нужно хорошее владение английским языком? Выводы. Приветствуем наших читателей! Украинское IT демонстрирует отличную прочность и адаптивность даже в условиях полномасштабной войны. Да, многим айтишникам пришлось осуществить вынужденное переселение в другие регионы страны или даже в другие государства, чтобы находиться в относительной безопасности. Однако большинство сохранило за собой работу и доходы, позволяющие не только обеспечивать себя и свои семьи необходимыми условиями и средствами для жизни, но еще и активно донатить на армию и разнообразные волонтёрские проекты – средний донат по состоянию на июнь 2022 года составил $270 в месяц (в соответствии с результатами опроса на DOU). Стабильность и хорошие условия труда, возможность удалённой работы из любой точки мира, где есть интернет, большое количество IT-направлений на выбор – эти и другие особенности стали очень востребованными у многих украинцев. Появилось большое количество желающих попробовать свои силы в IT и вместе с тем созрели главные вопросы: “С чего начать? Какую IT специальность выбрать в 2023 году?”. А ведь действительно – как грамотно оценить ситуацию на рынке IT и выбрать себе специальность, которая будет: нравиться; иметь хорошие карьерные перспективы; обеспечивать удовлетворительные условия труда и ЗП? Будем разбираться с этим в данной статье. Мы рассмотрим самые главные специальности, которые будут оптимальными для новичков и будут пользоваться спросом на рынке IT ещё долгое время. Кратко об украинском IT в 2022 году Не успел мир оправиться от кризиса, вызванного коронавирусом, как сразу появился новый в результате полномасштабного вторжения россии на территорию Украины. Согласно аналитике Opendatabot – украинского ресурса, который предоставляет доступ к государственным данным и анализирует открытые данные, – IT-услуги стали единственным направлением бизнеса, которое показало прирост в 2022 году по сравнению с 2021 – на 27% (январь-май 2022). А второе исследование показывает, что за 8 месяцев этого года произошел рост экспорта IT-услуг на 16% по сравнению с соответствующим периодом в 2021 году. В августе 48% всех экспортируемых Украиной услуг принадлежали именно IT-отрасли. Красноречива и статистика Джина – украинского ресурса по анонимному поиску вакансий. Спрос на Djinni превышает количество предложений почти в три раза. В сентябре – 18 779 открытых вакансий и 52 405 кандидатов. Из поста в телеграм-канале Джина легко видеть, что в августе 2022 было более 250 тысяч отзывов на вакансии – это при том, что с августа 2021 по февраль 2022 количество отзывов каждый месяц колебалось в пределах от 77 до почти 111 тысяч. Еще один августовский пост демонстрирует зависимость среднего количества отзывов на вакансию от требования к опыту кандидата. Таким образом: кандидаты без опыта – 75.25 отзывов на вакансию; 1 год опыта – 31.36 отзывов; 2 года – 12.39; 3 года – 5.76; 5 лет – 4.1. У новичков сезон настоящих «голодных игр». Тем не менее, IT-сектор демонстрирует хорошую стойкость и положительную динамику, несмотря на проблемы, принесенные войной. Это перспективная отрасль, которая не только дает массу преимуществ украинцам-айтишникам, но и хорошо подпитывает экономику. Следует не забывать, что такая успеваемость во многом зависит от зарубежных заказчиков, ведь большинство украинских IT-продуктов и IT-услуг экспортируются за границу – примерно 95% (по материалам “Экономической правды”). Украинский IT-специалист в 2022 году Обратимся также и к свежему портрету украинского IT-специалиста от DOU за 2022 год (15 135 респондентов). Наибольшее количество мужчин по направлениям: DevOps, SRE (97.3%); системное администрирование (95.8%); CTO, высшие руководящие должности (92.9%); разработка ПО, Software Engineering (91.3%); разработка игр (89.5%); Data Science (80.3%); техническая служба поддержки (70%); тестирование (65.8%); менеджерские должности (64,9%). Наибольшее количество женщин в HR/Recruiting (90%), маркетинге (64%) и техническом писательстве (62%). За ними следует дизайн (45.6%), сфера продаж (44%) и аналитика (42.5%). Согласно картинке выше, наибольшее количество опрошенных украинских айтишников работает в качестве разработчиков. Далее следует профессия тестировщика, менеджера, HR/рекрутера и т. д. Из картинки выше видно, что чаще всего респонденты имеют тайтл Middle (1-5 лет опыта) и Senior (3-9 лет). Разработчики уровня Junior составляют 16.2% (до 2-х лет опыта), а интерны – всего 1.3% (без опыта). Наибольшее количество начинающих (Junior и Intern) среди: HTML Coder (45%); Data Science (27%); Game Developers (25%); аналитики (24%); тестировщики (23%). При этом IT Украины насчитывает большое количество начинающих. 6% опрошенных находятся в IT менее года, 59% трудоустроены в IT 5 лет или менее, а 71% имеют до 6 лет опыта по своей текущей специализации. 87% респондентов имеют высшее образование, а 8% из них – даже два. Еще 5% являются студентами и только на пути к получению диплома. Научной степенью владеет около 2% опрошенных. Чаще всего это те, кто разрабатывает ПО под различную электронику (Hardware Engineers – 9%), Data Science специалисты (7%) и представители высших руководящих должностей – CTO/CEO (6%). Касательно английского: в этом году 53% респондентов оценили свой уровень как Upper Intermediate (выше среднего) или Advanced (углубленный). 33% определяют свой уровень как Intermediate (средний). На изображении мы видим, что наиболее интересная работа у руководителей высшего звена (а кто бы сомневался?), специалистов в сфере маркетинга и HR/рекрутеров (критерии «цікава» (интересная) и “дуже цікава” (очень интересная)). Наиболее недовольными оказались сисадмины, Support и специалисты по продажам. Специалисты первых двух направлений специализируются на решении технических проблем, поэтому частые дергания во время работы, необходимость быстро все починить и аффилированные с этими процессами стрессы для них не редкость. Еще можно добавить относительно невысокую медианную ЗП – $1000-$1045 – чуть выше Junior разработчика. А недовольство специалистов по продажам можно связать с большой ответственностью и последствиями частого общения с различными клиентами: Sales Manager должны всегда демонстрировать уверенность, знать все о своей компании и своем продукте, действовать так, чтобы не запятнать их имидж, быстро находить ответы на вопросы клиентов и выполнять другие профессиональные обязанности. Аналитические обзоры современного IT Воспользуемся аналитикой всемирно известного ресурса Stack Overflow, которым пользуется абсолютно каждый программист современности. Сравним последние на сегодняшний день опросы, проведенные данным ресурсом – Stack Overflow Developer Survey 2022 (70 000 респондентов) и Stack Overflow Developer Survey 2021 (80 000 респондентов). В опросах принимали участие специалисты из различных уголков мира. Из иллюстрации выше видно, что наиболее популярными направлениями, в которых работают IT-специалисты, являются: Электронная коммерция – интернет-магазины, финансовые и торговые сделки и транзакции, проведенные через интернет и т. д. Финансовые технологии – оптимизация и усовершенствование финансовых услуг, оказываемых тем или иным бизнесом, компанией, корпорацией и т. д. Разработка мобильных приложений под Android и iOS. Медиасфера. Медицинские технологии – улучшение качества и безопасности медицинских услуг различного характера. Разработка игр под различные платформы. Далее следуют направления, которые в этом году не пересекли 5-процентный барьер. Из изображения выше видно, что наибольшее количество специалистов относится к следующим IT-направлениям: FullStack – разработка серверной + клиентской части веб-приложений; BackEnd – серверная сторона веб-приложений; FrontEnd – клиентская сторона веб-приложений; Desktop or enterprise – разработка настольных приложений (Desktop приложений), разработка приложений для нужд бизнеса (Enterprise). На следующих позициях идут: разработчики мобильных приложений – как под Android, так и под iOS; DevOps специалисты – синхронизируют все этапы разработки ПО: от создания кода до тестирования и релиза; инженеры облачных технологий – занимаются облачной (cloud) инфраструктурой; администраторы баз данных; системные администраторы. Просмотрим первые позиции этого же рейтинга, но за 2021 год. Наблюдаем аналогичную картину: первые позиции заняты направлениями FullStack, BackEnd, FrontEnd, Desktop, Enterprise, Mobile Development, DevOps. Обратимся и к рейтингам языков программирования. Опрос Stack Overflow 2022: Опрос Stack Overflow 2021: Первое место в обоих рейтингах занимает язык программирования JavaScript, широко применяемый в web девелопменте (и во FrontEnd, и в BackEnd областях). Далее следуют языки верстки – HTML & CSS – инструменты, которые используют при создании визуальной составляющей веб-сайтов и веб-приложений (FrontEnd). На третье место попадает SQL – язык запросов для работы с реляционными базами данных (БД), который обязательно используют разработчики серверной части веб-приложений, администраторы БД и другие специалисты. Python, Java и C# – очень востребованные среди работодателей и популярные среди разработчиков языки программирования, отличающиеся широким спектром применения, понятностью синтаксиса, относительной простотой. Они попадают в каждый ТОП-10 различных языковых опросов уже много лет; их перспективность и актуальность обещает удерживаться еще долгое время. Особой популярностью пользуется Python, поскольку его синтаксис максимально прост и лаконичен. TypeScript – это тот же JavaScript, только с несколькими нововведениями и строгой типизацией для увеличения читаемости кода, а также уменьшения количества возможных ошибок. Используется в веб-разработке вместе с соответствующими фреймворками и платформами. Node.js – платформа, которая расширяет возможности и область применения JavaScript (бэкенд, настольные приложения, микроконтроллеры). Bash/Shell/PowerShell – инструменты, которые чаще всего пригождаются системным администраторам и DevOps инженерам, потому что позволяют автоматизировать различные рутинные процессы, благодаря чему они и получили высокие позиции в рейтинге. C/C++ – это современные корифеи от мира IT-разработки. Непростые в изучении языки, которые имеют очень большие возможности и мощности. Незаменимы при создании ресурсоемкого ПО, игр, микроконтроллеров и т. д. PHP – классический язык серверной разработки. Несмотря на возраст, до сих пор популярен и востребован. Рассмотрим также и рейтинг языков в соответствии с индексом TIOBE. Он ежемесячно оценивает популярность языков программирования и считается респектабельным источником – масса аналитиков ссылается на него в ходе своих исследований. Рейтинг TIOBE отличается от опроса Stack Overflow – это связано с разницей опорных точек этих аналитик. Стек оверфлоу опирается на опрос, статистика TIOBE основывается на количестве квалифицированных инженеров во всем мире, а также на количестве курсов и сторонних поставщиков. Такие известные поисковые движки и сервисы, как Google, Yahoo!, Wikipedia, Amazon, Bing, YouTube и Baidu используются в расчете рейтингов. Следует отметить, что TIOBE не указывает, какой язык является наилучшим, или на каком написано наибольшее количество кода. Он может быть использован, чтобы обнаружить, соответствуют ли ваши навыки запросам современности, или чтобы принять стратегическое решение относительно того, какой язык следует использовать для создания нового приложения или программной системы. Больше информации о методах определения индекса по ссылке. Рейтинг языков в соответствии с индексом PYPL выглядит следующим образом: PYPL создан за счет анализа того, насколько часто люди ищут в поисковике Google туториалы (инструкции, документации) по языкам программирования. Проще говоря, чем больше гуглят туториалы к тому или иному языку, тем выше его позиция в рейтинге. Рассмотрим список популярных веб-технологий в соответствии с опросом Stack Overflow за 2022 и 2021 годы соответственно: Как видно из диаграмм, главные позиции принадлежат FrontEnd библиотекам и фреймворкам – jQuery, React.js, Vue.js, Angular, BackEnd-технологиям (Node.js, Express), а также технологиям .NET платформы – ASP.NET и ASP.NET Core. После них идут фреймворки Django и Flask (Python). Список других фреймворков, библиотек и инструментов разработки: Первое место сейчас занимает платформа .NET от компании Майкрософт. Затем следуют технологии направления Python: NumPy (дает доступ к ряду математических конструкций), Pandas (манипулирование данными и их анализ). За ними – фреймворк Spring (Java), предназначенный для веб-разработки. Менее популярны инструменты Python для работы с данными и ML – TensorFlow, Scikit-learn, а также платформы для мобильной разработки – Flutter и React Native. Полученные сведения уже дают достаточное представление о том, что сейчас происходит на рынке IT-услуг и позволяют делать определенные прогнозы относительно востребованности IT-профессий. Какие IT-специальности будут востребованы в 2023 году? FrontEnd Developer FrontEnd – это ответвление в разработке, направленное на создание клиентской стороны веб-приложений, веб-сайтов или другого ПО и информационных систем: внешний вид приложений, пользовательская логика, анимации – все, с чем пользователь может взаимодействовать напрямую. Когда говорят о FrontEnd или BackEnd, чаще всего подразумевают именно Web стихию. На самом же деле, фронтенд и бэкенд бывают не только в вебе, но и в десктопных и мобильных приложениях. Однако исторически сложилось так, что под этими двумя терминами понимают именно веб составляющую, поэтому и в этой статье мы будем придерживаться этих традиций. Согласно анализу Stack Overflow Developer Survey 2022 и 2021 годов, а также анализу индексов TIOBE и PYPL, ядро фронтенда – HTML, CSS и JavaScript – до сих пор востребовано и используется многими разработчиками. Кроме того, ресурсы поиска работы в IT содержат большое количество вакансий FrontEnd Developer. Например, на уже упомянутом Djinni на момент написания статьи было опубликовано 1399 предложений по направлению JavaScript / FrontEnd, тогда как на C# / .NET, Java и Python специальности приходилось 678, 884 и 514 вакансий соответственно. IT-индустрия имеет большой спрос на FrontEnd разработчиков, поэтому нет никаких сомнений, что это направление будет актуально и в 2023 году. BackEnd Developer (Python, Java, C#, PHP) BackEnd – это ответвление в разработке, направленное на создание серверной стороны веб-приложений или веб-сайтов: взаимодействие приложения с БД, работа с данными пользователя, серверная и вычислительная логика, программно-аппаратная часть сервиса – всё, что скрыто от пользователя и находится “под капотом”. На вооружении BackEnd девелопер держит один из популярных языков программирования: C# / PHP / Python / Java / JavaScript (Node.js) / Ruby и т. д. Также данный специалист знает множество сопутствующих технологий и инструментов серверной разработки. BackEnd развивается параллельно с FrontEnd-ом, айти-рынок имеет много соответствующих предложений с хорошими условиями труда, поэтому перспективность изучения данного направления очевидна. Full Stack Developer Синтез двух вышеописанных специальностей. Не секрет, что любой работодатель ценит сотрудника, который может успешно выполнять несколько задач, совмещая в себе обязанности других специалистов. Так же и в IT – особенно ценны разработчики, которые способны своими знаниями и навыками покрыть несколько профессий, а в данном случае – FrontEnd и BackEnd. Подробный разбор специальности Full Stack Developer вы найдете в нашей статье. Там мы объясняем специфику данного направления, необходимые для изучения технологии, преимущества и недостатки профессии, а также даем важные советы по овладению этой профессией. Mobile Developer (Android / iOS) Мобильная разработка является относительно молодой, поскольку зародилась чуть более двух десятков лет назад. За это время она претерпела многие изменения и сегодня возглавляет одну из главных позиций в IT. При этом наработками специалистов этой сферы пользуется почти каждый человек — это не только смартфоны и планшеты, но и фитнес-браслеты, смарт часы, электронные книги, составляющие «интернета вещей» и другие гаджеты. Наиболее популярные языки мобильной разработки: Java / Kotlin под Android разработку и Objective-C / Swift под iOS. DevOps инженер DevOps – это методология, являющаяся симбиозом разработки (Development) и системного администрирования (Operations). Её главная цель – увеличение частоты выпуска релизов. Специалисты данного направления также должны разбираться в использовании облачных технологий и обладать навыками автоматизации инфраструктуры. DevOps Engineers выбирают Python в качестве основного языка программирования за его лаконичность, многозадачность и поддержку большого разнообразия специальных пакетов, созданных для повышения эффективности этого языка программирования, а также за другие преимущества. Python в основном используют вместе с командной оболочкой Bash с целью упростить процессы развертывания ПО и автоматизировать различные задачи системного администрирования (написание скриптов). Фактически, DevOps специалисты – это программисты-сисадмины. Бизнес очень любит специалистов-мультитулов, поэтому эта профессия очень актуальна, престижна и одна из самых высокооплачиваемых в IT. CyberSecurity IT-индустрия наращивает свои объемы и мощности, следовательно, растет востребованность и тех, кто должен её защищать. На это и направлена деятельность специалиста по кибербезопасности. Данное направление имеет несколько ответвлений, и вы можете как защищать инфраструктуру от проникновения и выстраивать надежную оборону (направление «защиты»), так и выявлять уязвимости путем всевозможных хакерских методов – такие специалисты называются пентестерами (направление «атаки»). Можете погрузиться в анализ и риски (должность Security Analyst и Risk Compliance Specialist соответственно), заниматься защитой инфраструктуры и поиском компьютерных вирусов (Malware Researcher), а также испытать себя во многих других “кибербезопасных” специальностях – эта сфера дает много возможностей для реализации людям с сильными аналитическими способностями, внимательностью, рассудительностью и стрессоустойчивостью. Database Administrator, DBA Комфортная жизнедеятельность в современном мире зависит от баз данных: картотека пациентов больницы, учёт студентов и их успеваемости, учётные записи пользователей различных сервисов, банковские счета, разнообразный контент в интернете и т. д. Существует реальная потребность в специалистах, умеющих грамотно обслуживать эти БД и сопутствующую инфраструктуру. Кроме того, DBA берет на себя такие функции, как выработка требований к базам данных, их проектирование, реализация, эффективное использование и поддержание целостности БД, включая управление учетными записями пользователей БД и защиту от несанкционированного доступа. Здесь важно владеть языком запросов SQL, одной из СУБД (PostgreSQL, например), а также различными технологиями и приемами системного администрирования. PM (Project Manager) Современное IT имеет острый дефицит хороших, талантливых проектных менеджеров – управленцев, которые руководят IT-проектом в целом. Часто это бывшие программисты или тестировщики. Однако чтобы стать проджект менеджером, необязательно иметь айтишное прошлое. Ключевые обязанности PM: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, коммуникации, а также оперативное решение проблем внутри проекта. Самая главная задача – сделать так, чтобы идея заказчика была реализована в пределах заданных сроков с учетом ограниченности ресурсов. Конечно, данный список обязанностей выполнен широкими мазками. На самом деле PM-ы часто работают сверхурочно и их рабочее состояние можно описать как «белка в колесе». Но трудно что-то противопоставить послевкусию успешно выполненного проекта. Нюанс этой профессии состоит в том, что должность PM-а предполагает значительную конкуренцию. Согласно данным, в сентябре 2022 года на сайте DOU на одну вакансию PM-а откликнулось более 34 кандидатов (всего 184 вакансии). Большее количество отзывов только у FrontEnd, HR, QA и Legal (право). Поэтому, чтобы получить желаемый job-оффер, необходимо иметь не только опыт и знания, но и хорошие организаторские способности, а также другие важные для этой профессии личностные качества. QA Engineer, тестировщик Специалист по обеспечению качества, он же – тестировщик. И хотя QA и тестировщик – это немного не одно и то же, но мы приравняем их друг к другу, потому что это не играет значительной роли в данной статье. Сфера ответственности тестировщика – выявление неисправностей, багов ПО, допущенных разработчиками. Востребованность этих специалистов трудно обжаловать, ведь каждый программный продукт перед появлением может пройти не одну итерацию тестирования, где выявляется большое количество багов. Выходит, без QA мы имели бы очень недоработанное ПО, а производитель — провал продукта на рынке, падение репутации и, возможно, даже банкротство. Тестировщиков делят на два вида – Manual QA Engineer и Automation QA Engineer. Первые выполняют всю работу вручную, а вторые используют инструменты автоматизации, в том числе языки программирования (например, Java, Python), что повышает ценность такого сотрудника, и, соответственно, его зарплату. Конкуренция за место тестировщика в украинских реалиях чрезвычайно высока, поэтому для получения первого job-оффера нужно будет приложить много усилий. Data Scientist Ученый-эксперт, главными задачами которого является извлечение из большого массива данных полезной информации, которая затем может использоваться в различных областях; в основном, это бизнес и наука. Данный специалист должен иметь отличное аналитическое мышление, владеть математическим аппаратом (включая мат. статистику и мат. моделирование), знать программирование (Python, R) и базы данных (как реляционные, так и нереляционные). С начала 2010-х годов профессия Data Scientist считается одной из самых привлекательных, высокооплачиваемых и перспективных в IT. Data Analyst Если Data Scientist ориентируется на предиктивную аналитику, то Data Analyst работает с информацией постфактум. У этого специалиста менее техническая роль — он работает с уже готовыми данными: проводит дескриптивный анализ, интерпретирует и визуализирует результаты, а также презентует отчет своим заказчикам. При этом с БД, языками Python и SQL и другими инструментами сбора и обработки информации аналитик должен быть хорошо знаком, чтобы эффективно выполнять возложенные на него задачи. Кому нужно хорошее владение английским языком? Согласно уже упомянутому портрету IT-специалиста, высокий уровень английского у тех, кто общается с иностранными заказчиками и клиентами или занимается продвижением продуктов: Customer Success Manager, Project Manager, высшее звено руководства, специалисты по продажам, архитекторы, техлиды. Также английский на уровне Upper Intermediate+ у технических писателей и специалистов по работе с данными (Data Scientists, аналитики). Разработчикам будет достаточно уровня Intermediate, чтобы читать техническую документацию без лишних проблем. Однако желательно иметь Upper Intermediate и выше, поскольку это не только способствует более комфортному взаимодействию с англоязычными ресурсами и иностранными коллегами, но и подталкивает вас вверх по карьерной лестнице, а также положительно влияет на ЗП (согласно зарплатному опросу от DOU за лето 2022). Выводы В этой статье мы постарались дать исчерпывающий ответ на вопрос: «Какую IT-специальность следует выбрать в 2023 году?» В наших суждениях и выводах мы опирались на такие авторитетные ресурсы (международные и украинские), как Stack Overflow, Djinni, DOU, индексы TIOBE и PYPL. Также была проведена корреляция с прошлым годом, чтобы продемонстрировать стабильность рынка IT-профессий и показать, что вложенные вами силы и время в обучение не будут напрасными, а выбранное вами направление никуда не исчезнет. На лидерских позициях, как и в прошлые годы, остаются Web, Enterprise и Mobile разработка. Тестировщики также востребованы, хотя и имеют чрезвычайно большую конкуренцию среди начинающих, поскольку это один из самых легких способов попасть в IT, а с началом полномасштабного вторжения интерес к IT возрос так же стремительно, как и во время ковида. Высокая востребованность также и у DevOps инженеров при относительно невысокой конкуренции – 3.7 отзыва на одну вакансию в сентябре 2022 года (всего вакансий – 243, источник). Безусловно, полномасштабная война наложила свой отпечаток на IT в виде миграции бизнесов и айтишников на запад Украины, резкого притока новичков, увеличения «дистанционных» вакансий и проблем с электроэнергией из-за обстрелов россиянами нашей энергетической инфраструктуры, но зарплаты остались высокими – где-то даже повысились, – да и в целом IT стоит и обеспечивает как айтишников, так и нашу армию. Так зачем же ждать подходящего момента? Берите момент и делайте его подходящим! ITVDN – это образовательная платформа для онлайн обучения программированию и информационным технологиям. Наш портал насчитывает более 230 видео курсов и имеет собственные программы обучения по 15 популярнейшим IT-профессиям, среди которых: Верстальщик сайтов FrontEnd Developer Java Developer Python Developer C# / .NET Developer Android Developer Unity / Game Developer PHP Developer и другие. Формат обучения – записанные видео курсы, по которым можно учиться в любое удобное время. Таким образом, вы сможете овладеть IT-профессией не выходя из дома. Со всеми специальностями можно подробно ознакомиться, перейдя на страницу специальностей ITVDN. Кроме записанных видео курсов наша образовательная платформа предоставляет обучение в новом формате – Live Online. Он предусматривает регулярные онлайн занятия с ментором в небольших группах из 6-25 человек, на которых объясняется новый материал, обсуждаются нюансы выполнения практических задач, есть проверка ДЗ и чат для общения с одногруппниками, а также доступ к видео курсам ITVDN. В процессе обучения учащиеся также разрабатывают собственный курсовой проект, который в конце защищают и добавляют в своё портфолио. На данный момент Live Online обучение проводится по четырем самым популярным IT-специальностям: C#/.NET Developer Frontend Developer Java Developer Python Developer Если вас заинтересовал формат Live Online, переходите по ссылкам и ознакомьтесь с подробностями предложений по каждой из четырех специальностей. Также предлагаем вашему вниманию подборку вебинаров, которые помогут вам разобраться в главных моментах того или иного языка программирования или специальности: Стоит ли учить Ruby в 2023 году? Как стать Java разработчиком в 2023 году? Какой язык программирования учить в 2023 году? Обзор полезных ресурсов для изучения C# и .NET с нуля Как быстро выучить Python. Пошаговый план с нуля Как стать PHP разработчиком и получить оффер от IT-компании Старт карьеры в Java разработке. Личный опыт, актуальные тренды и подводные камни Что такое DevOps и другие полезные вебинары – в нашем каталоге. Надеемся, что наша статья была полезна для вас. С радостью примем любые пожелания и с пониманием и уважением – любые замечания. Выбирайте IT-профессию вашей мечты и пусть ничто не останавливает вас на пути к ней! Изучайте IT-специальности на ITVDN!
Собеседование с QA. 250+ вопросов для Junior, Middle, Senior
Автор: Влад Сверчков
Junior 1.1 Теория тестирования. 1.2 AQA 1.2.1 Программирование и Selenium 1.2.2 TestNG/JUnit, Git, CI 1.3 Web 1.4 Mobile 1.5 Практические задания Middle 2.1 Теория 2.2 AQA 2.2.1 Selenium 2.2.2 Тестовая инфраструктура 2.3 Web 2.4 Mobile 2.5 Практические задания Senior 3.1 Теория 3.2 Практические задания Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 12 января 2022 года. Оригинальная версия на украинском языке доступна по ссылке. Эту подборку вопросов, которые ставят кандидатам разных уровней на технических собеседованиях на позицию QA, составили совместными усилиями практики. Список – лишь ориентир. Кандидатам советуем пробежаться по вопросам и отметить неизвестные слова, погуглить и заодно повысить шансы пройти собеседование. Интервьюерам – пополнить свой запас интересных вопросов. Но не переборщите 🙂 Если вы не претендуете на позицию QA, просмотрите переводы подборок вопросов по другим популярным IT-специальностям. Junior Теория тестирования 1. Что такое тестирование? 2. Зачем тестировать ПО? 3. Какие существуют этапы тестирования? 4. Какие типы тестирования можете назвать? 5. Какие уровни тестирования знаете? 6. Какие техники тест-дизайна знаете? 7. Что такое техника анализа классов эквивалентности? 8. Что такое техника анализа предельных значений? В чем ценность этой техники? 9. Что такое Regression и Confirmation тестирование, какая между ними разница? 10. Как часто следует проводить регрессионное тестирование продукта? 11. Какие бывают виды интеграционного тестирования? 12. Что такое Configuration Testing? 13. Что такое Exploratory Testing? 14. Какие существуют UI-стандарты? 15. Что такое Black/Grey/White Box Testing? 16. Что такое Performance Testing? 17. Что такое Smoke и Sanity тестирование и какая между ними разница? 18. Что такое Traceability Matrix? 19. Что такое Sanity Testing? 20. Что такое End-to-End тест? 21. Что такое тестирование безопасности? 22. Что такое испытание на основе рисков? 23. Что такое динамическое тестирование? 24. Что такое «парадокс пестицида»? 25. Опишите основные фазы STLC? Дайте определение Entry и Exit Criteria. 26. Что такое Bug, Error, Failure, Fault? 27. Какие есть атрибуты баг-репорта? Какие основные поля для заполнения? 28. Какова разница между приоритетом и серьезностью? 29. Приведите примеры серьезного, но не приоритетного бага. 30. В чем разница между валидацией и верификацией? 31. Зачем нужна тестовая документация? Какие её виды? 32. Что такое тест-план? Какие элементы у него есть? 33. Какую обязательную информацию должен содержать тест-план? Как правильно его использовать, поддерживать и нужен ли он вообще для большинства проектов? 34. Какая разница между чеклистом и тест-кейсами? 35. Приведите пример хорошего тест-кейса. Ответы на некоторые из этих вопросов вы можете найти в видео курсе QA Стартовый (урок 1, урок 3, урок 4, урок 5), Основы тестирования (урок 6), Основы тестирования ПО (урок 1-5), а также в вебинаре “QA практикум. Техники тест дизайна” (часть 1 и часть 2). AQA (Automation QA) Программирование 36. Что такое ООП? Назовите его принципы с примерами? 37. Что такое интерфейс? Что такое абстрактный класс? Чем они отличаются? 38. Что такое SOLID? Приведите примеры. 39. Что такое DRY, KISS, YAGNI? 40. Какие паттерны GOF вам известны? Приведите примеры их использования. 41. Что такое PageObject и PageFactory? 42. Какая иерархия Collections? 43. Какая разница между Thread class и Runnable interface? 44. Какая разница между String, Stringbuffer и Stringbuilder? 45. Разница между final, finally и finalize? Selenium 46. Что такое Selenium и зачем его используют? 47. Что такое драйвер браузера? 48. Какие виды локаторов страницы существуют? Каковы их преимущества и недостатки? 49. Что такое Selenium Waits? Какие есть и чем отличаются? 50. Какие exceptions может бросить Selenium? Что они означают и как их обрабатывать? 51. Для чего используют JavaScriptExecutor? Приведите примеры. 52. Что такое Selenium Grid? 53. Какие способы click и send keys Selenium? 54. Как вы запускаете параллельное выполнение тестов? Что такое ThreadLocal? 55. Какая разница между Action и Actions? 56. Как написать метод isElementPresent? 57. Как вычитать данные из динамической веб-таблицы? 58. Можете ли вы назвать 10 интерфейсов в Selenium? 59. Назовите два способа, позволяющих автоматизировать капчу. 60. Вспомните типы навигационных команд Selenium. 61. Как найти поврежденные ссылки в Selenium WebDriver? 62. Какую технику следует рассмотреть, используя весь сценарий, если «нет ни frame id, ни frame name»? Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java (урок 1), Автоматизация тестирования мобильных приложений (урок 5), а также в вебинаре “Selenoid или Selenium Grid — что лучше?”. TestNG/JUnit 63. Для чего нужны TestNG/JUnit? 64. Какие инструкции используются в TestNG/JUnit? 65. Какие assertions есть в TestNG/JUnit? 66. Как выполнять тесты параллельно TestNG/JUnit? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 4). Git 67. Для чего используют системы контроля версий? 68. Что такое Git? Каков принцип его работы? 69. Что такое commits, branches в Git? 70. Для чего нужны GitHub, GitLab и другие, базирующиеся на Git, вебхостинги проектов? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Основы работы с Git. CI 71. Что такое CI? 72. Как автоматическое тестирование интегрируется в CI? 73. Как настроить Job или Pipeline на знакомом вам CI-инструменте? 74. Какие инструменты для генерации репорта после выполнения автоматических тестов вы знаете? 75. Какую информацию должен содержать отчет о выполнении автоматических тестов? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing (урок 4). Web 76. Что такое клиент-серверная архитектура? 77. Что может выступать в роли клиента? 78. Что такое REST API, SOAP? В чем разница? 79. Какие протоколы передачи данных знаете? 80. Какие способы взаимодействия с API существуют? В чем разница между ними? 81. Как можно протестировать API, что там нужно проверять? 82. Как расшифровывается CRUD? 83. Чем отличается GET от POST? 84. Какие отличия между XML и JSON? 85. Какие знаете форматы передачи данных? 86. Как происходит шифрование? 87. Какие бывают виды баз данных? 88. Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx). 89. Какие есть HTTP-методы? 90. Какие знаете Web elements? 91. Какие браузеры знаете? В чем их отличие? 92. Для чего необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тестировании. 93. Что такое кэш? 94. Что такое сессия? 95. Зачем нужны cookies? 96. Что такое фрейм? 97. Что такое HTML/CSS/JavaScript? 98. Какую структуру имеет веб-страница? 99. Зачем чистить кэш? 100. Какие виды тестирования можно применить только к Web? 101. Для чего в веб-страницах используют JavaScript? 102. Что такое REST? 103. Что такое AJAX? Ответы на некоторые из этих вопросов вы можете найти в видео курсах QA Стартовый (урок 6), Web Testing, SQL Базовый. Mobile 104. Какие мобильные платформы существуют? 105. Какие версии Android и iOS используются на рынке (минимальные и максимальные)? 106. Какие версии Android нужно тестировать, если заказчик сказал поддерживать с версии 5.0? 107. Назовите типы мобильных приложений. 108. Каков формат файлов сборок приложений для Android и iOS? 109. Что такое ADB? 110. Как снять логи с AOS/IOS? 111. Что нужно проверять при использовании сканера отпечатка/Face ID? 112. Как я могу запускать тесты Android без Appium? 113. Объясните концепцию дизайна Appium. Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений. Практические задания 114. Написать чеклист для функционала корзины в интернет-магазине. 115. Написать тестовые наборы данных для поля ввода даты, которое отсеивает пользователей в возрасте до 18 лет. 116. Написать чеклист тестирования формы ввода данных платежной карты. 117. Протестовать «предмет» относительно различных видов тестирования. (Предмет — лифт, карандаш, калькулятор и т. д.) 118. Есть Input поле, принимающее целые значения от 18 до 99 включительно. Надо протестировать с помощью техники тест-дизайна Boundary Values Analysis и Equivalence Partitioning. 119. Есть веб-страница с полями: e-mail, password и кнопкой submit. Необходимо привести примеры отрицательных тест-кейсов, которыми можно проверить эту страницу. 120. Привести примеры тест-кейсов для функционала, находящегося на нескольких страницах проекта (например, поле поиска). 121. Как протестировать процесс оплаты в интернет-магазине? 122. Как протестировать сломанный тостер? 123. Объясните для 7-летнего ребенка, что такое база данных. 124. Определите необходимое количество функциональных тест-кейсов, чтобы проверить Log in форму. 125. Есть форма регистрации в веб-приложении с полями (first name, last name, username, password, repeat password) и кнопкой Register. Какие проверки нужно провести? 126. Поле username должно быть обязательным, но оно не является обязательным. Приведите пример баг-репорта, созданного для этой ошибки. 127. Как бы вы провели smoke-testing для приложения типа Telegram? 133. Как будет выглядеть баг-репорт, если, к примеру, не работает электрический чайник? 128. Есть таблица books с полями: name, price, page_count. Следует выбрать все имена книг, в которых price более 10 единиц и количество страниц от 20 до 100. 129. У вас есть функционал калькулятора, который доступен через веб-браузер по ссылке. Он имеет только функцию делить, так сказать, MVP-версию. Диапазоны для вписывания в числитель и делитель от 0,1 до 99,9. Вывод значения происходит автоматически, потому что front-end реализован на React JS. Как вы будете тестировать этот функционал? Какие виды тестирования примените? Какие техники тест-дизайна используете? 130. Задание на работу с SQL. извлечь номер телефона и адрес пользователя Muzik. Извлечь данные о пользователях, имеющих сумму заказа более 2000 грн. Подсчитать количество заказов в таблице и общую сумму сделанных заказов. 131. Ваша компания разрабатывает программное обеспечение для медицинских систем, и вы тестируете компонент, управляющий дефибриллятором сердца. Вы заметили, что одно решение в тестовом модуле состоит из 34 независимых атомарных условий. Какой метод тестирования белого ящика следует выбрать для этого и почему? 132. Оздоровительная программа для сотрудников совмещена с оплатой медицинского страхования и имеет следующие правила: сотрудники, потребляющие 17 единиц или менее алкоголя в неделю, получают $28 скидки на оплату. Для сотрудников, которые заполнят «Оценку риска для здоровья», оплата уменьшается на $23. Сотрудники, участвующие в ежегодном контроле за состоянием здоровья в компании: получат скидку на $50 за то, что имеют индекс массы тела (ИМТ) 25,5 или менее, и $19 скидки при ИМТ ниже 30. Некурящие получают дополнительную скидку на $46. Курильщики, присоединившиеся к курсу отказа от курения, получают скидку в $24. Курильщики, не присоединившиеся к курсу отказа от курения, оплачивают дополнительно $75. 133. Используя технику классов эквивалентности, сколько тестов нужно написать, чтобы покрыть вышеупомянутые условия на 100%? 134. Какое минимальное количество тестов необходимо для покрытия следующих условий автогражданки: лица до 18 лет не застраховываются. Для мужчин на красном авто прибавляется +15% к стоимости полиса. Для женщин от 18 до 64 лет страховая премия 1000 грн. Для мужчин от 18 до 64 лет страховая премия 1200 грн. Для лиц старше 64 лет страховая премия 1800 грн. 135. Напишите сценарии автоматического тестирования для сортировки по цене и добавлению товара в корзину на сайте. К вашим тестам добавьте документацию с настройками и разместите ваше решение на GitHub. Middle Теория 1. Назовите обязанности QA? 2. Что знаете о тестировании нагрузки? В каком случае следует проводить такое тестирование? На каком этапе готовности продукта? 3. Что такое таблица решений/decision table и как её можно использовать? 4. Что может быть критериями запуска и завершения тестирования? 5. Расскажите о вариантах интегрирования тестовой документации в проект, инструментах для работы с ней. 6. Как организовать сквозное тестирование (e2e)? 7. Какие тест-кейсы можно сдать для тестирования баз данных? 8. Приведите примеры подходов для тестирования локализации. 9. Что такое A/B тестирование? 10. Что такое mock/stub? Какие знаете инструменты для работы с ними? 11. Когда нужно использовать технику Pairwise? 12. Что такое fuzz-тестирование и где его используют? 13. Что такое REgexp? 14. Как меняется стоимость дефекта при тестировании программного обеспечения? 15. Каковы пути анализа бизнеса клиента? Как определить целесообразность того или иного функционала? 16. Назовите последовательность выполнения CI/CD процесса на проекте. 17. Какое должно быть процентное соотношение между положительным и отрицательным тестированием на проекте? 18. Какой вид тестирования целесообразнее проводить до релиза? 19. Есть ли разница между bug leakage и bug release? 20. Может ли быть ситуация, когда критерии завершения (exit criteria) не выполнены? Что должно происходить в этом случае? 21. Что мы действительно должны покрывать тест-кейсами, а что считается избыточным расходом времени и денег? Когда нецелесообразно писать тест-кейсы? 22. Для какого функционала труднее всего написать тест-кейсы? 23. Как посчитать Cyclomatic complexity? 24. В чем основная разница между defect detection percentage и defect removal efficiency? 25. Какие модели risk-based testing вы знаете? 26. Что такое тестирование API? Какими инструментами пользуются для его выполнения? 27. Что такое performance testing? Какими инструментами пользуются для его выполнения? 28. Что такое load и stress testing? Какими инструментами пользуются для их выполнения? 29. Что такое contract testing? 30. Какая разница между Scrum и Kanban? 31. Расскажите о ритуалах, ценностях и ролях в Scrum. 32. Как выбор методологии может повлиять на качество разработки? 33. Нулевой спринт в Scrum. Для тестирования есть задание под названием «Настройка среды». Что здесь нужно выполнять? Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing, QA Стартовый, “Методология управления проектами. Вступление в SCRUM”. AQA Selenium 34. Расскажите, как вы будете строить и внедрять стратегию по автоматизации тестирования. 35. Как взаимодействуют клиентская библиотека Selenium, драйвер браузера и сам браузер? 36. Для чего используют browser capabilities, arguments и options? 37. Что такое iframe и как с ним работать в Selenium? 38. Как обрабатывать браузерные сообщения (alerts)? 39. Что такое Appium? 40. Что такое Electron-based applications? Как использовать Selenium и Appium для их тестирования? 41. Как взаимодействовать с запросами, отправляемыми из браузера? 42. Как взаимодействовать с cookies, LocalStorage и SessionStorage? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 1) и Автоматизация тестирования мобильных приложений. Тестовая инфраструктура 43. Что такое и чем отличаются виртуальная машина, симулятор и эмулятор? 44. Что такое контейнер и чем он отличается от виртуальной машины? 45. Как используют виртуальные машины и контейнеры в автоматизации? 46. Что такое IaaS и PaaS? Приведите примеры. 47. Что такое Configuration Management? 48. Что такое Provisioning? 49. Какие команды Linux Shell вам известны? Как с помощью команд Linux Shell найти лог-файл и строчку с ошибкой в файле? 50. Какие команды Windows CMD вам известны? Как с помощью команд Windows CMD найти IP-адрес машины? 51. Что такое SSH и как им пользоваться? 52. Что такое bash и batch скрипты? Зачем их используют? Web 53. Какая разница между авторизацией и аутентификацией? 54. Как происходит авторизация на сервере? 55. Какие статус-коды ошибок бывают? Может ли сервер отправить код 400, если проблема на его стороне? 56. Как выполнить Debug страницы в браузере? 57. Как протестировать адаптивную верстку? 58. Что такое WebSocket и как проверить обрыв соединения? 59. Каковы есть основные виды уязвимости веб-приложений? 60. Какие инструменты для тестирования Web performance client-side знаете? 61. Какова разница между методами GET и POST? 62. Какая разница между методами PUT и PATCH? 63. Какие знаете сниферы? 64. Какова разница между DROP и TRUNCATE? 65. Что такое case function? 66. Что такое collation? 67. Что такое схема GraphQL? 68. Объясните разницу между OLTP и OLAP. 69. Вспомните разные типы репликации в SQL Server? 70. Что вы понимаете под Self Join? Приведите примеры. 71. Что такое cursor и как им пользоваться? Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java, SQL Базовый. Mobile 72. Что основное нужно проверить при тестировании мобильного приложения? 73. Что такое Manifest.xml в .apk файле и какие данные там указывают? 74. Что такое режим разработчика Do not keep activities? 75. Как происходит перехват трафика http/https для мобильных устройств? 76. В каком виде хранятся данные в мобильных приложениях локально? 77. Как тестировать миграцию локальных данных? 78. Каковы основные компоненты Android-приложений (активити / фрагмент / сервис / интент-фильтр)? 79. Опишите жизненный цикл активити. 80. Что такое утечки памяти? Как найти? 81. Как протестировать билд на Android? 82. Что такое Testflight? Как тестировать с его помощью? 83. Как работает Android? Какая у него архитектура? 84. Как происходит деплой программ IOS/AOS? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений. Практические задания 85. Что делать, если разработчик не соглашается, что указанный баг действительно является багом? А если в требованиях использована неоднозначная формулировка? Если бизнес-аналитик, PM и представитель клиента сейчас недоступны, чтобы подсказать? Как можно предотвратить такую ситуацию? 86. Сложилась ситуация, когда команда тестирования не успевает закончить свою работу в дедлайн. Как правильно действовать в этом случае? А если релиз передвинуть нельзя? А если никакие фичи из релиза забрать нельзя? 87. Что делать, если проект уже начался, а QA-инженер там начал работать только когда начали разрабатываться бизнес-фичи? Какие этапы тестирования теперь нужно наверстать и нужно ли это? Как это сделать максимально грамотно без ущерба для загрузки по тестированию новых фич? Какие риски имеет позднее вовлечение QA-инженера в разработку? 88. Веб-страница с полями e-mail, password и кнопкой submit. Назовите отрицательные тест-кейсы, по которым можно проверить эту страницу. 89. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что информация отправлена в базу данных? 90. Как проверить, что данные отправились на сервер, если у нас нет доступа к бэкенду? 91. Приведите примеры улучшений для приведенной веб-страницы (любая на выбор). 92. Составить Smoke Test Suite для DOU.ua. 93. Протестовать функционал банкомата с помощью техники State Transition Diagram. 95. Написать предельные значения для ввода в форму оплаты товара на сайте. 96. Есть метод POST, который регистрирует нового пользователя на сайте, есть тело запроса, содержащее данные о почте, телефоне, имени пользователя и адресе проживания. Какие кейсы для проверки можете привести? 97. На что следует акцентировать внимание при автоматизации методов API? Что следует проверять? 98. Вы тестируете логин-форму, вводите логин и пароль, нажимаете кнопку логин и ничего не происходит. Ваши действия? 99. В течение 5 минут найдите и опишите дефекты, которые вы видите: 100. Вам нужно сделать Regression Testing за два дня. Как вы это сделаете, если Regression Run охватывает 1000 тест-кейсов? 101. Вы тестируете интернет-магазин, который продаёт карандаши. В заказе нужно указать количество карандашей (максимум для заказа – 1000 штук). В зависимости от заказанного количества карандашей отличается цена: 1–100 – 10 грн за шт. 101-200 – 9 грн за шт. 201-300 – 8 грн за шт. С каждой новой сотней цена уменьшается на 1 гривну. Задание: используя тест-дизайн, опишите все необходимые тест-кейсы, которые будут максимально покрывать описанную функциональность. 102. Есть приложение типа мессенджера, пользователь заходит в чат и отсылает файл (видит сообщение Failed to send. ) Когда это может быть баг, а когда нет? 103. Есть веб-приложение интернет-магазина (регистрация, логин, поиск товаров, корзина и покупки). Программу поддерживают следующие браузеры: Chrome, Safari, Edge. У нас есть ограниченное время на тестирование. Расскажите, как вы будете проверять приложение? 104. Напишите автоматические тестовые сценарии для проверки API операций создания и просмотра GitHub Gists. Интегрируйте ваш проект с известной вам CI-системой. Senior Теория 1. Как вы преодолеете трудности из-за отсутствия надлежащей документации для тестирования? 2. Какой подход является наилучшим для старта QA в проекте? 3. Какие препятствия могут возникнуть в обеспечении качества для Agile Tester? 4. Что такое Definition of Done? 5. Когда можно считать, что тестирование окончено? 6. Что такое RCA в тестировании? Нужно ли его проводить? 7. Какой подход вы используете для Test Cases Review? 8. Какие виды рисков существуют? Что такое Mitigation Plan? 9. На основе чего нужно составлять стратегию для проведения тестирования нагрузки? 10. Как часто следует ревьюировать тестовую документацию? 11. Как можно быстро сделать выборку необходимых проверок для смоук-тестирования? 12. Как запланировать загруженность команды тестировщиков? 13. Какую ценность несет анализ результатов тестирования команде и проекту в целом? 14. Как можно подкорректировать флоу разработки, чтобы получать более чистые результаты на выходе и уменьшить количество багов на проде? 15. Расскажите о метриках качества, которые вы применяли. Зачем они нужны? 16. Как провести эстимейт задачи? Каковы техники оценки объема тестирования существуют? 17. Как можно посчитать покрытие тестами функционала? 18. Какое оптимальное количество шагов в тестовом сценарии? 19. Как избежать появления регрессивных дефектов? 20. Что такое тестирование со смещением влево (Shift left testing)? 21. Как будете тестировать программу, если для продукта нет документации? 22. В чем смысл юнит-тестов? 23. Какие минусы полной автоматизации тестирования? 24. Что такое ROI и как его считать? 25. Что такое CI/CD? Какие плюсы и минусы этого подхода? 26. TOP OWASP: какие знаете уязвимости и методы защиты? 27. Что вы думаете по поводу BDD? Когда следует использовать, а когда будет только хуже? Если все же следует использовать, то для UI или API автоматизированного тестирования? 28. Что такое сокеты и как их тестировать, вручную и автоматизировано? Зачем их используют? 29. Когда следует делать стресс-тестирование на проектах? От чего отталкиваться, когда строите сценарий для такого тестирования? Что учесть при выборе инструмента? 30. Расскажите об алгоритмах шифрования трафика. 31. Что такое NIC? 32. Для чего нужен протокол RTP? 33. Что, по вашему мнению, лучше – SIP или PRI? 34. Что такое NAT? Практические задания 35. Сформулируйте негативные сценарии для POST-запроса, который создаёт нового пользователя. 36. Как вы регулируете конфликтные ситуации между QA и разработчиками? 37. Есть проект, на котором нет тестовой документации, но проекту уже год. Мануальным QA не хватает времени на тестирование, они очень устали, есть желание уволиться. Какое решение по команде можно принять? 38. Продайте мне тестирование как клиенту, не желающему его покупать. Кратко и структурированно опишите вашу работу на каждом из этапов разработки ПО, используя профессиональные термины (не лить воду). 39. У вас есть онлайн-калькулятор. Вы вводите 1+1 и получаете 3. Расскажите, как вы будете искать причину проблемы. 40. Могут ли быть такие виды архитектур? Чего может быть недостаточно для правильной работы архитектур, приведенных ниже? Пример 1 Пример 2 Пример 3 Пример 4 Вопросы при выполнении этого задания: какие запросы выполняются по форме авторизации? Какой запрос выполняется, когда мы сохраняем данные в базе данных? Можно ли авторизоваться с помощью GET-запроса и нормально ли так делать? Какой код ответа мы получаем при падении ошибки на сервере, код при ошибочных credentials на форме авторизации? Можно ли заменить SSL-сертификат шифрованием данных в пакете от клиента к серверу для протокола HTTP или это будет равноценной заменой? 41. Есть веб-страница с полями e-mail, password и кнопкой submit. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что данные отправлены в базу данных? 42. Какое минимальное количество тест-кейсов необходимо, чтобы убедиться в корректной работе этой веб-страницы? 43. Как проверить безопасность на веб-странице (на выбор)? Редакция DOU.ua выражает благодарность за вопросы и рецензию: Роману Поботину, Андрею Заблоцкому, Виктору Максименко, Марьяне Батюк, Ирине Литвин, Сергею Могилевскому, Святославу Логину, Роману Маринскому, Олегу Заревичу, Олесе Паславской, Тарасу Лирке, Максиму Богуну, Вадиму Гуличу, Виталию Кашубе, Юрию Суравскому, Светлане Франковой, Владимиру Арутину, Станиславу Жупинасу, Людмиле Федчук, Иванне Черухе, Юлии Левченко, Владиславу Куличенко, Юрию Бояру.
Собеседование с DevOps. 300+ вопросов для Junior, Middle, Senior
Автор: Влад Сверчков
Junior 1.1 Общие вопросы и Linux. 1.2 Networks, Clouds. 1.3 Automation, Information Security. 1.4 Виртуализация, CI/CD, Development. 1.5 Monitoring/Logging. 1.6 Практические задания. Middle 2.1 Linux. 2.2 Networks. 2.3 Container orchestration. 2.4 Виртуализация и контейнеризация. 2.5 CI/CD, Clouds and Automation. 2.6 Monitoring/Logging. 2.7 Information Security. 2.8 Development, Databases. 2.9 Практические задания. Senior 3.1 Linux. 3.2 Networking, Разное. 3.3 Container orchestration, Clouds and Automation. 3.4 CI/CD, Information Security. 3.5 Observability, Databases. 3.6 Практические задания. Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 7 декабря 2021 года. Оригинальная версия на украинском языке доступна по ссылке. Можно спорить о популярности DevOps, а можно просто готовиться к собеседованию и получить желанные 9K 🙂 Чтобы помочь вам сориентироваться в вопросах, которые задают на интервью, мы поговорили с теми, кто их проводит, и составили список возможных вопросов. Junior Общие 1. Что такое DevOps? 2. Вы набираете google.com в браузере. Расскажите как можно подробнее, что происходит в это время? 3. Как работает HTTPS? 4. Объясните концепцию Infrastructure as Code, зачем это нужно и какие проблемы решает? Linux 5. Опишите общую архитектуру операционной системы. 6. Опишите основное предназначение операционной системы. 7. Зачем нужны файловые системы? Какие существуют? 8. В чем разница между виртуализацией и контейнеризацией? 9. В чем преимущества контейнеров? 10. Какова файловая структура в Linux (UNIX) системах, расположенных в /etc, /dev, /proc, /sys, /lib, /var (несколько директорий на выбор)? 11. Что такое Load Average? 12. В чем разница между soft и hard symlink? 13. Как работают file permissions, зачем директории права исполнения (+x)? 14. Что такое zombie process? 15. С помощью чего можно собрать информацию о текущем состоянии процессора, памяти, диска, сети? 16. Что такое swappiness? 17. Как посмотреть свободное место на диске? 18. Что такое inode? 19. Расскажите поэтапно процесс загрузки Linux с момента включения питания компьютера. 20. Что произойдет при выполнении команд: 1. cat file1 > file2 2. cat file1 >> file2 21. В чем разница между Ctrl+C и Ctrl+Z? 22. Как перенаправить одновременно stderr и stdin? 23. Как убить процесс? Какие есть типы сигналов? 24. Что делает команда grep? 25. Что такое скрипт bash? 26. Какие типы переменных используются в bash? 27. Что выведут команды: 1. echo $
Собеседование по Android. 250+ вопросов для Junior, Middle, Senior
Автор: Влад Сверчков
Junior 1.1 Базовые вопросы 1.2 Алгоритмы, структуры данных, хранение данных 1.3 Работа с сетью 1.4 Многопоточность, Java Core, RxJava 1.5 Android SDK, Kotlin 1.6 Другое 1.7 Практические задачи Middle 2.1 Базовые вопросы 2.2 Алгоритмы, структуры данных, хранение данных 2.3 Работа с сетью 2.4 Многопоточность, Java Core 2.5 Android SDK 2.6 Kotlin 2.7 RxJava 2.8 Тестирование 2.9 Другое Senior 3.1 Базовые вопросы, архитектура 3.2 Многопоточность 3.3. Java Core, Android SDK, Kotlin Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 3 ноября 2021 года. Оригинальная версия на украинском языке доступна по ссылке. Если вы готовитесь к собеседованию по Android — или проходить, или проводить — возможно, этот перечень вопросов пригодится вам. Редакция DOU поинтересовалась у разработчиков, проводящих технические интервью в компании в Украине, о чем они спрашивают кандидатов. Это уже десятая статья из рубрики «100+ технических вопросов»; ознакомиться с вопросами для других языков программирования на DOU.ua на украинском языке вы сможете, перейдя по ссылке. Junior Базовые вопросы 1. Назовите основные принципы ООП. 2. Что такое класс? Что такое интерфейс? Какая между ними разница? 3. Назовите базовые типы данных. 4. В чем отличие примитивных типов от объектов? 5. Какая разница между абстрактным классом и интерфейсом? 6. Что такое паттерны проектирования? Какие паттерны вы знаете? 7. Чем отличается Java от Kotlin? Ответы на некоторые из этих вопросов вы можете найти в видео курсе Kotlin, а также статье Kotlin vs Java: что лучше для Android-разработки? и вебинаре Структуры данных в Java и Kotlin. Алгоритмы 8. Что такое алгоритм и как выбрать правильный? 9. Что такое сложность алгоритма? Как и с помощью чего её можно вычислить? 10. Что такое нотация big-O? 11. Что такое рекурсия? 12. Какие алгоритмы сортировки вы знаете? Структуры данных 13. Расскажите о таких структурах данных, как List, Set, Map? 14. Какая разница между ArrayList и LinkedList? Ответы на эти вопросы вы найдёте в вебинаре Структуры данных в Java и Kotlin. Хранение данных 15. Как можно хранить данные в Android? 16. Когда следует использовать SharedPreferences? 17. Из каких компонентов состоит библиотека Room? 18. Что такое @PrimaryKey, @Ignore, @Embedded, @TypeConverters в Room? 19. Для чего нужна миграция в базах данных? Ответы на некоторые из этих вопросов вы найдете в видео курсе SQLite. Базы данных в Android приложениях (урок 2, урок 3). Работа с сетью 20. Что такое JSON, XML? 21. Какие варианты реализации работы с сервером? 22. Что такое REST? Ответы на некоторые из этих вопросов вы найдете в видео курсах Разработка приложений под Android. Базовый курс (урок 2), Android Углубленный (урок 9). Многопоточность 23. Что такое процесс? 24. Что такое поток? 25. Для чего используют ключевое слово synchronized? 26. Зачем синхронизировать потоки? 27. Какая разница между синхронным и асинхронным исполнением? 28. Как мы можем создать поток в Java? 29. Что такое deadlock? 30. Какие варианты реализации многопоточности есть в Android? 31. Что такое main thread? Какие операции нужно выполнять на main thread, а какие нельзя делать? Ответы на некоторые из этих вопросов вы найдете в видео курсе Android Углубленный (урок 5). Java Core 32. Что такое Exceptions? Зачем они нужны? 33. Зачем используют ключевые слова final, finally и finalize? 34. Что такое абстрактный класс? Что такое интерфейс? 35. Что такое анонимный класс? Использовали ли на практике? Для чего? 36. Что такое статический класс (static class)? 37. Что такое enum? Зачем его используют? 38. Можем ли мы сделать конструктор приватным? 39. Какая разница между ключевыми словами throw и throws? 40. Какая разница между Error и Exception? 41. Какая разница между checked и unchecked exception? 42. Что такое Object class и какие методы он имеет? 43. Какие существуют модификаторы доступа для классов? Какая разница между ними? 44. Что такое итератор? 45. Как безопасно удалить элемент из коллекции? 46. Зачем нам переопределять equals() и когда не нужно это делать? 47. Какой должен выполняться контракт при переопределении equals()? Ответы на некоторые из этих вопросов вы найдете в вебинаре Что такое Java EE и Java Core и видео курсе Java Базовый (урок 2, урок 4, урок 6, урок 7, урок 8, урок 9). RxJava 48. В чем разница между map() и flatMap() в RxJava? 49. Когда используете observeOn(), а когда subscribeOn()? 50. Как можно обработать ошибки в RxJava? 51. Какие schedulers знаете в RxJava? Назовите их отличия. 52. Что такое Disposable? Зачем его используют? 53. В чем разница между Hot и Cold Observables? Назовите примеры в RxJava. Ответы на некоторые из этих вопросов вы найдете в видео курсе Создание пользовательских элементов управления в Android (урок 1). Android SDK 54. Какие базовые Android-компоненты можете назвать? 55. Что такое ContentProvider? 56. Какие типы Service знаете? 57. Что такое BroadcastReceiver и какие типы существуют? 58. Для чего используют механизм фрагментов? 59. Опишите жизненный цикл Activity. 60. Опишите жизненный цикл Fragment. 61. Есть ли у Fragment контекст? Если да, то как его получить? 62. Чем отличается Fragment от Activity? Зачем выдумали Fragment? 63. Что такое изменение конфигурации? Что происходит с приложением на Android при этом? 64. Что такое Intent? Что такое explicit/implicit Intent? 65. Что такое SharedPreferences? 66. Что такое ANR? Как избегать таких ситуаций? 67. Что такое DataBinding? 68. Что такое LiveData? Какие виды знаете? 69. Как создать ViewModel? Почему создавать ViewModel нужно именно так? 70. Что такое Context и зачем он? 71. Что такое AndroidManifest.xml? Зачем его используют? Что мы можем там декларировать? 72. Перечислите layout, с которыми работали? Когда и какой нужно использовать? 73. Расскажите, что нужно реализовать, чтобы отобразить список строк в RecyclerView. 74. Объясните паттерн ViewHolder. Для чего он применяется? 75. Что такое DiffUtil? 76. Расскажите о ConstraintLayout. 77. Для чего используют Group, Guideline, Barriers, Chains в ConstraintLayout? 78. У вас есть Activity с двумя Fragment’ами, у одного есть кнопка, у другого TextView. При нажатии кнопки изменяется TextView. Как вы реализуете это? 79. Что такое WorkManager? Когда используем? Ответы на некоторые из этих вопросов вы найдете в видео курсах Разработка приложений под Android. Базовый курс (урок 2, урок 4, урок 5, урок 7), Android Углубленный (урок 3, урок 6, урок 9), Android User Interface (урок 3), Создание пользовательских элементов управления в Android (урок 9). Kotlin 80. Как вы понимаете термин Null safety? 81. Что такое nullable и non-nullable типы? Какая разница между val и var? 82. Как задекларировать getter/setter для property? 83. Почему классы Kotlin по умолчанию final? 84. Что такое sealed class? 85. Что такое data classes? 86. Какая разница между sealed class и enum? 87. Почему у Kotlin нет checked exceptions? 88. Что такое Extensions? Использовали ли вы их на практике? 89. Что такое перегрузка операторов (operator overloading)? Зачем нужен этот механизм? 90. Как работают примитивы в Kotlin? 91. Расскажите об объекте Unit в Kotlin. 92. Расскажите об объекте Any в Kotlin. 93. Как создать Singleton объект в Kotlin? 94. Что такое companion object? 95. Чем отличается const val от val? 96. Какие знаете модификаторы доступа? 97. Что означает модификатор lateinit? 98. Coroutines – что это за механизм? Использовали ли его на практике? 99. Зачем нужны Coroutines? Чем они лучше обычных тредов? 100. Что такое suspend-функция? 101. Что такое Job? 102. Что такое Dispatcher? Какие есть виды? 102. Что такое Scope? 103. Как писать Java compatible API в Kotlin? Ответы на некоторые из этих вопросов вы найдете в видео курсе Kotlin. Другое 104. Расскажите, что такое memory leak. Как избежать? 105. Как бы вы искали memory leak? 106. Расскажите о Dependency injection. Какие варианты реализации в Android? 107. Для чего нужна система контроля версий? 108. Что такое Git? 109. Для чего используем .gitignore-файл? 110. Расскажите о командах push, pull, fetch в Git? 111. Что такое merge и rebase? Какая разница? 112. Что такое CI? Зачем используем? Ответы на некоторые из этих вопросов вы найдете в видео курсах Dependency Injection в Android-разработке, Основы работы с Git. Практические задачи 113. Разверните Linked List. Отпишите о зацикленности в LinkedList или ее отсутствии. 114. Напишите функцию, которая вернет n первых неотъемлемых чисел: un nMin(items: List
ТОП-10 лучших видео по .NET
Автор: Влад Сверчков
Здравствуйте! Друзья, в этот раз мы подготовили для вас подборку лучших вебинаров от ITVDN по направлению .NET. В рейтинг вошли как познавательные вебинары с актуальной информацией, так и вебинары, ориентированные на прокачку ваших навыков создания кода. Давайте приступим к их рассмотрению. Как стать C# разработчиком в 2021 году? .NET или .NET Core? Автор — Дмитрий Охрименко, сертифицированный специалист Microsoft (MCTS, MCPD, MCT). Тренер-консультант, эксперт по построению распределенных и веб-ориентированных приложений. Автор курсов по .NET и FrontEnd разработке на ITVDN C#/.NET разработка — это очень перспективное направление в IT, жизнь которому дала всемирно известная компания MIcrosoft. Если вам интересна данная сфера и вы хотите сделать в ней профессиональный старт, этот вебинар будет для вас как нельзя кстати! Цель вебинара — помочь вам разобраться с главными аспектами данной специальности, опираясь на тенденции развития IT рынка, правильно расставить приоритеты и помочь спланировать ваше обучение и карьеру по направлению C# / .NET. На мероприятии рассмотрены следующие важные вопросы: Есть ли смысл начинать учить C# в 2021 году? Что такое .NET Framework и что такое .NET Core? Что учить и в какой последовательности? Карта специальности Сравнение веб приложения на .NET и на .NET Core Полезные ресурсы для обучения и развития Вопросы и ответы Как стать Full-Stack разработчиком? Автор — Виталий Емец, FullStack Developer, Microsoft Certified Specialist Full-stack разработчик (произносится “фулл стек”) — это мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми обычно занимаются FrontEnd и BackEnd разработчики раздельно друг от друга. Таким образом, в некоторых случаях Full-Stack специалист может даже в одиночку вести проект от начала до конца. Какими навыками необходимо обладать, чтобы достичь такого уровня мастерства, и какой инструментарий должен быть у истинного Full-Stack разработчика? В чем преимущества данной профессии и какие у нее подводные камни? Каким образом Full-Stack разработка связана с технологиями C#/.NET? Все ответы на ваши вопросы вы получите на вебинаре Виталия Емца. Что нового в C# 8, 9? Автор — Алексей Никифоров, Software Engineer & Business Analyst at HYS-Enterprise C# — это универсальный объектно-ориентированный язык, который является мощным инструментом создания программного обеспечения с широкой областью применения. При столь высокой функциональности он является достаточно несложным в изучении и отлично подходит тем, кто собирается сделать первый шаг навстречу программированию. Данный вебинар предусматривает погружение в последние нововведения языка С#. Основной упор будет сделан на коммуникацию и обсуждение, предполагая, что участники вебинара — разработчики C#, которые следят за новинками данного языка. Автор пройдется по новым возможностям языка и обсудит, как эти изменения могут быть использованы с целью написания более выразительного и чистого кода. Алгоритмы и структуры данных в .NET Автор — Ярослав Кучук, .NET Developer На вебинаре рассматривается вопрос фундаментальной алгоритмической подготовки – от математического обоснования мощности алгоритма до стандартных алгоритмов и структур данных. Базовые алгоритмы реализованы на C#; автор анализирует их с точки зрения их мощности. На вебинаре рассматриваются следующие темы: Понятие алгоритма Сложность алгоритма и способы ее измерения Основные структуры данных Стек Очередь Связанный список Хеш-таблица Бинарные деревья поиска Красно-черные деревья Базовые сортировочные алгоритмы Базовые поисковые алгоритмы 5. Безопасность .NET веб-приложений: частые ошибки и методы борьбы с ними Автор — Алексей Голубев, Lead Software Engineer в компании SoftServe Цель вебинара — обратить внимание разработчиков на проблемы в сфере безопасности веб приложений, которые можно устранить еще на этапе разработки. На вебинаре автор рассказывает о наиболее частых ошибках в приложениях, уязвимостях, связанных со сторонними библиотеками, и то, как их можно избежать. Содержание вебинара: Авторизация. Кражи сессий и стойкости паролей. Человеческий фактор. Что разработчик может сделать не так и на что обращать внимание. Инъекции. Какие встречаются чаще и чем опасны WYSIWYG редакторы. Рандомизация. Случайности не случайны. Вебинар подойдет .NET разработчикам — приветствуются специалисты любого уровня. Будет много практической информации которую можно применить как на этапе разработки, так и на этапе проектирования систем. 6. Техники тестирования для C# разработчиков. Уровень Advanced Автор — Юрий Науринский, Senior Fullstack .NET Software Developer На вебинаре будет рассмотрено 3 «продвинутые» техники тестирования, которыми должен владеть опытный разработчик. Будет немного теории, примеры и ответы на вопросы. Все примеры на языке С#. Ниже перечислены техники, которые рассматриваются на встрече. Property based testing — техника тестирования, применяемая для проверки свойств функции, программы, системы. Ключевая идея в том, что описываются не заранее заданные ожидаемые значения, а свойства, которым должны удовлетворять тестовые примеры. Дальше, тестовые примеры генерируются случайным образом, постоянно проверяя, удовлетворяют ли они вышеописанным свойствам. Performance testing — одна из самых важных техник тестирования, которую желательно знать каждому разработчику, применяемая для ответа на вопрос, насколько быстро работает функция, программа, система, а также отдельные её компоненты. Также, может отвечать на вопрос, сколько памяти потребляет функция, программа, система. Load testing — техника тестирования, о которой желательно иметь представление каждому веб-разработчику; применяется для измерения поведения системы под различной нагрузкой, в частности нормальной и пиковой. Могут измеряться время ответа, пропускная способность, прочие бизнес-ориентированные метрики. 7. Docker для .NET разработчиков Автор — Алексей Никифоров, Software Engineer & Business Analyst at HYS-Enterprise Docker — это популярная платформа, которая используется при разработке, тестировании и развертывании программного обеспечения. Она позволяет сократить время между написанием кода и поставкой его на “production”. За последние годы популярность Docker’a сильно возросла и данная технология стала индустриальным стандартом в сфере контейнеризации программных решений. Docker может быть полезен очень широкому спектру специалистов: разработчик, тестировщик, администратор, релиз-менеджер и т. д. Несмотря на то, что Docker написан на Go и использует особенности ядра Linux, .NET разработчики, которые традиционно ведут разработку под Windows, могут получить огромную пользу от использования Docker’a на самых разных уровнях. Знание данного инструмента повысит вашу продуктивность и даст конкурентное преимущество на рынке труда. Вебинар будет полезен специалистам начального уровня, которые всегда хотели попробовать Docker. Ознакомление будет основано на .NET Core приложении. По завершению, вы смело будете ориентироваться в основных концепциях и инструментах и сможете успешно начать свою путь изучения Docker’а. 8. F# и функциональное программирование для C# разработчиков Автор — Альберт Ташу, .NET Developer, тренер-консультант учебного центра CyberBionic Systematics, а также сертифицированный специалист Microsoft С# — это мультипарадигменный язык, и с каждым релизом он приобретает всё больше возможностей, направленных на применение функционального программирования, которое является одной из самых востребованных парадигм в современной разработке программного обеспечения. Для того, чтобы легче было разобраться в этой парадигме, будет рассмотрен очень интересный язык платформы .NET — F#. Помимо этого, будут затронуты основные принципы функционального программирования и их применение при разработке на языке C#. Содержание вебинара: Введение в язык F# Основы функционального программирования Применение функциональных подходов при разработке на C# Рефакторинг проекта на С# 9. Создание игры “Space Invaders” на C# с нуля Автор — Армен Маилян, C#/.NET Developer, тренер-консультант CyberBionic Systematics Какой самый лучший способ изучить что-то новое? Конечно же, превратить это в игру! Этот способ хорош и в обучении программированию. Начните изучение языка C# путем создания консольной компьютерной игры. Обещаем минимум скучной теории и максимум практики. Будет интересно! Кому это будет полезно? Новичкам. Никогда не программировали? Это не повод отказываться от нового крутого опыта. У вас есть шанс сделать свою собственную игру на C# и получить опыт практического применения данного языка программирования, а также попробовать себя в роли разработчика игр. Начинающим C# разработчикам. Вы сможете углубить и применить на практике свои знания языка C# вместе с наставником. Чему вы научитесь: Разрабатывать простую игру на языке C#. Разбивать большую задачу на отдельные этапы и последовательно их реализовывать. Применять на практике процедурный и объектно-ориентированный подход для написания программ на С#. Понимать и применять основы алгоритмирования. Применять знания основ ООП для создания полноценной программы. Использовать функционал .NET Framework. 10. Создание эволюционной игры Conway’s Game Of Life на C# + WPF Автор — Юрий Науринский, Senior Fullstack .NET Software Developer На вебинаре будет рассмотрен Game Of Life — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 году — и его реализация с помощью языка программирования C# и фреймворка WPF. Прежде чем реализовывать игру, необходимо чётко определить задачу и постановку правил самой игры. Дальше будет рассмотрено, как реализовать саму логику игры без привязки к какому-либо фреймворку. Следующий логичный шаг после того, как была реализована основная логика игры — это рассмотрение привязки логики к фреймворку WPF и придание «жизни» игре. В конце вебинара автор расскажет, какие техники тестирования можно применить для гарантии корректности получаемого результата логики игры. Данный вебинар будет интересен C# разработчикам, которые желают углубиться в разработку приложений с использованием технологии WPF, а также хотят рассмотреть с практической точки зрения достаточно интересную и известную математическую игру. Изучайте .NET разработку на ITVDN!
400+ вопросов на собеседовании по С++
Автор: Влад Сверчков
Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 5 апреля 2021 года. Оригинальная версия на украинском языке доступна по ссылке. Junior 1.1 Общие вопросы 1.2 Метапрограммирование 1.3 Препроцессор и компиляция 1.4 Язык C 1.5 Язык С++ и ООП 1.6 STL / Algorithms 1.7 Многопоточность 1.8 Networking 1.9 OS/Linux 1.10 SCM / CI / CD 1.11 Практические задания Middle 2.1 Общее 2.2 Препроцессор и компиляция 2.3 Язык С 2.4 Язык С++ 2.5 Паттерны проектирования 2.6 Метапрограммирование 2.7 OOP/OOD 2.8 STL / Algorithms 2.9 Многопоточность 2.10 Networking 2.11 SCM / CI / CD 2.12 Практические задания Senior 3.1 Общее 3.2 Препроцессор и компиляция 3.3 C/C++ 3.4 OOP/OOD 3.5 STL / Algorithms 3.6 Многопоточность 3.7 SCM / CI / CD 3.8 Практические задания Предлагаем список технических вопросов, которые, вероятно, вам поставят на собеседованиях по C++. Вопросы предоставили специалисты, принимающие участие в проведении технических интервью по этому языку. Учтите, что есть широкий спектр специализаций, поэтому выбирайте свое направление и готовьтесь. Junior Общие вопросы 1. В чем заключаются основные принципы ООП? 2. Что такое сложность алгоритма? 3. Код работает неправильно. Что делать? 4. Объясните такие структуры данных, как стек и очередь. 5. Какие книги, связанные с программированием, читали? Чему с них научились? 6. Что интересного нашли в новых стандартах С++17, С++20? 7. Что такое таблица ASCII? 8. Что такое Unicode? 9. Что такое паттерны проектирования и для чего их используют? 10. Патерны Singleton, Strategy, Template-Method, Decorator? 11. Для чего нужны модульные тесты? 12. Какая разница между модульными и интеграционными тестами? 13. Что такое TDD? Метапрограммирование 14. Что такое шаблонный класс и шаблонная функция? 15. Что такое конструкторы? Какие типы знаете? 16. Может ли конструктор быть шаблонной функцией? 17. Может ли виртуальная функция быть шаблонной? 18. Что такое инстанциация шаблона? 19. Что такое специализация шаблона? Частичная специализация шаблона? 20. Расскажите об имплементации шаблонных классов в срр-файле? Препроцессор и компиляция 21. Как проходит процесс компиляции срр-файлов в бинарный файл? 22. Что такое препроцессор? 23. Как работает препроцессор? 24. Какие знаете команды препроцессора? 25. Как работает директива include? 26. Как работает директива define? 27. Что именно линкует линкер? 28. Что такое оптимизация компилятора? 29. Что такое флажки компиляции? 30. Как защитить хедер от повторного включения? 31. Что делает директива include? 32. Как работают макросы? Язык C 33. Как static влияет на глобальные/локальные переменные? 34. Как сonst влияет на переменную? 35. Какие варианты использования extern знаете? 36. Какие варианты использования volatile знаете? 37. Какие есть битовые операции? 38. Что такое булевая алгебра? 39. Расскажите об этапах разработки библиотеки или программы. 40. Что такое алгоритмы сортировки и какие вы знаете? 41. Какие алгоритмы работы со строками знаете? 42. Какие алгоритмы на графах знаете? 43. Где может храниться переменная? 44. Какая разница между calloc и malloc? 45. Для чего используют realloc? 46. Что такое указатель? 47. Каков размер указателя и от чего он зависит? 48. Какие есть операции с указателями? 49. Что такое struct? 50. Как определить размер структур? 51. Что такое выравнивание в структурах? 52. Что такое union? 53. Какой размер union? C++/OOP 54. Что такое класс? 55. Какие есть основные типы данных в C++? 56. Что такое инкапсуляция? Как она реализуется в C++? 57. Какие есть встроенные типы в С++? 58. Что такое enum? 59. Как соотносится класс и объект? 60. Какая разница между структурой и классом? 61. Разница между private/protected/public и где они используются? 62. Какие методы класса являются стандартными для класса? 63. Что такое абстрактный класс и зачем он? 64. Сколько памяти занимает объект пустого класса class A <>; ? 65. Что случится с функцией, если к ней добавить ключевое слово static? В контексте члена класса? В контексте метода класса? 66. Какие особенности статических полей класса? 67. Какая особенность константных методов-членов класса? 68. Как изменить поле класса в константном методе класса? 69. Какие методы можно вызвать из константных объектов? 70. Что такое куча и стек? Различия, принцип работы. 71. В чем разница между указателем и ссылкой? 72. Для чего нужен указатель на функцию? Как его объявить? 73. Что будет, если забыть вызвать delete? Когда освободится эта память? 74. Что такое умный указатель? Какие умные указатели есть в стандартной библиотеке? 75. Как работает std::unique_ptr? 76. Как работает std::shared_ptr? 77. Расскажите о константности переменной, ссылки, указателя. Что такое константный указатель и указатель на константу? Размер указателя в памяти? 78. Расскажите о передаче аргументов по значению, по ссылке и по указателю. 79. Расскажите о порядке вычисления аргументов функции? 80. Что произойдет, если вернуть ссылку на временный объект? 81. Что такое перегрузки функции? Виды перегрузки. 82. Что такое явное и неявное приведение типов в С++? Расскажите о функциях явного приведения типов в C++. 83. Что такое инициализация переменной в if? 84. Что такое ленивые вычисления в С++? 85. Расскажите о циклах for и range-for. 86. Что делает ключевое слово auto? auto-определение return-типа, аргументов функции? 87. Чем отличаются delete и delete [ ] ? Что случится, если вызвать delete у объекта, созданного через new [ ] ? 88. Обработка ошибок в С++. Какие конструкции используют при обработке exception? 89. Можно ли выбрасывать exception из конструктора? Какие поля будут сконструированы, какие поля будут разрушены? 90. Что такое memory leak? 91. Можно ли выбрасывать exception из деструктора? 92. Как отловить деление на 0 в С++? 93. Как работают константные методы? 94. Что такое лямбда-функция в С++? Как получить доступ к переменным во внешней области видимости? 95. Для чего использовать namespace, anonymous namespace? 96. Как вызвать объект из nested namespace? 97. Как работают inline-функции? Может ли такая функция быть рекурсивной? 98. Что такое полиморфизм? 99. Для чего используется наследование? 100. Какие бывают типы наследования? 101. Для чего используют виртуальное наследование? 102. Как можно решить проблему ромбовидного наследования без использования виртуального наследования? 103. Что случится, если класс-наследник передать по значению в функцию, которая принимает базовый класс? 104. Что случится, если пронаследоваться от базового класса, который не имеет виртуального конструктора? 105. Что случится, если вызвать переопределенную virtual function из конструктора? Может ли конструктор быть виртуальным? 106. Может ли pure virtual function иметь имплементацию? Что случится, если вызвать pure virtual function из конструктора? 107. Какие методы генерируются для класса по умолчанию? В каком случае такие методы не будут генерироваться? Как заставить компилятор добавить/удалить эти методы? 108. Как запретить наследовать класс? 109. Какой порядок конструирования и разрушения классов в иерархии? Порядок инициализации полей класса? 110. Какие есть способы инициализации полей класса? 111. Может ли деструктор быть виртуальным? 112. Что делает ключевое слово virtual? 113. Для чего используют виртуальный деструктор? 114. Что такое глубокое копирование? 115. Что такое виртуальные функции и зачем они нужны? 116. Как защитить объект от копирования? 117. Что такое семантика перемещения? STL / Algorithms 118. Из чего состоит STL? 119. Какие алгоритмы применяли с STL? В чем преимущество использования алгоритмов перед собственноручно написанными функциями? 120. Расскажите о контейнерах стандартной библиотеки vector, list, map, unordered_map. 121. Какие знаете типы итераторов? Чем они отличаются? В каких контейнерах используются? 122. Какая разница между std::set, std::map, std::unordered_multimap? 123. Что такое идиома remove-erase? 124. Как получить наименьшее значение типа? 125. Какая разница между std::map и std::hashmap? 126. Как подсчитать количество элементов в std::list? 127. Что такое сложность алгоритма и от чего она зависит? 128. В чем разница между vector и list и в каких случаях их лучше использовать? Многопоточность 129. Что вам известно о многопоточности? 130. Что общего и различного в процессах и потоках? 131. Как синхронизировать передачи информации между потоками? 132. Какая разница между мьютексом и семафором? 133. Что такое deadlock? 134. Является ли С++ thread-safe? 135. Что такое race-condition? 136. Как избежать состояния гонки? 137. Что такое атомарная операция? 138. Как работать с std::mutex? Networking 139. Что такое сокет? 140. Какие операции можно делать с сокетом? 141. Какая информация нужна, чтобы создать сокет? 142. Какие бывают модели сетей? 143. Расскажите об уровнях модели OSI. 144. Расскажите об уровнях модели TCP/IP. 145. Что такое IP-адрес? 146. Для чего используется маска подсети? 147. Какая разница между IPv4 и IPv6? 148. Сколько памяти необходимо для хранения IPv4? 149. Для чего нужен порт? 150. Сколько максимально может быть портов? 151. Какая разница между TCP и UDP? 152. Для чего такой ненадежный UDP-протокол? OS/Linux 153. Что такое менеджер пакетов? 154. Какие бывают менеджеры пакетов? 155. Какие бывают дистрибутивы Linux? 156. Что такое PID? 157. Для чего используют файловые дескрипторы? 158. Расскажите о стандартных файловых дескрипторах процесса. 159. Что такое Pipe? 160. Что такое Named Pipe? 161. Что такое UID? 162. Расскажите о командах bash. SCM / CI / CD 163. Какие есть виды SCM? 164. Для чего используют системы контроля версий? 165. Какие есть команды git? 166. Какие этапы во время комита изменений? 167. Разница между git fetch и git pull? 168. Какие есть этапы решения merge conflict? Практические задания 169. Посчитайте количество единиц в произвольном числе. 170. Есть структура по типу «односвязный список». Напишите функцию, которая разворачивает список. То есть, первый элемент становится последним, а последний — первым. 171. Напишите реализацию функции int atoi (const char *str); преобразования строки в число. 172. Для структуры типа односвязный список напишите функцию вставки элемента. 173. Реализуйте класс vector. 174. Реализуйте бинарный поиск в массиве. 175. Реализуйте любую сортировку. 176. Реализуйте макрос для сравнения двух строк. 177. Реализуйте реверс строк. 178. Реализуйте перевода числа из строки в int. 179. Реализуйте подсчет слов в предложении. 180. Реализуйте подсчет чисел Фибоначчи. 181. Найдите такие элементы двух массивов, которые попадаются только в каждом из них. Желательно использовать STL. 182. Удалите из unordered_map элементы, которые делятся на 2 и выведите ключи этих элементов. 183. Напишите класс для логирования, который мог бы логировать к консоли или файлу. 184. Напишите функцию для определения, является ли определенный год високосным. 185. Напишите функцию для определения, является ли определенное слово палиндромом. 186. Напишите реализацию паттерна Singleton. 187. Напишите реализацию std::vector с операциями: push_back, push_front, pop_back, pop_front, size, clear. 188. Напишите рекурсивный поиск значения в дереве бинарного поиска. 189. Напишите функцию, которая проверяет, является ли дерево сбалансированным. 190. Напишить функцию для поиска уникального элемента в массиве. Middle Общее 1. Какие курсы прошли или книги прочитали за этот год? Чему научились? 2. Что нравится и не нравится в С++? Чего не хватает? 3. Что интересного нашли в новых стандартах С++17, С++20 (конкретные фичи)? 4. Расскажите о фичах, которые появились в разных версиях языка. 5. Расскажите о модели памяти, которая появилась в С++11 стандарте. 6. Что такое сериализация? Какие библиотеки знаете? 7. Какие знаете паттерны проектирования? 8. Что такое операционная система? Какие существуют типы по назначению? 9. Назвать основные составляющие и принципы работы ОС Linux в качестве примера системы общего назначения. 10. Что такое SFINAE и PIMPL? 11. Назовите порождающие, структурные и поведенческие паттерны программирования и приведите примеры их использования. Препроцессор и компиляция 12. Расскажите о системах автоматизации билд-процесса. 13. Какая разница между статической и динамической библиотеками? 14. Какая разница между исполнительным файлом и динамической библиотекой? 15. Что такое DLL hell? 16. Что такое флажки компиляции (fPIC)? 17. В чем разница между дебаженной и релизной сборкой? 18. Что нужно для использования сторонней библиотеки? 19. Что такое internal linkage? C 20. Что будет, если дважды вызвать free? 21. Как происходит вызов функции? 22. Как происходит передача параметров в функцию? 23. Как прорабатывается константа переменных? 24. Что означает ключевое слово inline? 25. Для чего используют выравнивания, можно ли его контролировать? 26. Расскажите о битовых полях. 27. Для чего нужен extern «C»? 28. Что будет, если в двух файлах сделать функцию с одинаковым именем и параметрами? На каком этапе возникнет ошибка? 29. Как экспортировать/импортировать функции из динамической библиотеки? 30. Какая разница между С-style приведением типов и C++ приведением? C++ 31. Что такое явное и неявное приведение типов в С++? Зачем делать explicit-конструктор? 32. Что такое Uniform initialization? Aggregate initialization? 33. Что такое Reference to temporary object? Как продлить время жизни временного объекта? 34. Что такое делегирующий конструктор? 35. Что такое список инициализации? 36. Какой порядок инициализации полей класса? Что случится, если конструктор инициализирует поля в другом порядке? 37. Что случится, если инициализировать поле другим полем? 38. Что такое copy elision? Сколько раз будет вызван конструктор/деструктор у объекта, которого возвращают по значению? 39. Что такое move-семантика? 40. В каких случаях не будет сгенерирован конструктор копирования? 41. Чем отличается конструктор копирования от оператора присваивания? 42. При каких условиях в конструкторе можно выбросить exception? 43. Что такое конструктор по умолчанию? Для чего нужны default и delete? 44. Чем отличается интерфейс от абстрактного класса? 45. Какие виды полиморфизма в С++? 46. Как реализовано наследование в большинстве компиляторов? 47. Множественное наследование: за и против? 48. Виртуальное наследование и порядок конструирования? 49. Зачем использовать override? 50. Какие есть правила вывода типа при использовании auto? В каких случаях auto может привести к нежелательному копированию объекта? 51. Расскажите обо всех возможных способах использования ключевого слова static в С++. Что такое static initialization order fiasco? 52. Что делает вызов throw; в блоке catch? 53. Чем отличается constexpr от const? 54. Что такое const correctness? 55. В каком случае можно использовать const_cast? 56. Что такое ключевое слово mutable и когда его нужно использовать? 57. Что такое ключевое слово friend и когда его нужно использовать? 58. Расскажите о лямбда-выражениях в С++ и доступ к переменным во внешней области видимости, захват this в лямбду и время жизни лямбды и захваченных переменных? 59. Что такое функтор? Напишите пример. 60. Что такое специализация шаблона? 61. Что такое dynamic_cast и run-time type identification? 62. Что такое exception? Как бросить и поймать? 63. Что будет, если бросить exception из конструктора? А из деструктора? 64. Что будет, если не поймать exception? 65. Что произойдет, если exception выйдет за пределы блока noexcept функции? 66. Для чего можно использовать приватное наследование? 67. Что такое контракт функции? 68. Что такое vptr и vtable? 69. Где содержится vptr? 70. Где содержится vtable? 71. Какая разница между overload and override? 72. Как компилятор различает члены класса и обычные переменные в функциях? 73. Зачем используют exceptions? 74. Что такое блоки try-throw-catch? 75. Расскажите о логике catch-блоков. 76. Что такое move constructor? 77. В чем разница между константным методом и неконстантным? 78. Что такое В-нотация и как определить сложность любого алгоритма? 79. Что такое таблица виртуальных методов? 80. Какие функции класса автоматически генерирует компилятор, если их не определить? 81. Что такое выравнивание данных? 82. Что такое exception? 83. Какие есть стандартные контейнеры и на основе каких структур они построены? 84. Что такое Undefined behavior? Приведите примеры. 85. Как определить, что в программе есть memory leak? 86. Для чего нужен std::make_shared? Чем он лучше создания std::shared_ptr через конструктор? 87. Что будет, если выделить один объем памяти, а записать больше? 88. Что такое переполнение stack? Паттерны проектирования 89. Зачем нужны паттерны? Какие типы паттернов различают? 90. Недостатки паттерна Singleton? Когда он уместен? 91. Преимущества и недостатки PIMPL? 92. В чем разница между паттерн-фабрикой и фабричным методом? Когда использовать какой из них? 93. Что такое паттерн Observer? 94. Як контролировать состояние программы? Машину состояний? Паттерн состояние? 95. Что такое паттерн Visitor? Метапрограммирование 96. Какие есть правила вывода типа в шаблоне? 97. Чем отличается using от typedef? 98. Сколько памяти занимает произвольная структура? Что такое выравнивание объекта? 99. Почему пустая структура занимает 1 байт? Какая минимальная единица адресации в С++? OOP/OOD 100. Что такое SOLID? Что означает каждый из этих принципов? 101. Расскажите о паттернах проектирования. 102. Что такое Dependency Injection? Приведите пример. 103. Какие преимущества и недостатки функционального подхода? 104. Что такое принцип RAII? 105. Что такое принцип DRY? 106. Что такое принцип KISS? 107. Какие преимущества композиции перед наследованием? STL / Algorithms 108. Какие алгоритмы с STL использовали? Каких не хватает? 109. Какими особенностями должен обладать класс, чтобы он был итератором? 110. Какие бывают итераторы? 111. Расскажите об инвалидации итераторов. 112. Как оптимизировать удаление элемента со средины вектора? 113. Как реализован vector? 114. Как реализован list? 115. Как расширить STL-контейнеры? 116. Какие есть алгоритмы в STL? 117. В чем разница между vector, deque, list, set e STL? 118. Когда надо использовать map? Когда — unordered_map? Какая сложность поиска и вставки в этих контейнерах? 119. Как проверить, есть ли в контейнере элементы? Почему вызов container.size() является плохой практикой? 120. Что такое exception safety guarantee? Какую exception safety guarantee имеют STL-контейнеры? 121. Расскажите о типах умных указателей и о подсчете ссылок в них. Многопоточность 122. Является ли С++ thread-safe? 123. В чем разница между многопоточностью и асинхронностью? 124. Что такое многопоточность? Какую функциональность предоставляет С++ для разработки многопоточных приложений? Какие основные проблемы многопоточных приложений? 125. Как передать информацию между несколькими процессами? 126. Как синхронизировать между собой несколько процессов? 127. Какие есть особенности работы с shared memory? 128. Как работает spinlock? 129. Какие вы знаете особенности использования recursive mutex? 130. Расскажите о read-write mutex. 131. Что такое race-condition? Взаимная блокировка? Что такое критическая секция? 132. Как избежать состояния гонки? 133. Чем отличается мьютекс от семафора? 134. Какие примитивы синхронизации реализованы в C++? Преимущества lock_guard? 135. Что случится, если exception выйдет за пределы потока? Какие инструменты есть для безопасной асинхронности в С++? 136. Чем отличается std::launch::async от std::launch::deferred? 137. Что такое атомарная операция? std::atomic? 138. Как работать с std::conditional_variable? 139. Как создать поток с помощью std::thread? 140. На сколько потоков лучше разбить задачу? От чего это зависит? 141. Как работать с std::async? 142. Thread-safe гарантии контейнеров в С++? В чем недостаток интерфейса front() + pop_front()? Networking 143. Что такое TCP handshake? 144. Какая разница между TCP и UDP? 145. Расскажите о протоколах верхнего уровня. 146. Какая разница между HTTP и HTTPS? 147. Расскажите об SSL/TLS handshake. SCM / CI / CD 148. Расскажите о процессах CI. 149. Как отредактировать комит? 150. Расскажите об интерактивном rebase. 151. Какие могут быть способы дебаггинга кода? 152. Для чего нужны Unit test? Чем отличается от Functional Test? 153. Как тестировать код? Какой используете фреймворк? 154. Какие библиотеки знаете для написания тестов? 155. Что такое mock? 156. Сколько тестов нужно написать на одну функцию? 157. Что такое побочный эффект, идемпотентность и чистые функции? 158. Что такое контейнеризация и в чем преимущества и недостатки? Что такое Docker или иной инструмент контейнеризации? 159. Что такое CI/CD и какие преимущества приносит для разработчика? 160. Какие принципы итеративных методологий? 161. Какие преимущества и недостатки code-convention? Практические задания 162. Напишите максимально корректную реализацию класса string с конструктором копирования и оператором присваивания. 163. Напишите реализацию очереди. 164. Реализуйте функцию, которая за один проход найдет уникальный элемент в контейнере. 165. Напишите thread-safe пул потоков. 166. Напишите игру жизни в ООП стиле. 167. Напишите класс, который достает из базы список товаров по фильтру и показывает на консоли. Напишите тесты для него. 168. Любая задача на написание кода, чтобы проверить умение проектировать интерфейсы и придерживаться принципов SOLID, DRY, KISS. 169. Напишите свою реализацию std::atomic. 170. Напишите программу для анализа графов: нахождение циклов, deadlock-состояний, циклов, недоступных состояний. 171. Напишите программу, которая бы проверяла, что в системе запущен только один ее экземпляр. Решение должно быть cross-platform. 172. Проанализируйте C++ код с точки зрения качества: выявить потенциальные memory leak, нерациональное использование STL-контейнеров, алгоритмов, неоптимальные конструкции и тому подобное. 173. Напишите код для решения судоку. 174. Напишите код, который найдет зацикливание в односвязном списке. Senior Общее 1. Как вы понимаете SOLID? 2. Как разработать систему плагинов на С++? 3. Что такое RPC? Какие библиотеки знаете? 4. На что обращать внимание при проведении code review? 5. Какие есть проблемы при написании кроссплатформенного кода? На что обращать внимание? 6. Что делать, если код работает медленно? 7. Какие есть способы и методологии измерения быстродействия кода? Как можно устранить/уменьшить влияние замеров на быстродействие? 8. Что такое SFINAE? Для чего используется? 9. Что такое метапрограммирование? С помощью чего реализуется на С++? 10. Как использовать variadic templates? 11. Как тестировать закрытые методы? 12. Как считать покрытие тестами? Нужно ли это делать? 13. Что такое cache miss и как это выявить? 14. Что такое SIMD-инструкции? Какие необходимые условия и способы их использования? 15. Что такое покрытие кода и как обеспечивается? 16. Опишите принципы lock-free структур данных и свой опыт работы с ними. Препроцессор и компиляция 17. Расскажите о построении билд-системы. 18. Как работать с билд-системами: Make, CMake. 19. Как интегрировать third-party в проект? 20. Что такое барьеры памяти? 21. Расскажите о работе с сырыми указателями и о ручном управлении памятью. 22. Что такое статический анализатор кода? Какие знаете? 23. Что такое динамический анализатор кода? Какие знаете? 24. Проект медленно собирается. Как можно ускорить? C/C++ 25. Расскажите об использовании realloc в контейнерах. 26. Как работают шаблоны? 27. Расскажите о специализации шаблонов. 28. Как работает RTTI? 29. Можно ли использовать exception в конструкторе/деструкторе? 30. Что такое rvalue и lvalue? 31. В чем особенности контейнеров std::set, std::map, std::unordered_map, std::hash? 32. Что такое placement new? Для чего используют? Как сделать placement delete? 33. Как размещается в памяти класс со множественным наследованием и виртуальными функциями? 34. Как работают точки остановки? 35. Что такое уязвимости? Каков механизм их работы? 36. Как написать собственный std::shared_ptr? 37. Что такое curiously recurring template pattern? 38. Опишите назначение и принцип работы std::shared_ptr, std::unique_ptr и std::weak_ptr. 39. Какое назначение и отличия использования std::variant и std::any? 40. Какие улучшения получил std::search в С++17 ? 41. Что такое copy elision и когда он становится возможным? Какие особенности для разных стандартов? 42. Что такое Return Value Optimization? OOP/OOD 43. Объясните принципы SOLID. 44. Объясните принципы KISS. 45. Объясните принципы YAGNI. 46. Какие есть подходы к оптимизации кода? 47. На что стоит обращать внимание при code review? 48. Какие есть паттерны проектирования? Почему не советуют использовать Singleton? 49. Что такое статический полиморфизм? STL / Algorithms 50. Когда std::vector может использовать std::move? 51. Расскажите о своем любимом алгоритме поиска. 52. Что такое lock-free и wait-free алгоритмы? В чем их отличия и способы реализации? 53. Опишите назначение execution policy для параллельных алгоритмов. Многопоточность 54. Расскажите о построении API, рассчитанных на многопоточное использование. 55. В чем разница между kernel-level и user-level потоками? 56. Что такое coroutine? 57. Что делает спецификатор thread_local? 58. Как реализовать синхронизацию в задаче producer-consumer? 59. Як синхронизироваться между различными процессами? SCM / CI / CD 60. Расскажите о настройке процесса менеджмента ветвей репозитория. 61. Расскажите о стратегии разветвления (branching). Практические задания 62. Напишите базовую реализацию std::shared_ptr. 63. Реализуйте алгоритм сортировки. 64. Реализуйте алгоритм хеширования. 65. Реализуйте shared_ptr с расширением для weak_ptr. 66. Реализуйте простейший producer-consumer, используя условные переменные. 67. Опишите как можно подробнее, что происходит в системе, когда приложение делает сетевой запрос. 68. Детально описать дизайн программного компонента, например, системы голосования; учесть при этом высокую нагрузку и сделать ее расширяемой и отказоустойчивой. Выражаем благодарность за участие в статье Александру Жакуну, Ярославу Пушко, Назару Семенишину, Сергею Подоброму, Владимиру Кочуну, Владимиру Новикову, Сергею Кривоносу, Марку Цирульнику, Кириллу Пшеничному, Виктору Шуму, Сергею Братусю.
Тотальная Прозрачность: Рейтинги и Индексы в Отечественном Образовании и Науке (Total Transparency: Ranks and Indexes in Russian Universities)
![]()
Download Free PDF View PDF
![]()
Download Free PDF View PDF
![]()
Download Free PDF View PDF
![]()
Download Free PDF View PDF
Статья посвящена анализу системы подготовки туристов в ВУЗах Кемеровской области
![]()
Download Free PDF View PDF
![]()
Download Free PDF View PDF
В статье рассмотрены учебные планы и программы высших учебных заведений, проведено сравнение количества часов, которые выделяются на изучение дисциплин профессиональной подготовки студентов, будущих учителей информатики. Освещено значение и цели медиаобразования при подготовке специалистов. Рассмотрены особенности формирования медиаграмотности студентов педагогических специальностей специализации «Информатика» в процессе изучения компьютерных дисциплин. Отмечена важность развития медиаграмотности для повышения компетентности учителя в обществе и рекомендовано ввести медиаобразование в высших учебных заведениях как обязательный компонент. В результате развивается умение оценить информационную безопасность, грамотно использовать источники информации, оценивать достоверность информации, соотношение информации и знания, умение правильно организовать информационный процесс.The article analyzes the curricula and programs of higher education institutions, compared the number of hours allocated for the study disciplines vocational training future teachers of informatics. Lit importance and objectives of media education in training of specialists. Reviewed the features of the formation of media literacy pedagogical students of specialization «Informatics» in the process of studying computer disciplines. Highlighted the importance of media literacy to enhance competence of the teacher in society and recommended enter the program of media education in higher education as a compulsory component. As a result, growing the ability to competently use information sources, evaluation of the reliability of information, the correlation of information and knowledge, the ability to organize information process, to assess information security.
![]()
Download Free PDF View PDF
Тест по информатике на тему «Интернет-безопасность» (10-11 класс)


9.Вам пришло письмо: «Добрый день! Мы предлагаем вам учиться в Европе! Обучение, проживание, перелет — за наш счет. Нужно только оплатить пересылку документов — 1500 рублей. Не упустите свой шанс!». В письме есть реквизиты. Как вы поступите?
А) я не против бесплатно слетать за границу
Б) уточню, нет ли у них программы обучения в Китае
10.Вы хотите опубликовать в Интернете свою фотографию и фотографии своих одноклассников. Можно ли это сделать?
Б) Можно, с согласия одноклассников
В) Можно, согласие одноклассников необязательно
11. Выберите верное утверждение. Авторские посты, размещаемые пользователями в социальных сетях и блогах:
А) Показывают уникальность человека и всегда позитивно влияют на его репутацию
Б) Никогда не содержат персональной информации, поэтому их публикация не несет серьезных последствий
В) Оцениваются читателями по-разному, поэтому невозможно предсказать, как публикация поста отразится на репутации его автора
Г) Всегда содержат излишнюю персональную информацию о человеке, что может навредить не только его репутации, но и личной безопасности
Д) Не содержат ничего хорошего, поскольку свидетельствуют исключительно о желании похвастаться и продемонстрировать то, чего на самом деле нет
12. Как называется провоцирование человека на агрессию с помощью нападок и неуважительных высказываний?
А) мерчендайзинг Б) троллинг В) джампинг
13.Что в Интернете запрещено законом?
А) Размещать информацию о себе
Б) Размещать информацию о других без их согласия
В) Копировать файлы для личного использования
14. Что не является персональными данными?
А) Фамилия, имя, отчество В) Паспортные данные
Б) История болезни Г) Дата и место рождения
15. При регистрации на сайте у вас запросили номер телефона. В каком случае это наиболее безопасно?
А) Вы регистрируетесь на крупном и хорошо известном онлайн-ресурсе, например, на портале mail.ru
Б) Вы первый раз совершаете покупку в Интернет-магазине, на сайте которого размещены положительные отзывы других пользователей
В) Вы регистрируетесь на игровом портале, который порекомендовали вам ваши друзья и знакомые
Г) Вы хотите скачать новый фильм на файлообменнике, и от вас требуется регистрация во всплывающем окне
Д) Во всех обозначенных выше случаях
Тест «Безопасность в сети Интернет» (16-17 лет)
1.В социальной сети с Вами познакомится ученик из вашей школы, которого Вы ни разу не видели, и он пригласил Вас встретится с ним в парке. Что делать?
А) Пойти на встречу
Б) Не ходить на встречу
2.Когда необходима покупка антивирусного программного обеспечения?
А) В случае если компьютер заражён, а работа остановилась
Б) Сразу после покупки нового компьютера, перед подключением его к Интернету
В) Антивирусная программа не требуется
Г) Антивирусная программа требуется навсегда
3.Какой пароль стоит ставить на Интернет-ресурсе?
А) Одинаковый с логином
Б) Основанный на словарном запасе
В) Длиной менее 8-ми символов
Г) В котором используются не только буквы, но и цифры или специальные символы
4. В качестве пароля зачастую используют слова, написанные необычным способом. Какое словосочетание скрывается за словом « Tlbysqehjr «
А) Единыйурок Б) Парольсайта В) Первыйдень Г) Уроквшколе
5.ВКонтакте просит ввести ваш мобильный номер для подтверждения аккаунта. Как вы поступите?
А) откажусь. Вдруг мне будут присылать смс-спам
Б) откажусь: мне удобнее вводить логин, чем номер телефона
В) введу свой номер, чтобы в случае кражи аккаунта его можно было восстановить с помощью мобильного номера
6.При установке приложения обработки фотографий на смартфон приложении просит доступ к СМС-сообщениям и телефонной книге. Согласиться или нет?
А) Согласиться, поскольку это безопасно
Б) Не согласиться, поскольку это небезопасно
7. Игра для смартфона при установке требует доступ к определенному набору персональных данных и функций смартфона. Какое из этих требований можно считать чрезмерным?
А) Доступ к фотокамере и медиафайлам, хранящимся на устройстве
Б) Информация о местонахождении и перемещении
В) Все перечисленные требования разумны
8. Вам очень понравился знакомый из Интернета. Он предлагает Вам с ним встретиться, чтобы пообщаться по-настоящему, не в Интернете. Ваши действия…
А) Вы постараетесь обязательно с ним встретиться
Б) Вы не согласитесь на встречу, объяснив ему, что на это у Вас нет времени
В) Он пообещает поделиться интересной конфиденциальной информацией, и Вы пойдете на встречу
Г) Вы никогда не согласитесь на встречу, даже если очень хочется увидеть интересного человека
9. Что нужно сделать при получении подозрительного сообщения электронной почты?
А) Удалить его, не открывая
Б) Открыть его и выяснить, содержится ли в нем какая-нибудь важная информация
В) Открыть вложение, если таковое имеется в сообщении
Г) Открыть и потом удалить
10. Что нужно делать в интернете для сохранения анонимности?
А) выкладывать свой номер телефона в общий доступ
Б) размещать на своей странице в социальной сети домашний адрес
В) пользоваться Интернетом, но не делиться личной информацией, по которой вас легко найти
11. Каким из правил не стоит руководствоваться при публикации информации в Интернете?
А) Писать посты, руководствуясь первым эмоциональным порывом, с целью донести до читателя бурю своих переживаний
Б) Публиковать сведения и комментарии о важных фактах и событиях только после ее проверки в нескольких первоисточниках
В) Выкладывать в сеть данные о другом человеке только в том случае, если он дал на это свое предварительное согласие
Г) Оценивать публикуемую информацию с точки зрения друзей, взрослых людей и незнакомых пользователей
Д) Все вышеперечисленные правила верны
12. Какое из утверждений является полностью верным?
А) Каждому человеку необходимо защищать свою персональную информацию и сохранять как можно больше сведений о себе втайне от других людей
Б) Каждый человек может самостоятельно решать, какая информация и при каких условиях может быть сохранена в секрете или передана другим людям
В) Бесполезно контролировать свои персональные данные в Интернете, поэтому нет смысла об этом беспокоиться
Г) Каждому человеку следует предоставлять как можно больше сведений о себе, поскольку это позволяет пользоваться всеми возможностями Интернета
Д) Ни один из перечисленных вариантов
13. Ниже приведены разные категории персональных данных. Какие из них позволяют однозначно идентифицировать пользователя в нашей стране?
А) Имя, фамилия, год рождения
Б) Фамилия, год рождения, номер школы
В) Имя, номер паспорта РФ, город проживания
Г) Имя, фамилия, город проживания
Д) Ни один из предложенных вариантов
14. В гостях Вам необходимо использовать чужой компьютер для переписки в социальной сети. Как в этом случае необходимо пользоваться компьютером?
А) Очистить журнал посещений после выхода из браузера
Б) Не сохранять пароли во время работы в Сети
В) Использовать режим инкогнито во время работы в браузере
Г) Сменить пользователя на компьютере
Д) Очистить папку временных файлов после работы за компьютером
15. При просмотре веб-сайтов и общении через Интернет:
А) вы оставляете электронные следу («цифровые отпечатки»), по которым можно определить, какие страницы Вы просматривали и какой IP-адрес компьютера Вы использовали
Б) вы оставляете электронные следы, которые можно удалить самому
В) никто не может проследить, какие веб-страницы Вы просматривали
Г) вы оставляете электронные следу, которые хранятся только на Вашем компьютере
Тест «Безопасность в сети Интернет» (16-17 лет)
1.Вам пришло письмо: «Чтобы выиграть миллион в нашей лотерее, вам нужно зарегистрироваться на этом сайте (ссылка на сайт). Регистрация закрывается завтра. Не пропустите!». Что вы сделаете?
А) зайду на сайт и посмотрю, что за лотерея
Б) напишу в ответ письмо, где попрошу прислать подробности о лотерее
В) удалю письмо. Я ничего не знаю об этом сайте и авторе письма. Скорее всего, это спам
2.Пока Вы были на отдыхе ваш аккаунт в социальной сети взломали, разместили на стене неприличные изображения и стали рассылать оскорбления друзьям в личной переписке. Что следует сделать для того, чтобы восстановить свою репутацию?
А) Удалить все неприятные сообщения со своей страницы
Б) Разместить на странице пост, разъясняющий причины произошедшего, извиниться перед читателями
В) Сменить пароли ко всем аккаунтам на других онлайн- ресурсах
Г) Постараться лично поговорить с самыми близкими друзьями и объяснить им ситуацию.
Д) Все вышеперечисленные варианты
3. При регистрации на сайте у вас запросили номер телефона. В каком случае это наиболее безопасно?
А) Вы регистрируетесь на крупном и хорошо известном онлайн-ресурсе, например, на портале mail.ru
Б) Вы первый раз совершаете покупку в Интернет-магазине, на сайте которого размещены положительные отзывы других пользователей
В) Вы регистрируетесь на игровом портале, который порекомендовали вам ваши друзья и знакомые
Г) Вы хотите скачать новый фильм на файлообменнике, и от вас требуется регистрация во всплывающем окне
Д) Во всех обозначенных выше случаях
4. Ваш новый знакомый в социальной сети попросил срочно прислать номер вашего телефона и домашний адрес. Что Вы будете делать?
А) Сообщить человеку нужные сведения
Б) Не сообщать в Интернете, а сообщить при встрече
В) Не буду сообщать
5. Ваш друг в социальной сети написал следующее сообщение: «Мой телефон вырубился, а мне срочно надо получить СМС. Можно я на твой отправлю. А ты мне сюда в вк передашь?» Что Вы будете делать?
А) Соглашусь получить смс
Б) Уточню, что случилось и нужна ли помощь
В) Откажусь получать смс
6. Что нужно делать в интернете для сохранения анонимности?
А) выкладывать свой номер телефона в общий доступ
Б) размещать на своей странице в социальной сети домашний адрес
В) пользоваться Интернетом, но не делиться личной информацией, по которой вас легко найти
7. При авторизации в социальных сетях предлагают ввести логин и пароль. Пароль отображается в виде точек или звёздочек. Зачем?
Б) Для обеспечения безопасности
В) Чтобы запутать
Г) Точки или звёздочки – это и есть пароль
8.Что нужно сделать при получении подозрительного сообщения электронной почты?
А) Удалить его, не открывая
Б) Открыть его и выяснить, содержится ли в нем какая-нибудь важная информация
В) Открыть вложение, если таковое имеется в сообщении
Г) Открыть и потом удалить
9. На вашу электронную почту пришло сообщение, в котором сообщалось о попытке взлома вашего аккаунта в социальной сети с чужого устройства. Вам настоятельно рекомендовалось пройти по ссылке, указанной в сообщении, для смены пароля. Как правильно поступить в такой ситуации?
А) Пройти по ссылке, указанной в письме, и сменить пароль
Б) Проигнорировать письмо и добавить его в спам
В) Написать в ответ гневное письмо с критикой работы социальной сети
Г) Самостоятельно зайти в свой аккаунт социальной сети и сменить пароль
Д) Ответить на это письмо и уточнить информацию
10.Всегда ли можно быть уверенным, что электронное письмо получено от указанного отправителя?
А) Нет, потому что данные отправителя легко подделать
В) Да, если отправитель вам знаком
11. Какой пароль является самым сложным?
А ) Natalia1993 Б ) Mar!nA_1993 В ) veronica93
12. В гостях Вам необходимо использовать чужой компьютер для переписки в социальной сети. Как в этом случае необходимо пользоваться компьютером?
А) Очистить журнал посещений после выхода из браузера
Б) Не сохранять пароли во время работы в Сети
В) Использовать режим инкогнито во время работы в браузере
Г) Сменить пользователя на компьютере
Д) Очистить папку временных файлов после работы за компьютером
13. Какое из утверждений является полностью верным?
А) Каждому человеку необходимо защищать свою персональную информацию и сохранять как можно больше сведений о себе втайне от других людей
Б) Каждый человек может самостоятельно решать, какая информация и при каких условиях может быть сохранена в секрете или передана другим людям
В) Бесполезно контролировать свои персональные данные в Интернете, поэтому нет смысла об этом беспокоиться
Г) Каждому человеку следует предоставлять как можно больше сведений о себе, поскольку это позволяет пользоваться всеми возможностями Интернета
Д) Ни один из перечисленных вариантов
14. Ниже приведены разные категории персональных данных. Какие из них позволяют однозначно идентифицировать пользователя в нашей стране?
А) Имя, фамилия, год рождения
Б) Фамилия, год рождения, номер школы
В) Имя, номер паспорта РФ, город проживания
Г) Имя, фамилия, город проживания
Д) Ни один из предложенных вариантов
15. Что необходимо указать при цитировании статьи, размещенной на чьем-то сайте?
А) адрес сайта и имя его владельца
Б) имя автора и название статьи
В) электронный адрес сайта, с которого взята статья
Д) название статьи и название сайта
Е) имя автора, название статьи, адрес сайта, с которого взята статья
Тест «Безопасность в сети Интернет» (16-17 лет)
1.При загрузке компьютера появляется сообщение: «Ваша операционная система заблокирована. Отправьте смс на номер ХХХХ и получите код для снятия блокировки». Как вы поступите?
А) перезагружу компьютер — возможно, само пройдет
Б) скачаю на флешку специальную антивирусную программу, а затем проверю и вылечу с её помощью компьютер
В) отправлю смс на указанный номер, получу код и сниму блокировку
2.ВКонтакте просит ввести ваш мобильный номер для подтверждения аккаунта. Как вы поступите?
А) откажусь. Вдруг мне будут присылать смс-спам
Б) откажусь: мне удобнее вводить логин, чем номер телефона
В) введу свой номер, чтобы в случае кражи аккаунта его можно было восстановить с помощью мобильного номера
3.Для просмотра одного из сайтов в сети необходимо отправить SMS на указанный номер в Интернете. Как Вы поступите?
А) Отправить SMS на указанный номер в Интернете
Б) Проверить этот номер в Интернете
В) Не буду просматривать данный сайт
4. Какой из предложенных паролей лучше выбрать?
А) IRJkf10 Б) Ivan!999333 В) Дата рождения родственника
5. Какой пароль стоит ставить на Интернет-ресурсе?
А) Одинаковый с логином
Б) Основанный на словарном запасе
В) Длиной менее 8-ми символов
Г) В котором используются не только буквы, но и цифры или специальные символы
6. В социальной сети с Вами познакомится ученик из вашей школы, которого Вы ни разу не видели, и он пригласил Вас встретится с ним в парке. Что делать?
А) Пойти на встречу
Б) Не ходить на встречу
7. Что в Интернете запрещено законом?
А) Размещать информацию о себе
Б) Размещать информацию о других без их согласия
В) Копировать файлы для личного использования
8. Каким из правил не стоит руководствоваться при публикации информации в Интернете?
А) Писать посты, руководствуясь первым эмоциональным порывом, с целью донести до читателя бурю своих переживаний
Б) Публиковать сведения и комментарии о важных фактах и событиях только после ее проверки в нескольких первоисточниках
В) Выкладывать в сеть данные о другом человеке только в том случае, если он дал на это свое предварительное согласие
Г) Оценивать публикуемую информацию с точки зрения друзей, взрослых людей и незнакомых пользователей
Д) Все вышеперечисленные правила верны
9. Что такое сетевой этикет?
А) Правила поведения за компьютерным столом
Б) Правила дорожного движения
В) Правила поведения в Интернете
Г) Правила пользования информацией
Д) Закон, касающийся Интернет
10. Выберите верное утверждение. Авторские посты, размещаемые пользователями в социальных сетях и блогах:
А) Показывают уникальность человека и всегда позитивно влияют на его репутацию
Б) Никогда не содержат персональной информации, поэтому их публикация не несет серьезных последствий
В) Оцениваются читателями по-разному, поэтому невозможно предсказать, как публикация поста отразится на репутации его автора
Г) Всегда содержат излишнюю персональную информацию о человеке, что может навредить не только его репутации, но и личной безопасности
Д) Не содержат ничего хорошего, поскольку свидетельствуют исключительно о желании похвастаться и продемонстрировать то, чего на самом деле нет
11.Ваш друг в социальной сети написал следующее сообщение: «у мeня гoре, помoги, рeквизиты нa стeне» Что Вы будете делать?
А) Отправлю деньги другу
Б) Уточню, что случилось и нужна ли помощь
В) Не буду отправлять деньги другу
12. Ниже приведены разные категории персональных данных. Какие из них позволяют однозначно идентифицировать пользователя в нашей стране?
А) Имя, фамилия, год рождения
Б) Фамилия, год рождения, номер школы
В) Имя, номер паспорта РФ, город проживания
Г) Имя, фамилия, город проживания
Д) Ни один из предложенных вариантов
13. В гостях Вам необходимо использовать чужой компьютер для переписки в социальной сети. Как в этом случае необходимо пользоваться компьютером?
А) Очистить журнал посещений после выхода из браузера
Б) Не сохранять пароли во время работы в Сети
В) Использовать режим инкогнито во время работы в браузере
Г) Сменить пользователя на компьютере
Д) Очистить папку временных файлов после работы за компьютером
14. Какое из утверждений является полностью верным?
А) Каждому человеку необходимо защищать свою персональную информацию и сохранять как можно больше сведений о себе втайне от других людей
Б) Каждый человек может самостоятельно решать, какая информация и при каких условиях может быть сохранена в секрете или передана другим людям
В) Бесполезно контролировать свои персональные данные в Интернете, поэтому нет смысла об этом беспокоиться
Г) Каждому человеку следует предоставлять как можно больше сведений о себе, поскольку это позволяет пользоваться всеми возможностями Интернета
Д) Ни один из перечисленных вариантов
15. Какую цель преследует такая угроза как фишинг?
А) Перенаправлять новые запросы пользователя в браузере на хакерский сайт
Б) Организовать отправку от имени заражённого пользователя приглашение по электронной почте
В) Обманным путём выудить у пользователя данные, позволяющие получить доступ к его учётным записям
Г) Распространение вредоносных вирусов