腾讯wxg实习二面凉 12.21
时长 1h 30min (30min笔试题目+ 1h电话面试)
-
三道算法题目 (都比较简单 Topk、判断t字符串是否是s字符串的子序列字串、二叉树A、B,判断B是否是A的子结构)
-
自我介绍
-
项目中的WebSocket
-
介绍Redis的数据结构
-
Redis 的Hash类型扩容过程
-
Redis中字符串类型是怎么实现
-
设计类似C中的free命令,提问没有指明对象对应内存长度怎么去释放相应的大小 (不太明白C具体实现,说了Java中会把对象引用中的Markword中存放了实例长度,标记为未使用,但具体Java做法其实是断开引用就可以了)
-
跳表有了解吗(展开讲了一下源码的实现
-
优化一个跳表插入过程,如果现在有一部分数据插入是是局部有序的 比如 1、10000、2、3、4、6、8、9....类似,怎么去优化源码的插入过程。(答得不太好)
-
MySQL的主从复制(binlog dump、从服务器读取线程,从服务器SQL线程)
-
设想情景如果某个binlog已经使用了2年可能非常大,当新的从服务器开始连接的时候,需要读取这个binlog传输时间会很长,想要怎么做?
没有接触过,去类比了Redis中的AOF重写概念,根据数据库的当前信息进行重新生成binlog,会丢失之前的修改——解释是可能1年前的操作也默认不会去恢复了。(好蠢..
面试官提示为什么不直接转移数据库内容呢,(这里答偏了,我一直以为是去优化binlog大小。
- JWT的结构,三个部分的组成,使用过程密钥存储地点?
Header 和 Payload都使用了base64进行加密, 密钥是存放在服务器端的。
他问了我既然前面两部份base64加密是对称性加密为什么还需要密钥??? 我回答说加盐后进行匹配不是需要密钥吗,太菜了不太清楚面试官想要表达的意思。
- 追问我讲述的JWT如果被攻击者服务器获取应该怎么去保证认证安全问题
我说可能会通过一些其他层(如SSL)去保证信息在网络传输过程中的安全问题以及设计失效时长等(这个地方我不知道怎么回答,JWT本身设计是可以防止这个的吗...)
- 设计一个IP黑名单信息,去进行IP拦截(也可能会是按网段拦截)
计网IP这一块太差了,子网掩码过滤IP不熟悉,导致理解题目不清楚。
我提出解决思路说可以对所有的黑名单IP分xxx.xxx.xxx.xxx四个部分进行前缀树构建,当ip进入时依次按段进行匹配,这样黑名单内IP会匹配到,非黑名单IP会提前退出。(被面试官怼说按这个是有点脱离实际的),太菜了
对比其他面试,个人认为腾讯确实面试好难。自己实力欠缺情况下心态问题也比较大,后面不断地重复自己的设计,面试官也不明确提出错误时候真的有点怀疑自己(直接提出说没有听懂,感觉不对)。问了很多实际问题,面试官对我偏八股的回答会追问实现具体细节,并加上实际的应用场景提出进行优化。个人实力太菜,面试官从实际开发角度出发询问,跟不太上他想要答案的思维逻辑,只能去牵扯相关的内容,导致回答逻辑性不紧密。
总结:基础不稳固,也需要多看看面经,积累一些实际的优化手段,在实现技术的时候多想想是否能够进一步优化,加强自己的架构描述能力(安慰自己还年轻
#腾讯##面试题目#