腾讯前端一面/二面/hr面
一面(1h20min)
-
职业规划?感兴趣的业务?
-
最近学习的前端技术点?(Hooks)
笔试题(20~30分钟):
-
js闭包实现自增函数
-
实现Event类,实现监听和触发事件,使用观察者模式,且实现一个Page类继承Event。
-
O(n)的时间复杂度实现从大到小的排序
function sortGrade(array){ if(array.length==0||array.length==1){ return array; } var hash=new Map(); for(var i=0;i<array.length;i++){ if(hash.has(array[i])){ var m=hash.get(array[i]); hash.set(array[i],m+1); }else{ hash.set(array[i],1); } } var newArray=[]; for(var i=100;i>=0;i--){ if(hash.has(i)){ var value=hash.get(i); while(value!=0){ newArray.push(i); value--; } } } return newArray } console.log(sortGrade([23,98,97,97,90,90,90,67,20])) //[98, 97, 97, 90, 90,90, 67, 23, 20]
-
数组去重+从小到大排序
-
求一个数组排序后和临值的最大差值
问题:
-
高阶组件与Hooks的优缺点?
-
redux解决什么问题?(组件通信)
-
react-router的原理?
- hashHistory:使用hash的方式,由于hash值改变时浏览器不会发送请求,实现了单页应用的功能。
-
一开始将所有页面对应的hash值储存到一个数组中,并存入对应的回调函数。
-
监听hashChange事件,当hash值改变时执行对应的回调函数,实现组件的切换。
-
通过location.hash获取当前页面的hash值,执行对应回调
-
- BroswerHistory(不能刷新,浏览器会自动发送请求,导致错误。可以通过在服务器配置,当收到不符合要求的url就返回index.html页面) 利用H5的history新特性实现,当使用history.pushState()/history.replaceState()改变url时,页面不会发送请求,只会改变url的值。但由于不能监听history的改变,所以不能监听到对应的url而执行对应回调,所以需要手动监听。
-
一开始注册所有对应url的回调函数,存入数组。
-
监听popState事件,当点击前进后退按钮时,会触发,然后执行对应的回调。
-
当发生点击跳转时,取消点击事件的默认请求操作,调用pushState()改变url,执行对应的回调函数。
-
- hashHistory:使用hash的方式,由于hash值改变时浏览器不会发送请求,实现了单页应用的功能。
-
输入url到显示的过程?
-
静态资源缓存的过程?(cache-Control:max-age=)
-
-
首页加载慢,如何优化?
-
使用webpack打包,压缩代码,实现按需加载
-
使用缓存
-
script 设置defer/async
-
使用图片懒加载,对滚动事件实现防抖节流操作,防止不停触发事件
-
减少重排重绘
-
使用预加载preload/prefetch
-
-
为什么要使用HTTPS?
-
建立连接与发送数据的过程?(TLS连接过程)
-
对称加密还是非对称加密?
-
非对称加密耗时久,怎么优化?
硬件升级/软件升级/协议升级(TLS1.3)/会话复用(sessionId)
-
HTTP/2能节省连接时间吗?
-
HTTP/2会有队头阻塞问题吗?
-
TCP的队头阻塞体现在哪?怎么解决TCP端的队头阻塞问题?(QUIC)
-
-
用户在点击操作时发现页面很卡,怎么分析是什么引起的?(1.渲染不及时,出现掉帧2.内存占用过多)
-
js执行引起阻塞,由于密集计算,怎么定位这个问题?(performance面板)怎么在同时密集计算的时候,正常渲染?(webWorker)
-
页面内存占用过多导致太卡
垃圾回收机制是怎样的?
造成内存泄漏的写法有哪些?(1.闭包使用不当2.出现循环引用3.定时器未清除3.清除元素时,未清除事件处理函数4.未回收的全局变量)
-
二面(10min)
就随便问了几个问题,然后就结束了,但还是过了......
-
问项目有没有用户?做完之后有什么感想?
-
有没有了解网络协议?
-
TCP与UDP的区别
-
什么情况用TCP,什么情况用UDP?为什么视频使用UDP协议?有什么负面影响?
-
HTTP的协议格式?
-
怎么判断HTTP报文传输完成了?
-
-
了解linux系统吗?(不了解)
-
觉得自己的优点是什么?
-
浏览器之间的兼容性差异?(举几个例子)
-
实习时间段
HR面
-
自我介绍(介绍完说我介绍时间太短,让我重新介绍个三分钟的。。。)
-
在校期间做过一些什么成功的事情?
-
问什么类型的奖学金?
-
科研方面和技术方面的成就?
-
在学校中前端方面的排名?
-
有其他offer?哪些公司在流程中
-
哪里人?介绍家里的情况?
-
什么时间可以开始实习
- 打算去什么城市发展