Category: Трудоустройство

07
Июл
2021

🕵 Какие сертификаты нужны специалисту по кибербезопасности?

Спрос на специалистов в сфере кибербезопасности постоянно растет – чем лучше вы продемонстрируете свои навыки в профессии, тем больше денег потенциально сможете заработать. Самое время подумать о сертификации.

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

Сертификаты в среде ИТ-безопасности в наши дни стали гораздо более гибкими и привлекательными. Слушатели могут завершить образование в удобном темпе, изучая определенные информационные модули в Интернете. Существует множество отличных вариантов обучения: даже если вы должны работать полный день, получение образования и сдача экзамена не станут проблемой.

Ежегодно бизнес в США тратит миллиарды долларов на защиту данных и активов от вредоносных программ, при этом по оценке Forbes к 2021 году во всем мире потрачено около 180 миллиардов долларов.

В связи с ростом спроса на квалифицированных специалистов по безопасности, сертификация является логическим способом подтвердить ваш опыт и компетенции, а также привлечь внимание к вашему резюме. Мы рассмотрим 6 сертификатов по кибербезопасности, которые помогут вам найти работу.

CompTIA Security+


Первый сертификат, который должен получить начинающий специалист – CompTIA Security+. Он подтверждает необходимые для любой роли в области кибербезопасности фундаментальные навыки и служит ступенькой к позициям среднего уровня. Security+ включает передовой опыт практического устранения неполадок и навыки решения проблем безопасности:

  • Оценку состояния безопасности корпоративной среды, а также выбор и внедрение соответствующие решений.
  • Навыки мониторинга и обеспечения безопасности гибридных сред, включая облачные, мобильные и IoT.
  • Умение действовать, зная о применимых законах и политиках, в том числе о принципах корпоративного управления, рисках и нормативных требованиях.
  • Выявление и анализ событий и инцидентов, связанных с безопасностью, а также реагирование на них.

Кому может потребоваться сертификат?

  • Администраторам безопасности.
  • Системным администраторам.
  • Менеджерам службы поддержки (аналитикам).
  • Сетевым/облачным инженерам.
  • Инженерам по безопасности (аналитикам).
  • Инженерам DevOps и разработчикам программного обеспечения.
  • ИТ-аудиторам.
  • Менеджерам ИТ-проектов.

Какие навыки необходимы для получения сертификата?

  • Атаки, угрозы и уязвимости. Внимание стоит сосредоточить на пользовательских устройствах, устройствах Интернета вещей и других встраиваемых решениях, а также на атаках DDoS и методах социальной инженерии.
  • Архитектура и дизайн. Изучите корпоративные среды и облачные решения, которые все чаще используются по мере перехода организаций к гибридной инфраструктуре.
  • Выполнение. Сосредоточьтесь на администрировании учетных записей, управлении доступом, PKI, базовой криптографии, беспроводной сети и сквозной безопасности.
  • Операции и реагирование на инциденты. Придется изучить процедуры оценки безопасности организации и реагирования на инциденты, такие как базовое обнаружение угроз, методы снижения рисков и базовую цифровую криминалистику.
  • Управление, риски и соответствие. Изучите управление организационными рисками и соблюдением нормативных требований, вроде PCI-DSS, SOX, HIPAA, GDPR, FISMA, NIST и CCPA.

Рекомендуемый опыт: CompTIA Network+ и два года опыта в ИТ-администрировании с фокусом на безопасности.

Цена сертификата: от $370.

Другие сертификаты и как их получить

Хотя многие эксперты по кибербезопасности имеют диплом о высшем образовании в области компьютерных наук, работодатели часто предпочитают кандидатов с подтвержденными знаниями и опытом. Выбирать можно из множества различных сертификатов: от общих до выдаваемых производителями сетевого оборудования и разработчиками решений в сфере информационной безопасности. Доступны любые уровни (от начальных до продвинутых), но если вы решили потратить время и деньги на сертификацию, убедитесь, что она обеспечит вам преимущества на рынке труда.

Сертифицированный этичный хакер (СEH)


Этичный хакинг, также известный как взлом в белой шляпе – это практика законного взлома организаций с целью обнаружения уязвимостей до того, как это сделают злоумышленники.

Сертификат CEH (Certified Ethical Hacker) можно получить в EC-Council. Для этого потребуется продемонстрировать знания о тестировании на проникновение, сканировании уязвимостей, а также о векторах угроз и способах защиты от них. Сертификация CEH учит думать как хакер и проявлять большую активность в вопросах кибербезопасности.

Она подходит для следующих должностей:

  • Тестер на проникновение (пентестер).
  • Аналитик по киберинцидентам.
  • Аналитик по анализу угроз.
  • Архитектор облачной безопасности.
  • Инженер по кибербезопасности.

Требования: вы можете сдать экзамен CEH, если имеете двухлетний опыт работы в области информационной безопасности, или если вы прошли официальное повышение квалификации EC-Council.

Цена: $950 до $1199.

Сертифицированный менеджер по информационной безопасности (СISM)

Подтвердить навыки руководства в сфере кибербезопасности можно с помощью сертификации ISACA CISM (Certified Information Security Manager), которая охватывает такие разделы, как формирование политики, разработку программ, а также оценку инцидентов и рисков.

Получение сертификата CISM может быть хорошим выбором, если вы хотите перейти от технической к управленческой стороне профессии.

Он подходит для следующих должностей:

  • ИТ-менеджер.
  • Специалист по безопасности информационных систем.
  • Консультант по информационным рискам.
  • Директор по информационной безопасности.
  • Менеджер по управлению данными.

Требования: чтобы сдать экзамен CISM, вы должны иметь более 5 лет подтвержденного стажа в области управления информационной безопасностью. Один или два недостающих года вам могут «простить» при наличии действующего сертификата или ученой степени в связанной с информационной безопасностью областью.

Цена: подписчики платят $575, а гости – $760.

Сертифицированный специалист по безопасности информационных систем (CISSP)


Выданный организацией по кибербезопасности (ISC)2 сертификат CISSP (Certified Information System Security Professional) является одним из самых востребованных в отрасли. Получение CISSP показывает, что у вас есть большой опыт в ИТ-безопасности.

Эта расширенная сертификация предназначена для профессионалов в области безопасности, которые хотят продвинуться по карьерной лестнице.

Она подходит для следующих должностей:

  • Директор по информационной безопасности.
  • Администратор безопасности.
  • Инженер по ИТ-безопасности.
  • Старший консультант по безопасности.
  • Аналитик по обеспечению информационной безопасности.

Требования: чтобы иметь право на сдачу экзамена CISSP, потребуется пять или более лет совокупного опыта работы как минимум в двух из восьми областей кибербезопасности. Например, в управлении безопасностью и рисками, управлении безопасностью активов, проектировании систем безопасности, управлении идентификацией и доступом.

После получения сертификата CISSP вы сможете добавить в свое резюме еще три специализированных навыка: архитектуру безопасности информационных систем (ISSAP), разработку систем информационной безопасности информационных (ISSEP) и управление безопасностью информационных систем (ISSMP).

Сертифицированный аудитор информационных систем (СISA)


CISA (Certified Information Systems Auditor) – еще один сертификат (ISC)2. Он демонстрирует опыт специалиста в оценке уязвимостей безопасности, разработке и внедрении средств контроля и отчетности о соответствии. Это один из самых известных сертификатов в сфере аудита кибербезопасности.

CISA предназначен для ИТ-специалистов среднего уровня, которые претендуют на следующие должности:

  • Менеджер по ИТ-аудиту.
  • Аудитор по кибербезопасности.
  • Аналитик по информационной безопасности.
  • Инженер по ИТ-безопасности.
  • Менеджер ИТ-проекта.
  • Менеджер программы комплаенс.

Требования: не менее пяти лет опыта работы в области аудита или обеспечения информационной безопасности. Двухлетняя или четырехлетняя степень может быть заменена соответственно одним или двумя годами опыта.

Цена: от $575 до $760.

Сертифицированный Cisco Network Associate Security (ССNA Security)


Получение сертификата CCNA Security подтверждает ваши знания о решениях в области безопасности. Кандидаты могут сдать один основной экзамен, а другой – по своему выбору.

Программа сертификации CCNA Security предназначена для начинающих специалистов, которые хотят продвинуться по карьерной лестнице.

Она подходит для следующих должностей:

  1. Инженер по безопасности приложений.
  2. Сетевой аналитик.
  3. Менеджер по работе с сетью.
  4. Специалист по обеспечению безопасности информации.
  5. Аналитик угроз.

Требования: хотя формальных условий для сдачи этого экзамена среднего уровня нет, рекомендуется иметь год опыта работы в области кибербезопасности с решениями Cisco.

Цена: $400 за основной тест и $300 за экзамен на концентрацию.

***

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

Если вы только начинаете путь в профессии, обратите внимание на «Факультет информационной безопасности» образовательной онлайн-платформы GeekBrains. Под руководством опытных экспертов из ведущих технологических компаний вы получите там много практики по разным направлениям: тестам на проникновение, Python, реверс-инженирингу, безопасности сетей и криптографии. Успешно завершившим курс студентам выдается диплом о профессиональной подготовке, а специалисты платформы помогают им с поиском работы.

02
Июл
2021

🍏 Путь в профессию: интервью с iOS-разработчиком Кевином Ренскерсом

Создание приложений для iOS – одно из самых перспективных направлений в IT. Наш корреспондент пообщался с программистом-фрилансером из Голландии, который трудится в этой сфере уже 11 лет. Он рассказал о своем пути в iOS, Swift и SwiftUI, а также о будущем iOS-разработки.

– Как вы пришли к разработке приложений для iOS?

В 2009 году я начал работать в местной компании в качестве программиста на Python. Мы создавали веб-сайты для крупных компаний, используя Plone и Django. В 2010 году некоторые клиенты начали просить приложения для iPhone, и это стало началом моей карьеры разработчика iOS: мне платили за то, чтобы научиться создавать эти приложения.

К тому времени у меня уже был десятилетний опыт работы в программировании. Я начал в 2000 году создавать веб-сайты с помощью HTML и Flash, в 2001 году занялся PHP и JavaScript, а в 2009 году перешел на Python.


– Вы занялись разработкой для iOS в 2010 году. Что изменилось сейчас?

Почти все. Когда я начинал, мы не только все еще использовали Objective-C (который мне действительно очень нравился), но даже ARC еще не существовало. Xcode еще не был интегрированным инструментом, Interface Builder был отдельным приложением, поэтому вы могли открывать обе программы одновременно. Это было очень мило.


Даже блоки (замыкания, обработчики завершения) еще не существовали, не было дополнительных элементов, не существовали литералы массивов и словарей и раскадровки – список можно продолжать и продолжать.

– 11 лет – большой срок. Чему вам пришлось научиться за это время?

Очевидно, мне сначала нужно было изучить Objective-C, UIKit, Foundation и другие фреймворки. Позже мне пришлось изучить Swift, функциональное программирование, реактивное программирование, а также все новые фреймворки и API, которые Apple представила за эти годы. MVC, MVVM, координаторы, составная архитектура – обучение никогда не прекращается!

Однако написание приложений для iOS сильно отличается от написания веб-приложения, поэтому освоение правильных шаблонов, таких как делегаты и способы работы с (фоновыми) потоками, было своего рода кривой обучения.

– В 2010 году Apple была не такой огромной корпорацией. Почему вы выбрали разработку под iOS?

Я бы не сказал, что они не были крупной компанией в 2010 году. Конечно, сейчас они огромны, но iPhone стал хитом с самого первого выпуска. В любом случае меня не волновал размер, я просто знал с первых же слухов о телефоне Apple, что он будет отличным. Когда Джобс представил iPhone, я был влюблен и знал, что мне нужен именно такой. Требовалось, чтобы iPhone 3GS был доступен в Нидерландах.

Я хотел разрабатывать приложения для этого устройства, потому что оно было таким безупречным и гладким. Все было быстро, приложения удобны для пользователя и хорошо спроектированы… это было намного лучше, чем что-либо до него, это было революционно.


Что вы думаете о Swift и SwiftUI? Хотите что-то в них изменить?

Обожаю Свифт! Я дождался Swift 3, пока не начал его использовать. Я работал над большими сложными приложениями Objective-C, мне очень нравился Objective-C, поэтому я дождался подходящего момента для перехода. Этот момент наступил в декабре 2016 года: я только начал работать фрилансером и начал новый проект с нуля, поэтому в тот момент Swift казался очевидным выбором.

SwiftUI, с другой стороны… Мне нравится его концепция, я бы хотел иметь возможность использовать его, но он еще не готов. Я создал побочный проект средней сложности с использованием SwiftUI 1, когда он был только что выпущен, и хотя мне понравилось первоначальное повышение производительности, это быстро превратилось в раздражение, так как я потратил слишком много времени, работая над ошибками и сбоями в самом SwiftUI. Легкие вещи стали действительно легкими, а сложные – невозможными. Я отказался от этого побочного проекта.

Я действительно надеюсь, что SwiftUI стал лучше с iOS 15, но если вы не пишете приложение только для iOS 15+, это не имеет значения. На самом деле я не думаю, что буду использовать SwiftUI для производства в ближайшие 2 или 3 года.

Я бы хотел изменить то, чтобы изменения Swift и SwiftUI можно было использовать со старыми версиями iOS. Например, новая поддержка async/await в Swift действительно потрясающая. Но… только для iOS 15+. Я бы хотел, чтобы Apple нашла способ удалить такие зависимости из самой базовой ОС, чтобы отдельные фреймворки могли обновляться без полного обновления ОС. То же самое и с такими приложениями, как Mail, Weather, Notes и т. д. Почему они являются частью самой iOS? Если бы они были в App Store, как и любое другое приложение, их можно было бы обновлять чаще и с меньшими проблемами.

– Какие ресурсы вы используете для работы и обучения?

– Были у вас ошибки, и что бы вы посоветовали ребятам из России, которые только начинают осваивать профессию?

На самом деле это не ошибка, но мне бы хотелось, чтобы я вскочил на подножку FRP немного раньше. Мне никогда не нравился RxSwift (или ReactiveCocoa во времена Obj-C), он никогда не работал до тех пор, пока я не начал использовать ReactiveKit и Bond еще в 2019 году. Теперь я использую Combine во всех своих приложениях с 2020 года, и не могу представить, что вернусь к старому способу создания приложений.

Если вы только начинаете разработку iOS, совет номер один – не перегружаться всеми вариантами архитектуры и не пытаться делать все идеально с самого начала. Просто используйте MVC, не волнуйтесь, получите ли вы в итоге массивные контроллеры представления или нет. Используйте раскадровку с переходами, если они вам нравятся, даже не думайте пока о координаторах. Забудьте о комбинированном и реактивном функциональном программировании.

Просто начните с основ и получайте удовольствие! Вы поймете, что не масштабируется, когда начнете создавать большие приложения, и будете искать решения проблем по мере их появления. Но если вы хотите делать все идеально с самого начала, вы просто закончите аналитическим параличом и вообще ничего не сделаете.

– Какое будущее у iOS-разработки?

SwiftUI и async/await. Жаль, что будущее реальных приложений, где вы должны поддерживать старые версии iOS – это буквально несколько лет.

– Чем вы занимаетесь сейчас и какие у вас планы?

Я занимаюсь проектом для клиента, в котором также работаю над приложением iOS и серверным кодом. Планирую продолжать получать удовольствие как разработчик-фрилансер, принимая проекты, которые меня интересуют.

Мне почти 40 лет, и я не знаю, как долго захочу оставаться разработчиком или фрилансером. Так что со временем я, возможно, захочу больше сосредоточиться на том, чтобы быть наставником, чем мне действительно нравится заниматься сейчас несколько часов в неделю. Посмотрим 🙂
***

Если вы хотите получить необходимые знания в структурированном виде и без лишней воды, стоит обратить внимание на курс Факультета iOS-разработки образовательной онлайн-платформы GeekBrains. За 12 месяцев вы освоите два языка программирования и современные технологии создания приложений, научитесь писать чистый код и реализуете несколько проектов для портфолио. Обучение будут курировать эксперты-практики, а после защиты финального проекта студентам выдадут электронные сертификаты и дипломы о профессиональной переподготовке. HR-специалисты GeekBrains помогут выпускникам с трудоустройством.

01
Июл
2021

🧭 Не только игры: VR/AR-разработка – профессия будущего

Рассказываем о сферах применения технологий виртуальной и дополненной реальности, помимо тривиального геймплея, а также о перспективах для разработчиков в этой отрасли.

Что такое VR/AR?

Термин «виртуальная реальность» относится к трехмерной среде, созданной компьютером. VR – это полностью цифровой опыт, который может имитировать или полностью отличаться от реального мира.

В отличие от VR, дополненная реальность – это не полностью иммерсивный, искусственный опыт. Он состоит из виртуальных компонентов, размещенных в вашем непосредственном окружении. Технология дополненной реальности добавляет уровни цифровых фрагментов поверх существующей среды, сокращая разрыв между виртуальным и физическим миром.

Чтобы больше узнать о видах и технологиях VR и AR рекомендуем прочитать гайд по виртуальным мирам из «Библиотеки программиста».

Отметим, что VR переносит нас в альтернативные вселенные, а AR оживляет окружение с помощью данных, изображений и уникальных впечатлений, которые накладываются на мир вокруг вас.

Экскурс в историю

На протяжении многих лет технология виртуальной реальности использовалась в различных отраслях, от маркетинга и развлечений до космических миссий и свежих новостей с эффектом присутствия.

  • Сама концепция виртуальной реальности – иллюзорного опыта неотличимого от реального, существует довольно давно. В 1935 году писатель-фантаст Стэнли Вейнбаум написал рассказ «Очки Пигмалиона». В нем главный герой встречает профессора, который изобретает очки, позволяющие ему попасть в виртуальный мир.

  • В 1957 году кинематографист Мортон Хейлиг изобрел Sensorama, мультимедийное устройство для театрального шкафа, которое предлагало зрителям интерактивный опыт. Sensorama представляла собой механическое устройство, включающее цветной стереоскопический дисплей, вентиляторы, излучатели запахов, стереофоническую звуковую систему и подвижное кресло. Оно имитировало поездку на мотоцикле по Нью-Йорку и создавало впечатление присутствия.

  • В 1961 году два инженера Philco Corporation создали первый налобный дисплей (HMD) под названием Headsight. Он имел два видеоэкрана, по одному на каждый глаз, а также устройство магнитного слежения. Это было первое устройство отслеживания движения, которое дало возможность пользователю осматривать окружающую среду, не находясь там физически, при помощи удаленной камеры.
  • К 1980-м годам термин «виртуальная реальность» популяризировал Джарон Ланье. Он основал лабораторию визуального программирования VPL и разработал вместе с Томом Циммерманом ряд устройств, в том числе Dataglove, перчатку для взаимодействия человека с компьютером и шлем VR EyePhone HMD, что сделало VPL первой компанией, которая начала продавать очки виртуальной реальности.
  • В 1990-е годы появились первые массовые коммерческие гарнитуры VR. В 1992 году журнал Computer Gaming World предсказал «доступную виртуальную реальность к 1994 году».
За последние 10 лет мир виртуальной и дополненной реальности значительно продвинулся в развитии в результате конкуренции технологических гигантов. Amazon, Apple, Facebook, Google, Microsoft, Sony и Samsung создали собственные подразделения VR и AR. С началом пандемии COVID-19 отрасль переживает очередную волну роста, на фоне вызванного вынужденной самоизоляцией спроса.

Где применяется VR/AR

Несмотря на популярность VR/AR в игровой отрасли, сферы применения этих технологий не заканчиваются на компьютерных играх и Pokemon Go. Рассмотрим далее перспективные из применений.

Торговля

Онлайн торговля товарами давно заняла свое место в современном мире и экономит покупателям много времени и сил, а продавцам торговые площади и сопутствующие расходы на содержание офлайн-магазинов. Проблема с покупками в Интернете заключается в том, что мы не можем примерить одежду или увидеть как на самом деле будет выглядеть мебель в нашем доме, до ее покупки. Это вызывает дискомфорт и множественные возвраты товара от покупателей. Технологии VR и AR могут это исправить.

С появлением технологии сканирования тела в VR, которая позволит «примерить» одежду в виртуальном мире, неуверенность в товаре и продавце отойдут на второй план.


  • Различные компании пытаются предоставить опыт покупок в виртуальной реальности, в том числе европейский розничный торговец ASOS, который инвестировал в компанию по разработке программного обеспечения Trillenium.
  • Трудно представить, как будет выглядеть мебель в вашем доме, даже если осматриваешь ее в салоне, поэтому многие покупатели хотят использовать AR при покупке мебели.
  • IKEA и Wayfair – всего лишь два ритейлера из множества, которые помогают покупателям визуализировать мебель и товары в их доме благодаря технологии дополненной реальности.
  • Кроме того AR можно использовать для повышения вовлеченности в магазинах. Некоторые розничные продавцы, в том числе LEGO и Best Buy, используют элементы дополненной реальности в своих офлайн-магазинах, чтобы удивить и заинтересовать потребителей.

Образование

Онлайн-образование в настоящее время является очень востребованным. Многие в секторах сейчас повышают свой технический уровень, обращаясь к VR и AR, чтобы обеспечить расширенный опыт. Это делает обучение более доступным, дешевым и повышает уровень удержания знаний.

