共计 1514 个字符,预计需要花费 4 分钟才能阅读完成。
前端实习面试记录(2019.2.27)
初次面试 惨败
CSS 部分
1. 利用 border 的特性实现
CSS 实现三角形
JS 部分
1. 数组乱序
arr.sort(function(){
return Math.random() – 0.5;
})
最优算法:Fisher–Yates shuffle 洗牌算法
2.for in 和 for of
for in
for of
Array
遍历当前实例以及其原型链上所有可枚举的 key
只遍历当前实例中的所有 value,不涉及原型链
Object
遍历当前实例以及其原型链上所有可枚举的 key,通常需要 Object.hasOwnProperty 过滤。也可以直接用 Object.keys(), 该函数不会遍历到原型链
报错 typeError
for in 遍历的是键,for of 遍历的是值, for in 一般用于对象的遍历,不会用在数组上。Js 中 for in 和 for of 的区别
3.promise
Promise 构造函数接收的函数中,调用 resolve()之后的代码仍然会执行,它在被 new 的时候是同步执行的,然后再考虑微任务的问题
console.log(‘test start’)
var promise = new Promise(function(resolve, reject){
console.log(‘promise start’);
resolve(‘testing’);
console.log(‘promise end’);
})
promise.then(function(value){
console.log(value);
})
console.log(‘test end’);
4. 监听一段时间内用户对我方网页的所有操作
到现在我也想不到如何监听 document 的所有事件, 总不能让我把所有事件种类都监听吧。在这里只写一个 click 事件
document.addEventListener(‘click’, function(e){
e = e || window.event;
// firefox 下 window.event 为 null, IE 下 event 为 null
stopBubble(e);
preventDefault(e);
console.log(e.target);
}, false);
function stopBubble(e) {// 组织冒泡
if(e && e.stopPropagetion){
e.stopPropagation(); // w3c
} else {
window.event.cancelBubble = true;
}
}
function preventDefault(e){// 组织浏览器默认行为
if(e && e.preventDefault) {// w3c
e.preventDefault()
} else {// ie
window.event.returnValue = false;
}
return false;
}
综合方面
1. 图片懒加载和预加载
懒加载也可称作延迟加载懒加载就是先将页面内的所有图片的真实地址放在一个属性 (data-url) 里, 并将 src 先设置为 1px 的小图片,当触发某些条件 (图片进入视野) 时,再将图片的 src 换成真实地址。使页面加载速度快、可以减轻服务器的压力,节约了流量,用户体验好。
预加载提前加载图片,当用户需要查看时可直接从本地缓存中渲染,可以使用 css 或 js 实现。
详细解释:懒加载和预加载
参考文章
CSS 实现三角形
Fisher–Yates shuffle 洗牌算法
Js 中 for in 和 for of 的区别
懒加载和预加载
谢谢
面后想了想,其实这些题也都挺简单的,只怪我基础不牢,也太紧张了,一道题没答上后面脑子就不好使了,希望下次能够沉稳点。在此感谢面试我的面试官,让我认识到了自己的不足,谢谢。