欢聚时代Java工程师社招面试分享

1、手撕代码。牛客题霸上的原题,可以去看看:NC91 最长递增子序列

2、redis cluster集群扩容怎么数据平滑过度,从客户端设计

3、JVM调优思路

4、kafka如何确保消息不丢失

5、mysql如果A数据库数据需要联合查询B数据库,应该如何实现呢?

1)同实例不同库

•直接查询即可

SELECT * FROM A库.`account` a JOIN B.`login_log` b ON a.`account_id`=b.`user_id`;


2)不同实例

•查看mysql是否支持federated引擎(执行show engines;可以看到是否支持)

•如果支持未开启,需在my.cnf中进行开启并重启服务[[mysqld]最后加上federated]

•在本地创建一个与远程的表结构完全一样的表[ENGINE=FEDERATED CONNECTION='mysql://帐号:密码@地址:端口/数据库/';]

•即可进行使用,把本地表当远程表使用即可


6、mysql sql本身没问题的情况下,没走索引原因(反复强调sql没问题,不需要从sql角度考虑)

7、限流设计用java实现,不能用工具类库

8、dubbo的设计和完整调用过程(要详细)

9、ES脑裂问题分析及优化

1)脑裂问题可能的成因

•网络问题:集群间的网络延迟导致一些节点访问不到master,认为master挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片

•节点负载:主节点的角色既为master又为data,访问量较大时可能会导致ES停止响应造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点。

•内存回收:data节点上的ES进程占用的内存较大,引发JVM的大规模内存回收,造成ES进程失去响应。


2)脑裂问题解决方案:

•减少误判:discovery.zen.ping_timeout节点状态的响应时间,默认为3s,可以适当调大,如果master在该响应时间的范围内没有做出响应应答,判断该节点已经挂掉了。调大参数(如6sdiscovery.zen.ping_timeout:6),可适当减少误判。


•选举触发 discovery.zen.minimum_master_nodes:1

该参数是用于控制选举行为发生的最小集群主节点数量。

当备选主节点的个数大于等于该参数的值,且备选主节点中有该参数个节点认为主节点挂了,进行选举。官方建议为(n/2+1n为主节点个数(即有资格成为主节点的节点个数)

增大该参数,当该值为2时,我们可以设置master的数量为3,这样,挂掉一台,其他两台都认为主节点挂掉了,才进行主节点选举。


•角色分离:即master节点与data节点分离,限制角色

#欢聚集团##面经##Java工程师##社招#
全部评论
这是不招人的节奏啊
1 回复
分享
发布于 2021-01-06 17:50
** 这是啥啊 没几个会的
点赞 回复
分享
发布于 2020-11-12 16:17
阅文集团
校招火热招聘中
官网直投
楼主几年的
点赞 回复
分享
发布于 2020-11-13 08:17
** 怎么看起来这么难
点赞 回复
分享
发布于 2020-11-15 01:39

相关推荐

2 42 评论
分享
牛客网
牛客企业服务