腾讯微信支付前端暑期实习一面3.28
一面面了2h30min+,是特别特别想去的地方,但是二面挂了,最后还是没有去成,也许也是命吧
上来两个算法题:
滑动窗口最大值
前 K 个高频元素变体版 需要额外按ascii码排序
JS的基本数据类型
Object属于基本数据类型吗
为什么他是引用数据类型呢
假如我有一个Object,let b = a,那b拿到的是a的深拷贝还是浅拷贝?
b修改对象中数据的值,a会跟着变吗
如果我希望b深拷贝a对象中所有的信息,应该怎么做
问_deepclone是不是js自带的方法,问我提到的这些深拷贝方法能支持的数据类型
json.stringify使用的时候需要注意什么问题(如果出现a引用b,b引用a的话,用这种方法会出现什么问题)
解释一下JS的原型和原型链
你提到prototype可以做继承,那他是怎么做继承的
如果我有一个构造函数A,有一个构造函数B,让A继承B,该怎么做?
如果不修改子类的constructor属性会发生什么事情
除了原型链继承,你还了解其他的继承方式吗
继承中call函数的作用是什么
call,apply,bind的区别
构造函数继承,组合继承,原型链继承外问我还有无其他继承方法(extends)
说一下extends是怎么实现继承的?extends的原理?
JS里的事件代理(事件委托)
我讲了一下之前做项目时用事件委托的经历和具体做法,他问是事件冒泡还是事件捕获
问我方法(是想问我怎么实现冒泡的还是咋?有点没懂)
e=>{}这种方法默认是在冒泡阶段还是捕获阶段
假如我的监听要在捕获阶段进行,该怎么做?(addEventListener?)
addEventListener有几个参数,分别都有什么作用?(一共有三个,只说上来2个)
跨域问题是怎么产生的?跨域问题的解决方案是?
cors的细节,访问这种跨域的域名,浏览器发的请求,第一步,是直接把get或post发出去,还是说前面有什么操作(这里我分了简单和复杂请求分开讨论)
预检请求和服务器的通信是get还是post还是别的(options)
那他的header里面带了什么呢
如果我想跨域的时候把cookie带上,该怎么做?
http-only是不能用什么方法访问(不能通过js访问)secure(只能通过https访问)
怎么设置cookie只在某些域名携带?在哪设置?怎么设置
知道哪些设计模式吗
什么情况下需要用到单例模式?(我说Vue实例化一次)问我为什么在这个场景下Vue只需要实例化一次,如果多个实例的话会有什么问题
发布订阅模式是做什么用的?问我有没有实际去用过这个设计模式
讲了一下props的使用场景
问我项目用数据总线是怎么用的
详细问了发布-订阅模式和观察者模式(虽然是我主动提的)
问了滚动显示图像的细节 scroll啥啥啥的(滚动这种图像是怎么显示的 视窗高度+滚动距离这种scrollheight+innerheight)
如果用addeventListener方法的话事件名叫什么(scroll)
接着又问了工厂模式?什么情况下要用到工厂方法模式?
0.1+0.2=0.3吗?为什么不等于呢
为什么计算机底层存储0.1不等于0.1
计算机存小数的底层原理是什么
怎么让他精确(我说了tofixed和相减小于eplison的方法 他说还是不行 有误差)
主要用的框架是哪个
vue的双向绑定是怎么做的
vue的data为什么要设计成一个方法
v-for为什么要设置key?为什么不设置key会导致重新渲染?里面的原理是什么?
vue渲染的机制?怎么判断哪些元素需要渲染,哪些不需要?(其实是考diff算法)
有看过vue的diff相关的源码吗
如果想了解一个框架的源码的运行原理,会不会想到用断点的形式看哪一步执行的怎么样?有用过浏览器的断点吗?
如果一个页面出现白屏问题,你会怎样去排查?
假设白屏情况出现在用户端,你会怎么办?(我说了排查方法之后提了一些如何提高加载速度的方法,网络侧,css侧,js侧)
他又问,如果不是加载慢,而是出现错误了或加载资源失败了,该怎么排查?是哪里报错了
提了onerror,问我挂载在哪里(window)
发生错误的js和请求页面是不同域的,onerror能拿到这个错误信息吗?
其实是问跨域情况下如何拿到错误信息?
Vue里面如何捕获全局错误
如果是JS的资源加载失败错误,该如何捕获
CSS资源加载失败该如何捕获
堆和栈的区别?分别介绍一下
怎么用堆栈的,他们的底层是怎么实现的
底层什么内容会存储在栈中?什么会存储在堆中?
XSS攻击,三种类型的举一下具体的例子(应用场景)
怎么防范XSS攻击
我说了转义(问我怎么转义)要求用原生方法(不道儿啊)
然后提了CSP的方法,说还是不行,问我html怎么转义,具体是哪个方法
用原生的JS怎么实现转义
CSRF攻击是什么?举个场景的例子?
怎么防范CSRF攻击?(cookie上面设置什么可以防这个攻击)我说的是考虑使用samsite字段限制其不被第三方使用
cookie如何设置为同源吗?
万一注入成功了,很容易拿到cookie,怎么办呢
状态码和301和302,304,404,401,403,5xx了解吗
HTTPS是如何防范中间人攻击的
在这个过程中涉及到哪些加密算法(非对称加密和对称加密算法用了哪些)为什么要这样做
对称加密为什么效率高
你了解哪些非对称加密算法?哪些对称加密算法?
有了解过抓包吗
抓包工具能抓HTTPS的包吗?为什么能抓?(按理说https是加密的,应该是抓不到的,为什么能抓到)
抓包工具本质上是个中间人,他是怎么做到中间人的?(certificate!)
证书是谁颁发的
有用过nodejs吗(Legendary!)
有用过小程序吗(double kill!)
有了解微前端吗(Triple kill!)
讲一下实习经历吧
问我怎么做到自动化埋点的
问我sdk的底层是怎么实现的(页面的点击事件是如何实现的)
让我自己实现页面的点击事件上报而不使用sdk,会怎么做(我说加上监听,他说这样会造成很多的事件都需要监听)
他说不要写那么多监听,只需要在一个地方做就可以了,该怎么做?(不道儿啊,我说全局监听)
又问我怎么做全局监听
反问(终于结束了TAT 最漫长的一场面试)
部门业务
学习建议(说我面试废话太多了要简洁 然后sdk底层的原理要去了解下)