面试最新
- 概念题 => 是什么 + 怎么做 + 解决了什么问题 + 优点 + 缺点 + 怎么解决缺点
HTML:https://www.cnblogs.com/duanlibo/p/17318888.html
HTTP:https://www.cnblogs.com/duanlibo/p/17318925.html
JS:https://www.cnblogs.com/duanlibo/p/17318922.html
node:https://www.cnblogs.com/duanlibo/p/17318711.html
工程化:https://woai3c.gitee.io/introduction-to-front-end-engineering/01.html#%E5%8F%AF%E6%8E%A7%E6%80%A7
面试题:https://juejin.cn/post/7202904269535887418#heading-31
"(){}[]" => True "([{}])" => True "(}" => False "[(])" => False "[({})](]" => False function validBraces(braces) {
const length = str.length
if (length === 0) return true
const stack = []
try { braces.split("").forEach(e => { if (e === "(" || e === "{" || e === "[") { stack.push(e) } else { if (e === ")" && stack.pop() !== "(") throw "" if (e === "]" && stack.pop() !== "[") throw "" if (e === "}" && stack.pop() !== "{") throw "" } }) } catch { return false } return stack.length === 0 }
/** * 判断是否括号匹配 * @param str str */ export function matchBracket(str: string): boolean { const length = str.length if (length === 0) return true const stack = [] const leftSymbols = '{[(' const rightSymbols = '}])' const match = { "}": "{", ")": "(", "]": "[" } for (let i = 0; i < length; i++) { const s = str[i] if (leftSymbols.includes(s)) { // 左括号,压栈 stack.push(s) } else if (rightSymbols.includes(s)) { // 右括号,判断栈顶(是否出栈) const top = stack[stack.length - 1] // @ts-ignore if (match[s]===top) { stack.pop() } else { return false } } } return stack.length === 0 }
url解析
let url="www.baidu.com?name=1&age=9&like=vue" //示例1 let ur2="www.baidu.com?name=13&age=93&like=vuesss"//示例1 function parseUrl(url) { let obj = {} let str = url.split("?")[1].split("&"); for (var i = 0; i < str.length; i++) { let a = str[i].split('=') obj[a[0]] = a[1] } return obj } fn(ur1) console.log(fn(ur1));
js实现轮训
function setTimer (url,params,time) { let timer = null axios.post(url, params).then(res=>{ if(res){//根据返回状态判断 timer = setTimeout(()=>{ this.setTimer () },time)//time查一下 }else{ clearTimeout(timer);//清理定时任务 } }) }
设计模式
设计模式是人们在长久的生产实践中总结出来的一套方法论,它可以提高开发效率,降低维护成本。举例说明:
- 发布订阅模式 => 定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。case:EventBus
- 责任链模式 => 将请求沿着所有处理者组成的链发送,每个处理者都可以决定自己是否处理,或者是否继续处理。实现了请求和处理者之间的解耦。case:Redux 中间件
- 模板方法 => 一个抽象类定义了执行它的方法的模板,子类可以按需要重写方法实现。case:React 的生命周期函数 + Dart
平时是如何学习的
手段有 看书,看博客,逛论坛基本上就这些,之后通过 输入、转化、输出来进行学习
- 输入 => 是指阅读别人分享的知识,比如看博客、看书
- 转化 => 是指把知识消化之后变成自己的积累,用自己的知识体系重新阐述一遍新学的概念
- 输出 => 是指把自己的理解以博客、代码的形式分享出来
回答问题
- 您问的是xxx问题吗?
- 我觉得这个问题可以从两个方面考虑
- 一是
- 二是
- 对了,还有一点可以补充
- 以上三点就是我对xxx问题的理解
反问问题
- 组里目前最大的挑战是什么?
- 咱组在整个部门或者公司的组织架构是什么样的?
- 如果我加入贵司,在我未来的职业生涯中,有怎样一个晋升的途径?我更加适合哪个方式?
面试官
- 时间 => 把握面试节奏,根据需求来决定
- 分成几个部分,每个部分分别考察什么?=> 标准化(1h)如何评价? => 标准:技能匹配 + 文化匹配 + 潜力 => 评分:不合格 | 合格 | 优秀
- 自我介绍 => 5min =>
- 语言基础知识(写代码/系统设计/算法(1)) => 算法 => 暴力 + 优化(准备3道题目)
- 框架
- 项目 => 考察岗位匹配程度 + 从一个人过去持续稳定的行为推测他能否胜任现在的岗位(可能短期提升吗?)
- 行为问题 => 10 - 15 min => 遇到最难的技术问题是什么?
- 反问 => 5min => 不能问结果,好的问题:做什么?挑战是什么?发展是什么?该部门在公司的组织架构上是什么样的?
- 记录优缺点
项目中的最大的困难或挑战? => 举具体例子
回答的时候要匹配公司文化