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

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, не тратя несколько лет на учёбу, но при этом получив все базовые знания. Выгодно используя распродажу сейчас, вы инвестируете в своё будущее.

И кажется, что это одна из самых грамотных инвестиций в свое будущее.

16
Ноя
2020

👨‍💻 Самые востребованные в России ИТ-профессии

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

В этом году количество предложений о работе в сфере информационных технологий значительно увеличилось. По итогам первых трех кварталов отрасль занимает 2 место по размещенным вакансиям (на первом традиционно – «Продажи»). Рынок труда в ИТ развивается быстрее общего рынка труда. Декрет о цифровой экономике, развитие технологий, популярность стартапов – все это положительно влияет на индустрию.


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

Перед вами наиболее востребованные специализации, предоставленные сайтом HH.ru в 2020 году.


Разберем первые четыре позиции из этого списка, которые перевалили барьер в 4%.


1. Quality Assurance engineer

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

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

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

Какие задачи решает QA?

В круг обязанностей QA-инженера входит планирование процесса тестирования, написание тест-кейсов (сценариев тестирования), тестирование функциональности, анализ и оптимизация процесса тестирования и ведение тестовой документации.

Какие навыки требуются QA?

Чтобы стать QA, нужно понимать цикл разработки ПО, изучить теорию и основные инструменты тестирования, иметь хороший уровень английского. Желательно изучить HTML, SQL, CSS – на базовом уровне. Также необходимо иметь широкий ИТ-кругозор, быть внимательным к деталям, обладать аналитическими способностями, уметь моделировать и работать с абстракциями.

Каков самый важный навык?

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


2. Java-разработчик

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

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

Java-разработчик должен знать базовые вещи: машинная математика, переменные и типы данных, условные конструкции, логические операции, циклы, методы и т.п. Далее идут более продвинутые темы: коллекции, карты (Map), основы вывода (IO, NIO), методы работы со строками (StringBuilder, StringBuffer), регулярные выражения, Date API, рефлексия и многое другое.Помимо теоретических знаний, у вас должны быть сформированы необходимые навыки написания кода.

Как стать Java-разработчиком?

Совокупность вышеперечисленных разделов Java + ООП в среде джавистов называется Java Core (от англ. “core” – ядро). Если вы хотите освоить эту профессию, начинать нужно именно с ядра.

Также стоит изучить одну из систем управления базами данных (СУБД). Это может быть MySQL или PostgreSQL. Часто работодатели ищут людей со знаниями Hibernate (фреймворк, для работы с ООП и БД) и MVC(Model-View-Controller – паттерн для ускорения разработки проектов)


3. PHP developer

PHP (Hypertext Preprocessor) – скриптовый язык, активно используемый для создания серверной части интернет-ресурсов.

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

Если вы твёрдо намерены устроиться на должность PHP-разработчика, то первое, что нужно будет изучить – принципы работы протокола HTTP и сервера DNS. Далее пойдут основы языка и знакомство с возможностями последних его версий. Надо будет уметь настраивать веб-серверы Nginx и Apache, а также знать MySQL. PHP и HTML очень тесно связаны, так что знание языка разметки – обязательно.

Каковы дополнительные скилы?

Часто компании требуют от соискателя следующие знания и навыки:

– понимание паттерна MVC;

– владение английским на уровне чтения;

– умение работать с менеджером зависимостей Composer;

– знание Docker и Vagrant

– опыт работы с системой контроля версий Git

– опыт проектирования REST API

– опыт работы с веб-фреймворками (Yii, Laravel, Symfony).


4. Frontend-developer

Фронтенд-программист создаёт клиентскую (пользовательскую) часть интернет-ресурса в тестом сотрудничестве с дизайнерами.

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

Фундаментальными технологиями для фронтенд-разработки являются HTML (для создания структуры страницы), CSS (для стилизации) и JavaScript (для динамики). Также следует разбираться с инструментами, повышающими продуктивность разработки клиентской части:

– CSS препроцессоры Less, Sass, Stylus;

– HTML постпроцессоры Pug, Blade;

– сборщики Webpack, Gulp, Grunt;

– система контроля версий Git

– графические редакторы Photoshop, Figma;

– использование сетки Bootstrap.

