У поста стажировки Toutiao у Лян Цзин есть чувства

интервью

Предисловие (впервые в жизни написал статью о золотых самородках, с нетерпением жду!)


Хоть я и учусь на Бухгалтерском факультете, но с фронтендом общаюсь уже полтора года, хотя систематически просматривал систему теоретических знаний месяц, а еще две недели потратил на сортировку различные онлайн-опыты без труда.Хотя я последовал за боссом, чтобы украсть информацию из первых рук интервью Toutiao, но я был действительно слишком наивен и был повешен и избит! Тайно выучить небольшой блокнот и просмотреть, как я был глуп во время интервью, в основном, чтобы записать мое ментальное путешествие во время интервью, а также мое воображение (уничижительное) пунктов знаний (┬_┬) Я также надеюсь, что товарищи, у которых есть заголовки интервью может получить некоторый интеллект

Текст интервью представлен (ответ только мое личное мнение, исправления приветствуются)


  1. Интервьюер Toutiao очень дружелюбный: как только он подходит, он встречает вас теплыми приветствиями, что мгновенно заставляет людей чувствовать себя намного спокойнее. С самого начала необходимо понять основную ситуацию,Когда вы начали контактировать с фронтендом? Какие курсы вы проходили в университете?Самое удивительное, что интервьюер вообще не хотел задавать вопросы об опыте работы над проектом (я втайне рад, что большие проекты, на которых я брал интервью раньше, тоже прошли мимо)!
  2. Поговорим о классах в JS.Подчеркивается, что в традиционных языках классы реализуют наследование через копирование, а JS реализует наследование через цепочки прототипов.Итак, давайте поговорим о прототипах.Когда конструктор создан, он сгенерирует объект-прототип, который по сути является объектом.Если свойство не может быть найдено в экземпляре, он будет искать свойство в объекте-прототипе через цепочку прототипов.Давайте поговорим об объектах.Я обомлел в одно мгновение, как будто никогда не задумывался над этим вопросом, мой мозг моментально отфильтровал его, и примерно сказал, что объект является типом эталонного типа данных в JS и т.д.(пс: После интервью я лежал на кровати с кучей мыслей. Я смотрел на разные прототипы. Немного подрос контент цепочки прототипов, и я был самоуспокоен, но я никогда не думал о некоторых самых основных понятий во время интервью.Где я отвечал,я не мог и не рассчитывал навести ответ на привычную категорию знаний,слишком увлекаясь самим знанием,и не обращал внимания на чересстрочные отношения между базовой концепцией точки знаний и точки знаний)
  3. Узнать о наследовании.Я говорил о нескольких методах наследования, в основном подчеркивая преимущества и недостатки наследования композиции, а также то, как паразитарное наследование композиции может устранить недостатки наследования композиции.Тогда напишите наследство.Грубо реализует паразитное наследование композиции.
  4. Расскажите о новых возможностях es6Прежде всего, я говорил об особенностях этого в стрелочных функциях, а также говорил о том, что let и const формируют область видимости блока и т. д., затем присваивание структуры, строку шаблона, значение параметра функции по умолчанию и т. д.(Я изначально увидел чье-то мнение, что можно понять, что в стрелочной функции нет this, поэтому его this ищется через область видимости. Я не ожидал, что случайно сказал поиск по замыканию, а интервьюер Просто просить через замыкание?успокаиваюсь и думаю согласно этому пониманию,стрелочная функция в setTimeout должна быть через замыкание,а вот стрелочная функция которая вызывается нормально не в миг,поэтому исправьте пожалуйста)
  5. Можно ли добиться трехколоночного макета?Сначала я рассказал о гибком макете, затем о абсолютном + маржинальном макете и, наконец, о плавающем + маржинальном/BFC макете Я сказал, что в реализации самоадаптации BFC есть некоторые недостатки, а затем я рассказал о многих это, а также Будьте готовы, прежде чем сделать.
  6. Поговорим о методе массива.Сначала подумайте о карте, фильтре, forEach, каждом, некотором, уменьшении, а затем выдвигайте, нажимайте, сдвигайте и так далее.Вы должны быть знакомы с картой, давайте воспользуемся сокращением для реализации функции карты.Еда - первородный грех (┬_┬), хоть интервьюер и напомнил об этом, но это все равно не сбылось. После интервью я поискала в Интернете и почувствовала большое сожаление и самобичевание. Я чувствовала, что должна быть в состоянии сделать это! Если слишком много думать в начале и некуда писать, то можно подумать о реализации карты без редукции, а потом изменить ее на форму редукции, мне кажется, это можно сделать.(Давайте поговорим о мастурбации, но я все равно пишу меньше кода. Когда я писал код раньше, я в основном использовал различные call, apply, bind, debounce и т. д. в Интернете. Сейчас я его меняю и не могу его написать. Это могу только показать, что я не до конца понял язык JS.Понимание этого пока поверхностное, как добиться того, как добиться того, ох, начитавшись чужого кода, я могу написать его сам, я буду! ответ, я не думал о том, что может моя собственная реализация, и чем она отличается от чужой реализации после реализации.В конечном счете, разработке все равно нужно писать больше кода, больше думать, и обращать внимание на сочетание теории и практики!!!)
  7. Иметь хорошее представление о цикле событий JS.Говорят, что JS выполняется в одном потоке, используя асинхронность для достижения неблокировки, а механизм цикла событий — это механизм координации стека выполнения для последовательного выполнения очередей сообщений. Также сказано, что когда скрипт начинает выполняться, код выполняется сверху вниз.При возникновении асинхронного события он приостанавливается и передается для выполнения соответствующему рабочему потоку.Основной поток продолжает выполнять следующие задачи .После асинхронного завершения callback помещается в соответствующую очередь сообщений. , после выполнения JS-кода синхронизации, очередь микрозадач очищается, затем выполняется макрозадача, а затем очередь микрозадач будет очищен. (Я чувствую, что мой ответ очень хорош, и я самоуспокоен, но я не хочу говорить больше, чем потеряю)Вы только что сказали рабочие потоки, но разве вы не говорили, что JS выполняется в одном потоке?JS выполняется в одном потоке, у браузера много потоков, таких как рендеринг, таймер и потоки сетевых запросов, но это не мешает выполнять JS в одном потоке (наивное и высокомерное лицо). Я снова спросил интервьюера, на что похож цикл событий JS? Я не могу точно вспомнить, что сказал интервьюер.Это примерно то, что среда выполнения JS отличается от среды браузера и Node.Цикл событий браузерного движка V8 примерно то, что вы сказали, но Node полагается на поток libuv бассейн.(У меня было глубокое понимание браузеров и циклов событий узлов, но я не ожидал, что, когда я спрошу о циклах событий JS, я инстинктивно подумаю о циклах событий браузера и проигнорирую циклы событий узлов. знаю два события.Цикл отличается, и я изучил соответствующий механизм для подготовки вопроса и написания последовательности выполнения, но я серьезно не задумывался о взаимосвязи между JS и его хост-средой и циклом событий.
  8. Если вы изучали структуру данных, то реализуйте поиск пути между любыми двумя узлами бинарного дерева. (пс: извините за грубость!!!)

Резюме после лица


Хотя писать код — это очень хорошо, я всегда чувствую, что хорошо поработал, отвечая, но когда я лежал на кровати, я понял, что мой ответ тоже был очень дерьмовым, и мой опыт таков:

  1. Toutiao должен набрать людей, которые могут написать простую бизнес-логику и имеют определенное понимание теоретической базы, примерно 6:4. И я сам написал немного кода, и приготовил всякие теоретические небылицы, и в результате я внезапно умер!
  2. Я по-прежнему уделяю больше внимания базовым знаниям, часто читаю разные статьи по очкам знаний, а потом ворую яркие и полезные для меня очки знаний и записываю их в небольшой блокнотик. Я думал, что это отличный метод обучения, но я никогда не думал, что эти «истины», которые я считал нормальными, часто не выдерживали проверки фактами. не изучал их.Дополнительная проверка.
  3. По поводу написанного от руки кода, думаю, надо еще написать и поковыряться в ассоциации различных реализаций, чтобы лучше понимать язык JS. Не то, чтобы я мог сделать это, я могу сделать это, эй, новичок? Я не буду!
  4. Направляйте интервьюера и направляйте вопрос на то, в чем вы уверены и с чем знакомы, а не на свои собственные субъективные догадки. Табу, но это все равно из-за незнания знаний!

Список некоторых лекций знаний, которые я считаю отличными


  1. внешний кешПрочитав ее, я многое почерпнул, и сомнения по поводу местонахождения тайника развеялись.
  2. Подробное объяснение JsonpНаконец-то узнайте, как на самом деле работает Jsonp
  3. Подробное междоменное объяснениеРазличные подробные междоменные объяснения, инкапсулирующие реализацию Jsonp с промисами, дайте мне сиять
  4. js общие сведения об утечках памяти и решенияххорошее резюме
  5. JS рукописный кодДругие очень хороши, я чувствую, что дроссельная заслонка с защитой от сотрясений видела лучшую версию.
  6. Знание фронтенда в области безопасностиНаконец-то у вас есть четкое представление о XSS и CSRF.

Наконец-то дописала, первый раз в жизни, так здорово!