Эта статья изначально появилась на dormoshe.io

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

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

Прежде, чем мы начнем

Перед этой статьей есть две рекомендуемые статьи. Они не зависят друг от друга.

  • Подготовьте свой набор навыков для собеседований с веб-разработчиками - Часть 1


  • Приготовьтесь к мысленной фазе поиска работы своей мечты


Архитектура

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

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

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

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

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

Микросервисы и микрофронтенды

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

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

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

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

Фреймворки SPA и JavaScript успешно вошли в нашу жизнь. MVC - это общая архитектура многих приложений, но кое-что было изменено. В 2013 году Facebook выпустил библиотеку React и изменил способ создания приложений Front-End разработчиками - Архитектура на основе компонентов.

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

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

AngularJS, Angular, React, React Fiber, Vue

SPA находится в авангарде веб-разработки в последние годы. Большая часть разговоров в коридоре, которые вы ведете, касается главного участника - Angular, React и Vue. В Интернете преобладают структуры SPA. Следовательно, он меняет веб-архитектуру, программы курсов по программному обеспечению и требования к набору высокотехнологичных сотрудников.

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

Более важные факты, к которым следует обратиться:

  • Angular поддерживается Google. React поддерживается Facebook
  • React и Vue - это только библиотеки просмотра. Angular - это целая платформа
  • React Fiber - это повторная реализация основного алгоритма React.
  • Angular настолько отличается от AngularJS, что они привлекают внимание как две разные технологии.

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

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

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

Шаблоны проектирования широко используются. Если вы разработчик Angular, а даже если нет, вы можете подумать о множестве шаблонов проектирования, которые вы используете каждый день. Angular основан на шаблоне Модель-Представление-Контроллер. Модули широко используются в JavaScript для того, чтобы отдельные фрагменты кода не зависели от других компонентов. Классы ES6 и наследование, которые вы используете, реализуются шаблоном Prototype. Службы в основном представляют собой синглтоны, и вы используете их с помощью механизма внедрения зависимостей.

Когда вы используете какую-либо библиотеку и хотите иметь возможность заменить ее в будущем, вы используете шаблон Адаптер. HTTP-сервис Angular также является своего рода адаптером. RxJS - одна из зависимостей Angular. Когда вы используете RxJS ’Subject / Observer / Subscribers, вы используете шаблон Observer.

И я действительно могу продолжать. Паттерны дизайна повсюду

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

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

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

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

Пункты действий

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

Leet Code

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

Кодовые войны

Codewars - это сообщество разработчиков, которое называется Code Warriors (или просто воины), которые тренируются над улучшением своих навыков разработки. Подумайте об этом как о додзе кодирования, где разработчики тренируются друг с другом и помогают друг другу стать лучше через практику. Codewars в настоящее время поддерживает 21 язык, включая Go, Clojure, Haskell и Typescript, а также 11 языков в бета-версии, включая Kotlin, Groovy, R и Scala.

Стеклянная дверь

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

Заключение

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

Вы можете подписаться на меня в dormoshe.io или Twitter, чтобы узнать больше об Angular, JavaScript и веб-разработке.