某天我正在默默的写着代码,突然接到了腾讯的电话面试,哈哈哈哈= =,人生的第一次工作面试就这样被拿走了。也许是真正检验一名工程师的正真的水平吧,事先没有任何通知和征兆。这次面试的知识面特别广,这篇文章将讲述我被面试的内容,以及我的答案,以及后来思考出来的答案= =,有的答案可能需要的很广,将后来以额外的文章补充。
HTTP
原理
在这次面试中我被问及的HTTP的原理,当时一下想的太复杂,没有即时回答上= =其实说简单很简单,说难很难。
在这里简单的说一下我的理解:HTTP是基于TCP协议的面向连接的,采用3次握手的方式建立稳定连接的,用于进行数据交互的协议。
后面我会详细的写一篇文章来介绍HTTP协议坑
状态码
同时我还被问及HTTP状态码,问我重定向的状态码为多少,当时我有点在301和304之间徘徊,因为平时调试看多了304,脑子一下晕了,当然答案是301。
HTTP状态码:HTTP状态码主要有5大类:
- 1xx:这类状态码代表请求已接受,但需要继续请求
- 2xx:这类状态码代表请求成功了 代表的为200请求成功
- 3xx:这类状态码代表请求被转向 代表的为301重定向
- 4xx:这类状态码代表请求错误 代表的为404没有找到资源
- 5xx:这类状态码代表服务器出现错误 代表的为500没有服务器错误
后面我会详细的写一篇文章来介绍HTTP的状态码的含义。坑
HTTP请求跨域
在面试中提到了HTTP请求跨域,我当时想到了
- JSONP
- CORS
- ifreame跨域
=、=然后不知到了,但个人觉得已经差不多了,proxy需要服务器当时没有考虑,,但现在想想还是应该说一说。
WebSokect
因为面试官看我最新的一片博客是有关webSokect的所以问我webSokect的send和message有什么安全问题= =我是一脸懵逼的
只能先暂时埋个坑在这里了。坑
排序算法
面试过程中问到了排序算法,问我 除了冒泡,快排还有什么排序?
当时我就是反映的很多啊- -,然后我叫不出名字了。。。半天才憋出一个插排,其实还有很多分组排序,堆排序等等,唉平时的算法练少了,是时候继续刷OJ了
JS
如何判断是否为空对象
在面试过程中,还问到如何判断是否为空对象,当时想的是用循环加hasOwnProperty看是否有自己的属性,数组就用length。
但是现在想来还有一些奇怪的方法啊。比如用
-
JSON.stringify()
如何判断字符串是否为回文
1 |
|
拿走不谢
数组去重
= =这个是我回答的最流畅的一个也是唯一一个了吧,因为
看了就再也不怕数组去重
postMessage跨域
ES6
在面试中问道我常用的ES6语法,当时一下只想到了 Promise
和箭头函数 ,于是便问了我 Promise
和箭头函数的问题但是我是真的刚刚开始学习使用 Promise
,一脸蒙蔽的撞枪口了,虽然用了一个原始的方法实现了多并发但还是没有真正的说出面试官想要的特性 all
和 race
。
JQ的查询语句
啊=。=虽然现在JQ已经慢慢落寞了,但是作为曾经的主流开发库,依然考到了很多,同样作为没咋学习JQ的我,也答不上来。。我也不准备现在去学,因为要学一个库是很简单的事情~~。
VUE的优点和缺点
VUE的优点和缺点被问到的时候,当时反映是VUE自身的,但是现在想想当时应该问的和其他框架的优缺点,泪崩啊。。
Vue的优缺点官网上有相关表述:
1: 比Angular轻量化、简单,但是功能较少需要插件来弥补
2: 比React渲染要快,
JS模块化
过程中提及JS模块化的问题,但是面试官并没有深入的询问,但这可能就是下一个大坑- -
web安全
在安全方面我的确了解不多,但面试依然问到了SQL注入和XSS相关的问题,在这里就简单的描述下
SQL注入
SQL注入基本就是由于直接将用户提交的命令用于SQL语句查询或者执行相关命令,导致服务器系统信息泄漏或者执行非法的指令,导致的安全问题。
例如绕过登录验证等。
XSS
XSS是用户植入的代码内容再次展示在他人的页面时,自动执行代码内容导致的安全漏洞,
一般的防御方法主要有:
- 转义字符
- 对
javascript
字符串进行处理
postMessage跨域
END
2017-03-14 完成
2017-03-13 立项