腾讯 两次二面给我的经验

本人Java 选手,BG 双非本985硕士无实习,秋招面试腾讯两次,一次提前批一次秋招(秋招无笔试,感觉和提前批区别不大),均挂在了二面。

1. 提前批-TEG云架平(C++)

1.1 一面

因为自己是主要使用Java,所以面试的内容主要是还是以计算机网络和操作系统等基础知识为主(一面的内容主要还是计网,我猜二面肯定会多考操作系统,楼主狠狠的押题住了),中间穿插了一些场景题,无项目问题。

这里楼主印象比较深刻的场景题就是:有n个节点的数据需要同步,请设计一个同步算法,并分析时间复杂度。

楼主一开始以为得用一致性哈希,最后发现直接用已同步的节点与其他未同步节点同步就行,时间复杂度是logN的。

编程题:斐波那契数列。

这里主要考察了这个算法的优化问题,如何平衡时间与空间,楼主很行。

总共面试时长应该不到1h。

1.2 二面:

一面秒过,不到一周的时间就约二面了,看来楼主一面表现还可以。

面试的时间比较久远了,主体的面试内容楼主记不太清了,唯有一道场景题给楼主印象深刻,场景题的描述可能有误哈

场景题:存在客户端与服务端的post,也存在服务节点之间的post,如何保证数据的一致性。

比如A为客户端,B、C为服务端节点,A请求B要求设置value=1,但是由于网络故障这个请求暂时没有收到,此时C请求B设置节点value=2,此时网络恢复导致value=1,如何保证数据的一致性(这里可能是顺序一致性)。

我秒答使用序列号机制保证这种顺序一致性,比较消息的序列号的来判定是否执行value的修改。面试官又问,如何确定这个初始的序列号呢,楼主懵了。面试官暗示我想想TCP的三次握手,楼主太笨了没想出来。最后面试官给了答案,可以在请求之前约定初始的序列号,比如A给B发送消息说setNum1中的序列号都可以,然后B收到消息后从setNum1中选取B也允许的序列号返回作为初始的序列号(楼主是真想不到啊)。

编程题:从n个正整数中取k个数,使得k个数之和小于s,求取值的方案数。

楼主第一眼的思路是排序加滑动窗口,但这样连续取的话肯定是不满足的,然后这题也不让用DFS,楼主懵了。

然后面试说给你简化一下吧,你就求k个数之和等于s就行,用滑动窗口做。(我勒个去,纯纯误人子弟啊)

然后楼主按照面试官的说法写了一份代码提交了。

后来和同学讨论,说用dp来做,合理,不知道为啥面试官不提醒我用DP呢,反而还误导我。

2. 秋招-CDG金融科技(Java)

2.1 一面

来吧我的Java主战场(隔了一周多,把楼主捞起来秋招了),楼主中途郁郁了,也没有面试,早就忘光光啦。

面试内容主要以Java为主,408的内容很少,没啥印象了。

补充:想起来了,面试官狠狠的问了我Java反射,它优缺点啥的,太痛苦了,难怪我想不起来了。

编程题:最长无重复字串

2.2 二面

痛,太痛了!

二面极其Open,就三个题。

场景提1:如何设计购物车

这个题主要考察的对join表的处理,因为作为一个现代化的购物车,你需要显示库存,降价,商铺名称等信息,其中会涉及到一些联表。

题主答的是冷热分离,然后热数据用缓存,分别使用推拉的方式处理冷热缓存数据。

场景题2:mq的设计

我的天。

哥们儿只知道kafka 零拷贝这套,还有其他分布式的一些东西,瞎答了一波。(之前也看过b站的小白debug讲这些设计,但都光光了)

场景题3:转账

A给B转账,A和B位于两个节点上,如保证数据一致性。

盲想就是加锁,但效果肯定差,有点懵。

因为涉及到两个节点,所以是分布式事务,使用mysql的MVCC肯定保障不了。

楼主想到了TCC这种框架,面试官让我写了下伪代码,但楼主太沉迷加锁了。

后来面试官说让余额分为固定余额和流动余额,你只要锁住流动余额就行,这样就不会影响到用于查询的固定余额了。(ps:还是经验不足啊)

无编程题,面试完秒挂。

面试官有点严肃,楼主狠狠的给了差评。

3. 结语

面试腾讯感觉和字节很像,很重视深度,楼主需要再历练一下了,多看看项目。

#互联网##秋招##面经腾讯美团百度#
全部评论
本人最近还有一份百度提前批的面经一二面面经,想看的人多的话楼主抽时间更新一下
3 回复 分享
发布于 08-28 20:36 四川
详细
1 回复 分享
发布于 08-28 19:33 北京
m
1 回复 分享
发布于 08-28 23:54 黑龙江
可爱捏 很有帮助
点赞 回复 分享
发布于 08-28 18:53 安徽
m一下 线性一致性那个题感觉可以参考raft设计, C如果给B发消息,可以看成C收到某个客户端请求然后路由给B,这样这个系统可以看成raft,让CB跑一个raft,这样就可以用term机制保证来自A的旧数据会被无数
点赞 回复 分享
发布于 08-29 23:21 四川
cdg二面应该和我当时暑期实习cdg三面是一个面试官 也是考我mq 考完mq考转账 也是要我写伪代码 可我当时连分布式事务都没学过
点赞 回复 分享
发布于 08-30 10:43 广东
腾讯java后端是真难面,各种拷打
点赞 回复 分享
发布于 09-02 23:38 江苏
大佬,固定余额流动余额这个什么意思?具体怎么实现的啊?
点赞 回复 分享
发布于 09-04 16:39 重庆
场景题确实难顶,我直接裂开
点赞 回复 分享
发布于 09-18 17:57 安徽
大佬java做的是哪个项目,能推荐一下吗
点赞 回复 分享
发布于 09-30 15:30 安徽

相关推荐

写在前面:十分感谢AILab给的实习机会,实习结束后真的收获了很多。—————————————————————————————————————————————————全程无八股,无leetcode。围绕项目谈了细节,广度和深度较大,但没有很刁难的问题(只要对齐思路,就很容易答到点子上)。凭记忆写一些。一面:1.主流的不同动力学库,各有什么优缺点。2.你机器人电机是QDD的,动力学建模时是否考虑了电机减速比?3.反问。二面:1.你这个仿真扰动施加在关节空间。有没有试过在机械臂某一点施加一个方向的力作为一个扰动?(回答:没有,但是这种力旋量是可以转换到关节空间的。)2.写C++伪代码。先实现一个牛顿欧拉的动力学正逆向迭代算法。再调用该算法求解M,C,G三个动力学矩阵。最后利用求解到的矩阵,给定力矩后求机械臂关节空间的加速度。3.谈了一下我github上机器人动力学的代码仓库。问:已有这么多机器人动力学库,为什么还要自己写这个?(答:优点:代码透明,编译迅速,学习知识。缺点:求解速度慢,只能处理开链机械臂,遇到复杂需求还要额外扩展代码)4.反问。HR面:1.沟通入职时间。聊了已有offer情况。聊了学校实验室的情况。三天面三次,上午面,下午就约第二天的面试。第四天OC。效率很高,面试体验很好。总之如果非常熟悉自己的项目(包括代码实现),并且有实物经验就没什么问题。
点赞 评论 收藏
分享
30 189 评论
分享
牛客网
牛客企业服务