Использование виртуальной реальности для экспериментального обучения дает множество преимуществ:

  • VR может имитировать реальные жизненные ситуации;
  • использование ИИ для общения с аватарами и изменения исхода ситуации в зависимости от действий ученика;
  • отсутствие ограничений по времени;
  • обучение и практику можно разделить на более мелкие фрагменты по сравнению, например, с тренировочными днями;
  • VR среда обладает широкими возможностями настройки. Это улучшает эмпирическое обучение, сделав упражнение значительно более реалистичным.
  • использование VR – более увлекательный способ обучения, поскольку он полностью привлекает внимание;
  • виртуальная реальность стимулирует память во время обучения. Это полезно для запоминания в долгосрочной перспективе и более эффективно, чем пассивное вспоминание, такое как перечитывание информации или просто просмотр видео.
Кроме того дополненная реальность помогает педагогам вовлекать учеников с помощью динамических 3D-моделей, наложений релевантных фактов и визуальной информации по темам, которые они изучают. Студенты могут получить доступ к информации в любом месте и в любое время без специального оборудования.

Здравоохранение

Медицинские работники используют виртуальные модели, чтобы подготовиться к работе с реальными телами.

VR также можно использовать для лечения проблем с психическим здоровьем, а терапия с использованием виртуальной реальности считается эффективной при лечении посттравматического стрессового расстройства и тревожности.

AR делает важную информацию доступной для хирургов в пределах их поля зрения во время операции. Стартапы строят технологию AR для поддержки цифровой хирургии, трехмерной медицинской визуализации и специальных операций.

Навигационные системы

AR способна повысить эффективность навигационных устройств. Информация может отображаться на лобовом стекле автомобиля с указанием направления и места назначения, погоды, местности, дорожных условий и информации о дорожном движении. С 2012 года швейцарская компания WayRay разрабатывает голографические системы навигации с дополненной реальностью, в которых используются голографические оптические элементы для проецирования информации о маршруте, включая направления, важные уведомления и достопримечательности, прямо в зоне прямой видимости водителей. На борту морских судов AR позволит наблюдателям на мостике отслеживать важную информацию, такую ​​как курс и скорость судна при движении.

Строительство

VR постепенно меняет то, как архитекторы проектируют и экспериментируют в своей работе. VR позволяет увидеть не только как будет выглядеть здание или пространство, но и как оно будет «ощущаться». Владельцы домов могут «опробовать» пространство до того, как оно будет физически построено, и внести изменения, что сэкономит время и деньги заказчика и архитектора, а также повысит удовлетворение от завершения проекта.

Архитекторы годами используют 3D-модели, но использование иммерсивных инструментов, поможет понимать и исследовать пространство на самом глубоком уровне, видеть здание «сквозь стены», просматривать его внутренние объекты и планировку.

Развлечения

Туристическая индустрия использует обучающие видеоролики, чтобы продавать направления и поездки с помощью виртуальной реальности. Такие сервисы, как Discovery Channel и Google Expeditions, позволяют людям поплавать с акулами в Тихом океане, исследовать коралловые рифы или поверхность Марса.

Путешественники могут использовать AR для доступа к информационным дисплеям. Расширенные приложения AR включают моделирование исторических событий, мест и объектов, отображаемых в ландшафте.

VR дает организаторам мероприятий возможность приглашать больше людей. Например, Пол Маккартни в 2016 году выпустил запись концерта в VR 360. Многие музеи предлагают виртуальные туры с возможностью приблизиться к экспонатам не выходя из дома, а также AR приложения, которые позволяют лучше ориентироваться и получить больше информации в залах музея.

Техническое обслуживание

AR используется удаленными сотрудниками для обслуживания транспортных средств и оборудования. Сегодня AR может помочь специалисту по техническому обслуживанию быстро разобраться в оборудовании, с которым они работают, с помощью планов или информации, наложенной в AR приложении. Основная цель – дать работникам возможность работать более продуктивно и предоставить им свободу потребления информации без помощи рук. Например, на узлах системы могут отображаться метки, поясняющие инструкции по эксплуатации для механика, выполняющего техническое обслуживание системы.

Искусство и дизайн

Дэвид Эм был первым прекрасным художником, создавшим в 1970-х годах виртуальные миры, по которым можно перемещаться. Среди других художников, исследовавших потенциал VR-технологий в 1990-е годы, можно назвать Джеффри Шоу, Ульрику Габриэль, Чар Дэвис, Морис Бенаюн, Knowbotic Research, Ребекку Аллен и Перри Хоберман.

AR, применяемая в изобразительном искусстве, позволяет объектам или местам вызывать художественные многомерные переживания и интерпретации реальности. Дополненная реальность способствует развитию визуального искусства в музеях, давая возможность посетителям просматривать экспонаты в галереях в многомерном виде через экраны смартфонов.

Социальные сети

Некоторые организации создают социальные сообщества в пространстве VR, такие как vTime, AltspaceVR, Oculus Rooms, Mozilla Hubs и VRChat, а также социальные виртуальные миры, которые изначально были разработаны без поддержки VR, например Roblox.

Эти социальные сети нового формата предоставляют участникам новый опыт взаимодействия и возможности для онлайн-общения.

В совместной дополненной реальности несколько пользователей могут получить доступ к общему пространству, заполненному виртуальными объектами, оставаясь при этом в реальном мире. Этот метод особенно эффективен для образовательных целей, когда пользователи размещены вместе и могут использовать естественные средства общения (речь, жесты и т. д.), но также могут успешно сочетаться с иммерсивной виртуальной реальностью или удаленным сотрудничеством.
Ханнес Кауфман, доцент кафедры виртуальной реальности Венского технического университета.

Перспективы

Мы перечислили лишь некоторые области внедрения технологий AR/VR в повседневную жизнь и работу. Существуют сотни других применений и они могут повлиять на рабочее место, хобби и социальную жизнь раньше, чем мы предполагали. Корпоративные приложения AR и VR могут стать чрезвычайно ценными в самых разных контекстах.

Мы все еще далеки от недорогой технологии виртуальной реальности, которая полностью погрузит вас в цифровой мир. Однако социальный запрос на такие инструменты дает основания предполагать, что в ближайшем будущем технологии VR/AR станут применяться повсеместно.

В этом контексте уже сейчас растет спрос на разработчиков приложений виртуальной и дополненной реальности, и эта тенденция будет только нарастать.

Если вам интересно это направление, рекомендуем ознакомиться со статьей «Как освоить разработку приложений AR/VR с нуля», где описаны основные навыки и инструменты, которые могут потребоваться новичку.

***

А если вы всерьез решили углубиться в профессию и стать разработчиком VR/AR, стоит обратить внимание на «Факультет разработки VR/AR» образовательной онлайн-платформы GeekBrains. Там вы научитесь делать игры и мобильные приложения, а также получите востребованную специальность и возможность работать на фрилансе или в крупной IT-компании. На факультете GeekBrains изучают язык C# и движок Unity, а также на практике учат создавать продукты с VR/AR-технологиями – выпускники смогут добавить в портфолио 14 реализованных проектов.

19
Июн
2021

🗣 Собеседование на вашу первую работу Data Scientist’ом: чего ожидать и к чему готовиться

Виды собеседований на должность Data Scientist’а, их течение и советы для успеха.

Текст публикуется в переводе. Автор оригинальной статьи – Emma Ding.

Если вы ошеломлены подготовкой к собеседованию на должность Data Scientist’а, вы не одиноки. Поиск “собеседование в Data Science” вернет вам бесконечное количество ссылок, включая статьи о Python, R, статистике, A/B тестированию, машинному обучению, Big Data. Вам посоветуют прочитать бесконечное количество книг. К сожалению, мы и сами давали такие же обширные рекомендации другим.

В реальности вам не нужно готовиться ко всему, чтобы получить свою первую работу Data Scientist’ом.

В этой статье мы расскажем вам о четырех ключевым вещах:

  • Виды должностей Data Scientist’ов.
  • Виды собеседований, к которым вы должны приготовиться.
  • Чего ожидать в процессе собеседования.
  • Что оценивают собеседующие.

Давайте погрузимся в эти темы.

Разбираемся в видах должностей Data Scientist’ов

Мы часто слышим жалобы на запутанные названия должностей. Этих названий очень много, например: Product Data Scientist, Machine Learning Data Scientist, Data Science Engineer, Data Analyst, и этот список постоянно растет. Если вы не знакомы с отраслью, будет очень трудно понять, на какую должность подавать заявление.

В общем, есть четыре вида должностей: Аналитика, Статистика, Инженерия данных и Алгоритмы. Это разделение построено на примере крупных компаний с большими командами Data Science (например, Facebook, Lyft, Airbnb, Netflix).

Виды должностей и примеры должностей для каждого вида
Виды должностей и примеры должностей для каждого вида

Опишем каждый вид должностей подробнее.

  • Аналитика. Сотрудники на этих должностях оказывают влияние на бизнес, делая рекомендации на основе изучения данных. Их обязанности включают в себя помощь заинтересованным лицам в принятии информированных решений на основе данных, проведение исследовательских анализов, определение бизнес-метрик и визуализация данных (напр., создание информационных панелей).
  • Статистика. Эти должности определяют возможности масштабировать эксперименты и применять статистические подходы (напр., казуальные модели) для решения проблем бизнеса.
  • Инженерия данных. Эти специалисты создают масштабируемые конвейеры данных, которые делают возможными принятие решений на основе этих данных, обычно для потребителей, разбирающихся в данных (аналитиков и Data Scientist’ов). Такие специалисты похожи на типичных инженеров данных, но обычно работают в команде data science, а не обслуживают широкий круг заинтересованных лиц (таких, как инженеры и product manager’ы).
  • Алгоритмы. Эти специалисты создают бизнес-ценности, разрабатывая статистические, оптимизационные модели и модели машинного обучения. Они часто проводят исследовательский анализ данных, чтобы получить глубокое понимание бизнес-задачи и выпустить модели в продакшн.

Хотя каждый вид должностей кажется уникальным, их обязанности часто перекрываются. В реальной жизни часто приходится выполнять обязанности нескольких должностей, в зависимости от состава команды и потребностей бизнеса (особенно в небольших компаниях). Изучение обязанностей и проектов будущей должности, о которых вы можете узнать, спросив у рекрутера или менеджера, поможет вам понять, насколько вы подходите для этой должности, и насколько она подходит для вас.

Следующая диаграмма показывает распределение видов должностей на рынке труда. Она построена на основе примерно тысячи вакансий, опубликованных на LinkedIn с сентября по ноябрь 2020-го года.


Очевидно, что доминирующим видом должностей является Аналитика, а Статистика востребована меньше прочих. То есть, если вы только начинаете свою карьеру Data Scientist’а, Аналитика будет отличным стартовым вариантом.

Однако какой вид должностей лучше всего соответствует вашим навыкам, интересам и имеющимся возможностям? Выберите один из них и сконцентрируйте свое внимание на навыках, необходимых для этого вида, о которых мы поговорим чуть позже. А пока давайте поговорим о том, чего вам следует ожидать на протяжении собеседования.

Процесс собеседования: 5 стадий

В этом разделе мы рассмотрим типичные стадии процесса собеседования. Заметьте, что хотя эти стадии есть почти во всех компаниях, порядок их следования может различаться.

Сейчас мы рассмотрим каждую из этих стадий, включая цели компании на каждой стадии, и чего вы должны на ней ожидать. В следующем разделе мы детально расскажем о видах вопросов, задаваемых на собеседовании каждого типа.


1. Онлайн-отсев. Обычная продолжительность: от 30 минут до 1 часа. Вид собеседования: кодирование. Вероятность: 1 случай из 3.

Цель компании: компании используют онлайн-отсев, чтобы избавиться от неподходящих кандидатов, а также от тех, кто не обладает минимальными техническими навыками. Отсев обычно проводится на веб-сайте кодирования (например, HackerRank) и не включает назначения личного собеседования, так что он помогает более эффективно фильтровать кандидатов.

2. Беседа с рекрутером по телефону. Обычная продолжительность: 30 минут. Вид собеседования: Поведение и Многофункциональный. Вероятность: 3 случая из 3.

Цель компании: рекрутер хочет убедиться, что ваши интересы, жизненные планы и требования (напр., виза) подходят для этой вакансии. Этот этап – возможность определить, что кандидат не подходит для данной вакансии или наоборот.

Рекрутер начнет с описания компании, должности и, возможно, команды, в которой вам предстоит работать. После этого он может спросить вас о вашей биографии, жизненных планах и о том, что вы рассчитываете получить, работая на этой должности (включая бонусы и компенсации). Это очень удобная возможность задать вопросы, которые помогут развеять вашу обеспокоенность.

3. Тестовое задание на обработку данных. Обычная продолжительность: 1 день – 2 недели. Вид собеседования: кодирование. Вероятность: 2 случая из 3.

Цель компании: тестовое задание отсеивает непригодных кандидатов и проверяет технические навыки, умение решать задачи и общаться.

Тестовое задание на обработку данных обычно требует решить бизнес-задачу и предоставить рекомендации на основе предоставленных данных. Иногда вас попросят написать итоговый отчет или сделать презентацию. В других случаях вам могут задать несколько вопросов, на которые вы должны ответить. Вам часто придется применять гибкие методы решения задач, поскольку на этом этапе проверяется ваша способность решать возникающие задачи, а не уровень владения конкретным языком или инструментом. Тем не менее, самые популярные языки, которые вы можете использовать – это SQL, Python и R. Некоторые компании просят вас сдать промежуточные результаты, чтобы определить, будете ли вы двигаться дальше, тогда как другие этого не требуют. В обоих случаях, вас обычно попросят предоставить свою работу на следующем раунде собеседования.

4. Телефонный разговор с техническим специалистом. Обычная продолжительность: 30 минут – 1 час. Вид собеседования: кодирование. Вероятность: 2.5 случая из 3.

Цель компании: телефонный разговор с техническим специалистом отсеивает кандидатов, не сумевших продемонстрировать минимальные технические навыки, необходимые для этой должности.

Как правило, у вас будет собеседование с Data Scientist’ом или нанимающим менеджером. Для начала они могут представиться и попросить вас рассказать о своем предыдущем опыте работы.

После этого собеседующий может углубиться в технические вопросы. Виды вопросов зависят от должности и могут включать в себя извлечение данных (SQL), метрики, статистику и теорию вероятности, машинное обучение и вопросы по кодированию. Обычно вам зададут вопросы не более чем из двух областей. Например, если вы претендуете на должность в Аналитике, вам могут задать вопросы об извлечении данных и метриках. Поскольку это собеседование может быть очень разным, мы рекомендуем перед ним спросить собеседующего о том, чего вам следует ожидать.

5. Тесты на сайте (обычно 4-6 раундов). Обычная продолжительность: 4-6 часов. Вид собеседования: все. Вероятность: 3 случая из 3.

Цель компании: тесты на сайте состоят из нескольких собеседований, проверяющих большинство навыков, требуемых для этой должности.

Тестирование на сайте – это последний и самый сложный этап перед получением предложения о работе (offer). Это тестирование обычно более полное, чем предыдущие собеседования, поскольку оно состоит из нескольких собеседований (обычно 4-6). До COVID-19 большинство тестирований проводилось в кампусах компаний, но теперь они стали виртуальными. Комбинация собеседований зависит от вида должности, на которую вы претендуете. Например, тесты на роль Аналитика могут включать несколько собеседований по разным задачам бизнеса, но не включать машинного обучения. Мы обсудим это подробнее в следующем разделе.

Несмотря на то, что мы описали общую последовательность, виды собеседований внутри нее могут сильно различаться. Давайте рассмотрим их поближе.

Семь видов собеседований


В этом разделе мы представим семь популярных видов собеседований. Мы также опишем, что пытаются найти компании, и дадим советы, как показать себя в наилучшем свете. Каждое собеседование обычно оценивает 1-2 навыка или параметра поведения. Иногда рекрутеры сами скажут вам, на что обратить внимание, чтобы вы могли подготовиться.

Собеседования можно разделить на технические и не-технические. Технические собеседования сосредоточены на проверке “hard-навыков”, необходимых для работы, а не-технические – на “soft-навыках” (например, умение общаться и руководить командой), а также пригодность для будущей команды.

Ниже мы предоставим краткие описания, примеры задаваемых вопросов и ресурсы для каждого типа собеседований.

1. Собеседование кодирования

Это собеседование покрывает широкий диапазон таких вопросов, как прикладные задачи извлечения данных/манипуляции данными, фундаментальные знания в Computer Science (алгоритмы, структуры данных и лучшие практики программирования) и алгоритмы машинного обучения.

Вопросы могут быть очень разными, в зависимости от должности. Поскольку SQL требуется практически для всех должностей, его знание тестируют очень часто.

Примеры вопросов:

  • Найдите среднюю стоимость покупок для каждого пользователя (SQL).
  • Найдите медианный доход, сгруппированный по странам, не используя функции медианы и процентные функции.
  • Найдите медиану несортированного массива (Python).
  • Закодируйте классический алгоритм машинного обучения – напр., метод k-средних или k ближайших соседей (Python).

Основные советы:

  • Перед началом кодирования сначала обсудите свой план работы с собеседующим, чтобы утрясти все вопросы и получить одобрение своего плана.
  • Вы должны знать основы, но не обязаны помнить всё наизусть.

Ресурсы:

  • Полезные советы, чтобы блистать на собеседовании по SQL (видео).
  • Полное руководство по подготовке к вопросам по Python (блог).

2. Тест обработки данных


На этом собеседовании кандидата просят проанализировать набор данных (обычно предоставленный в виде файла CSV) и выдать рекомендации по решению бизнес-задачи. Это обычно делается в виде домашнего задания, но вас могут попросить показывать свой экран, чтобы видеть процесс решения задачи. Задачи могут варьироваться от разведочного анализа данных до очистки и извлечения данных (SQL), конструирования признаков и моделирования (напр., предсказание или кластеризация).

Примеры вопросов:

  • По набору данных поведения клиентов определите отток клиентов и факторы, которые могут на него влиять.
  • По набору данных о покупках определите тренд процента конверсии покупателей в лояльных и приведите рекомендации по его улучшению.

Основные советы:

  • Получите четкое представление о задаче, прежде чем исследовать данные. Представьте такое решение, которое будет концентрироваться на поставленной задаче.
  • Не считайте, что данные очищены, если вам этого не сказали. Подумайте о проверке крайних значений и выбросов. Если у вас нет времени проверять данные, четко объявите свои предположения об их чистоте.
  • Сделайте отчет о своей работе и опишите дальнейшие шаги (напр., области для дополнительных исследований).

Ресурсы:

  • Онлайн-сообщество по решению разных задач с данными (Kaggle).
  • Блестящее решение домашних заданий по Data Science (блог).

3. Собеседование метрик/кейсов

По заданному бизнес-сценарию обсудите свой подход к задаче и сделайте предложения по ее решению. Задачи могут быть разными, в том числе: обнаружение сдвигов метрик, как измерять успех (мозговой штурм метрики), как оценить признак с компромиссами, и как улучшить продукт.

Примеры вопросов:

  • Как бы вы исследовали негативный сдвиг метрики дохода?
  • Каковы “за” и “против” использования Ежедневных Активных Пользователей (Daily Active Users, DAU) в качестве метрики успеха?
  • Как бы вы устроили эксперимент для признака X?
  • Если A/B тест показывает, что желаемая метрика (напр., показатель кликабельности) растет при понижении другой метрики (напр., количества кликов), как бы вы подошли к решению вопроса о запуске?

Основные советы:

  • Вытяните из собеседующего контекст и цель задачи, прежде чем отвечать или задавать уточняющие вопросы.
  • Пару минут расспрашивайте собеседующего, чтобы записать его ответы, и структурируйте ваше общение, прежде чем говорить.
  • Прежде чем давать полный ответ, подумайте о том, чтобы кратко описать несколько подходов и спросить собеседующего, что нужно рассказать более подробно.

Ресурсы:

  • Полное руководство по прохождению собеседований по бизнес-кейсам для Data Scientist’ов (часть 1, часть 2).
  • Чаще всего задаваемые вопросы о метриках и фреймворках (видео).
  • Реальные вопросы и ответы о метриках (видео плейлист).
  • Семь часто задаваемых вопросов и ответов по A/B тестированию с собеседований (блог).

4. Собеседование по статистике и теории вероятностей


Это собеседование тестирует ваше понимание прикладной статистики (напр., проведения экспериментов) и теории вероятностей (напр., теоремы Байеса).

Примеры вопросов:

  • Как бы вы объяснили 10-летнему ребенку, что такое p-value и доверительные интервалы?
  • Какова вероятность заражения пациента, если его тест позитивен, а вероятность заболевания в его популяции составляет 0.1%?
  • Чему равны среднее значение и дисперсия биномиального распределения?
  • Как смоделировать бросок жульнической монеты с помощью обычной монеты?

Основные советы:

  • Вам не всегда нужно знать точную формулу расчета заданной метрики. Однако вы должны знать, какие переменные в нее входят, и как они влияют на итоговое значение метрики (напр., доверительные интервалы увеличиваются при повышении дисперсии и уменьшении размера выборки).
  • Вы зачастую сможете ответить на вопросы по теории вероятностей, нарисовав все возможные варианты (напр., в виде дерева) и сложив вероятности. Не страшно, если из-за ошибки в вычислениях вы получите неправильный ответ, особенно если ваш подход к задаче был правильным.

