«Мяньцзин» Три раунда фейсбуков NetEase, которые вам могут понадобиться

интервью

предисловие

За последнюю неделю я познакомился с несколькими компаниями, и наконец нашел ту, которая мне понравилась.网易offer,поэтому другие собеседования я забраковал.Что касается некоторых других крупных компаний,то они не представили свои резюме.По разным причинам(то есть посуда),подготовьтесь сначала к учебе.

Я надеюсь, что у всех будет гладкий осенний набор и они станут сборщиками предложений.

Самое интересное это网易有道第三轮技术面试, Поскольку на этот вопрос нет конкретного ответа, вы можете посмотреть, если вам это интересно. Сначала я возьму этот третий раунд вопросов сцены интервью. Если у вас есть другие основы, вы можете пройтись по ним самостоятельно.

NetEase Юдао

Три стороны

Третий раунд интервью был с младшим братом. Все интервью заняло около 70 минут. Изначально это было дистанционное интервью, но из-за проблем со звуком я выбрал интервью по телефону. Младший брат тоже очень хорош. Я чувствую себя очень сильным Почувствовав, действительно, очередной вопрос, я знаю, что он не простой.

первый вопрос сцены

Например, в сцене прямого эфира вы должны знать, что вам нужно реализовать такую ​​​​сцену, например, учитель нажимает на определенное место, например, на флешку, вам нужно отобразить анимационный эффект флешки. диск в это время, например, в это время учитель щелкает этот экран компьютера, вам нужно показать анимационный эффект маленького компьютера, к вышесказанному,Необходимо завершить определенный анимационный эффект в определенный момент времени..

  • Ну, этот вопрос, моя идея заключается в том, что анимация является исключением, если это прямая постобработка, она должна иметь мало общего с нашим интерфейсом, поэтому наша следующая проблема заключается в том, как с этим бороться, синхронизация времени Вопрос, как начать показывать анимацию в определенный момент времени?
  • Второй вопрос, если предположить, что мы можем получить анимацию в определенный момент времени, то дальше, братишка, выдвигай нам новый вопрос, то есть когда твоя сеть перегружена, например, когда есть задержка, в на этот раз происходит эффект замораживания.Первоначально воспроизведение занимало 5 секунд, но может занять 7 секунд.Так как же решить синхронизацию анимации?

Ну я таким подобным вопросом никогда не занимался,поэтому очень сложно ответить.Знающие могут комментировать и оставлять свои ответы.Скромно учусь.

Второй вопрос по сценарию

Существует сценарий, как более эффективно запрашивать у пользователя информацию, которую вы вводите в поле ввода. Например, если вы вводите Tmall, соответствующая подсказка будет Tmall Mall и Tmall Group. Как эта информация может быть лучше? Быстрое приобретение , есть ли способ добиться этого без отправки запроса?

  • Например, при запросе данных старайтесь отправлять как можно меньше запросов, тогда вы сможете выполнять обработку против встряски и троттлинга.
  • Следующий младший брат дал новый сценарий Когда ваш сервер не работает и данные не могут быть получены, как спроектировать небольшую локальную базу данных
  • Следующий вопрос заключается в том, как спроектировать локальные данные, точка оптимизации должна быть максимально быстрой, а данные каждого запроса — максимально быстрыми.
  • Моя первая идея заключалась в том, чтобы оформить ключ-значение вот так, но потом меня спросил младший брат, например, если по вашей идее, если ключевое слово,天猫, если данные оформлены таким образом, то будут повторяющиеся данные, что явно неразумно.
  • Долго думая об этом, на этот раз, так как есть前缀В случае совпадения существует ли структура данных, способная решить эту проблему? 👇
  • Дерево словаря, мы можем построить дерево словаря перед чтением локально. В этом случае, в соответствии с содержимым, введенным пользователем, искать дерево словаря. На этот раз сложность составляет около O (m + n), поэтому это значительно ускоряет поиск.эффективный.

Конечно, если есть лучшее решение, вы можете оставить свои ответы, чтобы посмотреть, как вы решите проблему.

Третий вопрос сцены

Вы использовали инструмент версии Git, то можете ли вы добиться такого эффекта, завершить алгоритм Git Diff, сравнить различия между двумя файлами, а затем поговорить о конкретных идеях, как сравнить этот процесс? Как отметить разные позиции двух файлов, как найти разницу и конкретно рассказать об идее.

  • Сначала я подумал об алгоритме diff, таком как алгоритм виртуального дома в Vue, но он не кажется правильным, diff оптимизирован, что явно неразумно, поэтому этот метод неразумен.
  • Так как же быстро найти разницу между двумя файлами? Я долго думал над этим вопросом, гм, в то время у меня как бы были какие-то идеи, типа сравнивать построчно, что на самом деле не очень разумно.Подумайте об этом хорошенько.
  • Младший брат напомнил мне, мы будем искать его?最长的公共子串, это время, я должен помнить, что это две строкиLCS, должно быть классика动态规划Вопрос, последний вопрос, я действительно не думал об этом, может быть, это потому, что я давно не сталкивался с такой проблемой динамического программирования.
  • Ядром должно быть динамическое программирование для решения LCS, и последующая обработка, вы можете пойти и посмотреть некоторые статьи, они очень хорошо написаны, я не буду их здесь открывать.

