Горячее лицо с ответами
предисловие
В первую очередь поясню, что блогер находится в городе второго эшелона, поэтому с крупными заводами я не знакомлюсь и естественно опыта работы с крупными заводами у меня нет (даже при наличии такой силы), я брала интервью малая и средняя компания вчера, и я не буду раскрывать здесь название., я написал эту статью после в общей сложности двух раундов резюме. Я считаю, что есть много моих друзей в городах второго эшелона, которым нужны эти общие вопросы интервью.Я только что закончил стажировку, поэтому я скоро пойду искать стажировку.Друзья, вы можете посмотреть и сослаться на него.
Что подготовить перед собеседованием?
Честно говоря, я не рассматривал прежде, когда я взял интервью у этой компании! Первая сторона утром, вторая сторона была уведомлена днем, почти голая (конечно процесс тоже был очень убогий).
Поэтому рекомендуется, если вы готовитесь к собеседованию, вам все равно нужно заранее его просмотреть, хорошо подготовиться и успеть самому, рекомендуется сделать это в течение недели, главное досконально разобраться в проекты, написанные в резюме, от структуры проекта до используемой технологии., трудности и основные моменты должны быть известны, и вы должны быть в состоянии описать, что вы использовали в проекте и что вы завершили.
-
刷面经
Взгляните на недавние писания лиц, чтобы понять, с какими типами вопросов сейчас сталкивается компания, подготовьте несколько общих вопросов и запомните их самостоятельно. -
项目
Проект, который вы пишете в своем резюме, должен быть достаточно понятен, от технической архитектуры до исходного кода, по крайней мере, чтобы интервьюер не спрашивал его во время собеседования. -
亮点
Подготовьте некоторые свои основные моменты, потому что вы не можете ответить на каждый вопрос в интервью, но вы должны иметь основные моменты в процессе интервью, иначе на некоторые заданные вам вопросы будут даны ответы в целом, так что интервьюер не будет чувствовать себя У вас это хорошо получается (обратную связь получите, интервьюер говорит, что вы в порядке, но вы не сдали), можете подготовить несколько пунктов, и каждый пункт гарантированно дует на полчаса. Кроме того, вы должны понимать очень глубоко, и вы должны быть в состоянии выразить это бегло! -
练手
Сначала найдите несколько компаний, в которые вы не хотите идти (похожие по размеру, но далеко от того места, где вы живете и т. д.), чтобы попрактиковаться в своих навыках. очень высоко. Специально для стажеров, которые еще не прошли собеседование, рекомендуется познакомиться с несколькими компаниями, а затем подумать, в какую из них пойти.Я видел слишком много друзей вокруг себя, которые горят желанием найти работу после окончания учебы и просто отправляют свои резюме. пройдя собеседование, их берут на работу. Чжоу сказал, что не хочет идти, поэтому убежал и снова искал ее. В данном случае выигрыш не стоил потери, и требовалось время, чтобы найти работу, которая он хотел. -
心态
В конце концов, это ваш менталитет, что очень важно! ! ! Собеседование очень обычное, оно не доказывает, что вы не хороши, оно просто не подходит, подведите итог собеседования и подготовьтесь к следующему разу. Как и многие вопросы, которые задавала первая компания, которую я встретил впервые, я не мог на них ответить. Начальник написал о наборе стажеров. В конце люди, которые меня брали на собеседование, задавали какие-то странные вопросы. Мне не нужно было писать страница на фронтенде, а на бэкенде тоже нет.Напишите интерфейс, и наконец сказали, что компании нужен промежуточный фронтенд.В настоящее время я могу быть только младшим фронтендом, который не соответствует требованиям компании . Я задавался вопросом о найме промежуточного звена для написания переднего плана и найме стажеров? ? ? Все интервью заняло менее 10 минут, и я был готов взорваться. Это также повлияет на собеседование позже, поэтому у вас должно быть хорошее отношение к результатам собеседования.
Вопросы на собеседовании, которые нужно запомнить
Для удобства читателей я классифицировал вопросы собеседования.В этой статье в основном написаны вопросы собеседования, связанные с Vue и проектами.Поскольку в резюме я написал три проекта,большинство вопросов начинается с проекта.Вживую ответ не очень хорошо. . . Подробные статьи я буду размещать в Интернете, чтобы читатели могли ознакомиться подробнее.
vue связанные
- Давайте поговорим о жизненном цикле экземпляров Vue: существует ли настоящий DOM на этапе монтирования?
Vue
Процесс экземпляра от создания до уничтожения является жизненным циклом.
То есть: начать создавать -> инициализировать данные -> скомпилировать шаблон -> монтироватьdom
-> обновление данных повторно отображает манекенdom
-> Уничтожить наконец. Эта серия процессов является жизненным циклом Vue. Таким образом, настоящий DOM уже существует в смонтированной фазе.
- beforeCreate: смонтировать элемент el и объект данных экземпляра vue
data
еще не были инициализированы, все ещеundefined
государство - создано: объект данных экземпляра vue в это время
data
Уже там вы можете получить доступ к данным и методам в нем,el
Еще не установлен и не установленdom
- beforeMount: элемент экземпляра vue здесь
el
и объекты данных есть, но они все еще виртуальны до того, как они смонтированы.dom
узел - Mounted: экземпляр vue был смонтирован на реальном
dom
, это можно сделать поdom
операция, чтобы получитьdom
узел - beforeUpdate: вызывается при обновлении данных ответа, происходит в виртуальном
dom
Перед исправлением, подходит для доступа к существующему до обновленияdom
, например вручную удалить добавленный прослушиватель событий - обновлено: виртуальный
dom
Вызывается после повторного рендеринга и исправления для создания новогоdom
Он был обновлен, чтобы избежать манипулирования данными в этой функции ловушки, чтобы предотвратить бесконечные циклы. - beforeDestory: экземпляр vue вызывается перед его уничтожением, его также можно использовать здесь,
this
Вы также можете получить доступ к экземпляру, где вы можете очистить некоторые неиспользуемые таймеры и отменить привязку событий. - уничтожено: вызывается после уничтожения экземпляра vue.После вызова все прослушиватели событий будут удалены, а все дочерние экземпляры будут уничтожены.
- Сколько способов связи есть в Vue? Каким образом вы решаете коммуникацию межпоколенческих компонентов?
Всего есть 7 видов, и в то время были даны ответы только на 4 вида.
- props/$emit для связи между родительскими и дочерними компонентами
- ссылка сдочерние элементы подходят для связи компонентов родитель-потомок
- EventBus (шина событий) подходит для связи родителей и детей, между поколениями и родственными компонентами.
- слушатели для межпоколенческой компонентной коммуникации
- обеспечить/внедрить подходит для межпоколенческой связи компонентов
- vuex подходит для связи между родителем и ребенком, между поколениями и родственными компонентами.
- щелевой щелевой метод
- Каковы общие директивы в Vue? ?
v-text/v-html/v-for/v-show/v-if/v-else/v-cloak/v-bind/v-on/v-model/v-slot...
Инструкции Vue еще надо запомнить.Здесь расположены по моему методу запоминания.У каждого может быть свой метод запоминания.
Обратитесь к документации vue.
- В чем разница между v-show и v-if? ?
v-show — переключение css, v-if — полное уничтожение и воссоздание, если v-show используется для частого переключения, v-if используется для меньшего количества изменений во время выполнения
- Расскажите о своем понимании vuex?
Vuex — это режим управления состоянием, специально разработанный для vue.js.Ядром каждого приложения vuex является хранилище (склад). Магазин — это в основном контейнер, который содержит большую часть состояния в вашем приложении.
-
vuex
Хранилище состояний реактивно, когдаvue
При чтении состояния в хранилище в компоненте, еслиstore
Если состояние на сервере изменится, соответствующий компонент будет соответственно эффективно обновлен. - Изменять
store
Единственный способ показать статус вcommit
(Отправить)mutation
, чтобы мы могли легко отслеживать изменения каждого состояния.
В основном это следующие модули:
- Состояние: определяет структуру данных состояния приложения, здесь вы можете установить начальное состояние по умолчанию.
- Getter: Разрешить компоненты из
Stroe
получить данные изmapGetters
Вспомогательная функция — это простоstore
серединаgetter
Сопоставляется с вычисляемыми свойствами. - Мутация: уникальное изменение
store
метод в состоянии и должен быть синхронной функцией. - Действие: для фиксации
muatation
, вместо прямого изменения состояния может содержать произвольные асинхронные операции. - Модуль: позволяет один
store
разделить на несколькоsotre
и при этом хранится в едином дереве состояний
- в вексе
state
Будут ли сохраненные данные существовать, если страница будет обновлена?
В то время я не думал ясно и ответил да. Интервьюер сказал, что я не позволил мне вернуться и попробовать это. На самом деле я знал, что после этого этого не было. Я столкнулся с этой проблемой в проекте . . .
адрес проекта:Торговый центр с высокой имитацией проса,гитхаб-адресЗаинтересованные друзья могут клонировать и учиться. Если вы чувствуете себя хорошо, вы можете нажать «Пуск».
В этом проекте я использовал vuex для управления именем пользователя и количеством корзин.В то время моя идея заключалась в том, чтобы пользователи могли получить доступ к домашней странице, даже если они не вошли в систему. , пользователь будет перенаправлен на страницу входа, поэтому возникает такая вещь, как проблема, когда пользователь входит в систему, я использую vuex для хранения имени пользователя и количества корзин.Когда пользователь переходит на другие страницы и затем возвращается на домашнюю страницу, на этот раз в vuexstate
В имени пользователя нет данных и количество корзин пусто, решение на тот момент в app.vuemounted
Этот хук определяет, вошел ли пользователь в систему по тому, хранится ли идентификатор пользователя в файле cookie, и, если он вошел в систему, повторно отправляет запрос, а затем передаетdispatch
курокaction
представитьmutation
метод восстановления имени пользователя и количества корзины доstate
середина
- Разница между v-bind и v-model, вы знаете принцип v-model?
- v-bind используется для привязки данных, свойств и выражений.
- v-model используется в формах для реализации двусторонней привязки данных и не может использоваться вне элементов формы.
Принцип v-модели: мы в основном используем инструкции v-модели в проекте vue для создания двусторонней привязки данных к элементам формы, таким как ввод формы, текстовая область, выбор и т. д. v-модель по сути является синтаксическим сахаром vue, а v -model внутренне использует разные свойства и выдает разные события для разных элементов ввода:
-
text
иtextarea
Элементы используют атрибут value и событие ввода -
checkbox
иradio
использоватьchecked
Свойства и события изменения -
slect
поле будетvalue
в видеprop
и изменить событие действия
"взять каштан"
<input v-model="something">
本质上相当于这样
<input v-bind:value="something" v-on:input="something = $event.target.value">
其实就是通过绑定一个something属性,通过监听input事件,当用户改变输入框数据的时候,
通过事件传递过来的事件对象中的target找到事件源,value属性表示事件源的值,从而实现双向数据绑定的效果
Другие реализации можно найти в статьеАнализ исходного кода v-модели (сверхдетальный)
- В чем разница между MVC и MVVM? ?
"MVC"
- M — модель: модель — это часть приложения, используемая для обработки логики данных приложения, обычно объект модели отвечает за доступ к данным в базе данных.
- V — представление: представление — это часть приложения, которая обрабатывает отображение данных, обычно представление создается на основе данных модели.
- C — Контроллер: Контроллер — это часть приложения, которая обрабатывает взаимодействие с пользователем, обычно контроллер отвечает за чтение данных из представления, управление пользовательским вводом и отправку данных в модель.
图示
流程
- View принимает запросы взаимодействия с пользователем
- Представление перенаправляет запрос контроллеру для обработки.
- Контроллер управляет моделью для обновления и сохранения данных
- После сохранения обновления данных Модель уведомит представление об обновлении.
- Просматривайте данные об изменениях обновлений, чтобы дать пользователям обратную связь
"MVVM"
- M - модель, модель представляет собой модель данных, и бизнес-логика модификации данных и операции также может быть определена в модели.
- V — View, View представляет компонент пользовательского интерфейса, который отвечает за преобразование модели данных в пользовательский интерфейс и его отображение.
- VM — ViewModel, ViewModel отслеживает изменения в данных модели, управляет поведением представления и обрабатывает взаимодействие с пользователем.Простое понимание — это объект, который синхронизирует представление и модель, соединяя модель и представление.
图示
流程
- Представление получает запросы взаимодействия с пользователем
- View перенаправляет запрос в ViewModel
- Операция ViewModel Обновление данных модели
- После того, как модель обновила данные, уведомите ViewModel об изменении данных.
- Обновления ViewModel Просмотр данных
"Разница между двумя"
- ViewModel заменяет контроллер ниже уровня пользовательского интерфейса
- ViewModel предоставляет данные и инструкции, необходимые для представления.
- ViewModel получает данные от модели
❝Подводя итог, MVVM разработан из MVC путем добавления невизуального компонента над моделью и под представлением для сопоставления данных из модели с представлением.
❞
- Почему данные компонента в Vue должны быть функцией? ?
Поскольку компоненты могут использоваться повторно, объекты в js являются ссылочными отношениями.Если данные компонента являются объектом, то значения атрибутов данных в подкомпонентах будут загрязнять друг друга, вызывая ненужные проблемы. Таким образом, данные в компоненте должны быть функцией, чтобы каждый экземпляр мог поддерживать независимую копию возвращаемого объекта. Также из-заnew Vue
Экземпляры не используются повторно, поэтому вышеуказанных проблем не существует. Официальная документация очень подробная, если вы хотите узнать о ней больше, вы можете прочитать объяснение в документации.
разное
- Выполняли ли вы какую-либо внешнюю обработку исключений? ? Что вы наделали?
Когда я столкнулся с этой проблемой, я был в замешательстве, честно говоря, я никогда не думал, что на собеседовании меня спросят об обработке исключений. я только говорил
- Исключение ошибки кодирования в js
- исключение HTTP-запроса
- Обработка исключений промисов
На самом деле их гораздо больше, я дажеwindow.error
чтобы поймать ошибки времени выполнения, ничего не говоря
Как изящно обрабатывать внешние исключения?
- Разница между файлами cookie, SessionStroage и LocalStroage.
Когда я ответил на этот вопрос, я не ответил на него хорошо, и я не понял его в конце.Я также делал заметки между ними (это показывает важность рецензирования, и сделанные мной заметки следует читать больше, иначе смысла нет)
- размер хранилища
Cookie4K, Stroage5M
- срок хранения
Cookie имеет ограничение по сроку действия, а Storage - нет, sessionStorage исчезает только при закрытии окна
LocalStorage всегда доступен, даже когда браузер закрыт, и хранится на жестком диске. место хранения:C:\Users\你的计算机名\AppData\Local\Google\Chrome\User Data\Default\Local Storage\leveldb
- разная сфера
SessionStorage не является общим для разных окон браузера.Даже если это одна и та же страница, LocalStorage используется всеми окнами одного и того же источника, а файлы cookie используются всеми окнами одного источника.
В чем разница между Cookie, LocalStorage и SessionStorage?
- Вы знаете что-нибудь о http запросах? Каковы общие коды состояния? Что такое 405?
❝Код состояния сети HTTP (STATUS). По коду состояния можно четко отразить результат и причину текущего взаимодействия.
❞
- 200 OK успеха (самое идеальное состояние)
- 301 Moved Permanently Постоянная передача (постоянная переадресация)
- 302 Временно переехать
- 304 Не изменен кеш набора
- 400 Bad Request Ошибка параметра запроса
- 401 Несанкционированный Несанкционированный доступ
- 404 Not Found Ресурс не найден (наименее идеальный)
- 405 Method Not Allowed Метод запроса, указанный в строке запроса, не может использоваться для запроса соответствующего ресурса, но ответ должен возвращать заголовок Allow, чтобы указать список методов запроса, которые может принять текущий ресурс.
- 500 Internal Server Error Неизвестная ошибка сервера
- 503 Служба недоступна Сервер перегружен
❝Код состояния 2xx, как правило, является ошибкой обслуживающего персонала, а код состояния 5xx, как правило, является ошибкой сотрудников бэк-офиса.Очень важно научиться видеть, в чем проблема, и это очень поможет в будущая работа.
❞
- Кэш браузера знает?
Кэширование браузера также является механизмом кэширования HTTP. Механизм основан на идентификаторе кэша HTTP-сообщения. Существует два типа кэширования:
- Принудительно кэшировать
- Согласовать кеш
"Принудительно кэшировать"
❝Когда браузер отправляет запрос на сервер, сервер помещает правила кэширования в HTTP-заголовок сообщения HTTP-ответа и возвращает результат запроса браузеру. который Cache -Control имеет более высокий приоритет, чем Expires.
❞
"Согласовать кеш"
❝Согласование кэширования — это процесс, в котором браузер инициирует запрос к серверу с идентификатором кеша после принудительного отказа кеша, и сервер решает, использовать ли кеш в соответствии с идентификатором кеша.
❞
Принудительный кеш имеет приоритет над согласованным кешем. Если принудительный кеш действителен, кеш используется напрямую. Если нет, используется согласованный кеш. Сервер решает, использовать ли кеш. Результат снова сохраняется в кеше браузера. ; если он вступит в силу, он вернет 304 и продолжит использовать кеш
- Разница между родным Ajax и axios, как Ajax отправляет http-запросы?
Родной Ajax основан наXMLHttpRequest
Отправляйте HTTP-запросы, а axios — это подключаемый модуль, упакованный в соответствии с Ajax, который использует Promise внутри для решения проблемы ада асинхронных обратных вызовов запросов.
Последний вопрос на самом деле задает пять шагов отправки запроса Ajax, что слишком просто, чтобы говорить о них.
- В чем разница между запросом на получение и запросом на публикацию? ?
"GET"
- Обычно используется для получения данных
- Параметры передаются на основе URL-адреса, поэтому существует ограничение на длину (обычно около 8 КБ), если оно превышает, оно будет усечено.
- Поскольку запросы GET легко перехватываются на основе вопросительных знаков, они относительно небезопасны.
- будет генерировать неконтролируемое кэширование, POST не будет
"POST"
- Обычно используется для добавления новых данных
- Исходя из запроса на передачу параметров, теоретически ограничений нет (в реальном проекте ограничение по размеру будет установлено вами, чтобы предотвратить задержку запроса из-за загрузки информации)
- Запрос PSOT основан на теле запроса, и его перехват относительно безопасен.
- В чем разница между http и https? ?
На ответ на этот вопрос уходит полчаса, и все отвечают в разные стороны.
Мой ответ: HTTP - это протокол передачи гипертекста, HTTPS - безопасный протокол передачи гипертекста, последний является обновлением первого и является относительно безопасным.Метод передачи данных с шифрованием имеет относительно высокий коэффициент безопасности, и HTTPS также будет использоваться. как показатели веса поиска по веб-сайту, поэтому веб-сайты HTTPS также имеют больше преимуществ в рейтинге.
- Может ли серверная часть удалять файлы cookie, установленные внешним интерфейсом?
Мой ответ - нет, и я не знаю, правильно ли это, и в Baidu нет ответа. . . Кто знает, может ответить в комментариях.
- Сколько способов существует для обычных макетов?
- Гибкая компоновка (rem/em)
- Растровый макет
- процентное расположение
- плавающий макет
- ...
В интернете их много видов, вы можете поискать сами, так что я не буду говорить об этом здесь.
- В чем разница между rem и em?Скольким пикселям равен 1em?
единицы rem и em являются относительными единицами, за исключением того, что по отношению к элементу em父元素
Размер шрифта рассчитывается, rem относится к根元素
Размер шрифта html вычисляется.
❝1em эквивалентно размеру шрифта родительского элемента текущего элемента
❞
举个栗子
<style>
.box {
font-size: 18px;
}
.box .children {
width: 2rem; // 相当于2 * 18 = 36px
}
</style>
<div class="box">
<span class="children">里面</span>
</div>
- Вы использовали git? Каковы общие команды? Если вы отвечаете за проект, как вы управляете своим складом?
"Общие команды"
创建版本库:
- git clone
- git init
查看配置
git config -l // 查看全部
git conig --global -l // 查看仓库中人员名和邮箱
git config user.name xxx // 设置
git config user.email xxx // 设置
修改和提交
git status
git diff // 查看变更内容
git add .
git mv
git rm
git commmit -m
查看提交历史
git log
git log <file> // 查看该文件每次提交的记录
分支操作
git branch // 查看当前分支
git checkout -b // 添加一个新分支并切换过去
远程操作
git remote -v // 查看远程分支
git remote add <remoteURL> // 添加远程分支
最后说了下我管理库的方式:
首先我会在gitHub上创建一个仓库,为当前项目中每位开发人员取一个对应的分支,让其在对应的分支开发。
然后clone我这个仓库。
当队员需要向gitHub上传代码时,需要先将自己的代码同步到自己远程仓库对应的分支中,
再切换到要本地的主分支将自己本地开发的分支代码进行合并,如果有冲突先在本地解决,
最后再同步到远程的主分支
вопрос сцены
- Если на линии есть большая картинка, и ее отображение занимает много времени, как бы вы ее оптимизировали?
Я ответил только на эти два пункта в то время, и я не знаю остальных. . .
- Использование техники ленивой загрузки
- Оптимизировать размер изображения
- Если бы вас попросили дважды динамически инкапсулировать форму в element-ui, что бы вы сделали?
Для такого рода вопросов мой ответ плохой, и я не осмеливаюсь ошибиться Я поделюсь здесь не той статьей.Компонентная страница: инкапсуляция электронной формы
- Как решать сложные бизнес-сценарии, встречающиеся в проекте?
Это зависит от индивидуального ответа, и проблемы, с которыми сталкиваются разные проекты, различны.
- Какие у вас есть хорошие идеи для инкапсуляции компонентов
Я запутался в этом вопросе, вероятно, потому, что я написал хорошую идею разработки компонентов в своем резюме (честно говоря, ответ в то время был немного потрепанным), и я ответил на него с точки зрения кода.
Через vue.extend, vue.component регистрация таким образом, чтобы найти общие модули проекта, указать общую часть кода, передать значение реквизита и свободно настроить контент через слот, а затем создать файл vue .
В Интернете нет хорошего ответа на этот вопрос, и большие ребята могут комментировать и обмениваться ниже.
- Во многих формах вам нужно нажать кнопку запроса, чтобы открыть окно запроса в соответствии с различными параметрами.В нем есть небольшой список.После проверки данных щелкните строку, а затем повторите ее.Как вы инкапсулируете этот компонент ? (Требуется на нескольких страницах запроса отображать список данных)
Расскажу об общей идее, сначала проанализирую спрос: что нужно?
- Форма форма, таблица, пагинация
- n условные поля, кнопка запроса, кнопка сброса и другие функциональные кнопки. .
Функция, которую необходимо реализовать
- Запрос
- Запросить данные после нажатия на разбиение на страницы
- перезагрузить
- Получить данные после выбора строки
- Триггер других функций
Наконец, можно определить, что данные необходимо импортировать извне.
- Как вы думаете, что является самой большой изюминкой вашего проекта против Xiaomi Mall? ?
На странице подтверждения заказа самоинкапсулированный диалог используется для настройки содержимого через слот, и соответствующие элементы адреса доставки добавляются, редактируются и удаляются, а соответствующие функции реализуются в соответствии с различными щелчками мыши. Пользователь.
постскриптум
Вчера я действительно получил от HR сообщение о том, что я прошел собеседование и прислал мне предложение. Надеюсь быстро вырасти в этой компании. Блогер также является фронтендом самообучения.Он может испытывать чувство замешательства и полного надежды на пути самообучения.Я надеюсь, что фронтенд-друзья-самоучки, такие как я, смогут выстоять . Ну давай же!!!
После прочтения двух мелочей
Если вы найдете мою статью полезной, я хотел бы попросить вас сделать мне два небольших одолжения:
- Подписывайтесь на меня"Гитхаб фейсбук", так что опыт суммирован здесь, Следуйте и начните.
- "Обратите внимание на публичный аккаунт «Станция самообучения Front-end»", все статьи и материалы будут публиковаться в паблике впервые, и паблик аккаунт будет отвечать ""вопросы интервью"” Получите видео с моими хорошо организованными вопросами для интервью бесплатно.