盒子
盒子
文章目录
  1. 7.2上午笔试题
  2. 7.2日下午面试

72笔试面试题

7.2上午笔试题

1、请描述cookie,sesstionStorage,localStorage三者之间的区别

  • 有效时间:cookie在关闭浏览器后失效,sessionStorage在关闭页面后失效,localStorage需要手动清除才会失效;
  • 数据存储大小:cookie只有4K左右,sessionStorage和LocalStorage一般有5M。
  • cookie会在请求头中一起发送给服务器,另外两个则不参与通信

2、判断以下js代码是否正确,并描述原因

1
2
A "undefined" == undefined
B "8889" == 8889

A的结果是False,’undefined’是已经声明的一个字符串,所以与undefined相比结果为False;B的结果是true,在字符串和数字比较时,会将字符串转换为数字再进行比较。

3、请问以下代码最终输出结果是什么

1
2
3
4
5
(function () {
var a = b = 345;
})();
console.log(b);
console.log(typeof(a));

输出结果345,undefined,a是通过var关键字进行生命,属于函数内部的局部作用域,而b被分配到全局作用域,所以在后边可以访问到b的值。

如果在函数内部使用了严格模式的话,代码会在输出b的时候报错Uncaught ReferenceError: b is not defined

4、请用javascript将字符串"http://www.alipay.com?orderid=933&ordername=iPhone6s一部”进行编码和解码;并取出此字符‘?’左右的两个子字符串;之后将原字符串中的"www.alipay.com"存入到一个变量里面

使用encodeURI()decodeURI()对url进行编码和解码,取出’?’左右两个子字符串可以使用str.split('?')

5、请阅读以下代码并分别写出param,temp1,temp2三个对象的属性值

1
2
3
4
5
6
var param={ Idx : 1, Name : 'wawayaya', Gender : '男' };
var temp1 = param;
var temp2 = { };
temp2 = param;
temp1.Name='joyreader';
delete temp2.Gender;

对象temp1和temp2直接使用对象复制,三个对象都指向同一个地址,当一个对象改变时,地址中对象的值也会改变,导致另外两个输出相同的结果。

6、请将javascript对象account,存储到sessionStorage中,并将account对象从sessionStorage中取出,取出之后打印出account对象的所有属性,var account = {Idx:1,Name:'JoyReader'};

1
2
sessionStorage.setItem('key', account);
JSON.parse(window.sessionStorage.getItem('key'));

7、

1
2
3
4
5
// 请描述以下代码存在的问题,并给出优化方案
var divs = document.getElementsByTagName(“div”);
for(var i=0;i<divs.length;i++){
document.body.appendChild(document.createElement(“div”));
}

这个应该是作用域的问题,将for循环中的var声明换成let或者包裹在一个 立即执行函数里。

8、现有一个网页要求以设备宽度进行呈现,并且此网页不允许用户缩放,当设备宽度在320px至480px之间时body元素的背景颜色为#d0d0d0,请写出相关代码。

页面禁止缩放使用meta标签:<meta name='viewport' content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"

获取设备宽度使用window.screen.width

9、现有这样的数据var data = [{Idx:2,Name:'Qiuguoheng'},{Idx:3,Name:'Liyanhong'},{Idx:4,Name:'Mayun'},....]此数组的长度为1000,请遍历此数组,将结果添加至形如下面的表格中,要求“禁用”链接上要有Idx的属性值

1
2
3
<table id=“data-tb”>
<tr><th>Idx</th><th>Name</th><th>操作</th>
</table>

创建一个DocumentFragment,将所有的数据添加到里边,最后将DocumentFragment渲染到页面上,只需要操作一次DOM

10、写出一些优化网页加载速度的方案或建议

图片懒加载、预加载;使用CDN;将JS放在文件底部,CSS放在文件顶部;压缩JS和CSS文件;http缓存;按需加载等

做完以后百度答案,感觉自己又凉了。我又凉了,我骄傲了吗。

img

7.2日下午面试

另一家公司,视频面试,对面戴着口罩倒是很好说话的样子。

问题大概有下面这些:

  • 为什么选择使用React

  • 数组遍历的区别(forfor...infor...offorEachMap)

使用Symbol.iterator可以为对象添加可迭代属性,使用for...of进行迭代

  • 使用过哪些antd组件,有什么问题

  • 三个div怎么显示在一行(弹性布局flex-wrap: nowrap)

  • 在项目里有没有做过按需加载,懒加载

  • 有没有了解过今年的React库(没有。。。)

  • useEffect钩子函数(第二个参数,依赖数组,当依赖数组发生改变时调用函数)

  • letconstvar有什么区别

  • 跨域问题
欢迎关注公众号
扫码关注我的微信公众号-大前端合集
  • 微信公众号-大前端合集