Каковы дополнительные скилы?

Очень часто от соискателей требуют опыта работы с популярными СMS(Wordpress, Joomla, Bitrix).

Отдельно хочется сказать про библиотеки JS: Angular, Backbone, Ember и React. Они предоставляют готовую структуру вашего JavaScript кода. Существуют различные типы фреймворков под разнообразные нужды, однако четыре вышеупомянутых являются самыми популярными в списке требований при приеме на работу в 2020 году.

Заключение

Если говорить о конкретной профессии, больше всего сейчас требуется инженеров QA, но в списке направлений лидирует веб-разработка (если посчитать суммарно вакансии по фронтенду и бэкенду на PHP, Java, JavaScript и т. д.). Порой работодатели пишут в требованиях все известные им стеки технологий от А до Я. Посмотрев на запросы компании, люди начинают сомневаются в своих способностях, не владея и половиной умений из списка. Никогда не теряйте самообладание и пробуйте продвигать свою кандидатуру в понравившиеся компании. Обязательно найдётся фирма, которая оценит ваш профессиональный уровень по достоинству.

***

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

12
Ноя
2020

🙋 Как iOS-разработчику создать резюме, которое выделит его среди других кандидатов

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

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


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

1) Контактная информация

Кроме заполнения полей «Имя» и «Фамилия» стоит добавить фото и дать контакты для связи.

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

Рекрутеру потребуется с вами связаться, поэтому оставьте как можно больше контактов, и обязательно включите ссылку на профили в соцсетях. Вас все равно будут искать, так что постарайтесь сэкономить время hr-специалиста. Укажите телефон, E-mail, Telegram, VK, Facebook, Skype, Habr и т.д.

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

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

2) Опыт работы


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

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

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

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

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

3) О себе


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

Далее нужно вписать их в раздел «О себе», чтобы соответствовать требованиям компании. Не нужно придумывать скилы, сначала изучите их. Чтобы привлечь внимание и произвести впечатление, придется составить резюме под конкретного работодателя, сосредоточившись на его требованиях. Например, напишите о том, какие библиотеки вы используете в проектах, что умеете делать code review, пишете Unit-тесты и т.д. Создайте краткую справку по техническим навыкам.

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

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

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

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

4) Ключевые слова

Если вы создаете резюме на HeadHunter (hh), заполните список в разделе «Ключевые навыки».

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

В качестве примера приведем список навыков iOS-разработчика:

  1. Swift
  2. Xcode
  3. iOS
  4. Objective-C
  5. Git
  6. SQL
  7. ООП
  8. ARKit
  9. MVVM
  10. VIPER
  11. UIKit
  12. Realm
  13. Alamofire
  14. REST API
  15. GCD
  16. Core Data

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

5) Высшее образование и повышение квалификации, курсы

Хорошо, если в этом блоке вам есть о чем рассказать.

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

6) Чего не следует писать в резюме

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

  • Низкая заработная плата

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

  • Степень Junior

Джуниор – начинающий программист, который знает и понимает язык, но не решал реальных производственных задач. Лучше указать должность без модификаторов уровня: к примеру, iOS-разработчик. Причина: Junior обычно не представляет интереса для работодателя.

  • Нерелевантный опыт

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

7) Небанальное сопроводительное письмо

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

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

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

«Надеюсь, вы найдете мою кандидатуру соответствующей требованиям вакансии.
С уважением, (ваше имя)».

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

8) Размещение резюме

Чтобы вас нашли с наибольшей вероятностью, лучше оставить свое резюме на разных российских рекрутинговых ресурсах, а не только на HH.

SuperJob, «Мой круг», «Хабр Карьера» – на последний сайт обратите особое внимание: там можно найти множество хороших вакансий от проверенных работодателей.


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

***

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

14
Окт
2020

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

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

Телефонный звонок рекрутера

По телефону будут спрашивать, почему вы выбрали профессию разработчика. «Как вы попали в эту область? В каких проектах участвовали?» – HR задает наводящие вопросы, исходя из резюме. Его цель – узнать вас получше. Вопросов будет меньше, если резюме грамотно оформлено и демонстрирует компетентность соискателя.

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

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

Очное собеседование с рекрутером