Ресурсы:

5. Собеседование по машинному обучению

Это собеседование включает вопросы по основам машинного обучения и решению задач с помощью стандартных методов.

Примеры вопросов:

  • Что такое переобучение? Как с ним бороться?
  • Что бы вы делали с несбалансированным набором данных?
  • Расскажите, что такое сдвиг против разброса (bias vs variance).
  • Расскажите, что такое классификатор Случайного Леса (Random Forest).
  • В каких случаях вы бы использовали регуляризацию L1 и L2?

Основные советы:

  • Давайте четкие определения в 2-3 предложениях. Приведите один-два примера, чтобы убедить собеседующего, что вы не только знаете теорию, но и имеете опыт ее применения.
  • При необходимости предоставьте несколько широко используемых решений задачи.

Ресурсы:

  • Полное руководство, как блистать на собеседованиях по машинному обучению (блог).
  • 4 вида задач машинного обучения на собеседованиях по Data Science (видео).
  • Реализация алгоритмов машинного обучения с нуля (плейлист).

6. Собеседование по опыту

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

Примеры вопросов:

  • Расскажите о ситуации, в которой вы сыграли важную роль. В чем заключалась проблема, каковы были обстоятельства, как вы подошли к ее решению, и как вы с ним справились?
  • Расскажите о конфликте, который вам удалось разрешить, или о заинтересованном человеке, которого вы переубедили.

Основные советы:

  • Часто делайте паузы и спрашивайте собеседующего, нет ли у него вопросов, и не хочет ли он, чтобы вы рассказали о чем-то подробнее.
  • Готовясь к этому собеседованию, выделите 3-5 проектов, которые можно было бы использовать для большинства собеседований о поведении. Запишите ситуацию, проблему, ваш способ ее решения и его важность, чтобы вам не пришлось импровизировать на собеседовании.

Ресурсы:

7. Многофункциональные собеседования и собеседования о ценностях компании

На этом собеседовании вас будут спрашивать, как вы взаимодействовали с другими людьми в прошлом, и что бы вы сделали в различных гипотетических сценариях. Оно обычно проводится для нахождения кандидатов, хорошо соответствующих моральным и культурным ценностям компании.

Примеры вопросов:

  • Расскажите о случае, когда ваша рекомендация противоречила рекомендации другого человека. Как вы пришли к решению?
  • Расскажите о случае, когда вам пришлось расставлять приоритеты для нескольких очень срочных проектов. Как вы с этим справились?

Основные советы:

  • Просмотрите “ценности компании” (обычно на веб-сайте компании). Подготовьте ситуации, в которых вы действовали в соответствии с этими ценностями.
  • Заранее узнайте, кто будет проводить собеседование, если это возможно. Визуализируйте их проблемы (например, product manager’ы склонны интересоваться тем, как предоставлять данные заинтересованным лицам) и найдите в своем прошлом ситуации, имеющие отношение к этим проблемам.

Ресурсы:

Выбираем важнейшие области подготовки

Эти семь видов собеседований могут ошеломить кого угодно! В этом разделе мы расскажем о том, как выбирать важнейшие для вашей вакансии области, чтобы готовиться к собеседованиям организованно и эффективно.

Вот несколько общих советов:

  • Изучите, как сохранять организованность в процессе подготовки к собеседованию (видео).
  • Перед началом подготовки спросите рекрутера, какие виды собеседований вас ждут (видео).
  • Если вы узнали последовательность собеседований, готовьтесь к ним в порядке их следования (напр., если первым будет собеседование по опыту, сначала готовьтесь к нему). Если же вы только начали готовиться, сначала готовьтесь к собеседованиям кодирования.

Наконец, в зависимости от вида должности, на которую вас собеседуют, вы должны уделить одним видам собеседований больше внимания, чем другим. Схема, приведенная ниже, может предоставить вам догадки насчет областей, на которых стоит сконцентрировать свое внимание.


Вы можете заметить, что кодирование и не-технические собеседования требуются для всех видов должностей, но некоторым видам Data Scientist’ов не приходится полностью готовиться к собеседованиям всех типов. Например, Аналитики могут меньше внимания уделять Машинному обучению, но больше – собеседованиям метрик/кейсов.

Эта схема должна помочь вам определить приоритеты в подготовке к собеседованию, исходя из ваших сильных и слабых сторон, а также должности, на которую вы претендуете.

Имейте в виду: оцениваемые качества

Хотя подготовка в области “hard-навыков” полезна, ее часто бывает недостаточно. На протяжении всего процесса собеседования будут оцениваться и ваши дополнительные качества. Несмотря на то, что различные компании имеют разные схемы оценки этих навыков, они, как правило, пытаются найти одни и те же качества. В общем, компании хотят, чтобы кандидаты в процессе собеседования продемонстрировали следующие качества:

  • Коммуникация – способность эффективно общаться в устном и письменном виде с технической и не-технической аудиторией. Это можно продемонстрировать, отвечая на вопросы последовательным и логическим образом, и объясняя технические концепции с помощью примеров и аналогий.
  • Проницательность в бизнесе / Чувство продукта – способность думать стратегически и практически о “большой картине”, чтобы разрабатывать решения задач, принимая в расчет основные соображения насчет продукта и бизнеса, такие, как экономика, организационные ограничения и точка зрения заинтересованных лиц. Это можно продемонстрировать, вплетая соображения бизнеса и организации в ваши ответы на вопросы.
  • Решение задач – способность разбивать задачу на составные части и разрабатывать подходящие решения, исходя из заданных ограничений. Это можно продемонстрировать на основании полноты и глубины ваших ответов.
  • Сотрудничество и влияние – способность исследовать разные точки зрения и достигать консенсуса с партнерами. Это можно продемонстрировать вашим умением реагировать на обратную связь в процессе собеседования и внедрением нескольких точек зрения в ваши ответы.

К демонстрации этих качеств трудно приготовиться, но при некоторой практике вы можете этого добиться. Вот три полезных совета:

  • Говорите, не забывая о контексте и аудитории. Различные виды собеседников имеют разные интересы. Например, менеджеры более заинтересованы в идеях высокого уровня и влиянии на бизнес, а индивидуальные участники проекта могут быть более заинтересованы в технических деталях. Большинство собеседников потребуют серьезного погружения в ситуацию и детали.
  • Не торопитесь. Потратьте минуту на то, чтобы записать свои мысли сгруппировать их в “корзины”, которые вы будете использовать при беседе. Это спасет вас от бессвязной болтовни и поможет собеседующему следовать за вашими мыслями. Не бойтесь общаться с собеседующим! Часто задавайте вопросы и сделайте ваше собеседование диалогом.
  • Продемонстрируйте свой интерес к компании, поделившись своими догадками. Докажите, что вы провели исследования, прочитав сведения о компании и ее маркетинговые материалы, а также протестировали продукт. Говорите на языке собеседующего.

Заключение и мысли под занавес

В этой статье мы прошлись по видам должностей в Data Science, широко используемых видам собеседований, процессу собеседования и дали полезные советы для достижения успеха. Надеюсь, это помогло вам понять, чего следует ожидать, и как лучше подойти к своей миссии поиска работы.

Если вы находитесь в самом начале этого пути, вот какие шаги вы должны сделать:

  1. Выберите одну должность, к которой вы стремитесь, и уделяйте особое внимание собеседованиям, наиболее важным для этой должности. Если вы новичок в этой отрасли, мы рекомендуем должности Аналитиков, концентрируясь на подготовке к собеседованиям Кодирования (SQL) и собеседованиям Метрик/кейсов.
  2. Планируйте наперед. Процесс собеседования обычно занимает не менее 3 недель, от подачи заявления до получения предложения работы. Зачастую он занимает месяцы. Вы должны стараться получить предложения сразу от нескольких компаний одновременно, чтобы максимизировать диапазон ваших возможностей и поднять себе цену.
  3. Приготовьтесь потратить немало времени на собеседования. Да, поиск новой работы – это почти вторая работа на полный рабочий день!
  4. Практикуйтесь, практикуйтесь и практикуйтесь! Попросите своих друзей, уже работающих в отрасли, устроить вам тестовые собеседования. Обязательно просите у них обратную связь, чтобы совершенствоваться.
11
Июн
2021

🗣 «Я даже не видел себя разработчиком, это было просто хобби»

Александр – разработчик на Ruby c семилетним стажем. Он рассказал нашему корреспонденту, какие сложности встречаются в карьере программиста, можно ли стать профессионалом без высшего образования и какие мифы о Ruby – просто мифы.

  • Здравствуйте, Александр! Расскажите о себе.
  • Мне 28 лет. Закончил 11 классов и 1 курс физфака СПБГУ, потом бросил. Живу в Петербурге. Программирование изучал самостоятельно: в школе участвовал в олимпиадах по С++, а потом уже на работе учил.

  • С университетом история довольно простая, выбрал физический факультет, потому что в школе был хороший учитель физики. Выяснил в начале обучения, что физика мне не настолько интересна, насколько я думал, и я стал прогуливать пары.
  • Почему не перевелись на программирование?
  • Как ни странно, программирование тоже не особо интересно, если учится этому в вузе. Один из больших минусов вуза – программа для всех одна. В итоге первый курс для меня разделился на то, что я уже знаю, и то, что мне скучно. В любом случае, когда я начал получать какие то деньги, даже мысли продолжать учебу уже не было.
  • Как получилось, что вы стали Ruby-программистом?
  • Если говорить о выборе, я изначально изучал очень много языков, от Lisp до C++. Все это было последовательно. Когда я изучал Ruby и прогуливал универ, мы как то сидели с другом в кафе, пили чай и наш общий знакомый пришел с историей. Он написал биржевого бота для торговой площадки steam и начал зарабатывать на нем какие-то деньги. Я предложил бесплатно переписать его проект на Ruby, потому что это была интересная практика. История закончилась тем, что у меня был практический опыт разработки около года. Наш «стартап» закончился, когда владельцы Steam закрыли удобные пути вывода средств с биржи, и я пошел искать работу. На резюме с практическим опытом в Ruby отреагировали моментально.
Тогда я особо не задумывался, стоит изучать язык или нет, я изучал языки в очень бодром темпе и так совпало, что история с Ruby закончилась трудоустройством. Хотя я даже не видел себя разработчиком, это было просто хобби.

  • У вас не было проблем при трудоустройстве? Никто из-за корочки не отказывал?
  • У меня есть резюме, где написано, что диплома нет. Если у работодателя в требованиях ВО, то тоже первым не пишу. Даже не знаю, много ли потерял. В высшее образование для прикладного айти я в принципе не особо верю: это в основном нужно теоретикам. Если мне предложат на выбор человека с ВО без стажа и человека без ВО, но со стажем 1 год, я выберу второго.
  • При этом понятно, что опытные программисты математику все равно так или иначе знают, просто теоретикам надо из теории графов знать кучу всего, а практикам определение и какие алгоритмы для работы существуют.
  • Многие пишут, что Ruby не очень популярен в России, разве что для стартапов и релокаций. Это правда?
  • По поводу популярности языка в России – это немного миф, на рынке очень сильный дефицит кадров, в основном джунов и сеньоров. При том что самих вакансий немного, найти работу достаточно легко.
  • Можете сказать, какие скиллы нужны для разработчика на Ruby для джуна, мидла и сеньора?
  • Я бы предпочел сослаться на общепринятые определения. У Ruby нет особой специфики. Джун делает задачи под руководством, мидл может работать самостоятельно, сеньор руководит.
  • Сеньор обычно ставит задачи, но и мидлы могут заниматься постановкой задач. Руководство со стороны сеньора состоит в том, что он определяет, как именно будут сделаны задачи, что они должны затрагивать помимо бизнес скоупа и когда пора заниматься бэклогом. При совмещении с бизнес-процессом сеньор должен выступать скорее экспертом, который помогает тимлиду.
  • Разумеется, в реальности все совершенно не так, и даже джуны являются экспертами в каких то узких областях, а сеньору не стыдно попросить у кого-то помощи в его экспертной области – это просто общая схема. Есть еще стажеры/ньюби/новички. Джуны могут решать задачи любой сложности без руководства, но не очень хорошо. Стажеры все еще учатся этому.
Собственно, тут первое заблуждение с пониманием всего этого. Обычно стажер думает, что стал джуном, когда у него начинает получаться решать свои задачи самостоятельно, но ему пока не ставят очень сложных задач. Джун думает, что становится мидлом, когда ему начинают ставить сложные задачи, и он с ними справляется. Мидл думает, что стал сеньором, когда сеньоры перестают его обильно критиковать. Ну и обычно люди думают, что если они проводят ревью, то они уже сеньоры, хотя я считаю что даже джуны должны принимать участие.

  • У меня есть один знакомый, тоже рубист, кстати, он из стажера перепрыгнул сразу в CTO. Вера в себя есть, нормального понимания того, что нужно от CTO, у работодателя нет, в итоге получаем историю успеха. И в целом он справился. Как говорится, не можешь – научим.
  • Сеньор это должность. Ты можешь быть готов ее занимать, думать что готов ее занимать или ее занимать. Причем то, что ты ее занимаешь, не означает, что ты в принципе готов, но может быть и приятный сюрприз.
  • Сейчас вы на Ruby работаете? Говорят, будто там довольно высокий порог входа. Это правда?
  • В данный момент я уволился с работы (в январе), но продолжаю консультировать бывшую команду и прямо сейчас делаю довольно объемную задачу. Это сложно назвать увольнением даже. Планирую в ближайшее время начать что-то искать, но пока не обновлял резюме.
  • Про высокий порог входа это какой то миф. Я занимаюсь сейчас подготовкой кадров. На знакомство с языком для человека с определенным бэкграундом я отвожу две недели, дальше идет уже знакомство с какими то удобными инструментами и обучение общепринятым практикам. Если брать стажеров с базовым знанием языка, то до уровня джуна они поднимаются за 2 – 4 месяца работы.
  • Фактически вы сейчас занимаетесь обучением?
  • Скорее консалтингом. Обучение занимает у меня несколько часов в неделю. Правильнее даже не консалтинг, а расслабленный фриланс с единственным контрагентом.
  • Чему учите новеньких? Вы учите тех, кто уже что-то знает, или вообще нулевичков?
  • У меня было пока две группы: первая с неоконченным высшим, вторая – просто случайные люди. Совсем с нуля тяжело, плохо понимаю в чем у людей могут быть проблемы. Я познакомился с программированием лет в 8, у меня совершенно другой бэкграунд. Если мы про пару недель на изучение, то это про людей с каким то околоайтишным бэкграундом типа хороших оценок в школе на информатике.
  • Как вы пришли к тому, что стали учить?
  • Учить я начал, потому что мне просто нравится учить людей. Можно учить кого то в интернете жизни, а можно учеников руби. Можно просто помогать с домашкой одноклассникам, тоже обучение. Наверное, примерно в таком порядке и было: сначала чуть чуть помочь подруге с информатикой в школе, потом в универе. Случайно оказавшись в репетиторской тусовке, тоже взял учеников, которые учатся в той же школе и у того же преподавателя, а дальше все как то затихло. Два года назад начал учить сестру с подругами, одна из подруг в итоге работает вместе со мной.
Учить кого то в интернете жизни, кстати, до сих пор нравится больше, хоть и менее продуктивно 🙂

  • Над какими проектами вы работали? Какой из них был самым сложным и интересным?
  • Я работал над gettransfer.com, gettransport.com, wfolio.ru и еще некоторыми проектами. Это не мои проекты, в геттрансфере/транспорте я в принципе был линейным сотрудником. В wfolio.ru – уже сеньором.
Сложными обычно бывают задачи, а не проекты. Самая сложное – это, наверное, промо-акции, которые реагировали на события у пользователей и по каким то настраиваемым правилам выдавали вознаграждение. Но по субъективному ощущению, именно на этой задаче я рос из джуна в мидла.

  • На самом деле это была не одна задача, а много связанных, и не все из них делал я, но я занимался общим рефакторингом архитектуры и потом запиливал большую часть фич, так как кроме меня там мало кто мог разобраться. В целом я воспринимаю это скорее как провал, но я вынес из него много опыта на тему того, как не нужно делать. И было интересно.
  • Из того, с чем сейчас сталкиваюсь, самое сложное – это быстро вникнув в проблему другого человека, объяснить ему решение так, чтобы он мог самостоятельно найти в этом решении несостыковки. Очень мешает авторитет, особенно когда взаимодействуешь с джунами. Тут еще, вероятно, не очень хорошие процессы сказываются: я где-то год хочу попробовать design-review.
Если человек тратит на задачу несколько недель, а ты – пару часов, разумеется, ты не можешь придумать оптимальное решение какой то проблемы. Какой бы у тебя не был опыт, все равно он не переносится дословно.

  • Почему вы решили уйти?
  • Хочется роста, в идеале хочу найти работу, где меня будут учить управлению командой. В принципе, после того как я лучше познакомился с процессом руководства, меня это начало привлекать гораздо больше разработки. Ну и как минимум – разнообразие. Я почти 7 лет пишу код, от этого можно устать.
  • Почему на прежнем месте вы не стали делать карьеру тимлида? Не было возможности?
  • Во-первых, у нас небольшая команда и вряд ли там нужен будет второй тимлид в ближайшем будущем. Во-вторых, это в принципе не так удобно, как расти в большой команде, где тебя могут и научить и подстраховать более опытные лиды.
Говорить о росте сеньора до тимлида в принципе не очень корректно, так как это уже разные направления развития – тут скорее перепрофилирование. Конечно, у сеньора есть набор soft skills, который применим и при работе тимлидом, но на мой взгляд это довольно разные вещи. Сеньор – это эксперт, а тимлид занимается принятием решений. Это разные области.

***

Не все готовы изучать новое сами и покорять вершины так быстро, к тому же опытным специалистам тоже иногда требуется помощь. Идти по пути наименьшего сопротивления и учиться у лучших можно на факультете «Ruby on Rails» образовательной онлайн-платформы GeekBrains. Выпускники курсов получают диплом о профессиональной переподготовке, электронный сертификат и гарантию трудоустройства.

29
Апр
2021

📊 Как начинающий Data Scientist может заработать на фрилансе?

Хотите начать карьерный путь в Data Science в качестве фрилансера? Мы подготовили для вас 8 простых шагов: от регистрации на платформе до обустройства рабочего места.

Независимо от того, являетесь ли вы опытным специалистом по Data Science или входящим в мир фриланса новичком, вы можете столкнуться с трудностями на своем пути. В небольшом обзоре мы разберемся, какие стратегии и инструменты помогут в поиске проектов, как продать себя на рынке фриланса и как получить лучшие офферы.

С чего начать?


Выберите платформу

При поиске фриланс-офферов и проектов обратите внимание на самые крупные и авторитетные российские и международные онлайн-платформы, такие как Upwork, AngelList, Freelancer, Kaggle, Indeed, Peopleperhour, Freelance.ru, Freelancehunt, Weblancer, Workzilla.

Они предлагают массу возможностей, а также предоставляют необходимые для успешной реализации проекта средства: публичный профиль, чат в режиме реального времени с клиентами, функции безопасности, расписание, аналитику и, самое главное, инструменты для управления заработной платой и налогами. Регистрация на сайтах может занять много времени, а в ряде случаев вам придется пройти собеседование. Также вас могут попросить заплатить небольшой взнос, чтобы зарегистрироваться или подать заявку на получение офферов.

Это один из наиболее трудозатратных этапов, поэтому уделите достаточное количество времени созданию хорошего профиля с подробным описанием вашего образования и опыта, а также с информацией о предыдущих проектах. Включите в него ссылки на примеры работы: личный веб-сайт, GitHub, интерактивное портфолио, студенческие проекты или соревнования Kaggle.


Исследуйте рынок труда

Изучите рынок внештатных специалистов по Data Science: для этого можно использовать рейтинги онлайн-платформ. Проанализируйте профайлы и портфолио коллег, их опыт работы и заработную плату. В этом случае сравнение с конкурентами может пойти на пользу.

Большинство высокооплачиваемых специалистов в области Data Science имеют высшее образование в сфере компьютерных наук (как минимум они знают основы математики и статистики), владеют одним или более языками программирования, имеют навыки визуализации и презентации данных с помощью различных инструментов.

О необходимых специалисту по анализу данных ресурсах мы подробнее писали в статьях «Data Science с нуля: обзор книг и видеокурсов для начинающих» и «10 навыков, необходимых в профессии Data Scientist».

Чем больше у вас опыта и чем лучше ваше образование (включая самообучение с помощью онлайн-ресурсов), тем выше ставка, которую вы можете установить. Не хватает практики? Ознакомьтесь с материалом «Обучение на Data Scientist: как получить работу, если без опыта никуда не берут?».


Продайте себя

Если вы начинаете карьеру внештатного специалиста по Data Science, будьте предельно настойчивы в поиске контрактов. Создайте личный веб-сайт с демонстрацией примеров вашей работы и убедитесь, что он прост в навигации, лаконичен и постоянно обновляется. Потенциальные клиенты обязательно захотят заглянуть в ваше портфолио, поэтому приступите к его оформлению в первую очередь.

Не забывайте выходить в сеть. Участвуйте в чатах и личных встречах, спрашивайте о доступной работе и о клиентах, которые ищут фрилансеров. Даже если проектов для вас нет, это не значит, что они не появятся.

