напиши первым
Меня зовут Чэньшуан. Я получил двойную степень бакалавра за 20 лет. Пройдя через процесс собеседования в течение месяца, я получил предложение Bytes, как я и хотел. В этой статье в основном записан опыт собеседования. Я надеюсь, что быть в состоянии помочь вы помогли.
подготовиться к интервью
Возможности есть только у тех, кто готов.
Автор использовал локальный аутсорс в Alibaba.Из-за специфики аутсорсинговой работы я начал готовиться к интервью в конце марта.Основные приготовления были алгоритмы и React.
Подготовьте алгоритм
Давайте сначала поговорим об алгоритмах.В то время я был новичком в алгоритмах, и я даже не мог посчитать временную сложность.Поговорим о том, как автор изучал алгоритмы.
Лично я считаю, что сложность алгоритмов действительно слишком высока. Если вы читаете такие книги, как "Введение в алгоритмы" или связанные с ними статьи, вы обязательно запутаетесь и даже можете оказаться контрпродуктивными. Тогда вам нужен очень хороший вводный курс по учить. Здесь мы рекомендуем видеоурок мистера Бобо, рекомендованный богами ssh.Интервью с веселым алгоритмом, это действительно здорово, мистер Бобо начнет с самого простого, а также будет использовать форму анимации, чтобы помочь вам понять алгоритм. Автору потребовалось около месяца, чтобы пройти курс, и после просмотра видео я почистил более 100 leetcodes.После обучения мое мышление действительно значительно улучшилось.
Кстати, дайте адрес на гитхабеАлгоритмы JavaScript и структуры данных, это более полно, но не подходит для входа.
Некоторые люди могут подумать, что вам не нужно изучать алгоритмы, если вы не входите в большую фабрику. Лично я считаю, что изучение алгоритмов определенно полезно. Пока вы программист с небольшим увлечением, вы обязательно изучите алгоритмы. . Глядя на интервью автора за последний месяц, хотя алгоритм не учитывает большую часть интервью, это очень важно Например, когда автор встречает Али, первое, что нужно сделать, это задать вопрос алгоритма, и тогда последующее интервью будет сделано.
Подготовьте реакцию
Первый - хуки.На дворе уже 2021 год.Крючки стали обязательным навыком для людей.Здесь рекомендуют Дэна.Полное руководство по использованию эффектов, После прочтения этого, проблемы, связанные с хуками, могут быть легко решены.
React рекомендует карточку учителя здесьДемистификация технологии React, Все знания о React, которые вы хотите знать, находятся в нем, например, почему React должен усердно работать, чтобы работать в параллельном режиме, что такое Fiber (очень часто встречающийся тестовый сайт), каков процесс обновления React, принцип хуков, и так далее. u1s1, г-н Ка не издавал буклет, а решил открыть его для всех бесплатно, Руи Сибай.
некоторые другие
После подготовки алгоритма + React нужно еще кое-что подготовить, и вот ссылка напрямую, а дальше зависит от обычного накопления.
- Резюме вопросов интервью для веб-пакета
- Лицевые писания Shen Sanyuan
- Убейте 36 написанных от руки вопросов JS
- Интенсивное чтение "Подробный принцип DOM diff"
- Священные Писания лицом к лицу TianTianUp
процесс собеседования
Интервью Bytes использует Niuke.com, которое представляет собой видеоинтервью + онлайн-написание кода.Первое интервью все еще относительно нервное.
одна сторона
Один интервьюер — очень молодой однокурсник, поэтому вопросы будут задаваться помоложе.
- Что нового в React 17?
- Что такое волокно React? Какие проблемы были решены?
- Почему для setTimeout можно установить минимум 4 мс и как реализовать setTimeout 0 мс?
- Увидев, что в вашем резюме написано rem и vw, вы можете рассказать об этом? Почему вы решили использовать rem вместо vw?
- В то время ответ заключался в том, что у rem была лучшая совместимость, и после преобразования px в rem можно было избежать чрезмерно длинных десятичных знаков.
- Как браузеры вычисляют десятичные единицы?
- Я тогда не ответил, я просто сказал округление.Проверив соответствующую информацию, я узнал, что разные браузеры имеют разные стратегии, некоторые будут округляться, а некоторые будут округляться напрямую. Независимо от единицы, браузер в конечном итоге будет вычислять px перед рендерингом.
- В чем разница между интерфейсом и типом? Вы используете интерфейс или печатаете в своей повседневной работе?
- Вы поняли контравариантность и ковариантность ts?
- нет
- Можете ли вы рассказать о принципе малой программы?
- В Интернете есть много статей на эту тему, просто расскажите о двойной нитке.
- Видя, что вы делали Taro раньше, можете ли вы рассказать о том, как React работает в апплете?
- О принципе Taro3, в основном jsx->vdom->json->wxml, подробнее можно посмотреть здесьПредварительный рендеринг Тароа такжеПринцип реализации Ремакс, я уже писал демо раньше, так что я все еще знаю об этом больше.
- Вы только что упомянули, что есть два способа (рекурсия шаблона и рекурсия пользовательского компонента) для шага json->wxml.Можете ли вы рассказать о преимуществах и недостатках этих двух методов?
- Вкратце, рекурсия шаблона — это операция чистого уровня представления, и ее производительность определенно лучше, но из-за ограничений компилятора wxml апплета WeChat шаблон не может рекурсивно вызывать себя (апплет Alipay не имеет этого ограничения), поэтому Taro в среде WeChat.Напишите n копий одного и того же шаблона, только id другой, он для рекурсивного рендеринга.
- Рекурсия пользовательских компонентов также включает логический уровень, такой как жизненный цикл и т. Д., Производительность будет хуже, а также есть проблемы со стилем, вызванные Shadow DOM.В настоящее время kbone использует рекурсию пользовательских компонентов.
- Есть ли в апплете HMR, можете рассказать о принципе HMR?
- HMR для апплета нет.В то время было только упомянуто, как обновился апплет кода сохранения, но HMR не сказал об этом.
- Разговор о z-индексе
- говорить о положении
- Реализовать TS Include
- Не будет
- Реализовать useInterval
- это не совсем правильно
- порядок выполнения цикла событий js
- реализовать неизменяемый
- Вот реализация большого парня, я понял, что это было слишком грязно
function immutable(obj) { return { set(path, val) { const paths = path.split('.') const lastK = paths.pop() this.get(paths.join('.'))[lastK] = val return this }, get(path) { const paths = path.split('.') return paths.reduce((a, k) => a[k], obj) } } }
Как только вы доберетесь сюда, все закончится.Вы можете почувствовать, что байты по-прежнему очень важны для передовых технологий и нижнего уровня. На тот момент рукописная часть была действительно не очень хорошо написана, и я даже подумала, что замерзла, но все равно сдала.
две стороны
На следующий день после первой сессии мне позвонили из HR по поводу второй сессии, я был очень доволен в то время Вторая сессия была кросс-интервью, и интервьюер был немного старше. Так как дело было ночью, столько вопросов четко не вспомнить.
В отличие от первого интервьюера, я некоторое время разговаривал со вторым интервьюером о вопросах, связанных с проектом, и вы можете говорить все, что хотите, в зависимости от вашей собственной ситуации.
- Что такое запрос опций? каков эффект?
- Каков принцип работы CDN и на каком уровне сети она работает?
- Как оптимизируется производительность проекта?
- В основном я говорю о сети, кеше, js, css, слиянии интерфейсов и т. д. Эта тема относительно широка, и в нее можно поиграть самостоятельно.
- Динамически создавать теги сценария и вставлять их на страницу, например, время выполнения
- Учитывая строку типа «A2B3», выведите «AABBB».
- Подключитесь к вопросу «C4 (A (A3B) 2) 2» с вложением, эти два вопроса не являются исходным вопросом, но похожи
- Напишите карри, которая запрашивает add(1)(2)(3)(4) для печати 10
- В начале я написал add(1)(2)(3)(4)(), интервьюер спросил меня, могу ли я удалить last(), и, наконец, попросил подсказку, он сказал, как работает console.log prints, вдруг Веселенький, просто скопируй в String.
Вторая сторона, должно быть, задавала больше, чем эти вопросы, но это все, что я могу вспомнить. . .
В конце концов я спросил интервьюера на втором собеседовании о вопросах, связанных с бизнесом.Он сказал, что вы должны пойти к интервьюеру на третьем собеседовании.Я знал это в то время, ха-ха.
Три стороны (круто)
Правильно, первое время было холодно с трех сторон, и мне даже пришло письмо, что собеседование провалилось, потом поговорю, а сначала посмотрю на проблему.
- В чем разница между загрузчиком и плагином?
- оптимизация упаковки webpack, я еще упомянул vite, кстати, vite
- Принцип малой программы и принцип Таро
- xss и csrf
- http2
- Принцип встряхивания дерева
- самая длинная палиндромная подстрока
- добавление больших чисел
Это интервью было очень быстрым, потому что многие из них не ответили.После интервью я понял, что оно окончено😭.
Три стороны
Примерно через несколько дней мне позвонил hr и сказал сменить лидера на повторное собеседование. Причина в том, что я хорошо выступил с обеих сторон. Позже я узнал, что настоящая причина заключалась в том, что мой нынешний лидер настоял на том, чтобы выбрать меня вверх.
- Он рассказал о многих инженерных вопросах, в основном обо всем процессе проекта от разработки до запуска, а после беседы указал на несовершенства процесса, о которых я говорил.
- React fiber
- http2
- Принцип встряхивания дерева
- Оптимизация проекта и оптимизация сети
- максимальная доходность акции
- добавление больших чисел
На самом деле, перед этим интервью интервьюер намеренно попросил меня подождать 10 минут, вероятно, потому, что он просматривал вопросы, которые я не писал раньше, поэтому, когда я задавал, я намеренно просил, чтобы они пересекались с первыми тремя.
Суммировать
После того, как я вошел, руководитель сказал мне, что взял меня, потому что считает, что у меня есть потенциал. Он также указал, что я не очень хорошо выступил на собеседовании, и что еще есть много областей для улучшения. Он сказал, что хорошие люди будут водить сами. , вы не ответили в первый раз. Если вы отличный человек, вы обязательно сможете ответить во второй раз. Большое спасибо моему нынешнему руководителю.
Если вы похожи на автора, у вас мало опыта работы, недостаточное образование, вы беспокоитесь о том, что вас отвергнут крупной компанией, и вы хотите подождать несколько лет, прежде чем подать заявку, то я предлагаю вам не По мере того, как ваш опыт работы увеличивается, требования к вам со стороны крупной компании также будут расти.Можете ли вы быть уверены, что темпы вашего роста за последние несколько лет могут соответствовать требованиям крупных производителей? Лучшее время для посадки дерева было десять лет назад, а затем и сейчас.
напиши в конце
В настоящее время автор работает в отделе электронной коммерции ByteDance-Douyin.В настоящее время у команды еще много офисов в Пекине и Шанхае.Если вам интересно, вы можете отправить свое резюме наsuchangv@bytedance.comИли добавьте меня в WeChatsuchangvv, чтобы найти меня внутри. Желаю всем удачи в поиске желаемой работы.