До беседы с техническим специалистом с вами может опросить рекрутер по списку поверхностных вопросов на знание технологий: «Что такое Swift?», «Что такое ООП?» и т.д. Он может дать вам мини-тест, в котором нужно будет набрать энную сумму баллов, чтобы пройти на собеседование с техническим специалистом. Задача HR – отсеивать заведомо негодных соискателей.

Собеседование с техническим специалистом

Теоретические вопросы

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

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

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

1. Что такое свойство lazy?

Значение ленивого свойства не вычисляется до первого использования.

2. Что такое mutating, и где он используется? Приведите примеры.

По умолчанию свойство структуры не может быть изменено внутри функции. При попытке изменить var name внутри func makeAnonymous вы получите ошибку. Мы можем это осуществить, если поставим ключевое слово mutating перед func.

        struct Person {
    var name: String
    
    mutating func makeAnonymous() {
        name = "Anonymous"
    }
}
    

3. Что делают map, filter и reduce? Приведите примеры.

Метод map позволяет применить переданное в него замыкание для каждого элемента коллекции.

        let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

let result = numbers.map { $0 * 10 }

print(numbers) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(result) //[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
    

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

        let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let filted = numbers.filter{$0 % 2 == 0}
filted
//[2, 4, 6, 8, 10]
    

Метод reduce позволяет объединить все элементы коллекции в одно значение в соответствие с переданным замыканием.

        let cash = [10,50,100,500]
let total = cash.reduce(210, +) //870
    

4. В чем разница между NSArray и NSSet?

NSArray – это упорядоченная коллекция, а NSSet – неупорядоченная. NSSet используется для создания уникальных объектов, а NSArray может иметь повторяющиеся.

5. Какие архитектуры вы использовали? Какая из них у вас любимая и почему?

Стоит потренироваться в использованию архитектуры MVVM, поскольку она наиболее распространена.

6. Что такое main queue?

Main queue – очередь, в которой происходят все операции с пользовательским интерфейсом (UI). Затратные по времени блоки кода, вроде загрузки данных из сети, мы уводим с main queue. Когда мы получаем данные через другую очередь, main queue — свободна и обслуживает события UI. Затем мы вновь возвращаемся на main queue, чтобы обновить элементы интерфейса.

Переключение затратных заданий с main queue на другой поток всегда async. Метод sync на main queue не применяют, потому что это приведет приложение к deadlock.

7. Что такое Grand Central Dispatch? Что такое Dispatch Queues?

Grand Central Dispatch (GCD) – технология Apple API, реализующая параллелизм (выполнение нескольких потоков одновременно) в многоядерном процессоре. GCD управляет общим пулом потоков и решает, когда именно выпустить поток на ядро в зависимости от доступных системных ресурсов. На каждое ядро приходится по одному потоку.

GCD оптимизирует приложение и обеспечивает вызов потока безопасно и автоматически.

Платформа GCD объявляет несколько типов данных и функций (Dispatch Queues, Dispatch Sources, Dispatch Groups, Dispatch Semaphores).

Dispatch Queues – очередь, в которую вы отправляете единицы работы (блоки кода). Затем GCD решает, в каком потоке их выполнять и сколько параллелизма требуется.

8. Что такое UIStackView?

UIStackView– контейнер для UIView. В него мы помещаем выстраивающиеся в виде стека горизонтально или вертикально UIView. Выкладываться они будут автоматически в соответствии с доступным пространством, которое определяется через настройки: alignment, distribution, spacing.

9. Какие существуют логические операторы, что такое оператор объединения с nil?

  1. !a – НЕ;
  2. a && b – И;
  3. a | | b – ИЛИ;
  4. ?? – оператор объединения с nil.

?? возвращает либо значение опционала, либо значение по умолчанию (второе).

        var optionalInt: Int? = 90
var result = optionalInt ?? 30 // 90
    

Если optionalInt не nil, оно возвращается, в противном случае возвращается строка по умолчанию.

10. Объясните иерархию классов UIButton. Суперкласс UIViewController?

NSObject → UIResponder → UIView → UIControl → UIButton

UIResponder → UIViewController

***

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

Практические вопросы

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

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

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