Оцените свои навыки

Выберите свою нишу или специальность в области науки о данных. Например, если ли у вас есть опыт в обработке естественного языка, фармацевтики, финансов, компьютерного зрения, розничной торговли или облачных технологий, обозначьте это в начале резюме или профайла. Ваши посты в блоге, примеры проектов и поиск офферов должны быть сосредоточены вокруг выбранной специализации. Это поможет найти подходящий проект намного быстрее и начать строить портфолио даже не имея опыта за плечами.

Определите свой арсенал навыков. Например, знание языка Scala, навыки использования инструментов с открытым исходным кодом, облачных решений или Python могут повысить вашу ставку.

Не бойтесь вести переговоры! Если вы готовы освоить дополнительные навыки в ходе работы над проектом, не спешите отказываться от офферов, которые их требуют. Работа в Data Science – это постоянное самообучение. Если же вы не уверены, что сможете выполнить заказ качественно и в срок, стоит задуматься, стоит ли вознаграждение риска потерять репутацию. Лучше всего – проанализировать свои возможности и не цепляться за каждый оффер.


Определите свою ставку

Для начала определите, какой заработок необходим вам для комфортной жизни. Исходя из этой планки, вашего опыта и ниши, посчитайте, сколько часов/проектов вам необходимо завершить за месяц. В первое время не стремитесь к полной занятости, берите меньше проектов, но делайте их качественно. Тогда заказчики будут возвращаться к вам и смогут порекомендовать другим. Если вы смогли достичь желаемого уровня заработка, поставьте себе новые цели и увеличьте количество проектов.

Определив желаемую ставку, никогда не опускайте руки от отчаяния при поиске офферов. Спрос на специалистов по данным очень высок, а заказчики готовы платить за качественные и креативные проекты.

Проанализируйте среднюю ставку на платформе для специалистов вашего уровня и в зависимости от целей установите свой почасовой тариф. Главное, не занижайте плату за работу, даже если у вас нет опыта: слишком низкий оклад может отпугнуть клиентов.

Как продолжить?


Подготовьте рабочее место

Найдите тихое рабочее место, которое позволит вам быть максимально продуктивным. Если вы чувствуйте себя продуктивным в кофейне или в коворкинге, выделите бюджет на кофе и взнос. Если вы только начинаете, имеет смысл экономить деньги и работать дома, особенно если фриланс является вашим единственным источником дохода.

Если вы решили работать из дома, выделите для этого специальное место. Только отделив личную жизнь от рабочей, вы сможете быть максимально продуктивным.

Прежде чем приступить к фрилансу, убедитесь в надежности и высокой пропускной способности интернет-соединения. Ваша продуктивность напрямую зависит от возможности быть в онлайне. Приобретите удобное кресло, клавиатуру и по возможности дополнительный экран. Рабочее место должно хорошо проветриваться, задумайтесь над покупкой увлажнителя воздуха.

Планирование времени

Основная проблема фрилансера – организация работы и планирование времени. Если каждый день вы перерабатываете, то стоит задуматься о более эффективной организации времени. Вашей цель – работать как можно меньше, а получать как можно больше, наслаждаясь процессом. Оставшееся время нужно использовать для поисков новых клиентов, изучения профессии и нетворкинг. Не стоит забывать и о концепции work-life balance: профессиональное выгорание – проблема многих начинающих фрилансеров, которые спешат наработать опыт и забывают отдыхать.


Присоединись к сообществу и начните строить сеть контактов

Необходимо регулярно посещать мероприятия, где вы можете встретить потенциальных клиентов. Сделайте нетворкинг частью ежедневной рутины. Окружите себя новостями, ресурсами и людьми, которые работают и заинтересованы в сфере Data Science. Подпишитесь на рассылки, ежедневно читайте посты, статьи и книги, слушайте подкасты и смотрите видео на YouTube. Общайтесь с людьми в LinkedIn, просите их о помощи, будьте любопытным и полезным в решении их проблем. Участвуйте в онлайн-дискуссиях и обсуждениях проектов, высказываете свое мнение и задавайте правильные вопросы.

Еще один хороших способ найти заказчиков – посещение конференций и митапов, где вы сможете не только получить знания, но и познакомитесь с готовыми поделиться опытом (и даже вакансиями) людьми. Не просто знакомьтесь с ними: важно быть заметным и показать свой интерес, а также ценность для отрасли. Расскажите, что вы ищете и с кем хотели бы связаться. О вас обязательно вспомнят, когда услышат о новой вакансии. Сделав это, вы получите больше ресурсов для поиска работы и расширения социальной сети контактов.

После завершения проекта для клиента попросите его о рекомендации и отзыве. Отправьте заказчику электронное письмо с краткой анкетой о процессе, а также попросите имена и контактные данные людей с похожими проблемами.

Заключение

Идеальный сценарий работы фрилансером выглядит так: вы выбираете интересные проекты, вы независимы, не привязаны к одному месту или компании, сами определяется рабочую нагрузку и заработную плату. Минусы тоже есть: поиски офферов могут быть оказаться довольно трудозатратными, необходимо всегда выделятся на фоне других специалистов, на наработку репутации и клиентской базы может понадобиться время, а самое главное – необходимо умение организовывать рабочий процесс.

***

Если вы только начинаете свой путь в Data Science, стоит обратить внимание на курс Факультета Искусственного интеллекта образовательной онлайн-платформы GeekBrains. Рассчитанная на 2 года обучения программа – одна из самых объемных и содержательных на рынке. Она включает основательную математическую подготовку, изучение программирования и статистического анализа, а также работу с базами данных, нейронные сети и машинное обучение. Курс построен на основе практической работы с ведущими специалистами технологических компаний и личным помощником-куратором. Успешно завершившие обучение студенты получат диплом о профессиональной подготовке и помощь в трудоустройстве, а также смогут добавить в портфолио реализованные проекты.

16
Апр
2021

🕵 Обучение кибербезопасности: как составить резюме, пройти собеседование и найти работу?

Освоить профессию специалиста по кибербезопасности с нуля и устроиться на работу мечты непросто. Рассказываем, что для этого потребуется.

С каждым днем все больше компаний переходят в онлайн из-за повсеместной диджитализации и пандемии COVID-19. Увеличивается и число кибератак, которые обычно направлены на изменение или уничтожение конфиденциальной информации, вымогательство денег у пользователей или прерывание бизнес-процессов.

Все более важную роль играет защита данных от кражи и манипуляций. Рынку требуются профессионалы, которые смогут противостоять цифровым угрозам, поэтому спрос на специалистов по кибербезопасности достаточно велик.

Совместно с образовательной платформой Skillbox мы составили список советов, которые помогут начинающему специалисту в освоении востребованной профессии.

Знания и навыки, которые нужны специалисту по кибербезопасности для начала карьеры

Кибербезопасность – раздел информационной безопасности и деятельность, направленная на защиту систем, сетей и программного обеспечения от цифровых атак.

Специалист по кибербезопасности занимается поиском и предотвращением угроз, обеспечивает безотказную работу средств программной защиты информации предприятия (паролей, переписки, документов и так далее). Эта специальность также включает создание, тестирование, внедрение и анализ эффективности различных систем безопасности.

Специалист по кибербезопасности должен разбираться в устройстве компьютеров и компьютерных сетей, а также знать методы работы злоумышленников, чтобы предотвратить их атаки. Ему важно понимать, как можно взломать сайт, похитить конфиденциальную информацию, отредактировать или уничтожить базу данных, получить доступ к системе и причинить ей ущерб.

В этой сфере существуют разные профессии:

  • специалист по безопасности приложений;
  • DevSecOps;
  • антифрод аналитик;
  • специалист по корпоративной ИТ-безопасности;
  • аналитик SOC;
  • специалист по реверс-инжинирингу или аналитик кода;
  • разработчик системы защиты информации (СЗИ);
  • специалист по тестированию безопасности;
  • специалист по форензике или расследованию кибер-преступлений;
  • специалист по архитектуре безопасности;
  • пентестер.

Все это разные специализации, но со сходными целями и задачами. Главное для экспертов в этой области – обеспечить максимальную безопасность продукта, вовремя обнаружить угрозы и уязвимости, проанализировать и ликвидировать их, а также уменьшить вероятность их повторного возникновения.


Технические знания и навыки, необходимые специалисту по кибербезопасности:

  • знание языков программирования (например Python, Java);
  • знание общих концепций разработки программного обеспечения и навыки его анализа;
  • чтение кода для выявления скрытых источников внешнего вторжения;
  • понимание и использование сетевого ПО и программного обеспечения для виртуализации;
  • использование брандмауэров и балансировщиков сетевой нагрузки;
  • знание баз данных (SQL);
  • умение работать с системами обнаружения (IDS) и предотвращения (IPS) вторжений, а также настраивать их интеграцию с межсетевым экраном;
  • использование расширенного программного обеспечения для предотвращения, обнаружения и идентификации расширенных постоянных угроз (APT);
  • умение обрабатывать, анализировать и безопасно хранить все типы данных.

Гибкие навыки, которые пригодятся специалисту по кибербезопасности:

  • внимательность к деталям;
  • аналитические навыки;
  • активные межличностные и коммуникативные навыки;
  • навык критического мышления;
  • способность быстро адаптироваться к изменениям.

Чтобы начать карьеру в сфере кибербезопасности достаточно:

  • овладеть базовыми знаниями и навыками работы с операционной системой Linux;
  • освоить работу с компьютерными сетями на базовом уровне;
  • уметь работать с командной строкой;
  • иметь опыт по настройке систем защиты на основе антивирусов и Windows;
  • знать IP-адресацию и статистическую маршрутизацию;
  • знать сетевые модели передачи данных TCP/IP, ISO/OSI;
  • иметь опыт администрирования Active Directory: настройки групповых политик (GPO) и управления правами пользователя;
  • иметь опыт управления базами данных (MySQL, PostgreSQL,);
  • иметь опыт работы c веб-серверами (nginx, Apache);
  • знать принципы и методы осуществления кибератак;
  • понимать устройство компьютерной техники от А до Я.

Инструменты для новичков в области кибербезопасности


Инструменты, с которых можно начать изучение кибербезопасности на практике.

Инструменты мониторинга сетевой безопасности:

  1. Splunk (используется как для поиска данных об угрозах, так и для проведения сетевого анализа в режиме реального времени);
  2. OSSEC (инструмент кибербезопасности с открытым исходным кодом для обнаружения вторжений в сеть);
  3. Nagios (с его помощью можно контролировать сети, подключенные хосты и системы в режиме реального времени).

Инструменты шифрования:

  1. TrueCrypt (с помощью этого инструмента можно зашифровать все устройство хранения, раздел носителя или создать виртуальные зашифрованные диски в файле);
  2. KeePass (инструмент для управления идентификацией).

Инструменты сканирования веб-уязвимостей:

  1. Nmap (используется для сканирования сетей и IТ-систем с целью выявления существующих уязвимостей безопасности);
  2. Nikto (бесплатный сканер уязвимостей командной строки, который сканирует веб-серверы на наличие опасных файлов/CGI, устаревшего серверного программного обеспечения и других проблем);
  3. Nessus (инструмент для анализа уязвимостей и создания отчетов);
  4. Burp Suite (инструмент для сканирования систем в режиме реального времени с целью выявления критических уязвимостей).

Инструменты защиты сети:

  1. Aircrack-ng (набор программ, предназначенных для обнаружения беспроводных сетей, перехвата передаваемого через беспроводные сети трафика, аудита WEP и WPA/WPA2PSK ключей шифрования).

Инструменты для аудита паролей и анализаторы трафика (снифферы):

  1. John the Ripper (инструмент для быстрого определения слабых паролей, которые могут представлять угрозу безопасности защищенной системы);
  2. Wireshark (инструмент для анализа сетевых протоколов и сетевой безопасности в режиме реального времени).

Инструменты для обнаружения сетевых вторжений:

Snort (программное обеспечение с открытым исходным кодом для обнаружения и предотвращения вторжений в сеть).

Сертификаты, а также книги и каналы на YouTube, которые пригодятся начинающему специалисту

Список необходимых специалисту по кибербезопасности знаний и навыков достаточно широк. Бояться этого не следует, ведь есть масса вариантов для изучения теории и применения ее на практике.

Один из самых действенных способов – пройти курс образовательной платформы Skillbox с возможностью создать портфолио, которое и станет вашим первым опытом работы, и которое вы добавите в резюме. За два года обучения слушатели освоят архитектуру современных сайтов, узнают о проблемах безопасности и научится их решать.

<a href="https://proglib.io/w/67995197" target="_blank" rel="noopener noreferrer nofollow"><b>Профессия «Специалист по кибербезопасности»‎ от Skillbox</b></a>
Профессия «Специалист по кибербезопасности»‎ от Skillbox
Начать обучение на курсе и достичь результатов можно даже с нулевым опытом в программировании.
В программу включены не только лекции, но и практические занятия. Вы подготовите пять проектов и дипломную работу, а также научитесь программировать на Python и Bash, разбираться в системном и сетевом администрировании, находить и эксплуатировать уязвимости ОС и приложений, работать с большим арсеналом хакерского ПО.

Сертификаты, методологии и документы

Сертификат международной ассоциации будет выгодно отличать вас от других кандидатов и покажет серьезные профессиональные намерения.

Обратите внимание на следующие программы сертификации: CompTIA Security+, CompTIA Network +, CCNA, CISSP, CBROPS.

Наличие выданного уважаемой организацией документа поднимает статус специалиста, но если у вас нет возможности его получить, пройдите обучение по материалам подготовки, которые несложно найти в сети. Это заменит часть программы курсов, если вы решили получить знания самостоятельно.

Методологии и документы с требованиями и руководствами для специалистов по информационной/кибербезопасности:

Книги

Пентест компании:

Пентест веб-сайта:

Пентест приложений:

YouTube-каналы

Полезные каналы на YouTube, которые пригодятся начинающим специалистам по кибербезопасности:

  1. Black Hat;
  2. LiveOverflow;
  3. The PC Security Channel;
  4. Hak5;
  5. Pentester Academy TV;
  6. UnderMind;
  7. Russian OSINT;
  8. My CS;
  9. The Cyber Mentor;
  10. Cyberspatial.

Как составить резюме и пройти собеседование на позицию специалиста по кибербезопасности


Правильно составленное резюме значительно увеличит шансы соискателя на успех при прохождении собеседования и трудоустройстве. Вот некоторые базовые принципы, которых стоит придерживаться при написании резюме:

  1. Простая и легкая структура. Формат резюме не менее важен, чем его содержание. Разбейте документ на блоки (личная информация, профессиональный опыт, обязанности, образование, сертификаты и курсы, навыки) и выделите заголовки, шрифт должен быть простым и легко читаемым. Старайтесь не растягивать резюме больше, чем на две страницы. Оптимальный размер: 1 – 1,5 страницы для начинающего специалиста;
  2. Если у вас еще нет профессионального опыта или специального образования, укажите информацию о прохождении курсов. Современные онлайн-курсы почти полностью заменяют университетское образование и даже опыт работы. Главное их преимущество – возможность попрактиковаться и сразу выполнить несколько проектов, а также сдать экзамен или подготовить дипломную работу. Все эти материалы вы можете добавить в резюме;
  3. Самообучение – тоже опыт. В качестве профессионального опыта вы также можете указать созданный вами pet-проект или условный стартап, а также участие в программах Bug Bounty, конкурсах, хакатонах и прочем;
  4. Опишите гибкие навыки. Ваши soft skills не менее важны, чем технические навыки. В современных корпорациях ценится способность специалиста работать в команде, эффективно решать проблемы и ориентироваться на результат. Определите свои сильные стороны и укажите их в резюме;
  5. Проверьте резюме на грамотность. В процессе подготовки вы можете не заметить недочетов, поэтому лучше сделать вычитку, чтобы не пропустить грамматические и пунктуационные ошибки.

Если резюме произведет позитивное впечатление на работодателя – ждите приглашения на собеседование. Вопросы, которые вам могут задать можно разделить на две части.

теоретический блок (примеры вопросов):

  1. В чем разница между симметричным и асимметричным шифрованием?
  2. Что такое traceroute?
  3. Объясните шифрование SSL.
  4. Какие шаги вы предпримете для защиты сервера?
  5. Как можно предотвратить кражу личных данных?
  6. Как бы вы сбросили конфигурацию BIOS, защищенную паролем?
  7. Что такое XSS-атака и как ее предотвратить?
  8. В чем разница между VPN и VLAN?

вопросы на основе сценария: интервьюер перечислит несколько предполагаемых ситуаций, которые могут возникнуть в процессе работы или повседневной жизни. Вы должны наиболее точно описать свои действия и технические решения, в том или ином сценарии.

Подготовьтесь к небольшому экзамену и возможному тестовому заданию. Прочтите информацию о предполагаемом работодателе и подготовьте встречные вопросы.

Где получить первый опыт в профессии


Не имея подтвержденного стажа работы трудоустроиться сложно, а чтобы получить опыт, нужно найти работу. Разорвать порочный круг можно несколькими способами:

  1. Найти компанию, которой нужны стажеры в области кибербезопасности. Скорее всего стажировка будет бесплатной, но это отличная возможность набраться опыта и на практике столкнуться с реальными задачами;
  2. Пройти курс обучения, либо получить базовые знания самостоятельно;
  3. Решать практические задачи на платформах для тренировки навыков: root-me.org, cryptohack.org, attackdefense.com, Hack The Box, CTFTime;
  4. Участвовать в хакатонах;
  5. Участвовать в программах Bug Bounty: HackerOne, SynAck, YesWeHack, BugCrowd.
***

Чтобы самостоятельно освоить профессию специалиста по кибербезопасности, нужно проявить упорство, а также потратить немало времени на обучение и закрепление полученных знаний на практике. Более простой способ – пройти курс Skillbox.

Под руководством опытных преподавателей слушатели получат структурированную информацию по составленной профессионалами программе. После завершения курса в вашем портфолио появится пять реализованных проектов и дипломная работа. Консультанты образовательной платформы помогут и с трудоустройством. Удачи вам в обучении и поиске работы мечты!

07
Апр
2021

☕ 7 причин стать разработчиком на Java в 2021 году

Стремительно меняющиеся тренды, новые языки и высокие требования к коду ставят перед новичком вопрос: какой язык изучать, чтобы наверняка? Мы рекомендуем выбрать Java, несмотря на огромное количество ультрамодных альтернатив.

Java – строго типизированный, объектно-ориентированный язык программирования общего назначения, который держится в топах не первое десятилетие. По версии Developer Survey он входит в пятерку самых популярных в мире языков.

В изучении Java есть много нюансов, поэтому другие варианты тоже стоит рассмотреть, но списывать «старичка» со счетов рановато. Тому есть множество причин.

Причина 1: распространенность Java

Существует индекс TIOBE, оценивающий популярность языков программирования на основе подсчета результатов содержащих их названия поисковых запросов. По данным за март 2021 года Java занял вторую строчку в рейтинге, а в 2005-м и в 2015-м он становился языком года.

Если посмотреть внимательно на жизнь современного человека, можно обнаружить приложения на Java в его телефоне, планшете, приставке и много где еще. Мировые инвестиционные банки используют Java, на нем пишут корпоративные и научные приложения, а также программы для встраиваемых систем, включая беспилотный транспорт, медицинских роботов и космическую технику. Складывается впечатление, что все используют Java.

Есть ли в мире еще какой-то язык, который был бы везде?

Причина 2: востребованность специалистов


Вторая причина напрямую вытекает из первой. На сегодняшний день сайт hh.ru выдает 8 105 вакансий по запросу «Java программист».


Востребованность разработчиков прямо пропорциональна популярности языка. Программисту на Java найдется работа практически в любой точке мира. К слову, по индексу TIOBE язык Python идет следом за Java, а поиск «Python программист» на портале вакансий выдает результатов меньше почти на 18% – 6 688.

Причина 3: перспективы Java

Даже если завтра весь цифровой мир решит, что Java ему больше не нужен, останется огромное количество существующих приложений в миллионах организаций. Этот код кто-то будет поддерживать долгие годы (скорее даже десятилетия). При этом знания и образ мышления, которые получает осваивающий Java разработчик, не устареют никогда и пригодятся, даже если нужно будет изучить другие языки программирования.

Причина 4: Java зрелый и развивающийся


Удивительная особенность Java – обратная совместимость. В виртуальной машине можно запустить написанный 20 лет назад код.

Хотя языку Java 25 лет, он не остановился в развитии и продолжает активно совершенствоваться. Начиная с Java 9 раз в полгода выходят новые версии. Создатели языка соблюдают равновесие между обратной совместимостью и гибкостью к изменениям. Такой подход позволяет найти правильный баланс: язык развивается, но остается стабильным. При этом выпускаются релизы с долгосрочной поддержкой, что очень важно для корпоративных пользователей. Разработчики могут писать софт, который не устареет долгие годы.

Причина 5: Java формирует мышление и прививает стандарты

После изучения синтаксиса Java вам будут доступны все C-подобные языки, где присутствуют операторные скобки и специальные символы, которых нет в Python. После Java можно быстро освоить JavaScript, Scala, Rust, C, C++, C# и Solidity.

Java был задуман для программирования электронных бытовых устройств – подразумевалось, что он будет легким и быстрым. Язык изначально создавался, чтобы быть эффективным.

