предисловие
Я закончил учебу в 17 лет и имею опыт работы больше года.Я присоединился к волне поиска работы в середине марта. Вот несколько вопросов из недавнего интервью, которыми я хочу поделиться с вами.
Повторная выгода
одна сторона
- Представьтесь
- Увидев, что вы использовали mobx, расскажите мне о преимуществах mobx? Принцип реализации?
- Каковы наиболее впечатляющие проблемы, с которыми вы столкнулись в проекте со времени вашей работы? Применяли ли вы какие-то собственные идеи и новые технологии в проекте?
- Расскажите о разнице между TS и ES и о преимуществах TS?
- Вы говорите, что вы быстрым учащимся, и что вы закончили прошлый год, вы знакомы с бизнесом и как проект? После прочтения через систематическую книгу?
- Знаете ли вы что-нибудь о мини-программах? (Я только написал демо)
- Знаете ли вы что-нибудь об инструментах для упаковки?
- Помимо React, какие еще фреймворки вы использовали?
- Найдите N-й член последовательности Чипоначчи
- Получить первые N членов последовательности Чипоначчи
- Найти количество уровней объекта (после того, как я написал это, я спросил, не нужна ли вам рекурсия, просто используйте циклы для ее реализации)
- Этот вопрос машины для достижения следующей функции
function machine() {
}
machine('robot').execute()
// start robot
machine('robot').do('eat').execute();
// start robot
// robot eat
machine('robot').wait(5).do('eat').execute();
// start robot
// wait 5s(这里等待了5s)
// robot eat
machine('robot').waitFirst(5).do('eat').execute();
// wait 5s
// start robot
// robot eat
две стороны
- Расскажите о вашем бизнесе там? Ваш бизнес полностью в приложении? (Android, IOS, H5 и даже небольшие программы и быстрые приложения доступны, в основном все сделано с помощью веб-просмотра с h5)
- Вы недавно интересовались технологией, которую вы в основном исследуете? Почему Вы заинтересованы?
- Я посмотрел на ваш гитхаб, и там был отмечен react.backbone, что это?
- Я вижу, что в вашем github есть mobx-jquery, что он делает?
- Как вы реализовали наблюдателя в mobx-jquery? (инкапсулированный автозапуск) Так в чем принцип автозапуска?
- Какие у вас требования к команде? Что вы больше всего приобрели за последний год после выпуска?
- Раз уж вы написали ТС, в чем преимущества ТС? Вы сказали, что после изменения поля другие места, использующие исходное поле, сообщат об ошибке, так как же отследить, было ли сделано изменение? Как добавить тип к методу в соответствии с файлом типов в vscode?
- Видя, что в вашем резюме написано поддерживать старый проект, какие рамки у этой ящерицы? (Гибридная структура xxxxx на основе инкапсуляции магистрали)
- Тогда давайте проведем викторину. Реализуйте функцию, чтобы получить весь текст в узле DOM по порядку.
- Ты хочешь что-нибудь спросить у меня? (Что ты обычно делаешь в течение дня в компании?)
Суммировать
Я чувствую, что технологический стек может не быть хорошим совпадением для этого. Они в основном делают H5 и небольшие программы, а H5 также является в основном Vue, поэтому эти проблемы в основном не очень глубоко.
В интервью, кроме mobx, меня не спрашивали ни о технологиях, связанных с реактом, ни о разработке приложений, их интересовал только ТС, о ТС я, к сожалению, мало писал.
Но впечатления от собеседования были неплохие, я относительно нервный человек. Интервьюер попросил его написать код на месте, он мог проверить информацию, мог отладить на месте, и даже мог спросить, если он что-то не понял, я думаю, это неплохо. Послушав их описание, я чувствую, что техническая атмосфера в команде хорошая.Пообщавшись с HR, я думаю, что преимущества неплохие.
Прикрепите ответ на вопрос 12.
function machine(name) {
return new Action(name)
}
const defer = (time, callback) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(callback())
}, time * 1000)
})
}
class QueueItem {
constructor(defer, callback) {
this.defer = defer;
this.callback = callback;
}
}
class Action {
queue = []
constructor(name) {
this.name = name;
this.queue.push(new QueueItem(0, () => console.log(`start ${this.name}`)))
}
do(eat) {
this.queue.push(new QueueItem(0, () => console.log(`${this.name} ${eat}`)))
return this;
}
wait(time) {
this.queue.push(new QueueItem(time, () => console.log(`wait ${time}s`)))
return this;
}
waitFirst(time) {
this.queue.unshift(new QueueItem(time, () => console.log(`wait ${time}s`)))
return this;
}
async execute() {
while(this.queue.length > 0) {
const curItem = this.queue.shift();
if (!curItem.defer) {
curItem.callback();
continue;
}
await defer(curItem.defer, curItem.callback)
}
}
}
Футу
с одной стороны (не помню)
- Само введение
- Зачем оставлять? Вы сказали, что считаете дело, которым занимаетесь, скучным, так как же не быть скучным? Чего вы ожидаете от команды?
- Что такое xss-атака? В чем вред? Как с этим бороться?
- реализовать глубокую копию
- Есть два упорядоченных массива M и N, как определить, является ли N подмножеством M?
- В чем разница между стрелочными функциями и обычными функциями?
- Какое значение выводит setTimeout в цикле for? Как решить эту проблему? (пусть и замыкание решено, просто объясните принцип)
- Какова роль каждого члена вашей команды? Какую роль вы играете в нем?
- Как оптимизировать скорость загрузки страницы? Как оптимизировать, если много мелких иконок? Каковы недостатки иконок?
- Какие существуют решения для совместимости мобильного терминала с различными устройствами? Каковы недостатки этих решений?
Дада-JD Даоцзя
Когда собеседование прошло, я сначала сделал тестовую работу, в основном для изучения http, css и js.
Письменные экзаменационные вопросы (просто запомните эти вопросы, связанные с http)
- Каковы новые возможности http2.0? (Варианты: мультиплексирование, сжатие заголовков, установка приоритета, отправка сервером, двоичная передача)
- Какова роль DNS? (Варианты: разрешение доменного имени, брандмауэр, балансировка нагрузки, контроль трафика и еще один, который я не помню)
- Какие из следующих протоколов являются надежными? (варианты TCP, UDP, FTP, HTTP и один не помню)
- Какое из следующих утверждений о POST-запросах верно? (Запрос POST может иметь параметры только в теле, сервер должен иметь возможность получать данные, отправленные запросом POST, запрос POST отправляет два пакета данных, а запрос POST может кэшироваться)
одна сторона
- Что такое БФК? Почему вертикальные поля перекрываются? Как решить эту проблему?
- Что такое относительные единицы в CSS? Они относительно чего?
- Кого фиксируют относительно? Будут ли проблемы, если я добавлю преобразование?
- Что такое XSS-атака? Как с этим бороться?
- Что не так с innerHTML? Есть ли простой способ избежать вставленного текста от XSS-атаки?
- Почему не рекомендуется использовать встроенные элементы стиля? Каковы недостатки встроенных элементов? (файлы css можно кэшировать)
- Что такое цепочка прототипов? На что указывает конец цепочки прототипов?
- В чем разница и функция файлов cookie, sessionStorage и localStorage?
- Что такое коды состояния http? В чем разница между 301 и 302? Что означает 304?
- Что такое закрытие? Каковы сценарии использования? Какие проблемы может вызвать закрытие?
- Что такое мелкое копирование и глубокое копирование? Как реализовать глубокую копию?
- В чем разница между lodash и ramda?
- В чем разница между атрибутом и свойством в HTML?
- Как решить перекрестный домен?
- В чем разница между строкой и строкой из новой строки?
две стороны
- Объясните setState в реакции? (Поговорим о производительности и принципе реализации setState)
- Если мне нужно загрузить файл и отобразить индикатор выполнения во внешнем интерфейсе, использование setState приведет к обновлению слияния, что вы можете сделать? (Promise инкапсулирует setState, использует базовые функции setState и использует асинхронные функции (setTimeout, async) для переноса)
- Компоненты с состоянием и компоненты без состояния, некоторые люди говорят, что компоненты с состоянием лучше использовать повторно, а некоторые люди говорят, что компоненты без состояния лучше использовать повторно Как вы обычно разделяете их при написании? (Это все еще зависит от бизнес-сценария)
- Если у вас есть реактивный проект, должны ли вы управлять состоянием компонента? (Объясните с трех направлений локального состояния, глобального состояния и глобального хранилища)
- Как компоненты в реакции реагируют на изменения данных и обновления?
- Каковы этапы жизненного цикла в реакции? Какие API жизненного цикла устарели в react16?
- Почему по сравнению с реальным DOM виртуальный DOM обеспечивает оптимизацию производительности?
- Как алгоритм сравнения сравнивает старые и новые узлы и обновляет их? Что делает ключ?
- Если у меня здесь есть текстовый компонент, и я изменю текст внутри, повлияет ли это на другие компоненты? (Так что это еще зависит от сцены)
- Если в магазине есть поле cityList, нам нужно сохранить исходное состояние после того, как пользователь обновит его и сделать кеширование.Если в это время оформляется заказ, то нужно закрыть логистику и дистрибуцию определенного города. на этот раз город нужно убрать, а пользователя Как это сделать не обновляя браузер? (Честно говоря, я не понял этого вопроса. Я сказал обновить магазин и кеш, но это было отклонено интервьюером. Позже я мог только сказать, что не знал, и я забыл спросить его, что был ответ)
- Вы знаете что-нибудь о вебпаке? В чем разница между чанк, пакет и модуль?
- Расскажите о разнице между Hash, Chunkhash и Contenthash?
- Каковы преимущества TypeScript?
- Как происходит процесс рендеринга страницы браузера?
- Будет ли css блокировать рендеринг страницы? Если да, то как решить? Как загрузить только css главной страницы?
- Как вы думаете, в какой технологии вы лучше всего разбираетесь?
Комплексный (комплексный + HR + руководитель отдела)
- Найдите один из ваших проектов и расскажите о проблеме, которую этот проект решает, будь то деловая или техническая.
- Какова ваша роль в этом проекте? Что вы наделали? Где вы можете проявить свои способности?
- Почему вы пришли искать работу, проработав в Ctrip всего больше года? Каков ваш текущий ранг?
- Какие книги вы прочитали в последнее время? Над какими технологиями вы сейчас работаете?
- Вы использовали вью? В чем разница между чувствовать и реагировать? Если вас попросят сделать проект vue, сможете ли вы его принять?
- Это проект по рефакторингу Vue для React. Недавно были наняты люди для создания этого куска контента, в том числе веб-пакет и т. д. Как вы думаете, вы сможете его удержать?
- Вы планируете поселиться в Шанхае? Когда планируете вернуться на вторую строчку?
- Каковы ваши карьерные планы на ближайшие 3-5 лет?
- Другие вопросы конфиденциальности и т. д.
Суммировать
Во время второго интервью интервьюер спросил меня, не хочу ли я что-нибудь спросить? Я сказал, для таких как я, только что закончивших 1-2 года обучения, я мало контактирую с вебпаком и узлом, и в компании трудно связаться, и я не могу столкнуться со многими глубокими сценариями при написании проектов. сам.Где его развивать? Что важнее?
Интервьюер сказал, что, когда вы сказали, почему вы ушли с работы, вы уже очень ясно объяснили это, и я думаю, что вы нашли ответ. Я думаю, что для людей, которые закончили учебу 1-3 года назад, очень ценно иметь возможность самостоятельно руководить проектом и командой.
Когда руководитель отдела встретился, он задал мне много вопросов, связанных с проектом, и многие из них попали в мои ключевые моменты.Я действительно не думал о стольких вещах с тех пор, как закончил университет более года назад. Когда технология недостаточно выдающаяся, а опыт работы относительно невелик, кажется, что трудно сказать, где может проявиться способность. Если вы сможете остаться на полгода, обязательно будет другой ответ.
Во время интервью с HR HR очень хорошо понимал зарплату и должность бывшего работодателя, задавал много подробных и подробных вопросов и много болтал со мной, что заставило меня очень смущаться и нервничать ( Я никогда не вру, многие говорят правду).
Это самое длинное собеседование, с которым я когда-либо сталкивался, включая пять раундов до и после HR. Тем не менее, это все равно приятно, по крайней мере, я накопил много ценного опыта интервью.