2017今日头条秋招(前端)一面总结
怎么说呢,对于第一次在线视频面试的我还是非常的紧张,不过也挺激动的,因为万万没想到牛客网现在做得这么好了,居然在线视频可以写代码同步到视频的对方。不禁感叹牛客网在性能和网页即时通讯这方面做得太好了。
正式说面试吧,视频一接通,面试官先让我自我介绍,自我介绍balabala...具体顺序忘记了,下面零散记录一下吧。
-
面:ajax和模版拼接有什么不同?(因为我简历里面有个项目用到了模版拼接。。。)
我:前者优点优点是有利于SEO,缺点是服务器压力较前者大;后者是减轻服务器压力,缺点是不利于SEO。
面:那怎么解决这个问题呢?
我:(what?)额。。。我认为使用VUEJS的数据双向绑定挺好的,但是不是很了解它的性能。(数据双向绑定的方式性能应该挺不错的,有待考证) -
面:你知道jQuery的data()方法吗?
我:不知道。。。
总结:jQuery的data()方法向被选元素附加数据,或者从被选元素获取数据。 -
面:那你知道jquery的事件代理和js的事件代理有什么区别吗?
我:不知道,不过我知道事件代理是怎么回事,balabala...
面:那你怎么去匹配jquery的on方法的第二个参数?
我:使用evrnt.target去匹配。
面:有没有更简单的方法呢?
我:暂时没想到。。。
面:其实有原生的方法,你下去查一下吧。 -
面:如何获取第10秒视频的弹幕数据?
我:嗯。。。首先要考虑这个数据的存储结构,如果是下面这种数据结果,直接就可以获取到哒。。
var obj = {
1s:[data,data,...],
....
10s:[data,....]
};
面:如果是数组存储的形式呢?每一项包括了时间和data。
我:首先看这个数组是否是有序或者有规律的间隔存储,如果是的话,可以按照间隔规律直接获得;如果间隔没有规律的话可以使用二分法来进行查找。
面:那你写一下二分法吧。
我:写。。。
面:貌似一些边界值的处理有些问题,还有你知道slice方法具体的参数吗?
我:知道呀(开始怀疑自己是不是记错了,难道第二参数不是end是个数?)
面试官纠正了我的一些错误。。。 -
面:你是学软件工程的吧?那我问你一些数据库相关的。。。你会怎么去设计一个表呢?包括它的一些附件信息。
这part自己没有好好准备,答得很烂,所以不详细讲了,下来好好复习数据库。。。😢 -
面:你写一下继承吧。
我:我首先使用原型方法实现继承,然后还有一种apply和call的方法实现。
面:你知道为什么可以使用apply和call吗?
我:我理解的是child可以通过apply去引用parent的属性或者方法。
面:不太对。。。。(跟我解释了一下没听清楚)
总结:apply和call是调用一个对象的一个方法,以另一个对象替换当前对象。 它们将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象 。从而可以实现继承。 -
面:HTTP在计算机网络的那一层?
我:应该是在应用层的。
面:HTTPS呢?
我:应该...也是在应用层的吧
面:那你知道HTTPS如何实现加密的吗?
我:SSL?不是很清楚。。总结:HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输。 https 则是具有安全性的ssl加密传输协议http和https使用的是完全不同的连接方式用的端口也不一样。 前者是80,后者是443。 客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥。
-
面:你说说如何实现文件上传呢?
我:我之前使用的方法是使用formData来实现,具体的原理就是使用js创建一个form表单,然后将需要上传的文件属性写入表单,通过submit实现上传。。。(说的很模糊)
面:那你知道如何把一些参数写入formData吗?
我:。。。忘记了
总结:参考http://www.jianshu.com/p/46e6e03a0d53
参考formData MDN
参考:阮一峰:文件上传的渐进式增强
差不多就这些。。。自己知识点不够扎实,革命尚未成功,同志仍需努力啊~