Один из основных плюсов изучения Java – формирование правильного мышления, выработка хорошего стиля программирования и освоение ряда важнейших для разработчика концепций. Азы объектно-ориентированных языков станут крепким фундаментом, который всегда пригодится в работе. Знающий Java человек умеет не только правильно ставить символы в код, но и глобально понимает логику создания приложения. В этом смысле лучше только системное программирование на C/C++, но оно подходит немногим.

Еще одно достоинство Java – стандарты. Они позволяют не задумываться, например, как происходит взаимодействие с базами данных, потому что оно всегда одинаково благодаря JDBC. Дополнительные сведения о стандартизации Java можно почерпнуть здесь.

И конечно Java вобрал в себя лучшие практики объектно-ориентированного программирования.

Причина 6: Java открыт


В силу возраста и особенностей Java заставляет программиста использовать такое количество инструментов и помощников, что это может пригодиться даже после смены основного языка.

Для Java написано огромное количество библиотек и фреймворков, при этом многие с открытым исходным кодом (как и сам Java, кстати). Популярные инструменты, вроде Spring и Spring Boot, значительно упрощают разработку небольших сервисов или сложных корпоративных приложений. Благодаря стандартизации нетрудно разобраться в любой библиотеке.

Java поставляется с открытым исходным кодом и дает возможность работать с различными поставщиками и учиться у тех, кто создал что-то мощное и решил множество сложных задач.

Причина 7: огромное сообщество

Одно из достоинств, которое напрямую связано с возрастом. За прошедшие годы приложения на Java разрабатывались под различные платформы и задачи в самых разных сферах. Появлялись школы, курсы и практики программирования на Java.

Вокруг языка сформировалось огромное коммьюнити, которое продолжает расти и развиваться, как растет и развивается язык. Программисты всего мира могут даже присоединиться к каналу Virtual Java User Group. Всегда можно получить поддержку на начальных этапах, чтобы развиваться и узнавать новое, а потом и самому помогать новичкам, обмениваться опытом с коллегами и оттачивать мастерство.

***
Постоянное развитие и адаптация – благодаря им Java успешно удерживается в топе много лет. Есть языки, которые можно изучить проще и быстрее. Есть языки, в которых вам не понадобится такое количество прикладных навыков. Однако перспективы, которые открывает Java, настолько широки, что вакансии можно будет выбирать в любой нише. Еще можно запросто менять отрасли, изучать другие языки, но возвращаться к Java и быть в тренде хоть до пенсии.

Чтобы стать высококлассным специалистом, понадобятся годы, но изучить основы Java и стать junior-разработчиком можно за несколько месяцев, параллельно прокачивая навыки «в полях». Такой подход дает неплохой бонус, ведь вопросы можно задавать и коллегам и преподавателям. Если вас заинтересовал этот вариант, обратите внимание на курс «Профессия Java-разработчик» от Skillbox. Онлайн-университет предлагает отсрочку оплаты обучения, чтобы дать новоиспеченному программисту возможность трудоустроиться. При этом с вами работает куратор, а доступ к курсу открыт всегда.

Есть языки для изучения которых понадобиться меньше времени и меньше трудозатрат, но выбрав Java, вы получите багаж, который пригодится в работе с любым языком. Удачи в обучении!

16
Мар
2021

👨‍🔧️ «Диплом ради диплома или галочки никому не нужен»

Считается, будто профессию тестировщика освоить относительно несложно. На самом деле стать высококлассным инженером по Quality Assurance нелегко: Любовь Попова рассказала нашему корреспонденту, почему из программирования она решила уйти в Q…

04
Мар
2021

∞ Обучение на инженера DevOps: как не имея опыта найти работу?

Рассказываем, как получить первый опыт и работу в DevOps. Какие знания, умения и навыки вам для этого понадобятся и к чему нужно быть готовым на собеседовании.

Почему в DevOps не…

25
Фев
2021

📊 Обучение на Data Scientist: стоит ли игра свеч?

Чтобы стать специалистом по Data Science, требуется приложить много усилий, поэтому мы подготовили для вас небольшой обзор рынка труда и способов сменить профессию.

В 2021 году спрос на Data Scientists все еще превышает количество доступных специалистов, актуальность профессии обусловлена также увеличением спроса на прогнозную аналитику. Поскольку 2020 год стал невероятно трудным практически для всех отраслей экономики, многие компании все больше нуждаются в основанных на данных решениях и прогнозах. Без специалистов по анализу данных уже невозможно оперативно отслеживать рыночные тренды и моделировать стратегии продвижения бизнеса.

Оценка рынка

Согласно отчету LinkedIn Emerging Jobs Report, начиная с 2012 года только в течение пяти лет количество рабочих мест в области науки о данных увеличилось на 650%. В докладе LinkedIn Emerging Jobs Report 2020 года роль искусственного интеллекта и науки о данных продолжает расти почти во всех отраслях. А по данным Glassdoor 50 Best Jobs in America, Data Scientist остается в тройке лучших вакансий в США. В совместном исследовании Академии больших данных MADE и hh.ru также сообщается, что за прошедшие 5 лет вакансий в области анализа данных стало больше в 9,6 раза, а в области машинного обучения — в 7,2 раза.

Начальная зарплата Data Scientist с опытом работы до года – от 113 тыс. рублей. Через 1 – 2 года такой специалист может получать уже до 160 тыс. рублей. Для сотрудника с опытом работы от 4 – 5 лет вилка вырастает до 310 тыс.

О чём специалисту по анализу данных следует задуматься при переговорах о зарплате в 2021 году?

Персональные факторы:

  • Опыт работы: новичок (junior), 1-3 года (middle) или 6+ лет (senior);
  • Уровень образования: самостоятельное обучение через курсы, опыт работы над проектами, степень магистра или PhD;
  • Владение необходимыми навыками: Python, R, SQL, TensorFlow, Deep Learning и т.д.;
  • Предыдущая работа: ожидание такой же или более высокой заработной платы на следующей позиции.

Особенности компании:

  • Расположение: зарубежная или российская компания, большой/маленький город, удаленно/в офисе;
  • Тип компании: компании-гиганты (Google, Amazon, Yandex и т.д.), средний и малый бизнес, НКО, университет, государственная компания;
  • Другие Data Scientists в команде: распределение обязанностей, нагрузка, общий бюджет на команду Data Science;
  • Должность: например, Senior Data Scientist, Junior Data Scientist, Data Science инженер, стажер и т.д.

Даже если вы знакомы со средней зарплатой на желаемой позиции, чтобы во время интервью определить корпоративные и личные ожидания, придется принять во внимание указанные факторы.

Насколько реально сменить профессию?


Для специалистов из смежных областей

Если вы хотите перейти в науку о данных из смежных областей, вроде математики и статистики, физики, программирования и компьютерных наук, у вас есть большое преимущество. Имеющиеся навыки и опыт работы позволят вам намного быстрее погрузиться в новую специализацию. При выборе специализации Data Science, не спешите сразу к ней переходить. Изучите смежные с вашей нынешней профессией сферы – это может облегчить смену рода занятий. Например, математику будет лучше освоить алгоритмы машинного обучения и Deep Learning, а разработчику программного обеспечения не составит труда перейти к анализу данных.

Для абсолютных новичков

Насколько погружение в Data Science с нуля может показаться пугающим минусом, настолько оно может оказаться большим плюсом на практике. У новичков в любой профессии есть огромное преимущество, которое заключается в их высокой мотивированности и желании стремительно погрузиться в новое. Это будет отличной основой для работы в Data Science, так как специалисты в данной сфере часто сталкиваются с необходимостью осваивать техники и инструменты с нуля.

Способы получить профессию


Навыки и образование

Одним из распространенных заблуждений является мнение, будто для работы в Data Science необходима степень в компьютерных науках или математике. Вам не нужно стремиться получить степень магистра. Для работы с алгоритмами машинного обучения и Deep Learning действительно могут понадобиться знание математического анализа, линейной алгебры и теории вероятностей, но это не означает, что вы не сумеете получить навыки самостоятельно. Владение различными инструментами управления данными, а также умение учиться намного важнее, чем формальное образование. Если верить описаниям актуальных вакансий, наиболее востребованными навыками и инструментами для Data Scientist являются следующие:

Все необходимые знания, которые помогут начать карьеру Data Scientist также включены в программу курса Профессия Data‌ Scientist, который позволит освоить навыки с помощью практических задач и работы над проектами.

Направления и обзор вакансий

Существует несколько основных ролей специалистов по Data Science, каждая из которых направлена на решение определенных проблем с помощью данных:

  • Data Scientist – специалист, который с помощью различных инструментов, методов, методологий и алгоритмов получает инсайты из огромного объема информации. Он выполняет исследовательский анализ, а также использует различные виды алгоритмов машинного обучения для составления прогнозов. Data Scientist сосредоточен на выявлении неизвестных корреляций, скрытых моделей и рыночных тенденций.
  • Data Engineer отвечают за поиск тенденций в наборах данных и разработку алгоритмов, помогающих компаниям извлекать инсайты из необработанной информации. Эти специалисты работают с большими объемами информации, и занимаются разработкой, конструированием, тестированием и поддержкой архитектуры крупномасштабных систем обработки и баз данных. Data Engineers также должны понимать, как оптимизировать поиск данных, как сделать информационные панели, отчеты и другие виды визуализации понятными для всех заинтересованных сторон.
  • Аналитик данных отвечает за получение и обработку больших объемов информации. В его обязанности также включены проектирование и обслуживание информационных систем и баз данных: исправление ошибок кодирования и других проблем. Аналитик будет использовать статистические инструменты для интерпретации данных, уделяя особое внимание тенденциям и закономерностям, которые могут быть полезны для диагностической и прогностической аналитики. В его задачи также входит предоставление отчетности и визуализация анализа данных, которые будут использованы для принятия наиболее эффективных бизнес-решений.
В Data Science множество направлений. Делайте выбор в зависимости от вашего образования, опыта и личного интереса. Поговорите с людьми, которые работают в отрасли, чтобы выяснить, какие обязанности придется выполнять и каких навыков потребует желаемая должность.

Противоречия


Чтобы ответить на вопрос «стоит ли игра свеч?», нужно учесть и минусы профессии Data Scientists. Наука о данных быстро развивается, а это означает, что вам необходимо всегда оставаться в курсе последних достижений и лучших практик. Действующему специалисту придется постоянно следить за последними технологиями и разработками, быстро учиться и самостоятельно осваивать новые темы.

Если взвесив все плюсы и минусы вы решили, что Data Science точно для вас, обратите внимание на курс «Профессия‌ ‌Data‌ ‌Scientist‌»: обучение на специалиста по Data Science онлайн от Skillbox. Он предназначен для начинающих программистов и аналитиков, а также для желающих кардинально сменить профессию. Цель курса дать студентам знания и навыки, которые могут понадобиться в реальной работе Data Scientist. Программа включает основательную математическую подготовку, занятия по Python, R и SQL, а также по аналитике и машинному обучению. Особенность курса заключается в проектно-ориентированном обучении, во время которого вы сможете на практике понять, как применять методы Data Science для решения бизнес-проблем.

***

Бонус для читателей

Если вас заинтересовала возможность построить карьеру в новой и перспективной области, но вы не готовы принять решение здесь и сейчас, Skillbox предоставляет возможность начать обучение и ознакомиться с 2 модулями программы бесплатно. Вы освоите основы языка Python для анализа данных, а также сможете начать работать в Jupyter Notebook. Для своих студентов в Skillbox предусмотрели удобные условия по рассрочке оплаты за обучение – оплата курсов возможна через год после начала занятий.

10
Фев
2021

👨‍🔧️ Обучение на тестировщика: как получить работу, если без опыта никуда не берут?

Пройти подготовку – только половина дела для будущего инженера Quality Assurance. Хотя порог входа в профессию тестировщика довольно низкий, новичкам часто отказывают на собеседованиях. Разбираемся, как решить эту проблему.

06
Фев
2021

☕ Востребован ли язык программирования Java за границей?

Широкое распространение Java привело к тому, что знающие этот язык разработчики пользуются большим спросом. Попробуем разобраться, насколько они востребованы за рубежом.

Что тако…

02
Фев
2021

☕ Из джунов в мидлы: каверзные вопросы по JavaScript на собеседованиях

Собеседования для разработчиков Junior и Middle – разные виды спорта. Совместно с Яндекс.Практикумом мы попробуем на практических примерах разобраться, чем отличаются требования к программистам на JavaScript разного уровня.

Если вы хотите успешно пройти собеседование, нужно обратить внимание на моменты, по которым обязательно будут заданы каверзные вопросы. Как избежать ловушек и какие знания стоит подтянуть? В этом материале собраны вопросы из реальных интервью с претендентами на трудоустройство в крупные ИТ-компании. Чтобы понять разницу между требованиями к специалистам уровней Junior и Middle, начнем с самого простого.

Вопросы для джунов

Во время собеседования на позицию Junior JavaScript developer стоит ожидать вопросов о манипуляциях с DOM, использовании наиболее распространенных методов массива и многих других вопросов по основам JavaScript. Их все сложно перечислить. При этом от джуна едва ли будут ожидать досконального знания абстрактных алгоритмов или параллелизма. Скорее на таком собеседовании рекрутер постарается понять вашу мотивацию и обучаемость. Конечно, вы должны понимать код на JavaScript и уметь писать простые функции.

На собеседовании вас могут ожидать следующие вопросы:

1. В чем разница между использованием «var», «let» и «const»?

2. Как показать пользователю уведомление о том, что в его браузере не включен javascript?

3. Почему важен порядок добавления скриптов на страницу?

4. Как получить текущий URL?

5. Как проверить, что переменная не является неопределенной? Как проверить, что свойство существует в объекте?

6. Написать простую функцию, чтобы проверить, является ли число целым?

7. Как остановить функцию setInterval?

8. Список примитивных типов в JavaScript

9. В чем разница между Java и JavaScript?

10. Что такое функция имени в JavaScript и как ее определить?


Правильные ответы

1. Разница в уровне охвата

Var – Оператор переменных JavaScript используется для объявления переменной и, при желании, мы можем инициализировать значение этой переменной.

        var a = 10;
    

Объявления переменных обрабатываются перед выполнением кода.

Const – идея константных функций не позволяет им изменять объект, для которого они вызываются. Когда функция объявлена ​​как const, ее можно вызывать для любого типа объекта.

Let – это сигнал о том, что переменная может быть переназначена, например, счетчик в цикле или замена значения в алгоритме. Он также сигнализирует, что переменная будет использоваться только в блоке, в котором она определена.

2. Показать пользователю уведомление о том, что в его браузере не включен javascript

        <noscript>Your browser does not support JavaScript!</noscript>
    

3. Библиотеки следует добавлять раньше, чем скрипты, которые их используют

Например, следующий фрагмент приведет к ошибке «Uncaught ReferenceError: jQuery is not defined»

        <script src="js/jquery.easing.js"></script>
<script src="js/jquery.js"></script>
    

4. Получить текущий URL

        window.location.href
document.URL
    

5. Проверить, что переменная не является неопределенной, что свойство существует в объекте

         if (typeof someVar !== "undefined") {
    // делаем что-то
}
 
// проверяем свойство с наследованием
if ('someProperty' in object) {
    // делаем что-то
}
 
// проверяем свойство без наследования
if (object.hasOwnProperty('someProperty')) {
    // делаем что-то
}
    

6. Функция, чтобы проверить, является ли число целым

        function verifyInt(num) {
  return num % 1 === 0;
}
    

7. Остановить функцию setInterval

         // повторяем с интервалом в 1 секунду
let intervalId = setInterval(() => console.log('tick'), 1000);
 
// остановимся через 10 секунд 
setTimeout(() => { clearInterval(intervalId); console.log('stop'); }, 10000);
    

8. Список примитивных типов

Тип числа представляет как целые числа, так и числа с плавающей запятой.

Тип строки должен быть заключен в кавычки.

Логический тип имеет только два значения: true и false.

9. Разница между Java и JavaScript

Язык программирования JavaScript разработан Netscape, Inc и не является частью платформы Java.

Приложения Java запускаются на виртуальной машине или в веб-браузере, а JavaScript – в веб-браузере и некоторых серверных средах.

Код Java компилируется, тогда как код JavaScript находится в тексте и на веб-странице.

JavaScript – это язык сценариев ООП, тогда как Java – язык программирования ООП.

10. Функция имени

Именованная функция объявляет имя, как только оно определено. Ее можно определить с помощью ключевого слова функции как:

        function named(){
// write code here
}
    

Вопросы для мидлов

Претендентам на начальные позиции в разработке каверзных ловушек не ставят – знания основ синтаксиса и умения писать несложные программы на JavaScript хватит для большинства случаев. Срезаться можно разве что на не связанных непосредственно с языком программирования нюансах: при проверке общей грамотности в сфере ИТ, а также вашей мотивации и готовности работать в команде.

С мидлами история совершенно иная. В отличие от нанимаемых на потоке по готовым скриптам джуниоров, это уже штучный товар – требования к программистам среднего уровня предъявляются более серьезные и собеседуют их куда тщательнее. Приведем основные разделы (и вопросы по ним), на которых срезают многих претендентов.

1. Преобразование типов

Иногда Javascript ведет себя не совсем очевидно. Разработчик должен знать правила, по которым выполняется преобразование типов во время выполнения операций. Знание правил может предотвратить множество ошибок.

Примеры кода, результат выполнения которого должен быть очевиден для разработчика:

5 + ‘2’ Что на выходе?

5 – “2” Что на выходе?

true + true Что на выходе?

2. Promise

Перепишите пример, используя promise:

        const printSec = (number, callback) => {

  setTimeout(() => {

      console.log(`${number} sec`)

      callback()

    },

    1000)

}

printSec(1, () => {

  printSec(2, () => {

    printSec(3, () => {})

  })

})
    

3. Прототипное наследование

Как работает прототип?

4. Цикл событий

Что произойдет со страничкой в результате выполнения этого кода?

        function foo() {

    setTimeout(foo, 0);

}

foo();
    

5. Какие типы данных представлены в javascript?

6. Как найти сумму элементов массива, если вложенность массива неизвестна?

        arraySum([[1, 2, [3, 4]], [9], [10, 12]])
    

7. В чем причина помещения всего содержимого исходного файла JavaScript в книгу функций?

8. Перечислите специальные числовые значения

9. Какое предназначение файла package-lock.json?

10. Что такое запросы между источниками и CDN?


Правильные ответы

1. Преобразование типов

        5 + '2' // "52"

5 + '2' == '5' + '2' == '52'

5 - "2" // 3

5 - "2" == 5-2 == 3

true + true // 2

true + true == 1 + 1 == 2
    

2. Promise

это достаточно современный подход написания асинхронного кода. Ранее использовался подход с использованием колбеков. При большой вложенности получался т.н. «ад обратных вызовов».

При использовании промисов код выглядит читабельно и удобен для редактирования:

        const printSec = (number) => {

  return new Promise((resolve, reject) => {

   setTimeout(() => {

        console.log(`${number} sec`)

        resolve()

      },

      1000)

  })

}

printSec(1)

  .then(() => printSec(2))

  .then(() => printSec(3))
    

3. Прототипное наследование

Каждый объект в JS имеет базовый объект – прототип. Если свойство не находится в исходном объекте, то поиск продолжается в его “родительском” объекте.

Установить прототип объекта можно только во время создания объекта: если вы создаете новый объект с помощью новой Func(), свойство объекта [[Prototype]] будет установлено на объект, на который ссылается Func.prototype.

4. Цикл событий

Middle-разработчик должен понимать как устроен движок Javascript.Ответ: ничего особенного. Задачи будут добавляться в цикл событий, но они не вызовут ни переполнения стека, ни бесконечной очереди, которая затормозит весь сайт. Так как макротаски после выполнения пропускают один цикл для отрисовки контента и выполнения микротасков, в отличие от микротасков, которые выполняются все в очереди перед тем, как передать управление следующему пункту в цикле событий.

        function foo() {

    return Promise.resolve(1).then(foo);

}

foo();
    

Выполнение данного кода вызовет затормаживание интерфейса, т.к. при выполнении одного микротаска в очередь добавляется новый микротаск, который сразу же должен выполниться, без передачи управления другому пункту цикла событий.

5. Типы данных

Чтобы узнать тип переменной JavaScript, мы можем использовать оператор typeof. String – представляет собой серию символов и записывается в кавычках. Строку можно представить в одинарных или двойных кавычках.

Number – представляет собой число и может быть записано с десятичными знаками или без них.

BigInt – используется для хранения чисел, превышающих ограничение типа данных Number. Он может хранить большие целые числа и представлен добавлением «n» к целочисленному литералу.

Boolean – представляет собой логическую сущность и может иметь только два значения: истина или ложь. Логические значения обычно используются для условного тестирования.

Undefined – когда переменная объявлена, но не назначена, она имеет значение undefined, и ее тип также не определен.

Null – представляет несуществующее или недопустимое значение.

Symbol – это новый тип данных, представленный в версии JavaScript для ES6. Он используется для хранения анонимного и уникального значения.

Object – используется для хранения коллекции данных.Важно помнить, что любой тип данных, который не является примитивным типом данных, относится к типу объекта в javascript.

