首页 > 腾讯java高级社招面经分享
头像
嗨呀还是肚子痛
发布于 2021-08-08 00:09
+ 关注

腾讯java高级社招面经分享

1.从简历项⽬中选⼀个项⽬,说说你在其中遇到了什么重⼤挑战?以及你的解决问题的思路?

2.⼀段代码要执⾏多个redis命令,不加锁的情况下如何保证原⼦性?

3.谈谈数据结构,⽐如⼆叉树、红⿊树?

4.说说B-tree、B+tree的区别和使⽤场景?

1. B-tree:

B-tree利⽤了磁盘块的特性进⾏构建的树。每个磁盘块⼀个节点,每个节点包含了很关键字。把树的节点关键字增多后树的

层级⽐原来的⼆叉树少了,减少数据查找的次数和复杂度。

B-tree巧妙利⽤了磁盘预读原理,将⼀个节点的⼤⼩设为等于⼀个⻚(每⻚为4K),这样每个节点只需要⼀次I/O就可以完

全载⼊。

B-tree的数据可以存在任何节点中。

2. B+tree:

B+tree是 B-tree的变种,B+tree数据只存储在叶⼦节点中。这样在B树的基础上每个节点存储的关键字数更多,树的层级

更少所以查询数据更快,所有指关键字指针都存在叶⼦节点,所以每次查找的次数都相同所以查询速度更稳定;

5. mysql哪个版本哪个存储引擎的索引使⽤的B+tree,为什么不使⽤红⿊树?

需要先理解B+tree、红⿊树的实现原理。B+tree带有顺序访问指针,是红⿊树不具备的。

6.说说⼏种常⻅的消息中间件的区别?1.中⼩型公司⾸选RabbitMQ:管理界⾯简单,⾼并发。

2.⼤型公司可以选择RocketMQ:更⾼并发,可对rocketmq进⾏定制化开发。

3.⽇志采集功能,⾸选kafka,专为⼤数据准备。

7. rabbitmq如何保证消息的可靠性?

详⻅“⾯试题库/rabbitmq”

8. springcloud服务发现原理?

a.每30s发送⼼跳检测重新进⾏租约,如果客户端不能多次更新租约,它将在90s内从服务器注册中⼼移除。

a.注册信息和更新会被复制到其他Eureka节点,来⾃任何区域的客户端可以查找到注册中⼼信息,每30s发⽣⼀次复制来定位他

们的服务,并进⾏远程调⽤。

b.客户端还可以缓存⼀些服务实例信息,所以即使Eureka全挂掉,客户端也是可以定位到服务地址的。

9.介绍下springcloud各个组件?springcloud的注册中⼼除了eureka还可以⽤什么?

springcloud的⼯作原理

10.微服务有⼏种限流⽅式?

spring cloud gateway:11.限流的情况下,服务隔离还有没有必要?

12. dubbo有⼏种负载均衡?负载均衡是在服务端还是客户端?

Dubbo负载均衡在客户端,dubbo内置了4种负载均衡策略:

a. RandomLoadBalance:随机负载均衡。随机的选择⼀个。是Dubbo的默认负载均衡策略。

b. RoundRobinLoadBalance:轮询负载均衡。轮询选择⼀个。

c. LeastActiveLoadBalance:最少活跃调⽤数,相同活跃数的随机。活跃数指调⽤前后计数差。使慢的 Provider收到更少请求,

因为越慢的 Provider的调⽤前后计数差会越⼤。

d. ConsistentHashLoadBalance:⼀致性哈希负载均衡。相同参数的请求总是落在同⼀台机器上。

13.如何实现redis分布式锁?需要注意什么问题?

14.说说你看过的源码?其中⽤到了什么设计模式或者设计亮点?

具体分析,⾯试前需要熟读⼀些源码,如spring源码。

15.如何实现aop?项⽬中哪些地⽅⽤到了aop?

16.后置处理器的作⽤?

Spring中bean后置处理器BeanPostProcessor:17. spring bean作⽤域,什么时候使⽤request作⽤域。详读:

18.说说下⾯这道题的结果?

1 package com.giveu.web;

2

3 public class VolatileTest {

4 public static volatile int race = 0;

5

6 public static void increase() {

7 race++;

8 }

9

10 private static final int THREADS_COUNT = 10;

11

12 public static void main(String[] args) {

13 Thread[] threads = new Thread[THREADS_COUNT];

14 for (int i = 0; i < THREADS_COUNT; i++) {

15 threads[i] = new Thread(new Runnable() {

16 @Override

17 public void run() {

18 for (int i = 0; i < 10000; i++) {

19 increase();

20 }

21 }

22 });

23 threads[i].start();

24 }

25 while (Thread.activeCount() > 1) {

26 Thread.yield();

27 }

28 System.out.println(race);

29 }

30

 


更多模拟面试

全部评论

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

推荐话题

相关热帖

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

近期精华帖

热门推荐