面试一:
可以说说你为什么投递前端这个岗位嘛,你对前端有什么样的自己的认识?
假设你碰到一些你自己不知道怎么解决的问题,那你一般是怎么着手去解决的呢?
选一个你之前做过的项目介绍一下吧,主要介绍一下你在这个项目中承担的职责或者你的角色,然后你碰到了哪些问题,你是怎么解决这些问题的。
你提到了,你使用jwt进行系统安全性验证,那么这里面所说的安全性是指什么,然后jwt是怎么去解决这些安全性问题的?
我看你项目中采用了语音播报,你能讲讲这个语音播报是怎么实现的嘛?
可以用web本身的能力来实现语音播报,你觉得应该怎么来实现?
你可以对比一下Java和js的并发模型嘛,他有什么相似点或者有什么差异点?
你可以谈一谈你对js模块化方案的了解嘛?
下面有个笔试题你答一下,大概十分钟,看到题目后你可以先说一下你的解题思路
/**
*判断括号匹配
*说明:给定一个只包含'(){} []' 6种字符的字符串
* 实现一个方法来检测该字符串是否合法,其规则为‘()’、‘[]’、‘{}’必须互相匹配,可嵌套。
*示例:
* isValid('('); //false
* isValid('()'); //true
* isValid('()[]{}'); //true
* isValid('{()[]}'); //true
* isValid('(]'); //false
* isValid('([)]'); //false
* isValid('({}[]([]))'); //true
*/
function isValid(str){
}
答案:
用正则表达式来判断括号是否匹配。具体来说,我们可以定义一个正则表达式,使用 replace()
方法不断地将匹配的括号替换为空字符串,直到字符串为空或无法匹配。
function isValid(str) {
const regex = /\(\)|\[\]|\{\}/;
while (regex.test(str)) {
str = str.replace(regex, '');
}
return str.length === 0;
}
面试二:
项目运用的技术栈有哪些?
vue双向绑定的原理是什么?
vue的生命周期?
vue路由的模式?
vue路由传参?
vue打包希望打包到某一个文件夹下面,需要怎么配置?
js中用到的常用数组方法有哪些?
js怎么实现数组的去重?
js的原型?
js中怎么改变this的指向?
js中构造函数简单说明下?
js中事件冒泡?
css选择器权重问题?
css格式化重置?