Как Git генерирует различия: алгоритм Майерса

Ну, с точки зрения трех аспектов, он проверяет, как вы думаете о проблеме и как анализировать комбинированную проблему. Может быть, вы также прошли тест алгоритма. Ну, это очень сложно.

одна сторона

Процесс собеседования длился 50 минут, в основном я представлял себя, я потратил минуту, рассказывая о своем опыте в школе, а затем была сессия вопросов и ответов.

Младший брат очень нежен, что очень нежно. Это интервьюер в моем феномене. Я буду терпеливо подсказывать вам. Если возникнут проблемы, я помогу вам, подскажу, как ответить.

Новые возможности H5

Это содержание написано в резюме, поэтому меня спросили, извините, я тогда запутался, и вообще не ответил, я тут буду разбираться?

  1. функция локального хранилища
  2. Функции совместимости устройств HTML5 обеспечивает беспрецедентный открытый интерфейс для доступа к данным и приложениям.
  3. Возможности подключения WebSockets
  4. Поддержка веб-мультимедийных функций Аудио Видео Svg Canvas WebGL CSS3
  5. Возможности CSS3

Увеличивать拖放API,地理定位,SVG绘图,canvas绘图,Web Worker,WebSocket

Потом я ответил локальному хранилищу, а потом задал мне этот удобный вопрос?

localstroge Sessionstoge разные сценарии применения

Связь между компонентами vue

Этот вопрос задавался в нескольких интервью, я так на это смотрю, это зависит от того, какие методы вы обычно используете в своих проектах, поэтому я каждый раз буду отвечать на три метода, вместо этого на сайте есть 8 методов связи между компонентами. Интернет — не помню, думаю, достаточно для понимания и общения с интервьюером о том, как вы его используете в проекте.

метод обхода объекта

  • Ибо in тоже можно пройти, но будут получены и ненаследуемые имена свойств, судя по hasOwnproperty
  • Перечисляемые свойства и методы Object.keys()
  • Object.getOwnPropertyNames() может получить перечисляемые или неперечисляемые строки имен свойств в массиве, включая свои собственные, если это массив, можно получитьlengthАтрибуты

Вопросы по программированию👇

Дедупликация массива

Регулярные вопросы, четко объясняйте идеи, и, наконец, младший брат подсказал, можно ли использовать O (n), я дал два решения.

  • Set
  • Используя функцию объекта, я думаю, он просто хочет проверить это, опубликовать код для вас?
let unique = arr => {
            let obj = {}
            return arr.filter((ele) => {
                return obj.hasOwnProperty(typeof ele + ele) ? false : (obj[typeof ele + ele] = true)
            })
        }

Сведение массивов

let flatArr = (arr) => {
            return arr.reduce((res, ele) => {
                if(Object.prototype.toString.call(ele).slice(8,-1) === 'Array') {
                    return [...res, ...flatArr(ele)]
                }else{
                    return [...res, ele]
                }
            },[])
        }
        let arr = [1,2,3,[2,3,4,5]];
        console.log(flatArr(arr))

Конечно, есть много способов реализации этого. Это зависит от того, как вы его реализуете. Самый простой способ - резать объекты.

Глубина обхода

const tree = {
	name: 'root',
	children: [
		{
			name: 'c1',
			children: [
				{
						name: 'c11',
					children: []		
					},
					{
						name: 'c12',
					children: []		
				}
			]
		},
		{
			name: 'c2',
			children: [
				{
						name: 'c21',
					children: []		
					},
					{
						name: 'c22',
					children: []		
				}
			]
		}
	]
}

// 深度优先的方式遍历 打印 name
// ['root', 'c1','c11', 'c12', 'c2', 'c21', 'c22']

Для этого вопроса первое, о чем я подумал, это рекурсивный способ написания.После написания его мой брат спросил меня о недостатках рекурсии,и как ее оптимизировать.Как это реализовать без рекурсии?

Во время интервью я его не записала, слишком нервничала и была не в состоянии, когда просмотрела отзыв, записала и использовала.кучаспособ реализации?

function solve(root) {
            let stack = [],
                result = [];
            if(!root) return [];
            stack.push(root)
            while(stack.length) {
                let node = stack.pop()
                if(node == null ) continue
                result.push(node.name)
                for(let i = node.children.length-1; i >= 0; i--) {
                    // 这里就是面试的重点,应该从后面的节点压入栈中
                    stack.push(node.children[i])
                }
            }
            return result
        }

Добавление связанных списков?

Это тема на LeetCode.Я вроде уже писал ее раньше.На последнем вопросе интервью я растерялся и не знал,что делаю.Вопросы со связанным списком — это все уловки, я даже не осилил рутину,

Я написал тему по этому поводу, и после завершения темы я должен столкнуться с проблемой связанного списка, которая легко решается.

9 основных операций связанного списка "алгоритмы и структуры данных"

две стороны

