平安产险-核⼼系统部java工程师面经(社招)

平安产险-核⼼系统部

1、简历:

1. 介绍简历上主要项⽬,画框架图,说流程。2. 针对简历上的技能进⾏提问。

2、队列:

3. 说说rabbitmq的结构。

a.消息处理过程:

b.四种交换机:

i.直连交换机,Direct exchange:带路由功能的交换机,根据routing_key(消息发送的时候需要指定)直接绑定到队列,

⼀个交换机也可以通过过个routing_key绑定多个队列。

ii.扇形交换机,Fanout exchange:⼴播消息。

iii.主题交换机,Topic exchange:发送到主题交换机上的消息需要携带指定规则的routing_key,主题交换机会根据这个规

则将数据发送到对应的(多个)队列上。

iv.⾸部交换机,Headers exchange:⾸部交换机是忽略routing_key的⼀种路由⽅式。路由器和交换机路由的规则是通过

Headers信息来交换的,这个有点像HTTP的Headers。将⼀个交换机声明成⾸部交换机,绑定⼀个队列的时候,定义⼀

个Hash的数据结构,消息发送的时候,会携带⼀组hash数据结构的信息,当Hash的内容匹配上的时候,消息就会被写⼊队

列。

4. rabbitmq队列与消费者的关系?

a.⼀个队列可以绑定多个消费者;

b.消息分发:若该队列⾄少有⼀个消费者订阅,消息将以循环(round-robin)的⽅式发送给消费者。每条消息只会分发给⼀个

订阅的消费者(前提是消费者能够正常处理消息并进⾏确认)。

5. rabbitmq交换器种类。

1. fanout交换器:它会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中;

2. direct交换器:direct类型的交换器路由规则很简单,它会把消息路由到哪些BindingKey和RoutingKey完全匹配的队列中;

3. topic交换器:匹配规则⽐direct更灵活。

4. headers交换器:根据发送消息内容的headers属性进⾏匹配(由于性能很差,不实⽤)。

6. 项⽬中哪⾥⽤到了kafka,kafka特性?

a.场景:

i.⼤数据部⻔流数据处理;

ii. elk;

b.特性:

它被设计为⼀个分布式系统,易于向外扩展;

它同时为发布和订阅提供⾼吞吐量;

它⽀持多订阅者,当失败时能⾃动平衡消费者;

它将消息持久化到磁盘,因此可⽤于批量消费,例如ETL,以及实时应⽤程序。

7. rabbitmq、RocketMq、kafka对⽐。1.中⼩型公司⾸选RabbitMQ:管理界⾯简单,⾼并发。

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

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

3、SpringCloud:

8. 介绍springcloud核⼼组件及其作⽤,以及springcloud⼯作流程。

M.

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

Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka Client还可以反过来从Eureka Server拉

取注册表,从⽽知道其他服务在哪⾥

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

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

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

的问题

Zuul:如果前端、移动端要调⽤后端系统,统⼀从Zuul⽹关进⼊,由Zuul⽹关转发请求给对应的服务

9. 介绍springcloud⼼跳机制,以及消费端如何发现服务端(Ribbon)?

特性

10. eureka的缺点。

a.某个服务不可⽤时,各个Eureka Client不能及时的知道,需要1~3个⼼跳周期才能感知,但是,由于基于Netflix的服务调⽤端

都会使⽤Hystrix来容错和降级,当服务调⽤不可⽤时Hystrix也能及时感知到,通过熔断机制来降级服务调⽤,因此弥补了基于

客户端服务发现的时效性的缺点。

11. eureka缓存机制?

a.第⼀层缓存:readOnlyCacheMap,本质上是ConcurrentHashMap:这是⼀个JVM的CurrentHashMap只读缓存,这个主要是

为了供客户端获取注册信息时使⽤,其缓存更新,依赖于定时器的更新,通过和readWriteCacheMap的值做对⽐,如果数据不

⼀致,则以readWriteCacheMap的数据为准。readOnlyCacheMap缓存更新的定时器时间间隔,默认为30秒