Array – это не отдельный тип данных, на самом деле это Object. `typeof null` равен “object” и это нужно учитывать в проверках.typeof “John Doe” // Возвращает “string”

        typeof  3.14 // Возвращает "number" 

typeof  true // Возвращает "boolean" 

typeof  234567890123456789012345678901234567890 n // Возвращает bigint 

typeof  undefined // Возвращает undefined 

typeof  null // Возвращает "object" 

typeof Symbol ( 'symbol' ) // Возвращает символ
    

6. Найти сумму элементов массива, если вложенность массива неизвестна

        // используя рекурсию
function arraySum(arr) {
    let sum = 0;
    arr.map((item) => {
        if (Array.isArray(item)) {
            sum += arraySum(item);
        } else {
            sum += item;
        }
    });
    return sum;
}
console.log(arraySum([[1, 2, [3, 4]], [9], [10, 12]]));
    

7. Причина помещения всего содержимого исходного файла JavaScript в книгу функций

Этот метод создает замыкание вокруг всего содержимого файла, что создает частное пространство имен и тем самым помогает избежать потенциальных конфликтов имен между различными модулями и библиотеками JavaScript.

Еще одна особенность этого метода – легко создать псевдоним для глобальной переменной. Это часто используется в плагинах jQuery.

8. Специальные числовые значения

Infinity больше любого числа

-Infinity меньше любого числа

NaN представляет собой ошибку (не число)

9. Предназначение файла package-lock.json

package-lock.json автоматически создается для любых операций, когда npm изменяет дерево node_modules или package.json. Он описывает точное дерево, которое было сгенерировано, так что последующие установки могут генерировать идентичные деревья, независимо от промежуточных обновлений зависимостей.

10. Запросы между источниками и CDN

Если мы сделаем выборку с произвольного веб-сайта, это, вероятно, не удастся. Основная концепция здесь – триплет домен/порт/протокол.

Запросы из разных источников, отправленные в другой домен (даже субдомен), протокол или порт требуют специальных заголовков с удаленной стороны. Эта политика называется «CORS»: совместное использование ресурсов между источниками.

CDN (сеть доставки контента) – это группа серверов, расположенных во многих местах. Эти серверы хранят дублированные копии данных, чтобы серверы могли выполнять запросы данных в зависимости от того, какие серверы находятся ближе всего к соответствующим конечным пользователям. CDN обеспечивают быстрое обслуживание и меньше подвержены влиянию высокого трафика.

Как получить знания без отрыва от работы?

Ознакомившись с этим списком вопросов, можно сделать очевидный вывод: при переходе от уровня Junior к уровню Middle JavaScript developer в значительной степени меняется и подход к интервью. Список каверзных вопросов не исчерпывается описанными выше, поэтому нужно быть готовым ко всему.

Программист среднего уровня должен глубокого понимать механику движка JavaScript и устройство объектов, а также хорошо разбираться в типах данных и правилах их преобразования, владеть принципами написания асинхронного кода, знать все особенности функций для работы с массивами и другие тонкости синтаксиса. Освоить их по книгам и документации без отрыва от работы довольно сложно. На помощь желающему переквалифицироваться из джуниоров в мидлы программисту придут онлайн-курсы и видеолекции для продвинутых разработчиков.


Онлайн-курсы

  • Fullstack Academy. Видеокурс на основе семинаров состоит из 40 часов и учит всем основам JavaScript. Помимо инструкций по основным понятиям, в нем также рассматривается большое количество задач по кодированию, которые упорядочены по уровню возрастающей сложности.
  • Профессия мидл фронтенд-разработчик. Курс подойдет джунам фронтендерам, бэкендерам, которые собираются стать фуллстак-разработчиками, и тем, кто хочет разобраться в устройстве фреймворков. Курс включает 5 месяцев обучения по 15-20 часов в неделю, за которые вы напишете 2 приложения, отточите навыки JS, познакомитесь с алгоритмами и структурами данных, пройдете программу профессиональной акселерации.
  • Coderbyte JavaScript in One Week. Задачи CoderByte – отличный ресурс, особенно если вы хотите подать заявку на учебный курс по более избирательному кодированию в рамках смены карьеры.
  • Eloquent JavaScript. Программисты среднего уровня извлекут пользу из первых четырех глав, которые включают обзор синтаксиса JavaScript, функциональности, циклов и массивов.
  • Javascript30. Уэс Бос – разработчик полного цикла, спикер и преподаватель из Канады обучал более 500 студентов в 200+ классах и выступал на десятках конференций по всему миру. Курс подойдет разработчикам и дизайнерам от новичка до среднего уровня, которые хотят освоить основы JavaScript и работать в DOM без библиотеки.
  • JavaScript, jQuery, and JSON. В этом курсе рассматривается как JavaScript поддерживает объектно-ориентированный шаблон, с акцентом на уникальный аспект подхода JavaScript к объектно-ориентированному программированию. Курс содержит краткое введение в библиотеку jQuery, которая широко используется для манипулирования в браузере объектной моделью документа (DOM) и обработки событий. Вы также узнаете о нотации объектов JavaScript (JSON), которая используется в качестве синтаксиса для обмена данными между кодом, выполняемым на сервере (например, в PHP), и кодом, выполняемым в браузере (JavaScript/jQuery).

Видеолекции

  • Crockford on JavaScript. Дуглас Крокфорд очень авторитетный программист и постоянный участник развития языка JavaScript. Его курс лекций наверняка будет полезен.
  • Javascript Full Course for Beginners to Advanced. Курс содержит информацию, позволяющую приступить к созданию серверных приложений с использованием NodeJS и интерфейсных приложений с использованием React.
  • Advanced javascript tutorial. Промисы, замыкания, прототипы и многое другое из продвинутого уровня JS. В лекциях также освещаются вопросы для интервью.
  • Deep JavaScript Foundations. Кайл Симпсон, автор популярной серии книг «Вы не знаете JavaScript», раскрывает в своих лекциях глубокие основы JavaScript. Вы узнаете об обертках объектов, приведении, области видимости, замыкании, типах, системе прототипов, функциях ES6 и многом другом. Видео поможет понять, как движок JavaScript ищет переменные в области функций и блоков (var, let и const).
  • Build 15 JavaScript Projects – Vanilla JavaScript Course. Free Code Camp – это некоммерческая организация для изучения программирования. Платформу freeCodeCamp используют около 350000 уникальных посетителей в месяц со студентами из более чем 160 стран.
  • JavaScript: Расширенные возможности. Видео курс позволяет ознакомиться с новыми, расширенными возможностями языка JavaScript. Освещены различные варианты использования событий для мобильных устройств, особенности ES6, ES7, ES8, ES9, а также использование Promises RxJS в написании асинхронного кода.
  • JavaScript. Владилен Минин больше 7 лет разрабатывает на JavaScript. Стал Senior Frontend разработчиком и тим лидом в 23 года. В его лекциях: что такое JavaScript, переменные, типы данных, числа, BigInt, все о строках, функции, стрелочные функции, массивы, объекты, асинхронность, Promise, async await, работа с DOM и все это с использованием актуального синтаксиса 2020.
  • JavaScript Advanced. Видео содержит установку атрибутов свойств через Object.defineProperty, атрибуты свойств get и set, контекст вызова this, асинхронность, стек вызовов, промисы.
***

Если вы хотите наработать необходимый багаж без отрыва от производства, стоит обратить внимание на продвинутый курс Яндекс.Практикум. Он рассчитан на начинающих фронтендеров и бэкендеров, которые собираются стать фуллстак-разработчиками. С помощью опытных преподавателей студенты детально разберутся в JavaScript и устройстве современных фреймворков.

30
Янв
2021

📊 Обучение на Data Scientist: как получить работу, если без опыта никуда не берут?

Рассказываем о стратегиях, которые помогут получить должность в Data Science специалисту без опыта или с небольшим опытом работы в этой отрасли.

Мы уже писали о выборе специализаци…

22
Янв
2021

🕸 Что ждет профессию веб-разработчика в 2021 году: мнения экспертов

Технологии играют важную роль в повседневной жизни и применяются везде – от простых решений до инновационных продуктов. На основе мнений экспертов мы рассмотрим перспективы индустрии веб-разработки в наступившем 2021 году.

19
Янв
2021

📊 Проверьте свои навыки: еще 26 вопросов с собеседований по Data Science с ответами

Статья продолжает тему первой публикации («26 вопросов и ответов с собеседований») и предлагает 26 новых вопросов для проверки навыков в Data Science.

Сможете ли вы ответить на все…

18
Янв
2021

📊 Проверьте свои навыки: 26 вопросов и ответов с собеседований по Data Science

Если вы уже освоили основы профессии, стоит проверить свои шансы на трудоустройство. Публикуем 26 вопросов и ответов с реальных собеседований на позиции в Data Science.

В этой стат…

11
Янв
2021

❓ Почему нельзя соглашаться на тестовый кодинг во время собеседования

Собеседования по программной инженерии часто включают в себя какое-то тестовое задание по программированию, и это не очень хорошо. Объясним, почему.

Перевод публикуется с сокращени…

29
Дек
2020

🕸 Обучение веб-разработке: как быстро и успешно пройти собеседование

Веб-разработка – это высококонкурентный рынок труда. Помимо отсутствия необходимых технических навыков, первым препятствием для входа в профессию является техническое собеседование. Рассказываем, как пройти его с наименьшими потерями.

Типичное техническое интервью включает введение, дискуссию о проектах, а также углубленные вопросы о ваших знаниях, умениях и навыках. Успех на собеседовании зависит от уровня подготовки и способности понимать интервьюера, превосходя его ожидания. Изучите компанию-работодателя. Узнайте, какие технологии и фреймворки там используют. Каковы перспективы компании-работодателя на следующую пятилетку? С какими фирмами она сотрудничает? Это исследование даст вам не только общие темы для разговора, но и покажет интерес к бизнесу. Найдите своего интервьюера в LinkedIn. Узнав его, вы сможете адаптировать ответы: например, директор по персоналу может не знать технического жаргона, а ведущему инженеру-программисту термины будут по душе.

Давайте разберем вопросы, которые обычно задают веб-разработчику средней руки на собеседованиях и дадим на них правильные ответы:

1) Объясните, каковы основные обязанности веб-разработчика?

· Программа тестирования и отладки веб-приложений;

· Проектирование, разработка и развертывание веб-приложений;

· Загрузка сайтов на сервер и регистрация его в различных поисковых системах;

· Координация действия с другими специалистами (дизайнерами и программистами);

· Исправление ошибок, устранение неполадок и решение проблем;

· Разработка структур кода для решения конкретных задач;

· Поддержка и помощь в содержании и обслуживании веб-сайтов;

· Ответственность за код на всех этапах подготовки, разработки, тестирования и производства.


2) Что должен знать веб-разработчик?

Хороший веб-разработчик должен знать:

· HTML;

· CSS;

· SQL;

· PHP / Ruby / Python;

· JavaScript и фреймворки.

3) Перечислите преимущества HTTP / 2 по сравнению с HTTP / 1.1?

Список преимуществ HTTP / 2 по сравнению с HTTP / 1.1:

· Сжатие данных заголовков HTTP;

· Серверные push-технологии;

· Параллельная загрузка элементов страницы через одно соединение TCP;

· Приоритезация запросов.

4) Объясните, что такое длинный опрос?

Длинный опрос – это шаблон разработки веб-приложений, используемый для имитации передачи данных с сервера клиенту. Когда используется длинный опрос, клиент отправляет запрос на сервер, и соединение остается неизменным, пока сервер не будет готов отправить данные. Соединение будет закрыто только после того, как данные отправятся обратно клиенту или истечет время ожидания соединения.

5) Объясните, как можно изменить цвет фона элемента формы в CSS, когда пользователь вводит текст? Это работает во всех браузерах?

Да, вы можете изменить внешний вид элементов формы по умолчанию, стилизовав теги HTML: input, select и textarea, но это не будет работать во всех браузерах.

6) Какой тег нужно использовать в HTML для управления вводом многострочного текста?

Для управления вводом многострочного текста вы можете использовать тег «textarea».

7) Объясните, как можно ссылаться на файл CSS на веб-странице?

Вы можете обратиться к файлу .CSS на веб-странице с помощью тега <link>. Он должен находиться между тегом <head> </head>.

8) Перечислите несколько способов уменьшить время загрузки страницы?

Вы можете сделать следующее, чтобы сократить время загрузки страницы:

· Уменьшить размер изображения;

· Удалить ненужные виджеты;

· Использовать сжатие HTTP;

· Разместить CSS вверху, а ссылки на скрипт внизу или во внешних файлах;

· Уменьшить поиск;

· Минимизировать перенаправления;

· Использовать кеширование;


9) Чем XHTML отличается от HTML?

· XHTML требует, чтобы все теги были в нижнем регистре;

· XHTML требует, чтобы все теги были правильно закрыты;

· XHTML требует, чтобы все атрибуты были заключены в двойные кавычки;

· XHTML запрещает встроенным элементам содержать элементы уровня блока.

10) Перечислите новые API, предоставляемые стандартом HTML 5?

HTML 5 поставляется с рядом новых API:

· Медиа API;

· API текстовой дорожки;

· API кэша приложений;

· API передачи данных;

· Взаимодействие с пользователем;

· Командный API;

· API проверки ограничений;

· API истории.

11. Как вы организуете код JavaScript?

· Систематизируем свой код;

· Разделяем JavaScript и HTML;

· Разбиваем JS на логические блоки и храним его в отдельных файлах;

· Используем скрипт для объединения отдельных файлов в один пакет;

· Используем правильное пространство имён в JavaScript, чтобы не захламлять глобальное пространство имён.

12. Какие инструменты вы используете для поиска багов?

Ответ будет зависеть от среды разработки. Для разных языков программирования используются разные профилировщики, некоторые библиотеки имеют встроенные инструменты для поиска и устранения багов. Главное, знать не инструмент, а подход к решению той или иной проблемы.

13.Учитываете ли вы SEO, UX и безопасность при создании приложения?

Вы должны понимать и сочетать эти факторы в работе. Из ответа будет ясно, чему вы отдаёте приоритет. Если, к примеру, речь про интернет-издание, важнее будет производительность сайта и SEO, а если нужно разрабатывать сайт крупной финансовой компании – превыше всего окажется безопасность.

***

Начиная обучение на веб-разработчика, готовьтесь пройти множество собеседований – хороших и плохих. Каждое интервью – это опыт, который поможет вам развиться и получить хорошую высокооплачиваемую должность в солидной компании. Если вы только осваиваете профессию, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для начала карьеры знания и существенно сократить путь к вожделенной должности. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

17
Дек
2020

👶👨 Обучение от junior до senior: как стать востребованным веб-разработчиком

Осваивающие популярную ИТ-профессию новички стремятся стать веб-разработчиками минимум уровня middle, а самые амбициозные планируют дорасти до позиции senior. Рассказываем об этапах обучения и знаниях, которые потребуются для перехода с уровня на уровень этого квеста.

Профессионалы пользуются спросом на рынке труда за способность управлять проектами, определять приоритеты задач и давать советы младшим веб-разработчикам. Работодатели обычно соревнуются за таких специалистов, используя для их привлечения всевозможные бонусы и высокие зарплаты. Перейти на последний уровень нелегко, но награда того стоит. Важно спланировать продвижение по карьерной лестнице с упором на рост и обучение мы сделали пошаговое руководство, которое поможет frontend-разработчику пройти нелегкий путь от уровня junior до senior.


Начало карьеры в веб-разработке и обучение

Что нужно знать?

Занять вакансию в хорошей компании желают многие, поэтому устроиться даже на позицию junior будет непросто. Как начинать обучение на веб-разработчика с нуля мы уже писали, самое интересное приключение ждет вышедшего на испытательный срок новичка.

Начинающему frontend-разработчику обязательно понадобятся следующие знания, умения и навыки:

  1. Хорошие познания в HTML;
  2. Знание CSS, а также опыт работы с CSS-фреймворками (Twitter Bootstrap/Foundation) и CSS препроцессорами (Sass, Less, Stylus и т. д.);
  3. Владение графическими редакторами (Photoshop, Illustrator);
  4. Базовый опыт программирования на JavaScript (анимация, валидация, pop-ups);
  5. Понимание основных принципов работы хотя бы с одним фреймворком JS (ReactJS, AngularJS, Backbone, Vue.js);
  6. Практические навыки работы с системой контроля версий GIT;
  7. Знание популярных CMS (WordPress, Drupal, Joomla и т. д.);
  8. Владение инструментами дебаггинга (Chrome Dev Tools, Firebug).

Как нужно учиться?

Во время испытательного срока постарайтесь наладить контакт с более опытными разработчиками и перенимайте их опыт. Уже прошедшие этот этап коллеги могут рассказать много интересного о программировании, тестировании и отладке. От них вы узнаете, что еще ничего не знаете, но не пытайтесь объять необъятное. Определите наиболее критичные технологии, в которых вы разбираетесь слабо и изучайте их постепенно. Не ждите идеальных заданий – их не будет. Работайте с тем, что вам дают, и старайтесь предлагать улучшения функциональности продукта сверх заказанных. Помните, что под лежачий камень вода не течет – для роста нужна инициативность. Чтобы понять, какие изменения необходимы, мыслите категориями ценности продукта для пользователей.

Сколько времени потребуется?

Чтобы наработать необходимый хорошему джуну багаж, обычно требуется около года. Иногда это занимает чуть больше времени, но если к исходу второго года работы вы не уверены в собственных силах, значит что-то идет не так. Необходимо будет пересмотреть стратегию обучения или подумать о правильности выбора профессии.

Какого результата ожидать от обучения?

За время работы вы изучите основы программирования, разберетесь с инструментами веб-разработки, сформируете навыки взаимодействия в команде, научитесь общаться с пользователями и получите другой опыт, необходимый для перехода на позицию middle.


Переход на позицию middle

Что нужно знать?

Хотя в сфере ИТ есть общепринятая шкала для оценки разработчиков (trainee, junior, middle, senior, lead), точное определением круга обязанностей для каждого уровня меняется в зависимости от работодателя.

Тем не менее существует основной набор знаний, умений и навыков, обязательный для фронтенд-разработчика уровня middle:

  1. Доскональное знание синтаксиса используемого языка(JavaScript), опыт работы и уверенные теоретические познания в программировании;
  2. Владение ООП (наследование, полиморфизм и инкапсуляция);
  3. Хорошее знание одной из популярных библиотек JS (React, Angular, Vue и т. д.),;
  4. Умение самостоятельно настроить систему сборки проекта (Gulp/Grunt/Webpack), работая с нативным JS (ES5, ES6, ES7);
  5. Знание и понимание интерфейсов RESTful;
  6. Опыт работы со средствами совместного использования кода (Git + GitFlow);
  7. Уровень английского не ниже Upper-Intermediate.

Также есть дополнительные навыки, связанные с серверной стороной они будут большим плюсом при трудоустройстве:

  1. Опыт разработки серверного кода под Node.js и TypeScript;
  2. Базовые знания PHP;
  3. Опыт работы с PostgreSQL/MySQL.

Как нужно учиться?

Многие компании не любят платить сотруднику лишние деньги, если он и так работает. Значит потребуется инициатива с вашей стороны. Обозначьте свои намерения и присматривайтесь к знакам. Хорошо, если старшие товарищи и руководители обсуждают с вами рабочие вопросы тет-а-тет. Продвигаться в этом случае проще: при личной встрече можно узнать, чего вам не хватает до желаемой должности. Стоит также анализировать результаты своей работы и пытаться адекватно сравнить их с достижениями других разработчиков. Это поможет повысить квалификацию и продолжить двигаться по карьерной лестнице.

Сколько времени потребуется?

Четких временных рамок для завершения мидл-этапа нет – все зависит от таланта и усилий. Гений способен проскочить его экспрессом за пару лет, а кто-то застревает в одной позиции навсегда. На прохождение обычно требуется 2 – 5 лет трудового стажа.

Что в итоге?

Разве не очевидно? Высокооплачиваемая должность, возможности профессионального и карьерного роста + неплохие бонусы от компании.


Эволюция веб-разработчика уровня senior

Что нужно знать?

Достигнув верхнего (с точки зрения начинающего обучение с нуля джуниора) этажа пищевой цепочки, нельзя почивать на лаврах. Иначе вас быстро подвинут более молодые и голодные коллеги. Стратегия продвижения на уровне senior та же самая, меняется лишь объем и сложность усваиваемого материала. Прокачивать скилы новоиспеченный сеньор может до бесконечности, но есть и обязательный набор знаний, умений и навыков.

На этом этапе обучения потребуются следующие позиции:

  1. Умение писать грамотный, расширяемый код: JavaScript + TypeScript/CoffeeScript/Babel + ES6/ES7CSS (Flexbox) + Less/Sass/Scss/Stylus/PostCSS + BEM/SMACSS/OOCSS/MCSSHTML (Canvas/SVG) + Jade/HAML/Handlebars/Slim/Mustache;
  2. Знание и умение использовать паттернов проектирования(MVC/MVVM), умение составлять грамотную архитектуру проекта;
  3. Понимание и применение принципов SOLID, DRY, DIE, KISS, YAGNI;
  4. Знание и понимание принципов работы Backend – RestAPI, GraphQL, серверных языков программирования и фреймворков;
  5. Понимание взаимодействия браузера с клиентом, отличные познания в HTTP, WS;
  6. Умение грамотно и быстро оценивать проект по времени и по сложности;
  7. Опыт работы с тест-фреймворками (Mocha, Should, Chai, Jest);
  8. Знание Docker, а также Kubernetes/Docker Swarm.