Примерная расстановка времени, я ее посчитала, это заняло минут 50. Она барышня. Она очень нежная. Помню, что барышня очень милая. Она также спросила меня конкретно, и я, вероятно, знал, что был неправ в то время, но во время этого процесса дама улыбнулась, что уменьшило смущение, и терпеливо направила меня и показала ей большой палец вверх.

Синтаксис ES6, понимает ли Promise?

const promise = new Promise((resolve, reject) => {
            console.log(1);
            resolve();
            reject()
            console.log(2);
        })

        promise.then(() => {
            console.log(3);
        },() => {
            console.log("失败的状态")
        })

        console.log(4);

После того, как я это увидел, я просто сказал ответ прямо, что нехорошо, потому что вообще говоря, вопросы, которые задает интервьюер, должны быть немного стерты.В следующий раз следует обратить внимание.В конце концов, сестра интервьюера все же улыбнулась и сказал мне, что это должно быть так Сделай это, а затем как.

Давайте поговорим о карте и наборе

Вот что я рассказал ей об использовании и о разнице между ними, то есть о том, в каких сценах они часто используются.

Кстати, про Weakmap я говорил, а то здесь сложностей не так много, то есть вы понимаете разницу между двумя структурами данных, просто приведите пример для иллюстрации ситуации.

Оптимизация производительности интерфейса

Эта проблема слишком большая, и для человека с 0 реальным опытом разработки эта проблема очень фатальная.Поэтому я подготовил кусок от URL до отрисовки страницы.Точек оптимизации в нем довольно много.Вы можете узнать по себя.

  • построить строку запроса
  • Проверить кеш (выделено мной)
  • разрешение днс (как оптимизировать)
  • tcp http (типа уменьшения количества запросов, гм, должны же быть другие оптимизации, cdn?)
  • Процесс рендеринга браузера (здесь есть оптимизации, например, как избежать перекомпоновки и перерисовки в общем)
  • Обработка против сотрясения и дросселирования
  • Можно также сказать об оптимизации упаковки Webpack, предпосылка в том, что вы должны быть уверены

другие проблемы

В этом интервью я чувствую, что вместо того, чтобы задавать некоторые стандартные ответы, такие как личное интервью, речь идет больше об общении с вами по техническим вопросам, например, о том, как решить проблемы, с которыми вы столкнулись. Женщина также упомянула, что если вам нужно поделиться технической информацией, как вы думаете, какой технической информацией вы можете поделиться с командой.

Так смущает, я стажер.Чувствую, что недавно изучал проблемы упаковки webpack, и то, что я умею писать базовый контент, так что более-менее, я тоже ясно излагаю свою точку зрения, выражая готовность учиться , готов поделиться этой технологией.


другие сутры

Вот проблемы некоторых других компаний, такие как лайки, граффити и т. д. Проблемы очень простые, поэтому я взял их, в основном потому, что они простые, поэтому я их отбросил.

Вы сказали, что недавно работали над webpack, расскажите об этом.

Когда я представил этот вопрос, я просто сказал об этом прямо. Недавно я пишу блог и исследую веб-пакет. Я расскажу о некоторых конфигурациях веб-пакета, таких как загрузчики, плагины и общие загрузчики. Если вы сами настроили загрузчики, ответ очень гладко.

Тогда, кстати, позвольте мне рассказать о принципе, которого я пока не знаю.

Вы понимаете ES6, расскажите об этом

Ну, как вы обычно говорите, например, функция стрелки, оператор расширения, обещание, а затем, кажется, говорят эти три .... Слишком нервный

На самом деле их много б/у, вот для записи

  • Класс ES6 Класс
  • для... из и для... в
  • деструктуризация объектов
  • оператор отдыха / оператор спреда
  • строка шаблона
  • const let

Закрытие

Ну, это вопрос старомодный, давайте просто пропустим его, у разных людей разное понимание этого.

Технология Чжиинь

Интервью длилось 80 минут.Чувствовалось, что меня вот-вот будут допрашивать.Правда,этот процесс слишком долгий.Однако этот младший брат тоже очень милый.Он очень внимательно меня слушал во время процесса.Ну, послушайте меня В So Barabara люди проводят полдня.

  • прототип

  • Закрытие

  • сфера

  • Весь процесс ввода URL процесса

  • разница https, рукопожатие TLS

  • кеш браузера

  • Как https обеспечивает безопасность, поговорим о процессе рукопожатия TLS

  • метод связи vue

  • Принцип отзывчивости данных vue, как перезаписывается массив

Вышеуказанные ответы не будут разобраны.Мои предыдущие блоги были освещены, так что если вы хорошо подготовитесь, большой проблемы на самом деле нет.

Можете посмотреть на то, что я причесала раньше, в основном это действительно прикрыто👇

❤️ Всем спасибо

Если вы считаете этот контент полезным:

  1. Поставьте лайк и поддержите его, чтобы больше людей увидело этот контент
  2. Обратите внимание на публичный аккаунт前端UpUp, регулярно публиковать хорошие статьи для вас.
  3. Если вы считаете, что это хорошо, вы также можете прочитать последние статьи TianTian (спасибо за вашу поддержку и поддержку 🌹🌹🌹):