云天励飞2019秋招前端凉经

是一位漂亮的前端小姐姐面的,哈哈哈,嗨森。面试难度总体来说属于中等,比较偏重基础,但即使是这样,我还是凉了。

1.js有哪些基础类型数据?ES6中新增了哪一个数据类型?

ES6新增了Symbol,我特么记混了,说成了Global,不知道哪来的勇气....

它表示独一无二的值,一定要记得它是一个数据类型而不是对象!

var a = Symbol();
var b = Symbol();
console.log(a);    // Symbol()
console.log(b);    // Symbol()
console.log(a == b)   // false

需要注意的地方:

① symbol 数据类型不能够转换为数值类型,否则会报错 
② symbol 数据类型不能用new 操作符去声明,因为它本身是一个原始值,而不是对象 
③ symbol 数据类型不能够和字符串进行拼接,否则会报错 
④ symbol 数据类型可以转化为布尔类型 

2.在控制台输出console.log(null == undefined)多少?为什么?

3.说说你对复杂类型数据和基础类型数据的理解和区别?

我在这里只回答了一个区别,就是基础数据类型存储在栈中,而复杂类型数据存储在堆中。详细的解释就是基础数据类型的数据名和数据值存储在栈中,复杂类型数据的数据名存储在栈中,并存储一个堆地址,属性和值存储在堆中。在获取复杂数据类型的值的时候,先在栈中获取地址,然后再在堆中获取值。

补充:第二个区别就是,基础数据作为函数参数时,函数对参数的修改不会改变外部变量的值;而复杂数据会。

4.ajax请求数据的步骤?

5.给你两个对象,怎么判断它们的属性一样?

当时的思路是通过Object.keys()或者for...in...遍历出健名,但是忽略了值。后来想通过toString()的方法去比较,但是好像是错误的,因为Object.toString()的值为[object Object]。

后来小姐姐要跳过这个问题,我说能不能给点提示,她说用JSON的方法就可以了。顿时恍然大悟,用JSON.stringigy()就可以解决了,我真蠢,居然没想到,谢特!

6.给你一个数组arr=[1,2,[3,4,5]],你怎么解析成一个扁平的数组,即arr=[1,2,3,4,5]?

我当时想到的是将其先转化成一个字符串,然后用字符串的方法split()解决,但是数组里的每个元素的数据类型变成了字符串类型,而不是数字类型,所以并不是一个理想的方法。

后来小姐姐,说了可以使用filter和map方法实现

var arr = [1,2,[3,4,5]];
var res1 = [];
// filter和map方法接受的是一个函数为参数,且返回一个函数处理之后的数组
// function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
// 函数参数
// currentValue	必须。当前元素的值
// index			可选。当前元素的索引值
// arr			可选。当前元素属于的数组对象
arr.filter(analysis1);
function analysis1(item){
	if(typeof item !== 'object'){
		res1.push(item);
	}else{
		item.filter(analysis1);
	}
}
console.log(res1)//[ 1, 2, 3, 4, 5 ]

var res2 = [];
arr.map(analysis2);
function analysis2(item){
	if(typeof item !== 'object'){
		res2.push(item);
	}else{
		item.filter(analysis2);
	}
}
console.log(res2)//[ 1, 2, 3, 4, 5 ]

var arr = [1,2,[3,4,5]];
var res3 = arr.toString();
res3 = res3.split(',')
console.log(res3)//[ '1', '2', '3', '4', '5' ]

7.http缓存原理?

8.先有三个请求a,b,c,你怎么实现在a,b请求成功后再请求c?

我的回答是先声明一个请求是否成功的标识,即var suc = false;然后判断在a,b请求之后的数据是否为空,不为空,则令suc=true,最后利用标识符suc判断是否决定发出请求c;后来又补充了,说也可以用promise实现吧...

9.原型和原型链你是怎么理解的?object的原型是什么?

10.call,apply,bind的区别?主要说下bind。

11.new操作符都干了些什么?

12.说说你对this使用的理解?

这里我回答的不全,没回答到点上,具体的可参考:https://blog.csdn.net/Charles_Tian/article/details/79778872

13.数组和链表的区别?

14.看你的实习好像用vue用的比较多,你能说说vue的数据双向绑定原理吗?

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值