Как подготовиться к собеседованию на позицию веб-разработчика. Часть 2.

Перевод статьи «Prepare Your Skill Set for Web Developer Interviews — Part 2». Первую часть читайте здесь.

Как отвечать на вопросы на собеседованиях

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

Архитектура

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

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

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

На данном этапе собеседования вам могут задать дополнительные вопросы. Вас могут попросить реализовать некоторые части решения со всеми подробностями. Могут поинтересоваться, как бы вы изменили решение в соответствии с какими-то новыми ограничениями или новой информацией, полученной от интервьюера. Например: «Тяжелый запрос к базе застопорил все другие, что здесь можно сделать?».

System Design and Flows — photo credit for visusllc.com
System Design and Flows — photo credit for visusllc.com

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

Микросервисы и Micro frontends

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

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

Если микросервисы относятся к бэкенду, то для фронтенда есть micro frontends. Эта концепция дает организациям большие преимущества. Весь мир движется в этом направлении и многие компании уже реализовали это у себя.

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

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

Micro-Frontends — photo credit for Tom Söderlund
Micro-Frontends — photo credit for Tom Söderlund

Компонентно-ориентированная архитектура

Одностраничные приложения и JavaScript фреймворки успешно вошли в нашу жизнь. MVC является распространенной архитектурой, применяемой во многих приложениях. И вот что-то изменилось. В 2013 году Facebook выпустил библиотеку React и переопределил подход к разработке приложений на фронтенде, представив компонентно-ориентированную архитектуру.

Не важно, какой из фреймворков вы знаете – важно, понимаете ли вы принципы, стоящие за ними.

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

Компонентно-ориентированная разработка это не просто будущее веба. Это то, что нужно делать уже сейчас, в любом веб-приложении.

Компонентно-ориентированная разработка
Компонентно-ориентированная разработка

AngularJS, Angular 2, React, React Fiber, Vue

Одностраничные приложения в последние годы стоят в авангарде веб-разработки. При этом чаще всего предметами обсуждения в профессиональной среде становятся фреймворки – Angular, React и Vue. Фреймворки для одностраничных приложений доминируют в интернете. А значит, меняют архитектуру веб-приложений, учебные планы курсов по изучению программирования и требования при найме сотрудников.

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

Несколько важных фактов:

  • За Angular стоит Google. А за React – Facebook.
  • React и Vue это библиотеки, реализующие только представление (View в паттерне MVC). Angular это полноценный фреймворк.
  • React Fiber это повторная реализация основного алгоритма React.
  • Angular 2 настолько отличается от AngularJS, что они рассматриваются как две разные технологии.

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

Шаблоны проектирования

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

Angular основан на шаблоне Model-View-Controller. Modules широко используются в JavaScript для отделения определенных частей кода от других компонентов. Классы и наследование в ES6, которые вы используете, реализуются с помощью шаблона Prototype. Сервисы это в основном Singletons, а применять их вы можете с помощью механизма Dependency Injection.

Если вы используете какую-нибудь библиотеку и хотите иметь возможность в будущем ее заменить, вы используете шаблон Adapter. HTTP-сервис в Angular это тоже своего рода Adapter.

RxJS это одна из зависимостей Angular. Используя Subject/Observer/Subscribers RxJS, вы используете шаблон Observer.

Продолжать можно бесконечно. Шаблоны проектирования есть везде.

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

Алгоритмы, структуры данных и задачи

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

Нужно уметь анализировать временную и пространственную сложности. Вы должны суметь изменить решение некоторых проблем в соответствии с ограничениями, которые вам предложат на собеседовании. Ответ чаще всего можно будет написать в виде псевдокода или на одном из распространенных языков, например, JavaScript, Java или C#.

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

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

Leet Code

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

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

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

Leetcode
Leetcode

Codewars

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

В настоящее время Codewars поддерживает 21 язык, включая Go, Clojure, Haskell и Typescript, плюс еще в бете находятся 11 языков, включая Kotlin, Groovy, R и Scala.

Codewars
Codewars

Glassdoor

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

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

Glassdoor
Glassdoor

Заключение

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх