2 Star 67 Fork 27

蜗牛201 / interview-reference

Create your Gitee Account
Explore and code with more than 8 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
3.腾讯-Java高级.md 7.76 KB
Copy Edit Web IDE Raw Blame History
1afdad authored 2022-04-03 08:43 . update readme.md

其他互联网大厂面试题

1:阿里巴巴Java面试题

2:阿里云Java面试题-实习生岗

3:腾讯Java面试题-高级

4:字节跳动Java面试题

5:字节跳动Java面试题-大数据方向

6:百度Java面试题

7:蚂蚁金服Java面试题-中级

8:蚂蚁金服Java面试题-高级

9:京东Java面试题-中级

10:拼多多Java面试题-电商部

11:商汤科技Java面试题

12:中软国际Java面试题-初级

13:唯品会Java面试题

14:携程Java面试题-高级

15:软通动力Java面试题


下载链接全部大厂面试题及答案PDF

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

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

使⽤lua脚本: https://segmentfault.com/a/1190000009811453

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

理解这篇: https://juejin.im/post/5a27c6946fb9a04509096248

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

B-tree:

B-tree 利⽤了磁盘块的特性进⾏构建的树。每个磁盘块⼀个节点,每个节点包含了很关键字。把树的节点关键字增多后树的 层级⽐原来的⼆叉树少了,减少数据查找的次数和复杂度。

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

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

B+tree:

B+tree 是 B-tree 的变种, B+tree 数据只存储在叶⼦节点中。这样在B树的基础上每个节点存储的关键字数更多,树的层级 更少所以查询数据更快,所有指关键字指针都存在叶⼦节点,所以每次查找的次数都相同所以查询速度更稳定;

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

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

6. 说说⼏种常⻅的消息中间件的区别?

特性 ActiveMQ RabbitMQ RocketMQ kafka
开发语言 Java erlang Java scala
单击吞吐量 万级 万级 10万级 10万级
时效性 ms级 us级 ms级 ms级以内
可⽤性 ⾼(主从架构) ⾼(主从架构) ⾮常⾼(分布式架构) ⾮常⾼(分布式架构)
功能特性 成熟的产品,在很多公司 得到应⽤;有较多的⽂ 档;各种协议⽀持较好 基于erlang开发,所以并发能⼒很强,性能极其好,延时很低;管理界⾯较 丰富 MQ功能⽐较完备,扩展 性佳 只⽀持主要的MQ功能, 像⼀些消息查询,消息回 溯等功能没有提供,毕竟 是为⼤数据准备的,在⼤ 数据领域应⽤⼴。
  1. 中⼩型公司⾸选RabbitMQ:管理界⾯简单,⾼并发。

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

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

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

1、保证消息不丢失(三步) 1.1、开启事务(不推荐) 1.2、开启confirm(推荐) 1.3、开启RabbitMQ持久化(交换机、队列、消息) 1.4、关闭RabbitMQ自动ack(改成手动)

2、保证消息不重复消费 2.1、幂等性(每个消息用一个唯一标识来区分,消费前先判断标识有没有被消费过,若已消费过,则直接ACK)

3、RabbitMQ如何保证消息的顺序性 将消息放入同一个交换机,交给同一个队列,这个队列只有一个消费者,消费者只允许同时开启一个线程

4、RabbitMQ消息重试机制 消费者在消费消息的时候,如果消费者业务逻辑出现程序异常,这时候应该如何处理? 答案:使用消息重试机制(SpringBoot默认3次消息重试机制)

如何合适选择重试机制 消费者取到消息后,调用第三方接口,接口无法访问,需要使用重试机制 消费者取到消息后,抛出数据转换异常,不需要重试机制,需要发布者进行解决。

5、SpringBoot消息重试机制 @EnableRetry注解:表示启用重试机制(value表示哪些异常需要触发重试,maxAttempts设置最大重试次数,delay表示重试的延迟时间,multiplier表示上一次延时时间是这一次的倍数) eg、@Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 2000, multiplier = 1.5))

@Recover注解:当重试次数达到设置的最大次数的时候,程序还是执行异常,调用的回调函数。

8. springcloud服务发现原理?

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

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

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

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

springcloud由以下⼏个核⼼组件构成:

Eureka:各个服务启动时, Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉 取注册表,从⽽知道其他服务在哪⾥

Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从⼀个服务的多台机器中选择⼀台

Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求

Hystrix:发起请求是通过Hystrix的线程池来⾛的,不同的服务⾛不同的线程池,实现了不同服务调⽤的隔离,避免了服务雪崩 的问题

Zuul:如果前端、移动端要调⽤后端系统,统⼀从Zuul⽹关进⼊,由Zuul⽹关转发请求给对应的服务 注册中⼼还可以⽤zookeeper。

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

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

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

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

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

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

16. 后置处理器的作⽤?

17. spring bean作⽤域,什么时候使⽤request作⽤域。

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

下载链接博主已将以上这些大厂面试题整理成了一个面试手册,是PDF版的

1
https://gitee.com/woniu201/interview-reference.git
git@gitee.com:woniu201/interview-reference.git
woniu201
interview-reference
interview-reference
master

Search