1) На каком шаблоне проектирования основан Vue?

Vue.js основан на шаблоне проектирования Model-View-ViewModel(он же MVVM), основной мотивацией для этого шаблона является  отделение модели от представления.

2) Как передать данные компоненту?

Существует два способа: с помощью атрибут(props) или через события.
<my-awesome-component some-prop="value"></my-awesome-component>

Когда вам нужно передать данные после какого-то определенного события, вы должны использовать диспетчеров и вещателей.
<parent-component>
    <some-child></some-child>
    <another-child></another-child></parent-component>

Для отправки события из двух дочерних компонентов используйте следующий синтаксис
this.$dispatch('something_happen', data);// Event listenerevents: {
    'something_happen' : function(data){
        // Handle event
    },}

3) Назовите хуки жизненного цикла компонента в Vue.js?

beforeCreate, created, beforeMount, mounted,beforeUpdate,updated,activated,deactivated,beforeDestroy,destroyed,errorCaptured

4) Как обновить состояние компонента в Vue ?

Для добавления или обновления реактивного свойства в состояние используется метод Vue.set(объект, ключ, значение), вы можете вызвать его с помощью this.
this.$set(this.user, 'first_name', 'John')

5) Что такое вычисляемые свойства и когда их нужно использовать?

Вычисляемые свойства-это функции, которые возвращают каким-то образом измененные простые свойства, например, у вас есть какое-то свойство text, и вам нужно показать его в верхнем регистре, поэтому вместо хранения двух реквизитов с исходным и прописным текстом вы просто пишете функцию, которая вычисляет необходимое значение на основе исходного свойства.
<div id="root">
  <p>Original message: "{{ someMessage }}"</p>
  <p>Message in uppercase : "{{ uppercasedMessage }}"</p></div>var vm = new Vue({
  el: '#root',
  data: {
    someMessage: 'Hello world!'
  },
  computed: {
    // computed property getter
    uppercasedMessage: function () {
      return this.message.toUpperCase()
    }
  }})
 6) Как подключить внешний css файл в Vue ?

Если вы используете webpack, используйте следующий синтаксис:
<style>
  @import './assets/styles/bootstrap.css';
</style>

Если вы предпочитаете стиль старой школы просто тег <style>.
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

7) Как подключить jQuery плагин?

Как правило, не рекомендуется использовать плагин jQuery в приложениях Vue, однако, если нет таких подходящих компонентов и библиотек, вы можете использовать его. Прежде всего импортируйте jQuery и плагин.
import $ from 'jquery'
import TextEditor from 'TextEditor'

Затем необходимо инициализировать плагин в смонтированном компоненте lifecycle hook.
import $ from 'jquery'import TextEditor from 'TextEditor'
export default class MyComponent extends Vue {
 mounted(){ $(componentId).textEditor({ rows:20, cols:10 }); 
} 
}

8) Как зарегестрировать компонент в Vue.js ?

Чтобы зарегистрировать компонент глобально, используйте следующий синтаксис.
Vue.component('my-awesome-component', { /* ... some options */ })

Первый аргумент - имя нового компонента

Для локальной регистрации компонента используйте компоненты при создании нового экземпляра Vue.
new Vue({
  el: '#app'
  components: {
    'header': Header,
    'footer': Footer
  }})

9)Что такое Vuex ?

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

10) Как сделать условный рендеринг компонента?

Используйте директивы v-if и v-else, компонент будет удален из dom, если вы передадите ему ложное условие. Для сохранения элемента в директиве DOM v-show может быть использовано  css свойство display 

<p v-if="true">Visible</p><p v-else>Not visible</p>

11) Ести ли в Vue.js поддержка data binding? Если да, как его использовать?

Да Vue.js поддержывает data binding, для связывания инпута и состояния следует использовать директиву v-model.
<input v-model="name" placeholder="What is your name?"><p>Hello, {{ name }}!</p>

12) Как реализовать маршрутизацию на стороне клиента  в Vue?

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

13) Как програмно сделать редирект в Vue Router?

Чтобы перейти на другую страницу програмно используйте router.push(location, onComplete?, onAbort?)
logOut () {
    userService.removeCurrentSession();
    this.$router.push('/login');}

Также можно вернуться к какой-то точке стека истории с помощью  метода  go(n)

14) Как защитить какой-то маршрут от несанкционированного доступа?

Его можно сделать внутри компонента или в глобальных guards.
const router = new VueRouter({ ... })router.beforeEach((to, from, next) => {
  if(to.isProtected() && !haveAccess(user)){
    next(false)
  }
  next()})