20秋招 后台开发 腾讯WXG一二三四面 意向书+1

一面 2020年9月3号
自我介绍
介绍实习的主要工作

即时聊天项目支持横向扩容吗?
群聊功能是如何实现的?
如果后台有多个服务器组成的集群,客户端A连接到一台服务器上,客户端B连接到另一台服务器上,A如何将消息转发给B的呢?
我:可以再多个服务器上共享客户端的连接信息,使用类似zookeeper的注册中心来为进行信息共享
面试官:你的做法是有问题的,可以使用NameServer保存连接与服务器之间的映射关系,服务器通过查询NameServer可以得知客户端B所连接的服务器

如何保证缓存和数据库的一致性?
我:先更新数据库,再删除缓存
面试官:如果在并发较大的情况下:A线程进行读操作,缓存中没有相应的数据,A从数据库中读到数据后阻塞;B线程执行写操作,更新数据库,淘汰缓存;B线程写操作完成后,A线程才将数据库的旧数据读入缓存。这样缓存中保存的就是旧数据,这种情况应该怎么处理?
我:不知道(面试结束后去查了下,可以用“延迟双删”策略,在A线程读操作完成后再淘汰一次缓存,参考这篇文章https://developer.aliyun.com/article/712285

MySQL数据库的隔离级别?
可重复读隔离级别下使用InnoDB存储引擎是否会出现幻读?为什么?

编程题:
1.写一个生产者消费者的demo,生产者产生一个随机整数,消费者取出该数判断它是否为2的n次幂。(面试官说可以使用自带的BlockingQueue)

2. 给定一个二叉树,请从根结点开始,按照前序遍历的顺序打印所有的节点,每次打印完一个子树后再打印一次它的父节点。比如:
2
/ \
3   4
/   \    \
5   6    7
打印的结果是 2 3 5 3 6 3 2 4 7 4 2

3. 假设这是一颗二叉搜索树(左边的子树的数字都比根结点小,右边的子树的数据都比根节点大),能否根据遍历后的打印结果,将这棵树建起来。比如打印的结果是:3 1 2 1 3 6 5 6 7 6 3 那么这棵树就应该是:
3
/  \
1     6
\   /  \
2 5    7

面试官真的真的非常nice,答不上来的问题会很耐心地给你讲一遍,然后再和你说应该去补习哪方面的知识点,整个面试过程非常愉快。

===============================  分割线  ==================================

二面 面委会 2020年9月11号
自我介绍
聊实习项目

有一个选课系统,有老师、课程、学生三个实体,设计ER图
MySQL事务的默认隔离级别
有联合索引(a, b),只用条件A能否走索引?只能条件B呢?如果是A and B呢?
联合索引的B+树结构是什么样的?

有哪些时间复杂度为O(nlogn)的排序算法?
快速排序稳定吗?
什么叫做稳定的排序?
堆排序中如果取走堆顶节点,如何调整?

只使用O(1)额外空间,整数无序双向链表能不能转为排序二叉树(BST)?
能转为什么能转,不能转为什么不能转?能转怎么转?
单向链表能转为排序二叉树吗?
(头疼,我说的单链表也能转,而实际上不能,单链表只有一个指针域,而二叉树有两个,这样消耗的额外空间就不只O(1)了)

Linux中Usleep函数的参数定义上支持微秒时间的传入,实际上能不能做到微秒级的定时精度?
(这个问题讨论了好久,问的我自闭了,聊到了Linux内核的进程调度,面试官一直在说我说的只是概念,反复问我到底是怎么实现的,我真的一脸懵逼)

最后还有一个智力题:有容量为10斤、7斤、3斤的桶,10斤的桶中有10斤油,用这3个容器将油均分为5斤

===============================  分割线  ==================================

三面 面委会 2020年9月17号
1.自我介绍

2.编写代码,实现下面格式打印功能
输入(简单起见,字符串总长度为16的倍数):
This utility is a filter which displays the specified files,&nbs***bsp;the standard input, if no files are specified, in a user specifi
输出:
00000000  54 68 69 73 20 75 74 69  6c 69 74 79 20 69 73 20  This utility is
00000010  61 20 66 69 6c 74 65 72  20 77 68 69 63 68 20 64  a filter which d
00000020  69 73 70 6c 61 79 73 20  74 68 65 20 73 70 65 63  isplays the spec
00000030  69 66 69 65 64 20 66 69  6c 65 73 2c 20 6f 72 20  ified files, or
00000040  74 68 65 20 73 74 61 6e  64 61 72 64 20 69 6e 70  the standard inp
00000050  75 74 2c 20 69 66 20 6e  6f 20 66 69 6c 65 73 20  ut, if no files
00000060  61 72 65 20 73 70 65 63  69 66 69 65 64 2c 20 69  are specified, i
00000070  6e 20 61 20 75 73 65 72  20 73 70 65 63 69 66 69  n a user specifi

3.后台开发场景中经常会使用到“定时器(Timer)”服务:比如启动Timer定期输出日志,或网络断连后启动Timer定期尝试重连;现在需要自行设计一个Timer,需求/约束如下:
1)对外表现得颗粒度为秒级;
2)能处理海量定时任务;
3)单机、单线程实现;
请回答Timer的实现思路。
时间轮 + 小顶堆