Расскажите, как бы вы проектировали такое приложение:

  1. Бесконечная лента картинок. Каждый элемент ленты – картинка + мета-информация к ней. При нажатии на картинку та открывается в полном размере. Источник картинок – публичный API. Необходимо реализовать оффлайн-режим, т.е. приложение должно функционировать без сети в максимально возможной степени.
  2. Спроектировать чат. Пример: Telegram. Функциональность: список диалогов, в диалогах – сообщения. Можно отправлять текст, фото, видео, аудио. Из диалога можно посмотреть профиль пользователя.
  3. Есть два источника: А и В. Необходимо отобразить на экране список получаемых из них элементов.

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

Не стесняйтесь спрашивать сами

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

О чем можно спросить:

  1. Какие задачи придется выполнять в первое время?
  2. Будет ли ментор?
  3. Какой стек технологий использует компания?
  4. Как компания относится к code review?
***

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

28
Сен
2020

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

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

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

Фото с сайта pixabay.com
Фото с сайта pixabay.com

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

Automation Test Architect

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

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

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

SDET – Software Development Engineer in Test

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

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

Test Architect

Если вы не любите писать код, но можете часами анализировать ТЗ на сотни страниц, стоит подумать о должности Test Architect. Как и архитектор автотестов, архитектор тестирования нужен в крупных проектах и больших компаниях, например, в банках.

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

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

Test manager

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

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

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

Фото с сайта pixabay.com
Фото с сайта pixabay.com

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

Разработка

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

DevOps

Помимо разработки существует еще направление DevOps. В эту профессию переходят тестировщики, которые самостоятельно встраивали автотесты в процессы CI/CD. Им доводилось поднимать всю инфраструктуру автоматизации с нуля, создавать собственные системы мониторинга, а также разворачивать и поддерживать тестовые стенды, работать с Docker и писать bash-скрипты. Устроиться в DevOps будет чуть сложнее, чем получить должность программиста. Обычно, на эту позицию ищут специалистов уровня Senior, но можно попробовать найти работу в стартапе, где требования к кандидату будут ниже.

Фото с сайта pixabay.com
Фото с сайта pixabay.com

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

Product manager

Кто, как не QA знает все о продукте, над которым работает команда? Тестировщик непосредственно участвует в его развитии, знаком с фидбеком от пользователей и видит, что нравится клиентам, а что вызывает у них раздражение. Он понимает, сколько времени требует доработка и может спрогнозировать сроки реализации новой функциональности, а также знает сильные и слабые стороны продукта по сравнению с конкурирующими. В работе тестировщики опираются в том числе на аналитику и формальные метрики: для начала им стоит попробовать себя в качестве помощника PM на текущем проекте. Если не получится, можно предложить услуги конкурентам.

Project manager

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

Заключение

Тестирование – хороший старт для карьеры в IT. Перед тестировщиками открывается множество путей дальнейшего развития, если текущая деятельность перестала приносить им удовлетворение. При желании QA всегда может найти работу по душе.

***

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

24
Сен
2020

Лучшие студенты школы «ProgTips» смогут пройти стажировку на базе НПП «МЕРА»

Потенциальных слушателей наших курсов по программированию волнует вопрос: «Смогу ли я устроиться на работу после обучения или хотя бы пройти стажировку на реальном предприятии?» Мы постоянно работаем над тем, чтобы наши выпускники оставались востребова…

01
Сен
2020

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

20
Авг
2020

Хотите узнать, зачем в современном IT нужны DevOps-инженеры и почему такой должности не было раньше? Объясняем максимально просто.

Что такое DevOps и кто такой DevOps-инженер

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

Данную статью мы подготовили при поддержке нашего партнера – онлайн-университета GeekBrains. На факультете DevOps саму профессию, необходимые практики и инструменты можно освоить с нуля.

А поподробнее?

Представим, вас уже взяли на должность, связанную с DevOps в компании, создающей сайты на заказ. В компанию обращается клиент ООО «Большая Корпорация». Разработчик Василий и дизайнер Анна читают требования, резво принимаются за дело и вот уже готов первый прототип. Тестировщик Ольга проверяет его и передаёт клиенту.