Как нужно учиться?

На позиции senior открывается несколько путей развития. Вы можете прокачивать технические навыки, чтобы вырасти до уровня Technical Leader. Этот уровень предполагает больше общения с людьми, а также активное взаимодействие с подчиненными. Второй путь заключается в построении процессов и менеджменте. Третье направление – Team Lead, Head of Development или CTO (технический директор). В этом деле нужны очень хорошие организаторские навыки, а также умение строить процессы и взаимодействовать с бизнесом. По сути от ориентации на ценность продукта для пользователя нужно перестроиться на бизнес-ценности. При этом придется подтянуть менеджерские навыки или даже получить второе высшее образование.

Что в итоге?

Все, как на предыдущем этапе, только заработки гораздо выше, а бонусы вкуснее (некоторые крупные компании могут даже выплачивать разработчикам верхнего уровня опционы). Плюс отличные карьерные перспективы в зависимости от выбранного направления развития, а также обеспеченная старость под шелест волн на Багамах.

Выводы

Становление веб-разработчика высокого уровня – процесс постепенный. Начните с малого, и пусть каждый освоенный вами навык будет очередным шагом к конечной цели. Иногда возникающие на пути препятствия могут показаться непреодолимыми. Не бойтесь этого – дорогу осилит идущий. Нужно постоянно бросать вызов самому себе и каждый раз устанавливать планку немного выше.

***

Если вы только начинаете путь в ИТ, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для старта карьеры знания и существенно сократить путь от неофита до джуниора. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

17
Дек
2020

👶👨 Обучение от junior до senior: как стать востребованным веб-разработчиком

Осваивающий популярную ИТ-профессию новичок стремится вырасти до сильного веб-разработчика уровня middle/senior. Рассказываем об этапах обучения и знаниях, которые потребуются для перехода с уровня на уровень этого квеста.

Профессионалы пользуются спросом на рынке труда за способность управлять проектами, определять приоритеты задач и давать советы младшим веб-разработчикам. Работодатели обычно соревнуются за таких специалистов, используя для их привлечения всевозможные бонусы и высокие зарплаты ($3000 – $4000). Перейти на последний уровень нелегко, но награда того стоит. Важно спланировать продвижение по карьерной лестнице с упором на рост и обучение –на примере профессии frontend-разработчика мы сделали пошаговое руководство, которое поможет вам пройти этот нелегкий путь.


Начало карьеры в веб-разработке и обучение

Что нужно знать?

В условиях нынешнего рынка получение позиции Junior уже большой успех. Значит вы смогли выделиться из общей массы новичков, и такое положение необходимо не только сохранить, но и улучшить.

Начинающему frontend-разработчику обязательно понадобятся следующие знания, умения и навыки:

  1. Хорошие познания в HTML;
  2. Знание CSS, а также опыт работы с CSS-фреймворками (Twitter Bootstrap/Foundation) и CSS препроцессорами (Sass, Less, Stylus и т. д.);
  3. Владение графическими редакторами (Photoshop, Illustrator);
  4. Базовый опыт программирования на JavaScript (анимация, валидация, pop-ups);
  5. Понимание основных принципов работы хотя бы с одним фреймворком JS (ReactJS, AngularJS, Backbone, Vue.js);
  6. Практические навыки работы с системой контроля версий GIT;
  7. Знание популярных CMS (WordPress, Drupal, Joomla и т. д.);
  8. Владение инструментами дебаггинга (Chrome Dev Tools, Firebug).

Как нужно учиться?

Во время испытательного срока налаживайте контакт со старшими коллегами и узнавайте о методах написания, тестирования и отладки кода. Вы обнаружите множество новых для себя вещей, с которыми ещё не успели познакомиться. Не бросайтесь осваивать всё подряд. У вас быстро сформируется список пробелов в знаниях. Расставьте приоритеты в нем, вместе со своими коллегами. Продвигайтесь поэтапно, зачеркивая пункт за пунктом, тогда вы станете разбираться в технологиях и грамотно применять их на практике. Не надейтесь, что технические задания будут очень понятными, а заказчики – всегда лояльными. В любом проекте, будет оставаться место для небольшого подвига. Вы узнаете, что представляет ценность для коллег, компании и конечного пользователя продукта.

Сколько времени потребуется?

Практика показывает, что на позиции Junior специалист обычно работает около года. Конечно этот срок может меняться в разумных рамках, но если на втором году в должности вы всё ещё чувствуете себя некомфортно, стоит задуматься об изменении стратегии обучения и развития.

Какого результата ожидать от обучения?

В процессе активной работы вы наберетесь опыта, изучите основные понятия в программировании, разберетесь с оценкой сложности и работой с высокими нагрузками. К концу этого этапа уже можно смотреть в сторону позиции middle.


Переход на позицию middle

Что нужно знать?

Хотя в сфере ИТ есть общепринятая шкала для оценки разработчиков (trainee, junior, middle, senior, lead), точное определением круга обязанностей для каждого уровня меняется в зависимости от работодателя.

Тем не менее существует основной набор знаний, умений и навыков, обязательный для фронтенд-разработчика уровня middle:

  1. Доскональное знание синтаксиса используемого языка(JavaScript), опыт работы и уверенные теоретические познания в программировании;
  2. Владение ООП (наследование, полиморфизм и инкапсуляция);
  3. Хорошее знание одной из популярных библиотек JS (React, Angular, Vue и т. д.),;
  4. Умение самостоятельно настроить систему сборки проекта (Gulp/Grunt/Webpack), работая с нативным JS (ES5, ES6, ES7);
  5. Знание и понимание интерфейсов RESTful;
  6. Опыт работы со средствами совместного использования кода (Git + GitFlow);
  7. Уровень английского не ниже Upper-Intermediate.

Также есть дополнительные навыки, связанные с серверной стороной они будут большим плюсом при трудоустройстве:

  1. Опыт разработки серверного кода под Node.js и TypeScript;
  2. Базовые знания PHP;
  3. Опыт работы с PostgreSQL/MySQL.

Как нужно учиться?

Многие компании проводят личные встречи и следят за ростом своих сотрудников. Однако очень часто они исходят из принципа достаточности: работает человек, вот и славно. Зачем ему больше платить? Если начальник не говорит с вами на тему профессионального роста, необходимо активно продвигать свои навыки. Проанализируйте проделанную работу. Сколько задач вы довели до Production? Какова их ценность и сколько ошибок было сделано? Сколько задач релизят старшие коллеги? Если будете честны с собой, получите адекватное сравнение своего уровня с другими разработчиками. Это поможет вам заполнить пробелы в знаниях и продолжить путь к повышению по карьерной лестнице.

Сколько времени потребуется?

Четких временных рамок для перехода от мидла к сеньору нет – все зависит от таланта и усилий. Гений способен проскочить этот этап экспрессом за пару лет, а кто-то застревает в одной позиции на десятилетия. Обычно на переход требуется 4 – 5 лет трудового стажа.

Как мы уже писали, многие компании не любят платить сотруднику лишние деньги, если он и так работает. Значит потребуется инициатива с вашей стороны. Обозначьте свои намерения и присматривайтесь к знакам. Хорошо, если руководитель встречается с вами один на один, чтобы обсудить рабочие вопросы в непринужденной обстановке. Профессиональный расти в этом случае проще: при личной встрече можно узнать, чего вам не хватает до желаемой должности.

Что в итоге?

Разве не очевидно? Высокооплачиваемая должность, возможности профессионального и карьерного роста + неплохие бонусы от компании.


Эволюция веб-разработчика уровня middle

Что нужно знать?

Достигнув верхнего (с точки зрения начинающего обучение с нуля джуниора) этажа пищевой цепочки, нельзя почивать на лаврах. Иначе вас быстро подвинут более молодые и голодные коллеги. Стратегия продвижения на уровне middle очень похожа на действия из предыдущего этапа квеста качественно меняются только знания, которые вам которые предстоит освоить.

На этом этапе обучения потребуются следующие позиции:

  1. Умение писать грамотный, расширяемый код: JavaScript + TypeScript/CoffeeScript/Babel + ES6/ES7CSS (Flexbox) + Less/Sass/Scss/Stylus/PostCSS + BEM/SMACSS/OOCSS/MCSSHTML (Canvas/SVG) + Jade/HAML/Handlebars/Slim/Mustache;
  2. Знание и умение использовать паттернов проектирования(MVC/MVVM), умение составлять грамотную архитектуру проекта;
  3. Понимание и применение принципов SOLID, DRY, DIE, KISS, YAGNI;
  4. Знание и понимание принципов работы Backend – RestAPI, GraphQL, серверных языков программирования и фреймворков;
  5. Понимание взаимодействия браузера с клиентом, отличные познания в HTTP, WS;
  6. Умение грамотно и быстро оценивать проект по времени и по сложности;
  7. Опыт работы с тест-фреймворками (Mocha, Should, Chai, Jest);
  8. Знание Docker, а также Kubernetes/Docker Swarm.

Как нужно учиться?

На позиции senior открывается несколько путей развития. Вы можете прокачивать технические навыки (hard skills), чтобы вырасти до уровня Technical Leader. Этот уровень предполагает больше общения с людьми, а также активное взаимодействие с подчиненными. Второй путь заключается в построении процессов и менеджменте. Так, например, крайне востребованы scrum-мастера и agile-коучи, которых довольно мало на рынке. Третье направление – Team Lead, Head of Development, технический директор. В этом деле нужны очень хорошие организаторские навыки, умение строить процессы и не бояться общения с деловыми партнерами.

Что в итоге?

Все, как на предыдущем этапе, только заработки гораздо выше, а бонусы вкуснее (некоторые крупные компании могут даже выплачивать разработчикам верхнего уровня опционы). Плюс отличные карьерные перспективы в зависимости от выбранного направления развития, а также обеспеченная старость под шелест волн на Багамах.

Выводы

Становление веб-разработчика высокого уровня – процесс постепенный. Начните с малого, и пусть каждый освоенный вами навык будет очередным шагом к конечной цели. Иногда возникающие на пути препятствия могут показаться непреодолимыми. Не бойтесь этого – дорогу осилит идущий. Нужно постоянно бросать вызов самому себе и каждый раз устанавливать планку немного выше.

***

Если вы только начинаете путь в ИТ, стоит обратить внимание на учебные курсы по веб-разработке онлайн-академии GeekBrains. Под руководством опытных преподавателей вы сможете получить необходимые для старта карьеры знания и существенно сократить путь от неофита до джуниора. Актуальная программа предполагает 2 – 3 вебинара в неделю и 2 месяца стажировки, а успешно окончившим курс студентам академия помогает с трудоустройством.

15
Дек
2020

∑ Пять вопросов в интервью по Data Science, на которые вы должны уметь отвечать

Чтобы начать карьеру в сфере науки о данных, требуются серьезные познания в математике и ИТ. Публикуем инсайдерское руководство по вопросам, которые задают кандидатам во время интервью при трудоустройстве в Amazon, Netflix и Google.

Инсайдерское руководство по вопросам о Data Science из интервью в Amazon/Netflix/Google.
Статья публикуется в переводе, автор оригинального текста Monika Sharma.

Я пишу эту статью для тех людей, которые стремятся за мечтой стать Data Scientist’ом или стать лучше в этой профессии, и не хотят дважды наступать на одни и те же грабли. Data Science – это область, требующая постоянного улучшения вашего набора навыков, ежедневно прорабатывая основные концепции алгоритмов машинного обучения. Поэтому, давайте без дальнейших предисловий погрузимся в несколько вопросов и ответов, которые могут вам пригодиться на следующем интервью.

Вопрос 1: расскажите о функции потерь деревьев решений

Ответ: прежде, чем ответить на этот вопрос, важно указать, что Деревья Решений – это гибкий алгоритм машинного обучения, способный решать задачи не только классификации, но и регрессии. Поэтому и функции потерь для этих двух задач будут разными.

Функция потерь для задач классификации

Прежде чем мы сможем понять функцию потерь, сначала нужно познакомиться с такой важной концепцией, как критерий Джини (Gini impurity), поэтому давайте сначала объясним ее.

Gi=1−∑k=1npi,k2

Здесь p – доля экземпляров класса k среди тренировочных экземпляров на i-м узле. Что это значит? Давайте разберемся на следующем примере. На рис. 1 показана простейшая визуализация дерева решений для классического примера классификации ирисов глубиной 2. Верхний уровень – это корневой узел. Концепция разделения тренировочного набора на набор решений алгоритмически довольно проста. Здесь, например, набор данных по ирисам разделен на два поднабора на основании единственного признака “ширина лепестков” на корневом узле. Если ширина лепестков меньше или равна 0.8, алгоритм идет на глубину 1, влево. В противном случае он идет на глубину 1, вправо. Там он делит поднабор дальше на основании дополнительного признака “ширины лепестков”. Правый узел на глубине 1 описывает 100 экземпляров и применяется к 0 экземпляров Iris Setosa, 50 экземпляров Iris Versicolor и оставшиеся 50 экземпляров Iris Virginica.

Рис. 1. Дерево решений для ирисов
Рис. 1. Дерево решений для ирисов

Таким образом, критерий Джини для этого узла равен 0.5:

Gk,tk=1−(0100)2−(50100)2−(50100)2

Точно так же, для узла глубиной 1 слева критерий Джини равен нулю, потому что все тренировочные экземпляры принадлежат к одному классу. Этот узел считается “чистым”.

Чтобы понять, что такое критерий Джини, давайте вернемся к основному вопросу. Деревья решений используют для обучения алгоритм Classification And Regression Tree (CART), основанный на простой концепции разделения набора данных на два поднабора, используя единственный признак (k) и порог (t). В наборе данных ирисов признаком была “ширина лепестков”, а порогом – 0.8. Как алгоритм выбирает t и k? Он ищет пару (t,k), производящую “самые чистые” подмножества. Поэтому функция потерь, которую алгоритм пытается минимизировать, описывается следующим уравнением:

J(k,tk)=mleftmGleft+mrightmGright

Здесь Gleft и Gright – критерии Джини для левого и правого узлов, а m представляет экземпляры подмножеств.

Функция потерь для задач регрессии

Функция потерь для деревьев регрессии просто интуитивна. Мы используем сумму разности квадратов (RSS). Она изображена следующей формулой, в которой Y – истинное значение, а Y с крышкой – предсказанное.

RSS=∑k=1n(Y−Y^)2

Вопрос 2: как коллинеарность влияет на ваши модели?

Ответ. Коллинеарность относится к ситуации, в которой две или более прогнозных переменных сильно зависят друг от друга. Рисунок 2 демонстрирует пример коллинеарных переменных. Переменная Variable 2 строго следует за Variable 1 с коэффициентом корреляции Пирсона, равным 1. Поэтому, очевидно, одна из этих переменных будет вести себя как “шум”, если их скормить моделям машинного обучения.

Рис. 2. Пример коллинеарных переменных
Рис. 2. Пример коллинеарных переменных

Наличие коллинеарности может стать проблемой в задачах вроде регресии, поскольку становится трудно определить индивидуальное влияние каждой из коллинеарных переменных на результат. Или, иными словами, коллинеарность сокращает точность оценки коэффициентов регрессии и приводит к увеличению ошибок. В конце концов, это приводит к понижению t-статистики, и в результате при коллинеарности мы можем не суметь отвергнуть нулевую гипотезу.

Простой способ обнаружения коллинеарности – посмотреть на матрицу корреляции прогнозных переменных. Каждый элемент этой матрицы, достаточно большой по модулю, обозначает пару признаков с высокой коллинеарностью, и, следовательно, проблемы в данных. К сожалению, не все проблемы с коллинеарностью можно выявить анализом матрицы корреляции: возможно существование коллинеарности между тремя и более переменными, даже при отсутствии высокой корреляции между любой парой этих переменных. Такая ситуация называется мульти-коллинеарностью. Для таких случаев вместо анализа матрицы корреляции намного лучший метод – анализ коэффициента повышения дисперсии (Variance Inflation Factor, VIF). Коэффициент повышения дисперсии для каждой переменной рассчитывается по такой формуле:

VIF=11−RXj|X−j2

Где R2 – регрессия переменной X по всем остальным прогнозным переменным. Если VIF близок к единице или больше нее, коллинеарность присутствует. Если обнаружилась проблема коллинеарности, есть два решения. Можно удалить избыточную переменную. Это можно сделать, не ухудшая сходимость регрессии. Другое решение – это объединить все коллинеарные переменные в единственную прогнозную переменную.

Вопрос 3: как бы вы объяснили работу глубоких нейронных сетей непрофессионалу?

Ответ. Идея нейронных сетей вдохновлялась работой человеческого мозга, который отлично умеет идентифицировать образцы. Нейронная сеть – это набор алгоритмов, которые интерпретируют сенсорные данные, размечают и кластеризуют входные данные, и т.д. Данные любого вида – изображения, видео, тексты или звук – требуется сначала перевести в векторное пространство, содержащее только числа.

Слово “глубокие” в определении глубоких нейронных сетей означает, что нейронная сеть состоит из множества слоев. Эти слои, в свою очередь, состоят из узлов, в которых и производятся вычисления. Аналогией такого узла является нейрон в человеческом мозге, который “включается” при получении достаточных стимулов. Узел комбинирует данные от входов с их коэффициентами (весами), которые усиливают либо ослабляют влияние каждого входа. Произведения данных на веса затем суммируется, как показано на рис. 3, и передается в функцию активации, которая определяет, должен ли этот сигнал пройти дальше по нейронной сети и влиять на итоговый результат. Слой – это набор таких нейроподобных переключателей, которые включаются и выключаются в зависимости от входных данных.

Рис. 3. Пример визуализации узла нейронной сети
Рис. 3. Пример визуализации узла нейронной сети

Глубокие нейронные сети отличаются от ранних версии нейронных сетей вроде перцептронов, потому что те содержали всего один внутренний слой нейронов, наряду с входным и выходным слоями.

Глубокие нейронные сети содержат несколько внутренних слоев
Глубокие нейронные сети содержат несколько внутренних слоев

Вопрос 4: какой должна быть 3-минутная презентация вашего тестового проекта по Data Science?

Ответ. Типовое интервью на позицию Data Scientist’а начинается с тестового задания в виде проекта, который вы должны сделать дома. Предоставляемое на это время может сильно варьироваться в зависимости от сложности задачи. Однажды мне дали два дня на решение задачи и подготовку отчета для руководства, но в другой раз на решение задачи дали две недели. Незачем и говорить, что это была намного более сложная задача, где набор данных содержал сильный дисбаланс классов. Поэтому 3-минутная презентация для “продажи” вашего решения позволяет вам продемонстрировать ваш уровень понимания предложенной задачи. Начните со своей интерпретации задачи, кратко опишите свой подход к ее решению, какие типы моделей машинного обучения вы использовали и почему. Заканчивайте презентацию хвастовством по поводу точности предсказания ваших моделей.

Мне кажется, что этот вопрос чрезвычайно важен для успеха вашего интервью, и он позволяет вам доказать, что вы – лидер в области Data Science, способный решать сложные задачи с помощью самых передовых и мощных инструментов.

Вопрос 5: что значит “регуляризация модели”, и как добиться регуляризации для линейной модели?

Ответ. Регуляризация – это термин для ограничения (сокращения переобучения) вашей модели машинного обучения. Хороший способ ограничения модели машинного обучения – иметь меньше степеней свободы. Имея меньше степеней свободы, модели сложнее переобучиться под тренировочные данные. Например, простой способ регуляризации полиномиальной модели – сократить количество полиномиальных степеней свободы. Однако для линейных моделей регуляризация обычно достигается ограничением весов модели. По сравнению с обычной линейной регрессией модели L1-регуляризация (Lasso Regression), L2-регуляризация или регуляризация Тихонова (Ridge Regression) и упругая сетевая регуляризация (Elastic Net) предлагают собственные способы ограничения весов. Для полноты картины давайте начнем с определения линейной регрессии:

y^=θ0+θ1×1+θ2×2+…θnxn
  • y с крышкой – предсказанное значение.
  • n – количество признаков.
  • xi – i-й признак.
  • Тэта – параметры модели, также известные как веса признаков.

Функция потерь Средняя Квадратичная Ошибка (Mean Square Error) определяется как:

MSE(X,hθ)=1m∑i=1m(θT⋅x(i)−y(i))2

где тэтаT – транспонированная тэта (вектор-строка вместо вектора-столбца).

Регуляризация Тихонова (Ridge Regression) – это вариант линейной регрессии с регуляризацией, то есть в функцию потерь дополнительно добавлен элемент регуляризации, что заставляет алгоритм обучения не только подстраиваться под тренировочные данные, но и делать веса настолько маленькими, насколько это возможно. Заметим, что элемент регуляризации должен добавляться к функции потерь только в процессе обучения. Когда модель уже обучена, мы хотим измерять ее качество работы без регуляризации.

J(θ)=MSE(θ)+α12∑i=1nθ2

Гиперпараметр альфа определяет, насколько вы хотите регуляризировать модель. Если он равен нулю, мы получаем обычную линейную регрессию.

