предисловие
Дата собеседования 20 апреля в 19:00. Сегодня я опоздала на 20 минут по личным причинам.К счастью, интервьюер готова дождаться таинственного человека (да, Лао-Цзы), она не представилась, когда подошла, и сразу начала вопрос! !!
Начать интервью
Произнесите значение цвета шрифта метки ниже
Этот вопрос касается наследования CSS и взаимосвязи между весами.
| Селектор | Формат | приоритетный вес |
|---|---|---|
| селектор идентификатора | #id | 100 |
| селектор класса | .class | 10 |
| Селектор тегов | div | 10 |
| селектор потомков | li a | 0 |
Для приоритета селектора:
- Селекторы тегов, селекторы псевдоэлементов: 1
- Селекторы классов, селекторы псевдоклассов, селекторы атрибутов: 10
- селектор идентификатора: 100
- Встроенные стили: 1000
1. Сначала посмотрите на код
<style type="text/css">
#a {font-size:12px}
div p{ font-size:13px }
div .c{ font-size:14px }
.a .b .c{ font-size:15px }
#b{ font-size:16px }
</style>
<div id=”a” class=”a”>
<div id=”b” class=”b”>
<p id=”c” class=”c”>I’am here</p>
</div>
</div>
ps: вот моя метка
cОтвет был неверным, потому что я начал задавать вопросы, когда подошёл, и я сильно нервничал и сказалcунаследуетbЦвет шрифта.
Скажите, какие свойства CSS наследуются
На самом деле, это в соответствии с основным вопросом на обратной стороне интервью, который, по словам интервьюера, написал мне и сказал, перейдите к моей оценке, поэтому интервьюер очень мощный
- Свойства семейства шрифтов
- семейство шрифтов: семейство шрифтов
- font-weight: вес шрифта
- размер шрифта: размер шрифта
- стиль шрифта: стиль шрифта
- Свойства текстовой серии
- text-indent: отступ текста
- text-align: горизонтальное выравнивание текста
- высота строки: высота строки
- word-spacing: расстояние между словами
- letter-spacing: китайский или расстояние между буквами
- text-transform: управление регистром текста (то есть прописные, строчные, заглавные буквы этих трех)
- цвет: цвет текста
- видимость элемента
- видимость: элемент управления для отображения и скрытия
- Список свойств макета
- стиль списка: стиль списка, включая тип стиля списка, изображение стиля списка и т. д.
- свойства курсора
- курсор: в какой форме отображается курсор
пс: теоретические вещи здесь, я был более осведомлен, общий тест я тянул почерк,
Закрытие JavaScript
Здесь замешаны замыкания, я сначала подумал, что тест — это контекст выполнения.
var a=0,b=0;
function A(a){
A = function(b){alert(a + b++)}
alert(a++);
}
A(1);
A(2);
из-за исполненияA(1)час,Aне имеет области действия A, поэтомуA = function(b){alert(a + b++)}переназначает себя и имеет прежнюю область действия (включая формальные параметрыa). образуют замыкание. вызовA(2)то, что выполняетсяalert(a + b++), в настоящее время в рамкахaравен 2, входящий параметр также равен 2, поэтому результат равен 4.
ps: Хотя мое объяснение здесь означает, что я, конечно, не коснулся этого ключевого момента напрямую.
Обход вложенных объектов
Напишите функцию для получения значения в объекте
1, необходимо использоватьstr = 'a.b.c';
«Наверное, мой ответ удивителен. Если вы только что закончили есть, не читайте его, я боюсь, что вы его разбрызгаете».
//find(obj,'a.b.c') //1
//find(obj,'a.d.c') //undefined
var obj = {
a:{
b:{
c:1
}
}
}
var str = 'a.b.c';
const find = (obj,str) => {
let arr = []
for (const key in str) {
if (Object.hasOwnProperty.call(str, key)) {
if (str[key]!= '.') {
arr.push(str[key])
}
}
}
try {
return `${obj[arr[0]][arr[1]][arr[2]]}`
} catch (error) {
return undefined
}
}
Смысл этого вопроса в том, чтобы узнать, как получить значение, содержащееся в объекте.
Есть два метода:
- существует
[]Способ включения строкового выражения в суффикс следующий:obj[a] - можно использовать
.Обозначения, такие как:obj.a
ps: Вышеупомянутое решение заключается в использовании[]Способ решения этой проблемы, масштабируемость у меня не высокая, но вот дырка для себя!
Роль Object.hasOwnProperty
Вот только последний вопрос, который оставил для меня дыру, есть, есть!!!!!!
На самом деле к моменту интервью мой ритм сбился, но я еще не паниковала.
Улыбка интервьюера мгновенно заставила людей меньше нервничать.
ps: Мой ответ - судить, является ли он нулевым или неопределенным. С неоднократной поддержкой интервьюера, я говорю это, чтобы судить о цепочке прототипов~~
Интервьюер здесь улыбается и хорошо выглядит😊😊😊
Прототип и понимание цепочки прототипов
Согласно предыдущему вопросу, интервьюер задал еще один вопрос,
const b = 2
a = b
// 问 : a的原型链指向谁?是怎么个查找顺序
// 答 : a是指向的b
// 问 : 怎么修改a的原型指向
// 答 : 深浅拷贝
// 问 : 除了拷贝呢
// 答 : 思考再三,我说了construvtor (这不对)
// 答 : 通过构造函数
// 下一题(≧﹏ ≦)
правильный ответ: Прототип a не указывает на b, это Number, а b — базовый тип, поэтому a — это переназначение, а прототип a указывает на Number. (После того, как большой парень в области комментариев напомнил мне, что я понял это неправильно)
ps: Это потому, что не заложен фундамент, потому что опыта проектов много, а эти принципы игнорируются, что приводит к слабому пункту в технической оценке.
Визуализация данных проекта, компоненты высшего порядка Vue
Резюме читал здесь.Есть проекты, в которых написана визуализация данных в проекте, и в проекте используются Vue компоненты высокого порядка (ленивая загрузка компонентов)
Код отложенной загрузки компонента
const MonthlyAddition = () => ({
// 需要加载的组件 (应该是一个 `Promise` 对象)
component: import('@/components/Echart/MonthlyAddition.vue'),
// 展示加载时组件的延时时间。默认值是 200 (毫秒
delay: 900, // 延迟加载,默认200毫秒
// 加载失败时使用的组件
error: Hebberror, // 加载失败显示组件
// 异步组件加载时使用的组件
loading: Hebberror, // 加载时使用组件
// 如果提供了超时时间且组件加载也超时了,
// 则使用加载失败时使用的组件。默认值是:`Infinity`
timeout: 2000, // 超时时间,默认 Infinity
});
JSX
export default {
props: {
nowTime: {
type: String,
default: '',
},
},
render() {
return (
<time class="head__time" datetime={this.nowTime}>
{this.nowTime}
</time>
);
},
};
ps: На самом деле, здесь показан некоторый мой собственный проектный опыт, в основном высокоуровневые компоненты.
Тема расширения компонента высокого уровня
Из высокоуровневых компонентов предыдущего вопроса расширен таймер Promise plus, чтобы определить, отображать ли ненормальные компоненты в соответствии со статусом.
/**
*
* @param {Object} falg 标识
* @param {Object} date 数据
* @returns
*/
function componentsShow(falg = true,date) {
let componentsTime = null
return new Promise(function (resolve,reject) {
if (falg) {
componentsTime = setTimeout(function () {
resolve()
},200)
}else{
clearTimeout(componentsTime)
if (date) {
resolve()
}else{
reject()
}
}
})
}
Оптимизация проекта
На самом деле это вопрос, который дает оценку. Я по-прежнему хорошо разбираюсь в оптимизации. В одно мгновение я чувствую
- ленивая загрузка
- CDN
- оптимизация файлов
- Оптимизация веб-пакета
Участие в инкапсуляции шаблона компании в проекте
Пакет мульти-окружения, плагин Ecahrts, axios, публичный стиль Css, Esilit,
psВот грубый взгляд на мой проект, и я также расскажу о том, что я сделал сам.
Webpack использовал эти загрузчики
- babel-loader → escape-код
- css-loader → загружать css, поддерживать импорт файлов
- style-loader → внедрить код css в javaScript,
- scss-загрузчик → экранировать scss
ps: Я проверил свое понимание Webpack здесь. На самом деле, я не ответил на многое. Я чувствую, что мой ответ не особенно хорош.
Суммировать
Оценка меня интервьюером - это принцип или немного, проектный опыт в порядке,
Из ее слов выяснилось, что я все-таки не подхожу.В принципе, после вопроса третьего уровня обе стороны негласно знали результат собеседования.
Благодаря этому интервью я узнал о своих собственных недостатках.Во время интервью я не уводил интервьюера в место, которое я считаю более теоретическим.В принципе, я буду следить за интервью, чтобы дополнить принципы и попытаться поговорить с этой барышней , быть коллегой,
Глядя на похорошевшую женщину-интервьюера, у меня не хватило смелости попросить WeChat или что-то в этом роде, очень жаль, надеюсь, она все еще будет там через полгода.