腾讯 今日头条 美团(已拿到) CVTE 前端面经
  腾讯: 
   一面(30多分钟): 
   刚进去面试官就说,嘿,我是内推给你打电话的那个。本来我紧张得有点反胃,意外的心情平复下来了。 
   1、问我当时内推打电话时说的正在做实时监控最后是怎么做的。 
   2、根据我项目,他提到视频中轨迹追踪,那个轨迹追踪显示是怎么实现的。 
   3、播放视频用的什么?我回答用的<video>标签。 
   用<video>又遇到什么麻烦吗? 
   我说其实我主要是用<video>播放视频,但是视频控件是自己做的,比如进度条显示,操作视频,给视频画框截图等等。出现的一个 bug 是页面切换时进度条闪烁的问题,这个是路由切换了但是因为id是一样的,所以出现了前一个视频的进度条跟后一个视频的进度条重合了导致的闪烁。解决方案是在路由切换的时候要对视频的定时器进行清除。 
   4、做项目遇到过兼容性问题吗,是怎么解决的。 
   IE 中调用本地摄像头进行人脸拍照: IE8及以下不支持HTML5标签:video和canvas;IE11及以下所有版本,包括Edge都不支持getUserMedia()。 
   解决办法:IE 中使用flash来进行拍照。有两个处理方案。 
   点击拍照按钮后, 
   (a) 针对 IE9 及以上:通过flash调用摄像头后,将图像直接输出到canvas画布中,再通过canvas中的方法 toDataURL()方法,生成图像的base64编码传到后台。 
   (b)针对 IE8 及以下:因为 IE8 无法用canvas.toDataURL() ,因此拍照后无法直接将图片进行显示。这时通过flash调用摄像头,将得到的像素点阵传到后台,让后台处理,生成图像的 base64 编码,再在前端进行显示。 
   5、他说他们正在有一个任务是前端实时打印后台的日志,不停往后台发http请求,每获取一条日志就往<ul>中appendchild一条<li>,日志有上千行,所以导致后期日志显示速度会变慢,有什么方法解决吗? 
   我回答现在思考的话大概能想出两个优化的方法吧。 
   第一个:设定一个阈值,从后台获取到的日志条数超过这个值之后再append进去显示。 
   第二个:可以用Websocket,跟服务器建立双向连接。这样可以减少http发送次数。 
   6、实现一个两栏布局,左边固定宽度,右边自适应,高度也要自适应。 
   7、对 ES6 了解吗?有用 ES6 做过什么项目吗?可以说说 ES6 的特性吗? 
   8、我提到新加入了几个声明变量,比如 let,const,class,他就问那 let 跟 var 有什么区别? 
   9、生成器的作用是什么?我说主要是用来生成迭代器吧(但是后来想了想更有用的一点:用yield可以暂停后续yield,所以可以用它来做异步这点忘了说 emmmmm....) 
   10、了解https和http2.0吗?我直接说对https有一定的研究,然后把原理和过程说了一遍。 
   11、对正则表达式了解吗?至少8位的密码,包含字母大小写,数字要怎么做?加入一些比如@._要怎么识别? 
   这个我没回答得好,他说其实他挖了个坑,这个要写起来很难的,要用到分组。 
   二面(21分钟): 
   二面电话打来的时候手机不小心静音了,而且还正在食堂吃饭,所以错过了,回宿舍的路上一路上都觉得很郁闷。结果在半途又打过来了,然后立马就接了。他问现在方便面试么?然后我就在大马路上应下来面了。(唉,其实我应该可以说正在外面,马上就回宿舍让他等十分钟再给我打过来吧) 
   1、面试官:你先自我介绍一下吧! 
   我:blablablabla 
   2、面试官:看到第一面面试官说的我做实时视频监控,问我的数据流是怎么推和收的? 
   我:主要是后台进行处理,前端就负责显示,后台给接口,实时视频也有个ip地址,前端基于angularjs框架将数据给显示出来。 
   3、面试官:你做项目的时候,遇到有哪些难点比较难解决的? 
   我:blablablabla 
   4、面试官:对计算机网络有了解吗? 
   我:(内心os:好像太泛了吧)反问是让我说一下tcp、udp、https这方面吗? 
   面试官:那你讲一下tcp总共有哪些状态码吧? 
   我: 状态码的话有分发送方和接收方的,我可以说一下建立TCP连接是怎么进行的,再顺便说一下两边的状态码的变化吗? 
   面试官:ok。 
   我:(内心摆出自己画的一张图,把整个建立连接的过程和状态改变说了一下) 
   (估计我没说到挥手时的那些状态码变化,他又问) 
   面试官:那你知道time_wait吗? 
   我:这是关闭TCP连接时的一个等待状态。 
   面试官:那为什么要有这个time_wait? 
   我:因为在包的发送接收过程中可能会发送网络拥塞,有可能接收方等不到发送方发过来的包,那这个time_wait会设有一个时间值,如果等待超过这个时间,接收方会认为发送方已经关闭了,自己就会停止等待,也进入关闭状态。 
   5、面试官:给你2-3分钟你能给我说一下比较两个字符串的函数怎么实现吗? 
   (2-3分钟后) 
   我:总共想出三种解法,第一种可以直接用sort()函数来比较,因为js中的sort()函数就是直接基于Unicode编码来比较的; 
   第二种用递归一个一个字符的比较;第三种用循环直接比较。主要说一下第二种方法:传入两个字符串参数,将两个字符串的第一个字符用charCodeAt()方法比较,如果前一个大则输出前一个字符串,后一个大则输出后一个字符串,若两个字符相等则重新递归第二个字符。(后来想了一下,其实直接迭代用一个for循环就能解决了) 
   6、面试官:看你有用过java和js,那你能说一下怎么对四亿个qq号全排列吗? 
   我:(果然我不该说本科学过java)其实主要是要对四亿数据进行存储,我能想到的是用bitmap来存储这个数据,但因为我对存储研究不是很深,所以具体怎么用不是很清楚。 
   面试官:哦,那好吧,了解了。 
   7、面试官:你觉得你动手能力怎么样? 
   我:blablablabla 
   8、面试官:你觉得你还有哪些方面需要提升呢? 
   我:blablablabla 
   9、面试官:你具体什么时候能来实习呢? 
   我:blablablabla 
   10、面试官:我这边好了,你有什么问题要问我吗? 
   我:你觉得我这次面试怎么样,可以评价一下吗? 
   面试官:你自己觉得你这次面的怎么样? 
   我:blablablabla 
   面试官:你现在还紧张吗?(前面自我介绍的时候我紧张音调都变了还破音了,然后我直接说出来了,说不好意思我紧张) 
   我:blablablabla 
   emmmm,总之,在大马路上,我完成了这次面试。20分钟就面完了,而且在大马路上没准备,打草稿都只能在单车座垫上空写,药丸。。。。 
   —————————————————————————————————————————————— 
   诶!刚查看状态,变得好快,已经处于 HR面试 环节了,|゚ρ゚ )ノ哦哟,真的太刺激了。。。。。。 
   ——————————————————————————————————————————————
 
   顺便把其他公司的面经也一起放上来好了! 
   —————————————————————————————————————————————— 
    今日头条:  
     一面:  
     1、Ajax 异步  
     2、ES6 中 Genarator、async 等异步  
     3、知道Promise怎么实现异步的吗?  
     4、ES6 怎么实现super()的,如果换成ES5 该怎么实现super。  
     5、ES6的const,ES5 要怎么实现。  
     6、ES5 如何监听 “=”赋值操作。  
     7、了解AngularJS2、React、Vue技术区别。  
     8、Angularjs 1 的特点及如何实现的 $degest、$apply  
     9、为什么Angularjs 1 中要将$setTimeout重新封装实现一遍。;  
     10、多了解js模块化、组件化 -》要做技术区分。  
     11、正则表达式-》基本功  
     12、尝试用 Webpack ,比起gulp 功能更强大, gulp是工具流  
     推荐的书籍:  
     1、你不知道的JavaScript 上、中、下  
     2、深入理解ES6  
     3、现代前端技术解析  
     当时面试官让我加他微信,我加了。后来面完等了大半个月内推都过去了,笔试也没消息,问了一下他,他说看到我简历上说只能实习两个月,他们需要能实习6个月的所以就笔试通知也没发了。  
     ——————————————————————————————————————————————  
     美团:(已拿到offer)  
     一面:  
     1、在你的项目中,你是如何实现响应式的,用了哪些方法?  
     2、什么是同源策略。哪些情况下不是同源的。例如a.baidu.com 与 baidu.com。  
     3、跨域怎么办?知道JSONP吗?它是怎么获取服务器发送过来的数据的?  
     4、说一说HTTP有哪些状态码。  
     5、http有哪几种请求方式,GET和POST。分别在哪些情况下使用?  
     6、说一说cookie和webstorage。  
     7、对数据结构有了解吗?给一个有序的数组,找某一个数是否存在。  
     8、输入一个网址到显示的总过程。  
     9、说说对闭包的理解。  
     二面:  
     1、说一说JSONP。  
     2、事件流。三个阶段。  
     3、讲一下原型链。prototype是对象的属性还是构造函数的?  
     4、知道cookie吗?与localStorage有什么区别?  
     5、讲一下HTML的块级元素和行内元素有哪些。  
     6、说一下display:block 与 inline,如果为inline设置width,会起作用吗?给inline-block设置width呢?  
     7、如何清除浮动?  
     8、讲一下BFC。  
     9、知道web缓存机制吗?(我很实在的,直接回答了不知道)  
     10、web安全机制有哪些?知道CSRF、XSS吗?说一下怎么解决?  
     11、web性能优化?  
     12、css样式表放在head里会阻碍页面正常渲染吗?js呢?  
     13、垂直居中布局。  
     14、自适应布局怎么设置?知道rem也能做自适应吗?  
     15、有用过Webpack吗?(我回答自己做小项目玩只用过gulp)  
     ——————————————————————————————————————————————  
     CVTE:  
     一面:  
     简述一下项目  
     js闭包及解决办法  
     js原型,原型链,继承  
     angularJS数据绑定的原理  
     手写代码 字符串反转  
     CSS中content如何自适应  
     写一个函数实现 new Calculator(14).add(2).add(23).minus(2).minus(4).print()  
     二面:  
     就只记得让我编程实现:给一个数组找第n大的数。  
     HR面:  
     emmmmm,当时第一次HR面,我特别傻的还不太会说客套话,问到意向城市我直接说更想去深圳,还有一个问题说会有什么理由你会拒绝我们公司给你发的offer,我就说如果在深圳的比CVTE更大的公司给我发offer的话我就会拒吧。果不其然把我给挂了。  
     ——————————————————————————————————————————————  
     后续我会把当时准备面试时整理的一些学习资料放到博客上~  
     个人博客地址:www.wonder233.cn   
 