L1-регуляризация (Lasso Regression) – другой вид регуляризованной линейной регрессии, который также добавляет в функцию потерь элемент регуляризации, но на основе L1-нормы вектора весов в отличие от L2-нормы.

J(θ)=MSE(θ)+α∑i=1n|θi|

Важной характеристикой L1-регуляризации является тенденция к обнулению весов менее важных параметров. Иными словами, модель автоматически производит выбор параметров и выдает разреженную модель (в которой лишь немногие веса не равны нулю).

Упругая сетевая регуляризация (Elastic Net) – нечто среднее между регуляризацией Тихонова и L1-регуляризацией. Элемент регуляризации – это просто смесь двух видов регуляризации в пропорции, определяемой параметром r. При r=0 это чистая регуляризация Тихонова, а при r=1 – L1-регуляризация.

J(θ)=MSE(θ)+rα∑i=1n|θi|+α1−r2∑i=1nθ2

Желательно всегда иметь какую-нибудь регуляризацию, а использования чистой линейной регресии следует избегать. По умолчанию хороша регуляризация Тихонова, но если в некотором наборе данных значение имеет лишь небольшой процент признаков, тогда лучше использовать L1-регуляризацию. Упругая сетевая регуляризация в большинстве случаев лучше L1-регуляризации, потому что последняя может приводить к странным результатам, когда количество признаков больше количества тренировочных записей, или когда несколько признаков имеют сильную корреляцию друг с другом.

В этой статье мы рассмотрели пять вопросов, которые задавали лично мне на интервью по Data Science, которые могли бы пройти и лучше. Я усиленно рекомендую ежедневно читать следующие ресурсы для оттачивания вашего понимания базовых концепций. Поверьте, я прочитала об этих концепциях много раз, но все-таки завалилась на них в процессе интервью.

Удачного изучения!

  1. Hands-On Machine Learning with Scikit-Learn, Keras and Tensorflow.
  2. An Introduction to Statistical Learning.
11
Дек
2020

☕ Как пройти собеседование на позицию Java-разработчика?

Чтобы получить работу, знать программирование на Java недостаточно – нужно найти вакансию и пройти квест по найму. Рассказываем о плане подготовки к интервью, часто встречающихся вопросах по Java Core и Java EE и правильном поведении на собеседовании.

10 млн разработчиков по всему миру используют Java для создания приложений под 15 млрд. устройств. Синтаксис этого языка прост и поддерживается всеми операционными системами. На этом преимущества программирования на Java не заканчиваются, узнать о них вы можете из нашей статьи. В условиях жесткой конкуренции организации нуждаются в профессионалах, обладающих знаниями, навыками и опытом в области Java, и способных эффективно проектировать, кодировать, разрабатывать и разворачивать приложения различного типа.

Отличия в интервью по Java Core и Java EE

Поскольку Java в основном используется как язык прикладного программирования, основное внимание уделяется вопросам, касающимся API, концепций и шаблонов проектирования.

Собеседования по Java меняются в зависимости от опыта кандидата. Например, младшие разработчики с опытом от 1 до 4 лет увидят больше вопросов по таким темам, как основы языка, API, структура данных и алгоритмы.

Более опытные разработчики, с опытом от 5 до 6 лет, получат вопросы о параллельном программировании, API, параллелизме Java, внутреннем устройстве JVM, настройке сборщика мусора и производительности Java.

Собеседования по Java EE сильно отличаются от собеседований по Java Core, поскольку последние в основном сосредоточены на основных концепциях Java, таких, как параллелизм, коллекции и внутреннее устройство JVM. Собеседования по Java EE основаны на JSF, Spring, Hibernate и других.

План подготовки к собеседованию

Существует общий список тем, с которыми стоит ознакомиться, или освежить их в памяти перед собеседованием:

  • основы Java;
  • ООП;
  • Java core;
  • структура данных;
  • многопоточность;
  • сборка мусора;
  • базы данных;
  • фреймворки;
  • сетевые протоколы;
  • устройство JVM;
  • архитектура;
  • паттерны;
  • алгоритмические задачи;

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

Вы не обязаны знать наизусть все аспекты программирования на Java по учебнику. Достаточно рассказать про опыт работы, но основные понятия и термины все же стоит освежить в памяти, особенно если с ними будет связана ваша деятельность в компании.


Основы Java

Для самопроверки рекомендуем пройти тест на общие знания для Java-разработчика.

Примеры часто задаваемых вопросов:

  1. В чем важность метода main()?
  2. В чем разница между переменными path и classpath?
  3. Какие есть модификаторы доступа?
  4. Что такое классы-оболочки?
  5. В чем разница между equals () и ==?
  6. Что такое JIT-компилятор?
  7. В чем заключаются особенности языка программирования Java?
  8. Что такое статический импорт?
  9. Что такое Enum?
  10. Что такое композиция?

Java core

Часто на собеседованиях задают вопросы про коллекции, дженерики, функциональные интерфейсы, многопоточность:

  1. Как устроена HashMap?
  2. Чем отличается LinkedList от ArrayList?
  3. Разница между String, StringBuffer и StringBuilder?
  4. Разница между интерфейсом Runnable и Callable?
  5. Разница между TreeSet и TreeMap?
  6. Напишите программу на Java, чтобы проверить, является ли число простым или нет?
  7. Как проверить, содержит ли связанный список цикл в Java?
  8. Написать Java-программу для обратного преобразования String без использования API?
  9. Разница между переходным процессом и изменчивым в Java?
  10. Разница между абстрактным классом и интерфейсом?

ООП

Классические вопросы, вроде разницы между интерфейсом и абстрактным классом, присутствуют всегда. В последние пару лет на собеседованиях задают и более сложные вопросы, основанные на передовых принципах и шаблонах проектирования:

  1. Что такое перегрузка методов в ООП или Java?
  2. Какой метод скрытия используется в Java?
  3. Является ли Java чистым объектно-ориентированным языком?
  4. Каковы правила перегрузки и переопределения методов в Java?
  5. Какова разница между перегрузкой метода и переопределением?
  6. Можем ли мы предотвратить переопределение метода без использования модификатора final?
  7. Что такое ковариантный метод переопределения в Java?
  8. Можем ли мы изменить возвращаемый тип метода на подкласс при переопределении?
  9. Как вы вызываете суперклассовую версию метода переопределения в подклассе?
  10. В чем разница между абстракцией и полиморфизмом в Java?

Структура данных

Подробнее о структурах данных мы рассказывали в статье «Алгоритмы и структуры данных: развернутый видеокурс».

Примеры часто задаваемых вопросов:

  1. Чем дерево отличается от графа?
  2. Что такое АВЛ-деревья?
  3. Чем стек отличается от очереди?
  4. Какие классы в Java реализуют стек или очередь?
  5. Чем LinkedList отличается от ArrayList?
  6. Что такое HashSet?
  7. Чем HashSet отличается от TreeSet?
  8. Как работает HashMap?
  9. Найдите средний элемент односвязного списока за один проход.
  10. Как реализовать бинарное дерево поиска?

Многопоточность

Не все программисты работают с многопоточностью, но базовые вещи стоит знать хотя бы в теории.

Примеры часто задаваемых вопросов:

  1. Что такое поток?
  2. В чем разница между потоком и процессом?
  3. Как реализовать потоки?
  4. Когда нужно использовать Runnable vs Thread?
  5. В чем разница между методами start () и run () класса Thread?
  6. Что такое модель памяти Java?
  7. Что такое volatile?
  8. Что такое изменчивая переменная в Java?
  9. Что такое потокобезопасность? Vector – это потокобезопасный класс?
  10. Что происходит, когда в потоке возникает исключение?

Сборка мусора

Вопросы по сбору мусора очень популярны как в базовых, так и в продвинутых собеседованиях:

  1. Какова структура Java Heap? Что такое пространство Perm Gen в куче?
  2. Как определить незначительную и основную сборку мусора в Java?
  3. В чем разница между сборщиками мусора ParNew и DefNew Young Generation?
  4. Как вы обнаружите, что сборщик мусора привел к вызову System.gc ()?
  5. В чем разница между последовательным и пропускным сборщиками мусора?
  6. Когда объект получает право на сборку мусора в Java?
  7. Что такое метод finalize в Java? Когда сборщик мусора вызывает метод finalize?
  8. Как отслеживать действия по сбору мусора?
  9. Можно ли принудительно запустить сборщик мусора в любое время?
  10. Происходит ли сборка мусора в постоянном пространстве генерации в JVM?

Базы данных

Освежите в памяти ваши знания по SQL и JPQL.

Примеры часто задаваемых вопросов:

  1. Реляционные и нереляционные БД – в чем разница? Что и когда использовать?
  2. Как строится запрос SQL?
  3. Какие виды join-ов существуют?
  4. Чем having отличается от where?
  5. Были ли у вас в практике случаи оптимизации запросов?
  6. Приходилось ли смотреть план выполнения запроса?
  7. Что такое entity manager?
  8. Что такое persistence context?
  9. Что такое JPQL и чем он отличается от SQL?
  10. Что означает полиморфизм в запросах JPQL и как его «выключить»?

Фреймворки

В большинстве случаев требуется Spring.

Примеры часто задаваемых вопросов:

  1. Transactional – как она работает? Что в ней можно дополнительно настроить?
  2. Назовите различные модули фреймворка Spring.
  3. Перечислите некоторые важные аннотации в конфигурации Spring на основе аннотаций.
  4. Объясните Bean в Spring и перечислите различные области применения Spring bean.
  5. Объясните роль DispatcherServlet и ContextLoaderListener.
  6. В чем разница между внедрением конструктора и внедрением установщика?
  7. Как обрабатывать исключения в Spring MVC Framework?
  8. Какие важные аннотации Spring вы использовали?
  9. Как интегрировать Spring и Hibernate Frameworks?
  10. Назовите типы управления транзакциями, которые поддерживает Spring.

Сетевые протоколы

Повторите уровни модели OSI и основные протоколы: tcp, udp, https:

  1. Что такое IP-адрес?
  2. Что такое веб-сервис?
  3. Какие существуют типы веб-сервисов?
  4. В чем отличие host и domain?
  5. Какие методы в HTTP вы знаете?
  6. Чем отличаются методы GET, POST и HEAD?
  7. Что такое REST?
  8. Зачем нужен класс Calendar в Java?
  9. Как преобразовать дату в Java к нужному формату?
  10. Отличие классов Socket и URL?

JVM

Одна из многих черт хорошего программиста – хорошее понимание основ. Если вы хотите проверить основы программирования на Java, вопрос о разнице между кучей и стековой памятью – хороший выбор. Несмотря на то, что оба являются частью JVM и выделенной для процесса Java памятью потребителя, между ними есть много различий.

Примеры часто задаваемых вопросов:

  1. Что такое куча и стек?
  2. Как хранятся объекты в JVM?
  3. Что такое string pool?
  4. Что обеспечивает принцип happens before?
  5. Как работает сборщик мусора?
  6. В чем разница между потоком пользователя и потоком демона?
  7. Что такое OutOfMemoryError в Java?
  8. Можно/нужно ли обрабатывать ошибки JVM?
  9. В чем разница между ошибкой и исключением?
  10. Объясните что такое JDK, JRE и JVM.

Архитектура

  1. Когда нужно использовать микросервисы, а когда монолит?
  2. Использовали ли вы eureka или consul?
  3. В чем разница между Hibernate и JDBC?
  4. Каковы преимущества использования Hibernate перед JDBC?
  5. Выгодно ли использование среды Spring для разработчиков Java?
  6. Если у вас есть приложение Java с подключением к базе данных, которое необходимо улучшить, как бы вы его улучшили?
  7. Как избежать тупика базы данных?
  8. Что такое шардинг и насколько он полезен?
  9. Что такое масштабируемость?
  10. Что такое балансировка нагрузки?

Паттерны

Никто не потребует перечислять все существующие паттерны, но некоторые, используемые в Java или Spring, знать надо. Например Immutable, Singleton, Prototype, Builder, Proxy, Abstract factory, Wrapper.

Разное

На интервью могут поинтересоваться, знакомы ли вы с Agile, Git или Gitflow, REST/SOAP, Docker, и Kubernetes. Также встречаются вопросы об использовании в работе функциональных и интеграционных тестов.


Практическая часть

На собеседованиях приходится решать и практические задачи. Будьте готовы, что код придется писать без использования привычной среды разработки. Часто соискателям дают стандартные алгоритмические задачи, поэтому перед интервью стоит обратить внимание на нашу статью по их решению, а также изучить небольшое руководство. Подробнее про распространенные алгоритмы и структуры данных можно почитать в еще одном материале «Библиотеки программиста».

Про себя

Работодателя наверняка заинтересует практический опыт кандидата, поэтому даже самые простые ответы стоит иллюстрировать примерами из решенных вами задач. Интервью может включать вопросы о мотивации, степени ответственности, амбициях и поведенческих особенностях соискателя. Их цель – побольше узнать о том, как вы работаете в коллективе, справляетесь с нестандартными задачами и авралами. Подготовиться к ним поможет статья «Как легко пройти собеседование».

В конце собеседования не забудьте проявить инициативу и задайте интересующие вас вопросы работодателю. Кандидат тоже решает, насколько компания ему подходит. К тому же это хороший способ получить обратную связь от интервьюера о вашей реальной ценности как программиста.

***

Обучение программированию на Java

Если вы решите подтянуть знания по Java, в нашей библиотеке найдется множество статей на эту тему. Освоить востребованную профессию также поможет Факультет Java-разработки GeekBrains. Онлайн-академия приглашает студентов на курсы основного обучения и факультативы от компаний-партнеров. Занятия ведут опытные преподаватели, а личный наставник помогает разобраться с возникающими затруднениями. Успешно окончившие курс студенты получают не только диплом о профессиональной переподготовке, но и помощь в трудоустройстве.

25
Ноя
2020

👨‍🔧️💸10 онлайн-платформ для заработка на тестировании

Можно начать без заказчиков и даже сделать профессию тестировщика подработкой. Онлайн-платформы для тестирования помогут заработать на фрилансе.

Некоторые специалисты уделяет тестированию лишь часть времени. Лучший способ понять, подходит ли вам такой формат работы – попробовать. Мы подобрали список платформ, на которых можно попрактиковаться и заработать.

Главное – пройти квалификационное тестирование или выполнить пробное задание.


Иностранные платформы

Для работы с ними нужно хорошо знать иностранный язык, притом необязательно английский – иногда подходит испанский, немецкий или французский.

UserTesting – платформа позволяет оперативно получать обратную связь от клиентов. Можно создавать собственные тесты с нуля и делать обзоры продуктов. Данные защищены, работает круглосуточная поддержка. Необходимо зарегистрироваться, заполнить заявку и пройти тест для получения заданий. После этого пользователю будут доступны оплачиваемые предложения.

Userbrain – заработок на тестировании в течение 15 минут. Регистрируетесь, ставите расширение для Chrome или приложение iOS. Необходимо пройти квалификационную проверку, получить одобрение на участие в и можно зарабатывать по 3$ за каждый тест.

TryMyUI – получать деньги за честные отзывы – кредо этой платформы. Тестируете сайты, даете экспертное заключение и после принятия оценщиками каждую пятницу приходит оплата на PayPal. До начала работы придется пройти квалификационный тест.

Userlytics – платформа, где заказчики один известнее другого. Пользовательское тестирование, по итогу которого можно заработать от 5$ до 90$ в зависимости от масштабов. Главное – быть внимательным и хорошо знать английский.

IntelliZoom – платформа с максимально простым и дружелюбным интерфейсом. Компания проводит тесты UX на компьютерах и мобильных устройствах. Оплата за видео-обзоры составляет от 2$ до 10$.

test IO – платформа создана для QA-тестировщиков и выдает задачи по разным приложениям. Если получится найти баг, сбой и проблема окажется критической – заработаете больше. Выплаты ежемесячные.

Checkealos – онлайн-платформа для отзывов пользователей, которая помогает компаниям создавать лучшие сайты и приложения. Каждый отзыв стоит около 8 евро, сессия длится 15 минут. Если не знаете английский, можно работать на испанском.

PingPong – самые крупные варианты заработка здесь. По описанию сервиса вознаграждение может быть до 200 евро. Главное: стабильные интернет и желание работать.


Отечественные платформы

Российских платформ значительно меньше, а заработки на них скромнее. Если ваш иностранный язык недостаточно хорош, лучше начинать там, где ТЗ будет гарантированно понятным.

UXCrowd – “начать легко”. Российская платформа для заработка на тестировании. Стандартный путь: регистрация, тестовое задание, одобрение и начало работы. Тестирование оформляется по договору ГПХ, но только для граждан РФ. Официально, честно, прозрачно и для любого опыта.

TaskPay – биржа заработка на простых заданиях. Оценка приложений, тестирование, рецензии к видео, копирайтинг и рерайтинг – платформа собрала все альтернативные методы подработки удаленно. Выбирайте что больше по душе и проверяйте свои силы.

***

Платформы для тестирования – отличный способ получить дополнительный доход, нарастить опыт, попробовать себя на международном рынке, понять свои слабые места и определить зоны роста.

Плюсом всех платформ являются именитые заказчики, которые ими пользуются. Хотите строчку в резюме про Coca-Cola, Facebook или Loreal? Присмотритесь.

***

Не всем подходит свободное плавание, но для расширения кругозора узнать о нем полезно. Если вы только меняете профессию, стоит обратить внимание на факультет тестирования ПО GeekBrains. Под руководством опытных наставников здесь можно получите востребованную профессию, а успешно освоившим программу обучени студентам онлайн-академия помогает с трудоустройством.


23
Ноя
2020

❹ ❌👨‍🎓️4 мифа о профессии программиста, в которые вы почему-то еще верите

В этой статье эксперты SkillFactory опровергают расхожие мифы о профессии программиста и подсказывают, что делать дальше.

В 2020 году все уже должны были узнать, что профессия программиста не так страшна, как кажется. Тем не менее находятся люди, которые считают, будто это не для них. Они даже готовы привести доводы в защиту своих убеждений – и тем самым упускают возможность освоить востребованную профессию.


Миф №1. Программирование – только для технарей

Мы не будем врать, что за пару недель можно переучиться из художника в программиста. На самом деле секрет не в том, какая оценка по математике у вас была в школе или в каком вузе – гуманитарном или техническом – вы учились.

Программистов отличает способность мыслить алгоритмически. У кого-то есть предрасположенность к такому мышлению, но это не значит, что его нельзя развить самостоятельно или при помощи наставников.

Например, получить профессию разработчика на Python может и новичок. Начать стоит с тренировок мышления и программирования через отработку алгоритмов. Этот навык поможет решать нетривиальные задачи по программированию в будущем.


Миф №2. Слишком долго учиться

Курсы по программированию длятся от 6 до 24 месяцев, в зависимости от программы. Учеба в вузе отнимет у вас минимум 4 года, но при этом вы изучаете общеобразовательные предметы, вроде риторики, философии, психологии и этики. Не говоря уже о том, что программы в вузах могут устаревать…

Мы не агитируем вас бросать вуз и отказываться от высшего образования в принципе, но помните, что «вышка» – не единственный способ стать разработчиком. Важно, чтобы преподавателями были действующие эксперты, а программа обучения была ориентирована не только на теорию, но и на выработку практических навыков.


Миф №3. Нужно много свободного времени на учебу, а работу потом найти сложно

Во-первых, давайте зададимся вопросом: «много времени» – это сколько? 10 часов в неделю – это много или мало? А ведь именно столько времени нужно тратить на обучение новой профессии. Скорее всего эти же 10 часов вы проведете, залипая в ленте Фейсбука или Тиктока.

Во-вторых – со знанием Python сложно остаться без работы. Число вакансий растет с каждым годом: +127% с 2015 года по данным HH.ru. На курсе «Fullstack-разработчик на Python» в SkillFactory вас не только научат программировать, но и помогут найти работу. Начиная с первых недель обучения, ментор поможет определить карьерные цели и не сойти с намеченного пути, а карьерный центр подскажет, как оформить резюме и попасть на собеседования.


Миф №4. Программирование – только для мальчиков

Самый неприятный миф в этой статье. Да, сейчас среди программистов мужчин больше, чем женщин, но если бы этот миф был правдой, то мир никогда бы не узнал о Мариссе Майер (экс-директор Yahoo!), Адель Голдберг (разработала язык программирования Smalltalk), Катарине Фейк (основала фотохостинг Flickr) и других крутых женщинах-программистах.

Если все действительно не так страшно, то куда идти учиться?

Зависит от ваших возможностей. Можно попробовать пройти бесплатные курсы или посмотреть ролики на YouTube. Платные школы ценятся за системный подход, обратную связь, когда опытный куратор может объяснить непонятные моменты и указать на ошибки, и помощь в трудоустройстве.

В период крупных скидок появляется много соблазнов: хочется купить новый смартфон, хотя предыдущий ещё не устарел, или очередные кроссовки. А можно вложить деньги в своё образование, сделав выгодную инвестицию в будущее.

***

С 17 по 30 ноября действуют скидки от 50% на все курсы онлайн-школы SkillFactory. Окончив онлайн-программу, вы сможете сразу же начать работать – это самый безопасный способ войти в сферу IT, не тратя несколько лет на учёбу, но при этом получив все базовые знания. Выгодно используя распродажу сейчас, вы инвестируете в своё будущее.

И кажется, что это одна из самых грамотных инвестиций в свое будущее.