b.第⼆层缓存:readWriteCacheMap,本质上是Guava缓存:此处存放的是最终的缓存,当服务下线,过期,注册,状态变

更,都会来清除这个缓存⾥⾯的数据。然后通过CacheLoader进⾏缓存加载,在进⾏readWriteCacheMap.get(key)的时候,⾸

先看这个缓存⾥⾯有没有该数据,如果没有则通过CacheLoader的load⽅法去加载,加载成功之后将数据放⼊缓存,同时返回数

据。readWriteCacheMap缓存过期时间,默认为 180秒。

c.缓存机制:设置了⼀个每30秒执⾏⼀次的定时任务,定时去服务端获取注册信息。获取之后,存⼊本地内存。

12. rpc和http的区别,使⽤场景?

13. 分布式事务如何保持⼀致性?

14. 什么情况下⽤到分布式开发?

15. jvm内存模型,各个部分的特点?1. PC寄存器:

a.每个线程拥有⼀个pc寄存器;

b.指向下⼀条指令的地址。

2.⽅法区:

a.保存装载的类的元信息:类型的常量池,字段、⽅法信息,⽅法字节码;

jdk6时,String等常量信息置于⽅法区,jdk7移到了堆中;

b.通常和永久区(Perm)关联在⼀起;

3.堆:

a.应⽤系统对象都保存在java堆中;

b.所有线程共享java堆;

c.对分代GC来说,堆也是分代的;

4.栈:

a.线程私有;

b.栈由⼀系列帧组成(因此java栈也叫做帧栈);

c.帧保存⼀个⽅法的局部变量(局部变量表)、操作数栈、常量池指针;

d.每⼀次⽅法调⽤创建⼀个帧,并压栈。

16. 类加载器,双亲委派模型?


#平安产险总部##面经##社招##java工程师#
全部评论
几年啊
点赞 回复 分享
发布于 2021-08-11 12:01
楼主
点赞 回复 分享
发布于 2021-08-11 12:01
你问的好难啊,害,我想问问有几面呀
点赞 回复 分享
发布于 2021-10-28 16:32

相关推荐

10-12 15:42
门头沟学院 Java
全程拷打项目权限管理怎么实现的?面试官先说了权限管理分为前端显示不同的页面,和后端对接口进行鉴权,你是怎么实现的?说细节(,知道你懂技术了)怎么用redis实现限流的redis实现分布式锁的原理你用到了canal,具体用过哪个版本?(这个我7月份做的项目,真忘了)答:这个记不清了,就是从网上找了个稳定的版本,不可能什么版本都记这么清楚吧。面试官说,我1.1.4到1.1.6的版本都用过,使用不同的版本,是需要解决一些冲突的。一脸不屑的又问,canal是怎么配合rabbitmq实现,缓存同步的?答:canal监听mysql数据库,然后配置canal的配置文件,将rabbitmq的配置信息配置上去,然后,spring通过监听对应的消息队列,实现对消息队列中消息的消费,解析消息中的数据操作语句,完成对缓存的更新。怎么对rabbitmq的消息进行消费的答:通过在方法上加一个注解(具体哪个注解忘了)更新缓存中的数据时,出现数据冲突怎么办?这个问题他解释了大半天,我也没听懂意思,不知道为什么会出现数据冲突。他的大概意思就是,如果数据库中的数据,在缓存中没有怎么办,我说可以缓存预热。他说服务器是不能停的,你用canal不就是为了与服务解耦吗?我不明白什么意思。最后来了句,这个功能你根本没实现。然后又问,Rabbitmq用的是哪种类型的交换机?答:直连交换机。最后,让面试官对我做个评价,答还行,还有更差的。说也不是很差,还行,找补了一下。说你们做的项目同质化太严重,有些问题的解决方法,可以有更好的。缺实践。承认自己很菜,项目都比较简单。
牛客968796455号:宝宝应聘的什么岗位,我今天也面试了,十分钟,没怎么问专业问题,我是应用软件开发
点赞 评论 收藏
分享
3 13 评论
分享
牛客网
牛客企业服务