4.聊实习项目的技术难点

===============================  分割线  ==================================

四面 HR面 2020年9月18号
简单聊了下个人情况,部门base北京,做微信视频号
加了HR小姐姐微信,大约9月底发意向书

#面经##校招##腾讯##Java工程师#
全部评论
同一个二面面委会面试官😬
点赞 回复 分享
发布于 2020-09-19 15:55
视频号劝退,唉
点赞 回复 分享
发布于 2021-01-24 11:45
想问一下 只使用O(1)额外空间,整数无序双向链表能不能转为排序二叉树(BST)? 能转为什么能转,不能转为什么不能转?能转怎么转? 这个应该不能转吧?我想到用递归,但用递归明显用栈空间了
点赞 回复 分享
发布于 2020-11-25 21:33
可以用“延迟双删”策略,在A线程读操作完成后再淘汰一次缓存,这句话里A线程应该改为B线程吧,因为前面的例子和链接文章里的例子是反过来的。
点赞 回复 分享
发布于 2020-11-12 18:02
大佬太强了,一半我都不会
点赞 回复 分享
发布于 2020-11-03 14:57
不是9.15流程就截止了吗,怎么还有面试的
点赞 回复 分享
发布于 2020-09-20 19:10
咱们两轮面委会都是同样的面试官,问的问题也都差不多。。。😂
点赞 回复 分享
发布于 2020-09-20 14:57

相关推荐

牛客创作赏金赛
点赞 评论 收藏
分享
05-28 23:32
门头沟学院 Java
最近真的特别特别忙,既要做组里的需求又有导师的任务,还要写一下论文啥的。突然更新是因为 wxg oc 了,就是这个红围脖太难戴了。每次照片都被打回来。wxg 的每一面结束的时候,都感觉非常魔幻,每次都觉得,卧槽我怎么就过了一面、二面、三面、面委、hr 面。其实对很多人,wxg 可能就是一个 title 大,赚钱的地方,但是其实 wxg 是我梦开始的地方,我最开始转码的时候,创建的第一个文件夹就叫 wxg,不管是为了圆自己当时的一个梦还是说为了钱 or title,我都决定要去试一试。这一年真的刷的一下就过去了,我也从当时美团一下子走到了微信,如果有想冲一冲 wxg 的牛友,我感觉作为面了微信四个团队的人,还是能给一点建议的(x):1. 不要局限于 hot100,wxg 很少考 hot100。2. 算法可以重点看看贪心、dp、模拟,wxg 不会考特别难的题,也很少考板子题(比如回溯、数位 dp 这些),感觉他们更希望你的算法是做出来的,而不是背出来的。3. 可以多看看系统设计题,我面委和二面都考了相关的题目,还考了一道ood。4. 可以多看看计网和 os,考的真的很多5. 建议多刷几段实习再去面(其实 wxg不要求实习经历,但是如果没有实习,就会嗯问很多八股,八股真的不好背==)6. 实习的时候要多思考,实习并不是做完需求就好了的,要多思考系统的设计,其他正职写代码的思路,博主第一次面微信的面评,就是实习缺乏自己的思考,这个在之前的文章里也说了哈哈哈哈,就不多提了。7. 至于语言,我只能说能 c++尽量 c++,因为有的部门(wxg 部分部门,但是大部分不是)确实是不想要其他语言的,转语言的培养时间肯定更久一点,但是 all in c++,建议 985 及以上 hhh。想说的很多,但是真开始写又不知道从何说起,可能很多牛友都不会遇到我这种抉择,视频号还是字节广告,最近博主也很纠结,但是最后还是遵从本心了,只希望字节秋招的时候别把我拉黑了哈哈哈哈哈。现在总说实习生的水平是当年的正职,但是我在实习这几段下来,发现正职和自己,水平还是有本质的差别的。现在字节的 mt 是当年写抖+的 7 年老兵,他的很多思维、代码的水平、业务的理解真的是让博主自惭形秽,深刻的认识到了天外有天,人外有人。mt 精力非常好,即使三十多了还在参加很多技术比赛,也拿了非常多的奖。同时也希望大伙都有个好去处,如果说有什么能给的建议,那就是好好打基础,多面试,不要闭门造车。牛客上也有很多卖课的,但是我浅看下来其实水平质量都一般般,当然我水平也一般般,所以也就打算写写关于自己的一些故事。牛客里总调侃黑马,但是黑马的质量真的非常非常高,非常适合刚开始学习的新人。然后可以看看小林,小林的计网和操作系统写的都非常好。然后不要总局限于现成的八股,还是希望大家从源码开始看,去理解写代码的人当时的用意,自己去沉淀出自己的八股。其他的网站博主都认为一般般,就不好推荐了哈哈哈哈。如果还有推荐的话,b 站有个博主叫学 Java 的生生,博主很多源码手撕都是跟着他学的,个人认为教的非常不错。最后最后,祝大家前程似锦,都有理想的去处~
牛客创作赏金赛
点赞 评论 收藏
分享
评论
6
58
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务