Вроде бы пока всё идёт нормально, но есть одно «но»… «Большая Корпорация» не была бы самой собой, если бы не вносила правки по одной. Уже на пятой правке после смены цвета всех кнопок с бирюзового на аквамарин, Василий, Анна и Ольга начинают рвать на себе волосы – после каждого изменения необходимо переделывать, тестировать и размещать на сервере клиента весь сайт.

Тут на сцену и вступаете вы – DevOps-инженер. Вы быстро разворачиваете pipeline (букв. англ. «система труб»). Только вместо жидкости по этим трубам «течёт» код, а созданная вами система непрерывной интеграции и тестирования собирает и проверяет всё вместе, значительно ускоряя рабочий процесс.

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

Осталось разобраться, почему же эта практика называется DevOps. Всё просто: Dev (Development) – разработка, а Ops (Operations) – эксплуатация. Вот и вся расшифровка этого страшного термина.

Инструменты и навыки DevOps-инженера

Опытный DevOps-инженер должен понимать, как создать быструю и долговременную систему. Поэтому огромным плюсом будет умение строить в своём сознании «карты» инфраструктуры, описывающие, какой элемент за что отвечает.

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

Если вы хотите стать DevOps, придётся хорошо изучить эти и множество других инструментов. Для работы надо разбираться и в Linux, понимать внутреннее устройство операционной системы.

Материалы для чтения, изучения и просмотра

Если вы твердо решили идти в DevOps, помогут следующие ресурсы:

Есть информация и на русском:

Карьера в DevOps

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

В первую очередь в DevOps стоит идти системным администраторам и всем, кому интересны и знакомы Linux-системы. Полезны будет и другие знания по системному администрированию, но именно эта ОС используется в сфере DevOps чаще всего.

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

Финансовые перспективы

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

Чтобы узнать, как дела обстоят в США, воспользуемся инструментом StackOverflow Salary Calculator.

<span>Результаты анализа DevOps-работ с помощью Salary Calculator</span>
Результаты анализа DevOps-работ с помощью Salary Calculator

Медианная зарплата DevOps-инженера в Нью-Йорке составляет 131 тыс. долл. в год (10.8 тыс. долл./мес.), что даже по американским меркам довольно неплохо.

Российские зарплаты рассмотрены в исследовании Яндекса. Как указано в их материале, имея всего год опыта, вы сможете рассчитывать на 115-125 тыс. руб./мес.

Собеседование
Чтобы подготовиться к собеседованию, изучите наш материал 10 вопросов и ответов на DevOps собеседовании.

Конечно, в каждой компании квалификация определяется по-разному, но общепринятым является разделение DevOps-инженеров на те же группы, что и разработчиков: Junior, Middle и Senior. Зарплата DevOps-специалиста стремительно увеличивается с ростом его опыта. Junior и Middle могут рассчитывать на 100-150 тыс. в месяц, а закоренелые DevOps-«волки» получают от 200 тыс. руб.

Заключение

Не терпится начать обучение? Мы предлагаем взглянуть на курс DevOps онлайн-университета Geekbrains, где вам расскажут, как пользоваться такими неотъемлемыми инструментами DevOps, как Docker, Ansible и Kubernetes (полная программа приведена по ссылке).

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

19
Авг
2020

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

Кто из вас знает комик-группу Монти Пайтон? Названный в честь их телешоу, язык Python такой же интересный, веселый и не грузящий. Разработчики Dropbox использовали Python, когда создавали серверную часть и десктопное приложение, а теперь этим инструментом пользуются более 500 млн людей. На Python пишут в Google, Facebook, Netflix, Quora, Reddit и других крупных компаниях.

Примеры известных компаний, активно использующих Python
Примеры известных компаний, активно использующих Python

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

Где применяется Python

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

Это одна из множества причин, почему Python повсюду: в веб-разработке и анализе данных, серверных и десктопных приложениях, бизнес-инструментах и научных исследованиях. Язык портируется почти на все существующие платформы – от мобильных гаджетов до крупных вычислительных узлов.

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

Тест
Хотите проверить свои знания в области последних новостей искусственного интеллекта? Пройдите наш тест «Правда или ложь: что умеют нейросети».

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

Python применяется даже в разработке игр: в Sims 4 для внутриигрового моддинга, а в Civilization IVдля создания собственных модификаций игры.

Что нужно знать и уметь