Помните XX предварительное интервью

интервью внешний интерфейс алгоритм React.js Redux

Анцеденты, нет ничего интереснее рыбалки

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

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

Подумав об этом некоторое время, я подумал о том, чтобы попробовать, и я нажал на нее. Мне было интересно. Через день я не читал ее. Эммм, я неправильно нажал. В итоге она снова связалась со мной и надеялась, что я отправлю ей свое резюме.Я думала об этом, а там еще была драма, поэтому вечером написала резюме и сдала. Потом прошел еще день, и еще один день прошел, я думаю, почти холодный. Кто знает, что они связались со мной позже и спросили, есть ли у меня время на собеседование на следующей неделе. Я рассчитываю на это. Была пятница. Я ни к чему не был готов. Может ли быть пятница? Через два дня я подумал, что уже почти холодно, а потом вернулся и сказал, что да, письмо отправлено на мой почтовый ящик. Я разобрался, оставалось еще четыре дня, быстро убрал свитч и 3DSLL, начал готовиться к интервью, а потом задал себе вопросы интервью.

процесс

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

Я проанализирую процесс решения некоторых проблем в конце.

姿势

процесс собеседования

Справедливости ради следует сказать, что здание XX выглядит вполне прилично. Я пришел немного раньше, и я нашел магазин чая с молоком внизу, пил воду как сумасшедший, думая о жизни снова и снова. Потом, когда пришло время, я поднялся наверх. Собеседование было на 8-м этаже. Честно говоря, я все еще немного нервничал. Ведь я год не готовился к интервью, и я был все еще очень загадочным . После входа меня отвели в комнату с другими партнерами по интервью.Через некоторое время кто-то принес вопросы для интервью и раздал их друзьям по соседству. . . Я украдкой взглянул, это была Java. Через некоторое время я вернулся и задал два вопроса для интервью, один для себя и один для другого друга, оба предварительные. Вопросы для собеседования состоят всего из трех или четырех страниц, все из которых являются основными. Я взял ручку и написал pia pia. Через некоторое время я сдал ее. Как только я сдал ее, я вспомнил, что сделал ошибка в одном из вопросов, и я почувствовал себя очень неловко. . . Небольшой эпизод: Маленький друг с Явы рядом с ним без ума от Baidu со своим мобильным телефоном Никого не волнует письменный процесс тестирования Я честный человек и не делаю этого.

одна сторона

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

Галантерея, весь процесс написан ручкой

  1. Я упомянул об этом и сказал, что вопрос интервью был слишком простым (правда, нехорошо так говорить сейчас, когда я об этом думаю), а затем интервьюер сказал, тогда я дам вам нелегкий,flatten的实现,我一想,这个我好像写过,拿起笔,啪啪啪就写起来了。 проходят

  2. В. Я знаю о недавнем онлайн-событии быстрой разрядки, я сказал да, позвольте мне написать, я использую самые распространенные 3whileМетод написания, он не позволил мне написать это на полпути, и то, что я написал, было таким же, как и в книге. . . Тогда я попросил объяснить принцип сортировки слиянием, я этого не писал, поэтому сказал прямо, то есть разрезать на два массива, бала-бла, и проверить онлайн. проходят

  3. знаниеimmer.jsЭто неизменяемые данные, сделанные автором Mobx, я мало что знаю, поэтому я просто сказал это вскользь, а затем позвольте мне объяснить это сноваimmutable.jsПринцип обновления данных немного похож на дерево diff реакции, и Барабара сам его знает. проходят

  4. KOAПринцип middleware, бла-бла-бла, исходник я читал и анализировал, то есть объединение middleware через compose, барабара. проходят

  5. Получить все файлы и папки. Это древовидная структура, потому что я не могу вспомнить использование fs API, поэтому я спросил, могу ли я вместо этого использовать дерево dom. Интервьюер сказал, что да, я написал это. . . Барабара,сказал интервьюер,а можно без рекурсии использовать while+широта+глубина?Я полагаюсь на это,я запутался,хотя я знаю сначала в ширину и в глубину,но раньше не писал,я немного нервничал, хватал ручку и думал. Через какое-то время интервьюер увидел меня таким и объяснил мне это. умер

  6. Интервьюер сказал: «Тогда позвольте задать вам философский вопрос. Почему существует такая вещь, как структура данных?» Ничего себе, что это такое? Это облегчает нам обработку данных или что-то в этом роде. смущенный

  7. Как много вы знаете о функциональном программировании, как много вы знаете об алгоритмах. Я не очень разбираюсь в функциональном программировании, а функциональное программирование все еще относительно сложно, что это за y-комбинатор, у меня кружится голова. Алгоритм просто случайный, дерево динамического программирования или что-то в этом роде. Интервьюер спросил меня, как я изучаю алгоритмы, и я ответил, что обычно читаю статьи по теме на Zhihu. Затем интервьюер сказал, что, по-моему, я не смогу добиться больших улучшений, если буду рассматривать его рассеянно, и мне следует смотреть его организованно. По функционалу он мне порекомендовал Haskell, сказав, что мне нужно посмотреть только основы, а потом я посмотрю на редукс и будет намного лучше. тупой

  8. Я задал много вопросов, а потом спросил меня, что я хотел знать.На самом деле, я знал о стеке технологий XX, поэтому я что-то сказал и проявил большой интерес.

Другие вопросы не будут перечислены один за другим.Он также спросил меня, какие книги я читал об узле.Я чуть не сказал "девять мелких и один глубокий nodejs". . . Я не могу вспомнить, кто вел путь

Резюме: Интервьюер сказал мне, что структура знаний людей Т-образная, и под ней все базовые знания.Только когда базовые знания хороши, мы можем освоить более широкий спектр знаний, и тогда он сказал, что мои базовые не очень хорошо. . . Когда я думаю об этом, все кончено, это действительно холодно.В моем познании основа - это самое главное.

две стороны

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

  1. Поскольку я написал в своем резюме react и vue, меня спросили, в чем разница между ними. Я только что сказал о стратегии обновления, реагируйте вручную на пакетные обновления через setState, vueObject.definePropertyДля прослушивания изменений свойств. Тогда какой слот и this.props.children делают.

  2. Для некоторых вопросов о редукции знакомство с редуксом обычно не является большой проблемой.

  3. Это просто какие-то банальные вопросы, почему ты хочешь уйти, а по поводу ухода надо искать проблемы в себе, не говоря уже о проблемах компании, это очень плохо.

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

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

окончание

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

Разбираем, добавляем мелочевку, подробности смотрите в исходниках

  1. Сглаживание массивов, сглаживание вошло в спецификацию, вы можете найти этот метод в Array на MDN, помните одну вещь, используйте операции уменьшения, массива, результат вашей следующей операции должен использовать результат предыдущей операции, вы можете использовать сокращение.
const flatten = (arr) => arr.reduce((a, b) => {
  if (Array.isArray(b)) {
    return a.concat(flatten(b));
    // 该项是数组,连接 递归调用的结果,否则直接连接
  }
  return a.concat(b);
}, []);
  1. глубокий клон

Ямы, о которых следует знать,typeof null,typeof RegExp('test'),typeof newDate(),typeof new Boolean(true),typeof new String('t'),typeof new Number(1)Для объекта также следует различать массивы и объекты, подробности см. в исходном коде.

  1. Узнайте, сколько узлов DOM на странице

Принцип тот же, что и у flatten, он рекурсивный, см. исходный код

  1. Найдите древовидную структуру дома

Я лично считаю, что это очень важно и интересно.Глядя на исходный код, он тоже рекурсивный.

  1. Найдите максимальную глубину дерева дома Принцип один раз рекурсировать, это значит спуститься на один уровень вниз, записать максимальное значение, сравнить и вернуться после окончания
const getDomDepth = (node) => {
  let max = 1;

  void function fn(d, m) {
    m++;
    Array.from(d.children).forEach(n => {
      if (n.children.length) {
        fn(n, m);
      } else {
        if (max < m) max = m;
      }
    })
  }(node, 1);

  return max;
}

посмотреть исходный код->посмотреть исходный код->посмотреть исходный код,помогите точка звезда ==, столкнуться с непонятнымissuesОн поднимался в нем, а предпоследний вопрос я не написал, потому что в тот вечер я ходил смотреть реакты, а сегодня я побывал на саммите тысячи человек (один человек). Добавить позже.

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

Дополнение: Завтра, кажется, 520, к сожалению, я одинокая собака. . . Надеюсь, вам всем весело