腾讯TEG AILab 一面二面HR 意向书 | 面试复盘

恭喜发现宝藏!微信搜索公众号【TechGuide】关注更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝

面试部门 / 岗位: 腾讯TEG / AILab

写在前面:楼主是22届校招生,十分幸运能被腾讯录取,感觉三个月的准备没有白费。后续会把自己的笔记放到Gitbook中给大家开源共享,祝大家秋招顺利!

一面(50 min)

  1. 项目问题 -15min

主要涵盖了我项目的开发流程,主要职责还有工作量。挖到一半发现我答的还可以就停了

  1. 说说InnoDB与MyISAM的区别

  2. InnoDB 支持事务,MyISAM 不支持事务

  3. InnoDB 支持外键,而 MyISAM 不支持

  4. InnoDB 是聚簇索引,MyISAM 是非聚簇索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB必须要有主键,通过主键索引效率很高。

  5. InnoDB 最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞

  6. InnoDB 不保存表的具体行数,而MyISAM会保存,所以MyISAM在执行select count(*)更快

  7. 说说聚簇索引和非聚簇索引

提示点:再说非聚簇索引的时候一定要提到回表查询

  1. 为什么用B+树当索引的数据结构?它跟B树相比,优点是什么?

在B+Tree中,所有数据节点都是按照键值大小存放在同一层的叶子结点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度:

  • 非叶子节点只存储键值信息;
  • 所有叶子节点之间都有一个链指针; 数据记录都存放在叶子节点中
  • 我们知道IO次数取决于b+数的高度h,假设当前数据表的数据为N,每个磁盘块的数据项的数量是m,则有h=㏒(m+1)N,当数据量N一定的情况下,m越大,h越小;而m = 磁盘块的大小 / 数据项的大小,磁盘块的大小也就是一个数据页的大小,是固定的,如果数据项占的空间越小,数据项的数量越多,树的高度越低
  1. UNION和UNION ALL的区别?
  • UNION和UNION ALL都是将两个结果集合并为一个,两个要联合的SQL语句 字段个数必须一样,而且字段类型要一致;

  • UNION在进行表连接后会筛选掉重复的数据记录(效率较低),而UNION ALL则不会去掉重复的数据记录;

  • UNION会按照字段的顺序进行排序,而UNION ALL只是简单的将两个结果合并就返回;

  1. Left Join 和Inner Join的区别

  2. 说说事务隔离级别

  • READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。
  • READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
  • REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
  • SERIALIZABLE(可串行化): 最高的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。
    提到了幻读,从而引申出了MVCC
  1. MVCC是怎么实现事务的安全性的

可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。大多数的MVCC都实现了非阻塞的读操作,写操作也只锁定必要的行。在MVCC并发控制中,读操作可以分成两类:快照读 (snapshot read)与当前读 (current read)。

  1. 提到了行级锁后,说说锁按照粒度的分类

  2. 说完了后面试官提问:InnoDB行锁是怎么实现的?

我听到这里愣了得有二十秒,没想明白。然后面试官又提到了表锁,灵感就来了。InnoDB行锁是通过给索引上的索引项加锁来实现的,InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁。

算法题

括号匹配,但是我用的栈必须得自己实现。算法写的挺快的,手动实现栈想了一下,解决了。

二面(60 min)

算法题

上来直接写题:三选一。我选了第一道

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。

找到所有出现两次的元素。

你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?

本来想用异或加位运算的,但是我这个算法不熟练。所以现场临时想了个类似于哈希的解法,就是数组中的值num对应的索引应该是num-1, 在操作完最后遍历的时候如果发现 这两个的值没有对应,那么它就是出现两次的元素

总得来说20分钟算是解决了,也写了测试语句通过了用例。

但是面试官好像没太看题,上来自己测试就往数组里加了个0,说我程序报错。给我吓一机灵,我提醒后,又往数组里加了个100,又说我报错哈哈,我没给他吓尿了。最后面试官嘟囔了句,这题限制还挺多,我只能应声附和。舔狗真是卑微…

  1. 写完之后继续项目,这次挖的比较彻底。从我们的市场调研开始说,动机是什么?每天的用户量有多少?数据库有多大?为什么用MySQL当数据库?为啥使用Mybatis Pagehelper? 怎么用Pagehelper? (现在还没有高并发的问题)-> 如果有高并发了怎么办?用什么解决?加什么东西?你觉得为什么可以?

这一套操作下来,面试官看我回答的还比较流利,就出了些分布式的场景题,具体问题有点忘了哈。大概是我上学期分布式数据库学过的算法往上套就行,但是我全还给老师了,只能现场硬说,跟阿杜一样–冷手硬打。有点痛苦

  1. 最后面试官说我们是C++哈,你Java可以转不?

那当然可以,必须可以,相当可以。我现场表忠心,“语言只是形式,关键还是思想,我自学能力很强的!”

面试结束以为自己凉了,结果当天晚上睡前就有TEG的HR姐姐加我微信了。我直接从书桌上起飞

三面(30 min)

  1. 为啥要来腾讯?家是哪的?就是一些常规问题

  2. 然后又把我的项目唠了二十分钟

  3. 面完十分钟后云证加测评

反馈

周二HR面完 周五下午等来了Offer Call !!! 我也太开心了

以上就是我的流程,祝大家心想事成哈!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HYSYS软件中的TEG循环量计算是指通过热力学仿真来确定TEG溶液用于天然气脱水过程中所需的循环量。在TEG循环中,这个循环量通常指的是TEG溶液的流量。 TEG循环是一种常用的天然气脱水方法,通过吸收和分离过程将气体中的水蒸气去除,使天然气达到一定的干燥程度。TEG溶液在吸收过程中会吸附水蒸气并形成含水TEG溶液,然后通过脱附过程将水分从TEG中去除,使TEG得以再循环使用。 在HYSYS软件中,我们可以进行TEG循环量的计算。首先,我们需要设置TEG回收率和干燥度的目标。TEG回收率是指通过脱附过程将TEG中的水分去除的效率,通常设定为一定的百分比,比如95%。干燥度是指干燥后天然气中的水分含量,通常设定为一定的PPM。 然后,我们需要建立一个天然气脱水的热力学模型,并设置相关的参数,比如原始天然气流量和温度、TEG溶液的流量和性质等。通过仿真运行模型,HYSYS可以计算出TEG回收率和干燥度是否达到目标设定,并输出TEG溶液的循环量。 在TEG循环量的计算中,HYSYS会考虑诸如天然气温度、压力和流量等因素,以及TEG溶液的性质和脱附效率等因素。通过计算和优化,我们可以确定一个合适的TEG溶液循环量,使得脱水效果和能耗达到平衡,从而提高工艺的经济性和可持续性。 总之,HYSYS软件通过热力学仿真,通过设置相关参数和运行模型来计算TEG循环量,以满足天然气脱水过程中的脱水效果和能耗要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值