В течение этого недавнего периода я дважды брал интервью у Диди (два разных отдела до и после), а также брал интервью у некоторых небольших компаний.Эти интервью были очень полезны для меня, не только для стажера.Работа, после интервью снова и снова, мой менталитет изменился. стали более стабильными, и я также обнаружил некоторые недостатки в моем обучении, и я никогда не делал их систематического обобщения.Эта статья используется для обобщения моих чувств и прозрений.Бар!
Интервью Диди весьма показательны.Эта статья будет в основном знакомить с содержанием интервью Диди и отзывами интервьюера!
1. Содержание интервью Диди
первый раз
Основная часть:
- Сеть прототипов
- подъем объема, регулируемый подъем
- Контекст выполнения и стек выполнения
- Механизм цикла событий Eventloop
- это указывает на проблему
Идея объяснить:
- Не используйте if-else, переключатель или >,
Напишите раздел кода:
- leetcode 227 вопросов Базовый калькулятор II
- Номер версии относительно небольшой (шаг за шагом и потихоньку поднимаем новые проблемы и решаем их)
второй раз
Должен сказать, что второй интервьюер был очень хорошим, не слишком напряженным, и стиль интервью был другим (я даже смог проверить документацию на сайте Baidu 😜).
первая половина
Представьте свой проект, и тогда интервьюер выяснит некоторые проблемы проекта, которые вам нужно решить, это не составит труда, возможно, это какие-то недочеты в верстке.
Вторая половина
Интервьюер задает вопрос (это не составит труда), вы получаете результат, а затем просите использовать другой метод, другую идею для реализации, и, наконец, призыв упростить код, сжать код, чтобы использовать одну строку для реализации функция. Интервьюер здесь в основном смотрит на мои привычки и идеи написания кода.
Простой анализ следующих вопросов интервью
Первый интервьюер беседовал со мной более часа, что составило около получаса базовой проверки JS плюс полчаса рукописной проверки кода.Базовую часть JS здесь описывать не будем, рекомендуется прочитать подробнее перед интервью.《你不知道的Javascript上册》, давайте поговорим о первых нескольких рукописных вопросах ивторой позадиНекоторые проекты были отмечены недостатками и улучшениями. Номер версии не будет написан для сравнения, это вопрос, используемый в интервью для послойного продвижения.
1. Основные вопросы по калькулятору
题目:1 <= s.length <= 3 * 105, s 由整数和算符 ('+', '-', '*', '/') 组成,中间由一些空格隔开 s 表示一个 有效表达式 表达式中的所有整数都是**非负整数**,且在范围 [0, 231 - 1] 内 题目数据保证答案是一个 32-bit 整数。
Идея: мы можем использовать стек, чтобы сохранить их (дляумножать и делитьЗначение целого числа после (приоритетной) операции. Для числа после знака плюс или минус вставьте его непосредственно в стек; для числа после знака умножения и деления вы можете напрямую вычислить его с помощью верхнего элемента стека и заменить верхний элемент стека на расчетный результат.
var calculate = function(s) {
// s=s.trim();//去除两边的空格
const stack=[];//数值栈
let sign='+';//符号
let ans=0;//累加和
s = s.replace(/\s/g, '')
for(let i=0 ; i<s.length ; i++ ){
let num ='';
//判断是否是符号
if(s[i]<'0'){
sign=s[i];
}else{
while(s[i]>='0'&&i<s.length){
num=num+s[i];
i++;//这里是用于组合两位数以上的值
}
i--;//如果上面跳出来了就多了一次,最大是s.length
//接下来,把数据压入栈
num=Number(num);
switch(sign){
case '+':stack.push(num);
break;
//减法化为负数
case '-':stack.push(-num);
break;
//乘除就与栈顶元素进行运算再压入栈
case '*':stack.push(stack.pop()*num);
break;
case '/':
stack.push(stack.pop() / num | 0);
//注意这|的用法,它能得到一个整数
}
}
}
//最后只需要累加
while(stack.length){
ans+=stack.pop();
}
return ans;
};
2. Оптимизация проекта и исправление ошибок
Выкинь картинку:
Здесь для персональной домашней страницы я использовал гибкий макет, чтобы аватар и имя пользователя располагались на одной строке, но после изменения ширины экрана круглый аватар превратился в эллипс. Учитель-интервьюер попросил меня изменить атрибуты, чтобы решить эту проблему. (Я тоже вырезал картинку на этой странице слишком грубо, стыдно стыдно)
В этот момент я должен сказать еще одну вещь: нужно помнить о свойстве flex. . . потому что моя страница используетantdКомпонент пользовательского интерфейса, сначала я подумал, что это свойства компонента, которые не были установлены, поэтому я пошел вantdГлядя на документ, я в конце концов не обнаружил проблем, а затем интервьюер привел меня на страницу, чтобы использовать инструменты разработчика браузера для проверки, и, наконец, обнаружил, что это свойство flexflex-shrinkПроблема, поэтому я добавил картинку в аватаркуflex-shrink:0, сделать аватарку обратно в круг (но есть еще много проблем, типа аватарка поменялась обратно в круг но не синхронно уменьшилась, экран стал меньше, но размер аватара не изменился).
Представьте здесьflex-shrinkАтрибуты:
flex-shrink(Определяет коэффициент уменьшения предмета)
Стоимость имущества:任意正数值,小数,整数,负值是不被允许的. По умолчанию 1
По умолчанию 1, т. е. элемент сжимается, если места недостаточно.
Если свойство flex-shrink всех элементов равно 1, при недостатке места они будут пропорционально уменьшены.
Если свойство flex-shrink одного элемента равно 0, а других элементов равно 1, первый не будет сжиматься при недостатке места.
Уведомление: сокращение распределения ширины flex-shrink выполняется с использованием взвешенной операции. Вы можете посмотреть здесь,Распределение ширины для flex-shrink
Тогда есть еще один момент, то есть ярлыки на боковой панели главной страницы моего проекта слишком близко вверх и вниз.
Поэтому отрегулируйте значение margin-top.
После того, как проект был представлен, эти ошибки были исправлены на месте.Мой проект был еще слишком грубым.При создании проекта я должен ориентироваться на идеи, которые можно использовать, и все аспекты должны быть учтены на месте.
3. Код, написанный во время второго интервью Didi
тема:
Этот вопрос не сложный, интервьюер хочет посмотреть, как привык думать наш код.
- Первый шаг, интервьюер позвонил мне через
'a.b.c'с obj, чтобы получить значение c.
Обычный способ:
let obj = {
a: {
b: {
c: 666
}
}
}
let str = 'a.b.c'//先得到'a.b.c' 再得到 'a.f.c'要返回错误
function getData(obj, str) {
let arr=str.split('.');
for(let i=0;i<arr.length;i++){
obj=obj[arr[i]]
}
return obj;
}
console.log(getData(obj, str)) //666
В начале я использовал очень грубый метод 😏
function getData(obj, str) {
return eval(`obj.${str}`);//直接运行字符串,一步到位,太粗暴简单了
}
- Второй шаг – рассмотреть
a.f.cТакой случай, то есть примешивание свойства, которого не существует.
function getData(obj, str) {
let arr=str.split('.');
for(let i=0;i<arr.length;i++){
if(!(obj=obj[arr[i]])){
return false;
};
}
return obj;
}
- Третий шаг использует итератор в es6, например, сокращение, чтобы написать код в одну строку, чтобы получить результат.
function getData(obj, str) {
return str.split('.').reduce((x,y)=>(x?x[y]:x),obj);
//运用三元运算符判断,如果是a.f.c,就返回的是undefined
}
2. Резюме пунктов интервью
Я проходил собеседование на вакансию стажера, а многим компаниям очень сложно набрать стажеров.Если вы цените фундамент, вы должны заложить прочный фундамент.
Ниже я подытожу опыт интервью, принесенный уроками моей крови 😭
Представьтесь
Интервьюер просил нас представиться в начале, я помню, когда мы впервые проходили собеседование, я только представился, что я такой-то университет, джуниор, и я хотел подать заявку на фронтенд-стажера. . . Обидно 😱.
После этого, что неудивительно, интервьюер спросит вас, какая у вас специализация и какой интерфейс вы считаете лучшим для себя.
Позже я размышлял над этим. Интервьюер не знает вас. Он должен узнать вас через ваше самопредставление. Полное самопредставление является основным уважением к интервьюеру.
Я обычно представляю это так:我的学校+我的专业+大三在读+学习里学的重点课程+自己在校情况,拿过什么奖之类+为什么选择前端+前端学的怎么样,都会哪些[+自己平时是否有在写技术博客这样总结的习惯]+自己做了什么项目.
во время интервью
这个我又血的教训。 . . 😭
Не говорите о себе во время интервью以前好像做过,好像会,可能是这样, такие расплывчатые слова, такие заставляют людей чувствоватьСобеседование без подготовки,это обязательно повлияет на менталитет интервьюера.Интервьюер хочет видеть кого-то, кто может рационально решить проблему.Если вы можете ответить на вопрос, заданный интервьюером, вы можете спокойно организовать ответ и проанализировать его рационально для интервьюера ., тогда вы не можете сдаться. Вы можете попросить интервьюера дать несколько советов, сделать вывод самостоятельно и решить проблему с энтузиазмом, а не убегать. Интервьюер сказал мне, что их вопросы будут между нами Между да и нет, вы будете продолжать идти глубже, и вы всегда будете спрашивать там, где вы не будете.Нам нужно найти ответы с исследовательским мышлением и энтузиазмом, и посмотреть на наши привычки решения проблем.
Кроме того, вам придется больше учиться в мирное время и накапливать знания, прежде чем вы сможете с ними справиться. . 😥, рекомендуется посмотреть большеБлог Руана Ифэна, а также Nuggets Surprise Yu, Shen Sanyuan и многих других крупных шишек.блог, но не отклоняйтесь от основ изучения книжной части системы. (Есть что посмотреть 😆)
Кроме того, алгоритм и исходный код также являются основным моментом во время интервью.Обычно вы должны чистить их больше (скромный автор, который поклонялся алгоритму и исходному коду и усердно работает).
Представляем проект
Давайте поговорим о том, какие проекты мы должны делать!
Преподаватель-интервьюер, которого я встретил с Диди во второй раз, когда я спросил его, какие проекты им бы понравились, он сказал, что было бы здорово, если бы это были его собственные идеи, такие как решение проблем вокруг него. проект. Например, сам учитель-интервьюер сказал,Когда он был младшим, он сделал проект, который может отображать баланс счетов за электроэнергию в общежитии в режиме реального времени, потому что их школа может заряжать только в течение двух дней..
Подобные проекты отражают нашустрасть к технологиям!
Кроме того, у нас должен быть проектидеи, которые работают, чтобы быть дотошным, макет страницы должен быть дотошным, и функции должны быть идеальными. В конце концов, этот проект может вступить в контакт с передним и задним кодированием, а также для строительных серверов и т. Д. Технологический стек, который вы будете подвержены особенно богатому.
Как представить проект:
项目怎么来的 + 解决了什么问题,想做成什么 + 说说项目里的需求, + 使用了什么技术栈,采用了什么行动方式,具体做了哪些工作内容 + 有哪些难点,怎么解决的 + 结果如何,有什么体会总结
Я думаю, что это очень подробно:ЗВЕЗДОЧНОЕ правило
Увы, я буду продолжать упорно работать, продолжать писать проекты, делать темы, учить очки знаний и серьезно писать какие-то сводные статьи.Теперь у меня немного посуды. . . Наконец, позвольте мне сказать, что интервьюер и учитель, которых я встретил во втором интервью Didi, действительно хороши.

Автор сейчас ищет фронтенд-стажировку, wx: xieHB-frontend-178, добавьте WeChat, чтобы учиться вместе 😜, надеюсь, есть большой парень, чтобы дать инсайд, ха-ха!