3.16腾讯光子后台开发一面(暑期实习)
虽然是C++后台开发岗,因为主要学习语言是Java,所以还是围绕着Java问的,16号面完,第二天就收到二面通知了(二面凉了)。
下面一些问题的回答,只是个人见解,不一定是对的,仅供参考,欢迎大家指正。
简单的自我介绍
问了一些基础情况,有没有用过cpp或c
Java里的垃圾回收机制
这几种标记法区别在哪里
HashMap底层结构
什么时候会转红黑树
HashMap如何扩容
要说到两个关键的点:负载因子和rehash
为什么链表和红黑树之间转换有个6和8之间的缓冲区
HashMap是非线程安全,想变成线程安全的怎么办
如果读多写少的场景,又应该怎么设计
两个思路:copy on write 读写分离和 readwriteLock读写锁https://blog.csdn.net/u013452337/article/details/90238052
假设我们写个服务器,估计要支持几万人同时在线,这时候应该怎么来做?
负载均衡+IO多路复用+多台云服务器(不敢说太详细)
- IO多路复用技术了解过吗
Websocket 底层是通过一些什么样的机制来做实现的
因为项目用到了,问到了,几乎面一次问一次
TCP和UDP 的之间的对比
TCP为什么比UDP慢
UDP接收到包不是按顺序的,怎么办
发送端+包标号 接收端+允许短暂时延
redis和mysql的区别
如果是一个群消息,你要怎么处理?因为每个人读取的数据的进度是不一样的(如何用redis实现多人消息队列)
redis持久化
假设我们有这么一个场景,比如说唯一游戏里面我们会有几千万甚至上亿的玩家上一个角色的数据,我们会有一张角色表。表里面角色数量太多情况下对于严重的影响数据的查找以及修改,如果让你来设计,你怎么对这个角色表做一个设计,尽可能的去做,不会因为角色数量的增加而影响了我们一个读写的效率。
拆表的依据是什么
如果不拆表的情况下,我们需要提到一个查询效率化,需要做什么?
为什么采用b+树这么一个结构
IO次数更少:由于B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
遍历更加方便:B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。
你自己挑一个项目,讲一下你这个项目的设计思想以及那些中间和做这个项目中就没自己的一些考虑。
在这项目里面碰到的最棘手或者最难的一个问题是什么
项目部署在服务器上,当发现其实出现一些CPU占用过高的情况下,如何去定位这个问题。
https://blog.csdn.net/weixin_39726863/article/details/109623777
消息队列了解吗
写代码:给一数字串,给出可能的ip地址,用"."隔开(比如123123123123,可能的域名是123.123.123.123)