-
数组去重的方法有哪些?
-
如何判断左右小括号是否全部匹配。如 ( ( ))()((((()))))
-
JS 的事件机制
-
如何劫持 XMLHttpRequest 的 send() 方法,调用他的时候,把参数输出到控制台。
-
git 和svn 的区别,git 的本地仓库有什么用呢?
-
react 和 vue 的区别
-
为什么简单的项目选择使用 jQuery 而不用 vue 。
-
跨域解决方案有哪些?jsonp 的原理及缺点?及如何判断 JS 加载完成了?IE7不支持 script.onload 事件怎么办?
-
浏览器的渲染机制?
-
浏览器最大并发量限制是多少个?及如何去突破这个限制?
-
缓存机制?
-
内存泄漏,及如何主动的去发现是否存在内存泄漏?
-
你们平时项目的 JS 异常有做上报处理吗?是什么实现的?
-
xss 攻击的原理和预防?
-
eslint 是怎么使用的?
-
webpac打包性能优化,如何分块打包,及 HMR 的实现原理。
-
React的虚拟dom是什么?及 diff 算法原理?
-
SSR(服务端渲染)的作用,及它有什么缺点???
-
HTTP和HTTPS的握手过程,是否了解HTTP2的特点,以及怎么理解它的多路复用
-
MVVW是什么,有什么优缺点
-
怎么实现记住登录功能(很强的整体性)
-
怎么实现统一登录,或者授权登录需要考虑什么(更强的整体性)
-
JS手写二分搜索算法
-
用JS代码求出页面上一个元素的最终的background-color,不考虑IE浏览器,不考虑元素float情况。(window.getComputedStyle、当这个元素的背景色为透明时,它最终的背景色应该为其父元素的背景色。)
-
html和CSS绘制柱状图,用CSS和JS动画在刚才那个柱状图中表现出快排的整个过程
-
HTML5新特性(新增的标签, API等),如localstorage的用法以及与cookie的区别,如何理解web语义化
-
CSS3新特性,如动画等
-
CSS特性,如position的用法,如何实现居中,bootstrap源代码的理解,盒模型(W3C和IE),flex的使用
-
前端兼容性处理(CSS hack技术)
-
JS基础,如this用法,new关键字的过程,call与apply的区别,闭包,原型以及JS如何实现继承
-
前端基础,浏览器缓存,跨域,从输入url到渲染的整个过程,事件(W3C和IE),TCP三次握手过程,如何实现懒加载(跟预加载的区别)
-
之前有看过你做的一个移动页简历,请问如何实现?我主要是使用REM+Media Query,根据不同尺寸的设备进行不同的font-size设置。然后问我REM和EM的区别,如果父元素的font-size也是采用em表示,那么子元素的font-size怎么计算等。
-
有没有遇到过margin重叠的现象,如何解决?BFC
-
常见的清除浮动的方法有哪些?bootstrap是怎么做的?bootstrap是怎么实现grid系统的?
-
怎么理解JS模块化?有没有使用过webpack?
-
什么是浅复制和深复制?有什么区别?如何实现Object的深复制?
-
Jquery的源代码怎么进行Object的深复制的
-
set和map的区别
-
浏览器解析javascript的词法是怎样的
- vue的虚拟dom优点(diff、渲染速度、同构)
- 是否能接受杭州工作
- 简单做下自我介绍
- es5继承和es6的继承有那些方式及区别
- js处理异步的所有方式以及优缺点
- 浏览器缓存机制及原理
- js事件循环机制
- 图片懒加载的方式及其原理
- 移动端的适配以及原理
- js为什么是单线程
- 什么是精灵图,优化原理
- http协议和三次握手,四次挥手
- 聊天websocket 长链接等 原理
- 什么是防抖和截流,及区别,应用场景
- vue和react的区别
- 什么是微前端及其优缺点?
- 前端代码规范 以及eslint相关配置?
- 你以前的项目有什么缺点?改如何优化?
- 怎么处理同事之间的矛盾?
-
LRU cache 描述信息 实现一个LRU过期算法的KV cache, 所有KV过期间隔相同, 满足如下性质: 1. 最多存储n对KV; 2. 如果大于n个, 则随意剔除一个已经过期的KV; 3. 如果没有过期的KV, 则按照LRU的规则剔除一个KV; 4. 查询时如果已经过期, 则返回空;
-
实现一个类,可以监听对象属性的值变化。加分项:考虑对象存在值为数组或对象的属性。
class Observe {
constructor(data: Object) {
}
// 监听属性变更
$on() {
}
// 触发属性变更事件
$emit() {
}
}
const data = new Observer({a: 1});
coonsole.log(data.a) // console: 1
data.$on('a', (newValue, oldValue) => {
// this === data
console.log(newValue, oldValue);
});
data.a = 2 // console: 2 1
- 实现一个 GodMan, 要求如下 GodMan("jack") 输出: I am jack
GodMan("jack").rest(10).learn("computer") 输出 I am jack //等待10秒 Start learning after 10 seconds Learning computer
GodMan("jack").restFirst(5).learn("chinese").rest(5).learn('english') 输出 //等待5秒 Start learning after 5 seconds I am jack Learning chinese //等待5秒 Start learning after 5 seconds Learning english
console.log('begin');
setTimeout(() => {
console.log('setTimeout 1');
Promise.resolve().then(() => {
console.log('promise 1');
setTimeout(() => {
console.log('setTimeout2 between promise1&2');
})
}).then(() => {
console.log('promise 2');
});
}, 0); console.log('end');
function sum(...args){
function currySum(...rest){
args.push(...rest)
return currySum
}
currySum.toString= function(){
return args.reduce((result,cur)=>{
return result + cur
})
}
currySum.toNumber= function(){
return args.reduce((result,cur)=>{
return result + cur
})
}
return currySum
}