Во второй половине дня я отправился в штаб-квартиру Toutiao, чтобы пройти собеседование на позицию фронтенда, и я завис на второй стороне... Мой фундамент все еще немного беден, поэтому я резюмирую темы двух раундов собеседований здесь:
один раунд интервью
Каков принцип реализации типа?
https://ecma262.docschina.org/#sec-typeof-operator https://stackoverflow.com/questions/45462182/transform-a-javascript-object-to-function-manually https://stackoverflow.com/questions/29353177/what-is-base-value-of-reference-in-ecmascriptecma-262-5-1
Как реализовано наследование js? Каков принцип?
Я объяснил цепочку прототипов js, но чувствую, что выражение недостаточно ясное. Одно дело понять в своем сердце, и другое дело объяснить это.
Дайте функции A функцию B, и в A есть свойство, которое реализует B вручную и наследуется от A. И сделать наилучшую реализацию наследования
В то время я собирался написать о методе наследования паразитного комбинирования, но, похоже, я написал много ошибок в процессе рукописного ввода, а умение писать код еще нуждается в доработке. Реализация наследования паразитной композиции:
function inheritPrototype(SuperType, SubType) {
var prototype = Object.create(SuperType.prototype);
prototype.constructor = SubType;
SubType.prototype = prototype;
}
function SuperType(props) {
this.props = props;
}
function SubType(props) {
SuperType.call(this, props);
}
inheritPrototype(SuperType, SubType);
В частности, для A и B, A является SuperType, а B является SubType.
ПрикрепилObject.create()
реализация, при передаче параметраObject.create()
и следующееobject()
Ведет себя так же. (Object.create()
При необходимости передайте второй параметр, в котором могут быть определены дополнительные свойства нового объекта, такие какObject.create(SuperType, {name: {value: 'Test'}}
)
function object(obj) {
function F() {};
F.prototype = obj;
return new F();
}
Задача простого алгоритма: найти K-е наибольшее число в массиве
Рукописный собственный запрос ajax
- После написания интервьюер
if (xhr.readyState == 4 && xhr.status == 200)
Также много вопросов по кодам статуса, например статус здесь можно заменить на 201 - потому что я написал прямо
var xhr = new XMLHttpRequest()
, не обеспечивал совместимость с IE, интервьюер задавал вопросы о совместимости с IE.
Более полный ответ:
function createXHR() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
// 兼容IE5和IE6
return new ActiveXObject('Microsoft.XMLHttp');
}
}
var xhr = createXHR();
xhr.onReadyStateChange = function() {
if (xhr.readyState == 4) {
// 状态码为200至300之间或304都表示这一请求已经成功
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
console.log(xhr.responseText)
} else {
...
}
}
}
// GET
xhr.open('GET', url);
xhr.send();
// POST
xhr.open('POST', url);
xhr.send(data);
После этого интервьюер нарисовал эскиз и попросил реализовать его с помощью html и css.Контент включал в себя такой контент, как фиксированное левое и правое адаптивное, вертикальное центрирование и так далее. Эскиз выглядит так:
Как обрабатывать ошибки при написании кода?
У вас есть понимание реакции и виртуального DOM?
Второй раунд интервью
Знаете ли вы что-нибудь о семантике html? Есть ли эти семантические новые теги?
В то время я отвечал на некоторые смысловые теги. в заключении:
Семантические теги, то есть содержимое самого тега, могут выражать значение этого элемента для браузера или разработчика. Например<div>
и<span>
Это элемент без семантики. и<form>
представляет форму или<table>
Таблицы представления являются семантическими метками.
В H5 представлено много новых семантических элементов, таких как:
-
<header> <nav> <aside> <footer>
Несколько тегов используются для представления различных частей страницы, таких как заголовок, навигация и боковая панель. -
<article>
Элемент представляет собой независимую структуру в документе, странице, приложении или веб-сайте, которая предназначена для независимого назначения или повторного использования, как в публикации, это может быть сообщение на форуме, журнал или новостная статья, блог, отправленные пользователем комментарии, интерактивные компоненты, или другие независимые элементы контента. -
<section>
Содержит набор контента и его заголовок. -
<figure>
Укажите независимое содержимое потока, такое как изображение, диаграмма, код фотографии и т. д.,<figcaption>
определение<figure>
заглавие.
Какой исходный код Bootstrap вы видели? Каковы особенности Bootstrap?
Здесь я расскажу о примерной реализации системы растеризации Bootstrap и отзывчивости Bootstrap. Затем интервьюер спросил, как Bootstrap добивается отзывчивости, и я ответил: @media с помощью css. Затем он спросил меня, есть ли еще какие-то особенности, о которых я тогда не помнил.
Как много вы знаете о флексе? Каковы основные свойства гибкости?
Только что ответил на основноеjustify-content
иalign-items
flex-direction
и т.д
Как добиться двухколоночного макета одинаковой высоты?
В процессе расспроса он также спросилheight: 100%
связанные вопросы
Как очистить поплавок?
Здесь он попадает в использованиеclear: both
, сказал интервьюер, есть ли другой способ, сказал толькоclear: both
Недостаточно, нет ответа.
Принцип: Основной принцип очистки плавающего элемента заключается в том, чтобы создать его на родительском элементе плавающего элемента.контекст форматирования блока(контекст блочного форматирования, BFC), все элементы в BFCбудет содержать плавающие элементы. Существует множество способов создания BFC, наиболее часто используемыми являются следующие:
-
display
заflex inline-block inline-flex table-cell
Элементы -
overflow
заvisible
элементы, кроме -
position
заabsolute
илиfixed
Элементы -
float
заnone
элементы, кроме
Поэтому просто примените вышеуказанные свойства к родителю элемента с плавающей запятой, чтобы создать BFC для родителя, чтобы очистить поплавок.
Кроме того, используйтеclear:both
Плавающие также можно очистить, лучше всего использовать псевдокласс для родительского элемента.:after
Добавьте это, чтобы очистить плавающие элементы, такие как:
.parent-box:after{
clear: both;
content: '';
display: block;
}
Содержание здесь взято изэта статьяАннотация очень хорошо написана, всем рекомендую прочитать.
Приоритет веса стиля?
!important
> Встроенные стили >id
> class
> tag
Вес стиля может быть сложен
内容转自:https://juejin.cn/post/6844903570001625102
юнит в cssem
иrem
Какая разница?
-
rem
относится к корнюem
, rem — это em корня относительно корневого элемента html. -
em
является относительной единицей длины относительно размера шрифта текста в текущем объекте. Если текущий размер шрифта для встроенного текста не задан вручную, он определяется размером шрифта браузера по умолчанию. На самом деле, согласно стандарту W3, единицы em относятся к размеру шрифта элементов, использующих единицы em. Размер шрифта родительского элемента может повлиять на значение em из-за наследования. - Суммировать:
rem
Перевод единиц в пиксельные значения определяется размером шрифта html-элемента. На этот размер шрифта влияет настройка размера шрифта в браузере, если она явно не переопределена для конкретной единицы измерения.em
Единицы преобразуются в значения пикселей в зависимости от используемого размера шрифта. На этот размер шрифта влияет размер шрифта, унаследованный от родительского элемента, если он явно не переопределен с помощью определенной единицы измерения.
这部分内容转自: https://www.w3cplus.com/css/when-to-use-em-vs-rem.html © w3cplus.com
Как превратить часть текста за элементом в многоточие (...)
Если однострочное переполнение текста становится многоточием, вам необходимо использовать несколько свойств CSS в сочетании:
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
Для нескольких строк удовлетворительный эффект может быть получен в браузере ядра webkit.Следующее указывает на отображение 2 строк, а часть с более чем 2 строками отображается в виде многоточия:
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
-webkit-box-orient:vertical;
-webkit-line-clamp:2;
Рукописный ввод страницы обратного отсчета
- здесь, потому что я использовал
var date = new Date()
, поэтому интервьюер еще раз спросил, какое время сегодня? Это событие в текущем часовом поясе или времени компьютера или что-то еще? На это нет ответа. ответЕсли параметры не введены, конструктор Date создаст объект Date на основе текущего времени, установленного системой.. - потому что я использую
setInterval()
Для реализации обратного отсчета написано, что он выполняется раз в 1000 миллисекунд, поэтому интервьюер еще раз спросил содержимое очереди задач js, и спросил меня, может ли браузер гарантировать, что он будет выполняться раз в 1000 миллисекунд. Я сказал, что из-за взаимосвязи между очередью задач основной поток не может быть гарантированно выполнен один раз каждые 1000 миллисекунд Затем он спросил меня, есть ли какой-нибудь метод оптимизации? Я говорю, что ты можешь использоватьrequestAnimationFrame
Сделайте вызов петли, так что сам браузер будет оптимизирован, и интервьюер спросил меня, как оптимизирован браузер (это действительно вопрос к концу), и я не могу ответить на него здесь.
Как определить, является ли переменная массивом?
Как instanceof реализован в js?
Какие новые функции ES6 были использованы и каковы основные типы данных js? Есть ли новые типы данных в ES6?
Я ответил стрелочные функции, карта, набор и т. д. Интервьюер спросил о характеристиках стрелочных функций. В ES6 появился новый примитивный тип данных Symbol, который раньше почти не использовался и на который не было ответов. Затем я задал вопрос об обещании, имея в виду обещание:
Как реализуются промисы? Могу ли я написать функцию для реализации Promise?
Раньше я его не писал, так что наверное функцию написал сам, в итоге интервьюер задавал разные вопросы по написанному мной коду, короче, написание было в корне неправильное. .
Разница между http и https? Каковы характеристики https?
Наиболее часто задаваемые вопросы: процесс от ввода URL до рендеринга веб-страницы.
Это задает порядок отправки HTTP-запросов и DNS-запросов.
Дерево DOM и дерево рендеринга загружаются последовательно? Каков порядок загрузки html, css, js? (наверное спросил)
В дополнение к порядку загрузки, вот еще вопрос, например, полностью ли загружается DOM-дерево и отрисовка css? Или выполнять рендеринг css при построении дерева DOM? Если в html есть кусок js-кода, который долго зацикливается, не повлияет ли это на отрисовку страницы?
В основном меня спросили здесь, потому что я не вникал в вопрос порядка загрузки. Это все вопросы, которые приходят в голову.После интервью я чувствую, что мой фундамент недостаточно хорош, и я немного нервничал во время интервью, и я не мог выразить многие вещи, которые я обычно знаю.
Я надеюсь, что это поможет всем, кто ищет передовую работу.