首页 > 腾讯C++后台开发一面(40min+60min)
头像
失去梦想的荷包蛋
编辑于 2021-03-13 07:00
+ 关注

腾讯C++后台开发一面(40min+60min)

首先,这位面试我的腾讯面试官真的十分棒!!

一开始先做了三道题:(40分钟) 找出数组中重复的数字、返回二叉查找树的第k大的节点、合并k个链表

由于我之前一直在用Java语言,所以我在做题的时候也是用的Java,我把我的情况跟面试官讲了,面试官说他们不在意用的是什么语言,他们更看重的是被面试者的基础知识。

先进入这三道题:

第一道题:数组中重复的数字 我使用了hashMap,于是面试官就hashMap进行提问:
hashMap的底层用了什么数据结构?
桶上的链表什么时候转为红黑树?
为什么桶上的链表与红黑树在特定情形下为什么要转换?
为什么不完全采用红黑树?
链表有什么优缺点,红黑树有什么优缺点?
面试官引导,我们一般从查询、插入、删除比较数据结构的优劣(读写比较)以及资源(空间存储),然后要我重新总结 这里我说了链表的插入是O(n),红黑树的插入是O(logn), 其实这里他想引导我说出在hashMap里面如果是头插法,那么链表的插入为O(1)的(包括尾插法)
红黑树消耗的空间为什么比链表大?

我简历上写了我有学过并发编程相关的原理于是问我,
基于并发场景问我关于hashMap的优化
hashMap在并发过程中应该注意什么?
hashMap的锁加在哪个位置?
hashMap的加锁到底起到什么样的作用?
控制了什么部分的结构?
hashMap在并发下的不稳定性是怎么产生的?
总结,(hashMap的锁)

第二道题:返回二叉查找树的第k大的节点
我使用dfs遍历来完成(然后问我这是二叉树的什么遍历,我明明会的hh,然后给回答错了,面试官说让我回去好好看看)
红黑树与平衡二叉树有什么区别?
红黑树与平衡二叉树的应用场景?
我答不太懂,于是面试官引导我百度的搜索可能会用什么树,我答了字典树 于是面试官问,有没有想过二叉搜索树也是字典树?

开始问数据库:
MySQL用的什么索引?
为什么用B+树?
B+树怎么省IO?

最后一道题:合并k个链表
我用的是合并两个链表,然后使用分治合并k个链表 面试官认为我这个算法不太好,有更好的优化方式,接着提出了hashMap,让联想一下hashMap来讲解题思路 一次性并行的比较k个链表进行合成是更快的,

开始问项目:
(没问项目的东西,反而问了我怎么实现登录注册的功能)
继续问:密码是明文传输的吗?
因为我比较熟悉计网相关的东西(于是在说这个设计的时候,故意多说了一些HTTPS,引导面试官问我计网)
在设计中添加缓存的意义?
为什么访问MySQL很慢?(MySQL什么时候加表锁、什么时候加行锁,这些锁对性能的影响有多少,面试官让我深入研究)

并发编程:
从概念上说,进程是什么,线程是什么?
线程池的作用?(我讲了资源上的,面试官说还有一个保护的作用,其实可能是想问拒绝策略?这块我还得继续深入学习)

计算机网络:
HTTPS与HTTP的区别?(讲了加密过程,这块没讲好)
TCP与UDP的区别?
引入场景题: QQ用的什么协议发送消息的?(我答的是UDP)
UDP真的是不可靠的协议吗?
三次握手过程?

总结:
掌握的知识点挺多的,但是没有推荐知识点的细节,没有思考这些东西为什么是这样子设计的,面试官建议我了解计算机的本质,例如操作系统,计组这些,不要停留在各种常见知识的表面,要学习计算机下面那些不变的东西。 肯定了我了解原理的可以的,但也要去了解为什么要这么设计,这些东西解决了什么问题,比如线程池,除了可以减少系统资源消耗之外,还起到了保护作用,接着就这里还可以继续向上讨论削峰等的知识,还有多思考如果自己来实现某些结构要怎么实现,自己思考,自己推敲。

​最后许愿二面!

更多模拟面试

全部评论

(6) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