当前位置: 首页 > 面试经验 >

腾讯实习一面-PCG大数据平台-运营开发面经

优质
小牛编辑
145浏览
2024-03-11

腾讯实习一面-PCG大数据平台-运营开发面经

前面的IEG秒挂后2天被这个部门捞了,这几天准备了下算法,但是项目有点懈怠了

时间:3月11日 14:40 ,时长45分钟

全程拷打Java项目,掺了一些业务相关的八股

拷打查询优化细节:

因为项目亮点手贱,写了用Redis缓存优化前时间、优化后时间。结果疯狂拷打怎么得出的优化时间 其实是编的数据,引以为鉴!!

⭕查询时间是怎么测出来的?

肉眼对比效果 + 查询前时间 对比 查询后时间

❌拷打一连串问题:

数据量多大? sql查询出多少条记录? 是什么查询场景?查询条件是什么?小程序端提供哪些查询条件?有哪些类别?一条记录大小是多大呢?

凭记忆硬答,远古项目以前没想到会问,早知道不写了,还是太天真

❌通过引导得出最终的疑问:你这个查询很小简单,不应该有这么多的性能提升啊?

寄了,道歉,说不记得了

⭕不带缓存时查询会经过哪些关键节点?

客户端应用层构建查询语句->网络传输中发送查询请求到服务器->Mysql解析并接受请求 -> 数据库中执行语句

⭕从小程序发起查询请求开始,到最终输出结果,网络层面上,完成一次查询会经过哪些阶段?

答了计网,tcp连接后->http发起请求->TCP打包->IP寻路和转发->服务器协议栈解包->MySql获取到请求包并得到语句->执行

⭕经过哪些网络上面的硬件和物理的东西?

硬件和物理:网卡、网络传输路径

❌那么你觉得上面经历的各个环节哪些占用时间的比例比较大?

答的网络中TCP的连接和传输可能占用时间更长,还是不太理解

⭕假设以20条记录的查询为例去算(假设是千兆网),怎样算出各部分的时间?

`发送时有发送时延=数据包大小/网络传输速度,传播时延利用网络工具可大概知道延时``

❌你说不用缓存DB的查询会慢,你有测试DB的耗时是多久吗?

再次重申真的只是应用层写了两行代码

❌DB是怎么配置有注意吗? 也就是数据库服务器的规格有注意吗?

没做这方面的考虑,全部都是默认配置

❌时间测试是在本机测试还是在云端测试?

本地测完,云端只是用docker把后端jar包、mysql、Redis都部署在服务器上了,没再测过

拷打缓存

❌缓存是怎么实现的?

答了放入redis,只是用到了,对原理还在学习

⭕缓存之后,数据有更新怎么处理?

超时删除 + 更新后主动清除缓存并重新写入

⭕缓存清空是一个什么样的粒度?

获取当前记录的缓存,清空本次修改的数据缓存

❌缓存更新有没有别的方式?

道歉并答了Redis还不太懂

⭕为什么放在Redis中会快?

只答了因为是内存存储的键值对数据库

❌你是Redis部署在多点的网络环境上吗?

否,和后端环境在同一个服务器机器上

❌真实环境中Redis部署在网络上,还能起到加速的作用吗?

没懂考察啥知识点,大概是数据库和后端服务分离,怎么保证响应速度吧

JWT你可以讲一下吗?

承接上一次的JWT

参考:

JSON Web Token 目前最流行、最常见的跨域认证解决方案

JWT 跨域认证详解及应用场景

❌JWT和普通的直接签名认证有什么区别?

寄,没听过

直接签名认证是什么?

只包含了签名部分登录后生成token并用共享密钥对其签名,然后发回给客户端,其每次请求时在请求头中放入URL或者字段中,服务器收到请求后利用共享密钥验证

JWT是直接签名认证的升级

其除了签名外,规定了 头部.载荷.签名 的标准化格式和内容,使得认证更加通用和安全

总结:

JWT是升级版,在格式和内容方面进行了拓展,除了用加密算法签名外规定了数据的格式:头部、载荷、签名,以及内容:使用JSON格式

JSON的优势:

  • 易读性:结构简单易读,因此代替了XML
  • 数据结构灵活、易扩展:可以表达多种类型的数据
  • 跨平台和通用性:多平台有JSON解析和生成的工具

⭕JWT是为了解决什么问题的呢?

答了跨域,回复:这只是功能之一,又答了比较通用和泛化,回复:对

首先是无状态性:

  • 传统的session-cookies中服务器检查会话信息来识别客户端,并存储客户端的状态信息session_id到cookie,这样服务器负载比较高。
  • JWT每个请求都包含了完整的认证信息,服务器不需要为验证维护一个session并记录状态,减少了服务器鉴权的负担

其次是解决跨域问题

  • 传统的session-cookies中浏览器因为安全原因发送请求时只会带上和目标同源的cookies,所以A网站登录过一次后B中不会带上A的cookies,导致跨域问题:也就是不同源(协议、域名、端口)的cookie限制交互
  • JWT因为是无状态的,而且包含有登陆的信息,所以和A网站登录成功后生成的JWT,如果B网站采用相同的签名和加密,并且没有过期且密钥安全地保存,那么A网站就可以和B网站发起连接和通讯,解决了跨域问题

安全性:

  • 利用签名和共享密钥可以实现登录信息的完整性
  • 也可以使用对JWT加密或者使用https再放入请求头,来保证安全性

闲聊

  • Java这方面不是主力语言吧,不考研吗?
  • 为什么不直接找C++方面的工作呢? 讲了自己的想法,回复:应该多注意下Java上的业务技术点要更深入进去

算法

时间不够了,你10分钟内做完这道题合并两个有序数组

经典双指针,幸好没忘,秒了基本逻辑,第一次用ACM模式折腾了了一小会儿

有没有可能优化成一次循环?

太菜了没看过优化,之后看了题解发现倒序双指针可以

时间复杂度是多少

O(m+n)

反问:

  • 当时在捞我的时候参考了哪些方面? 答:简历是同事推给我的,看到做了一些基础性的东西,但是看起来对Java这方面做的不深(别骂了)
  • 您个人在面试时侧重于考察哪些方面?从项目开始引入知识点,看细节有没有深入的思考,一直问看你能回答出的深度和广度

总结:

有点大意了,没想到这个烂项目还有人问,直接没复习,全在凭借残存的记忆硬答,简历上的东西真的不能大意

面试官人超好,说话超温柔(比上一次那位好多了),还闲聊了一下感觉很亲切,不会的地方会换个方式来引导你

对我的建议帮助很大,之前侧重底层的基架方面和算法基础,以为这样可以差异化竞争,Java八股都是死背的,业务开发这方面确实很久没复习了,以前觉得这些CRUD简单,面试不会很考察,面业务岗还不注重业务项目是真的天真

要好好搞一下业务项目了,引以为鉴,不可大意

结果还没出,没秒挂已经进步了

#腾讯PCG##面经##腾讯面经##腾讯实习基地#
 类似资料: