首页 > 深圳乐信 java高级工程师社招面经
头像
逢欢北顾
发布于 2021-08-05 23:22
+ 关注

深圳乐信 java高级工程师社招面经

一面

1.画出项⽬的架构图

2.所处⾃⼰负责的业务模块,其中⽤到了哪些技术点?

3.如何实现最终⼀致性分布式事务?

4.消息最终⼀致性解决⽅案之RabbitMQ实现:

a.实现:发送⽅确认+消息持久化+消费者确认。4.索引的B+树结构是咋样的?

1. B-tree:

B-tree利⽤了磁盘块的特性进⾏构建的树。每个磁盘块⼀个节点,每个

节点包含了很关键字。把树的节点关键字增多后树的层级⽐原来的⼆叉树少

了,减少数据查找的次数和复杂度。

B-tree巧妙利⽤了磁盘预读原理,将⼀个节点的⼤⼩设为等于⼀个⻚

(每⻚为4K),这样每个节点只需要⼀次I/O就可以完全载⼊。

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

2. B+tree:

B+tree是 B-tree的变种,B+tree数据只存储在叶⼦节点中。这样在B

树的基础上每个节点存储的关键字数更多,树的层级更少所以查询数据更快,所

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

定;

5.哪些情况下索引会失效?除了加索引优化查询,还有哪些⽅法?

6.说说⾃⼰了解的设计模式?Spring中⽤到了哪些设计模式?⾃⼰有⽤过哪些设

计模式吗?

7.TCP的三次握⼿四次挥⼿机制?

8.Https原理?

9.Redis的数据类型有哪些?与Memcached的区别?

Redis⽬前⽀持5种数据类型,分别是:

String(字符串)

List(列表)

Hash(字典)

Set(集合)

Sorted Set(有序集合)

区别

1、memcache⽀持k/v类型数据;

2、redis除了缓存k/v类型数据之外,还能缓存list、set、hash等数据结构

的数据;

3.redis的持久化,事务,master/salver这些虽然也是redis的优势,但实际应

⽤中发现这些其实是会托累服务器的性能,⽽我们全部都不能⽤.我们得⾃已做;

memcached以上都不管,我们也得⾃已做;

4.如果需要在服务器端做⼀些聚合的运算,⽤redis;如果只是做缓存,redis虽

然可以,但性能很差.在要求⾼性能的环境下使⽤memcached更合适;

 

10.消息队列有⽤到吗?具体在项⽬中是怎么⽤的?如何保证消息的可靠传递?

 

 

 

二面

1.说说java集合,每个集合下⾯有哪些实现类,及其数据结构?

2.介绍⼀下红⿊树、⼆叉平衡树。

3. jdk1.8中ConcurrentHashMap size⼤于8时会转化成红⿊树,请问有什么

作⽤,如果通过remove操作,size⼩于8了,会发⽣什么?

4.说说java同步机制,java有哪些锁,每个锁的特性?

5.说说volatile如何保证可⻅性,从cpu层⾯分析。

6. spring加载bean的顺序?

spring容器及bean加载机制源码解

7.哪些对象会被存放到⽼年代?

8.什么时候触发full gc?

(1)调⽤System.gc时,系统建议执⾏Full GC,但是不必然执⾏

(2)⽼年代空间不⾜

(3)⽅法去空间不⾜

(4)通过Minor GC后进⼊⽼年代的平均⼤⼩⼤于⽼年代的可⽤内存

(5)由Eden区、From Space区向To Space区复制时,对象⼤⼩⼤于

To Space可⽤内存,则把该对象转存到⽼年代,且⽼年代的可⽤内存⼩

于该对象⼤⼩

9. jvm中哪些地⽅会出现oom?分别说说oom的可能原因?jvm发⽣oom的四种情

况:

10.我们如何发现oom来⾃jvm中哪个区域?

11.有没有jvm调优经验?调优⽅案有哪些?

1.调优时机:

a. heap内存(⽼年代)持续上涨达到设置的最⼤内存值;

b. Full GC次数频繁;

c. GC停顿时间过⻓(超过1秒);

d.应⽤出现OutOfMemory等内存异常;

e.应⽤中有使⽤本地缓存且占⽤⼤量内存空间;

f.系统吞吐量与响应性能不⾼或下降。

2.调优原则:

a.多数的Java应⽤不需要在服务器上进⾏JVM优化;

b.多数导致GC问题的Java应⽤,都不是因为我们参数设置错误,

⽽是代码问题;

c.在应⽤上线之前,先考虑将机器的JVM参数设置到最优(最适

合);

d.减少创建对象的数量;

e.减少使⽤全局变量和⼤对象;

f. JVM优化是到最后不得已才采⽤的⼿段;

g.在实际使⽤中,分析GC情况优化代码⽐优化JVM参数更好;

3.调优⽬标:

a. GC低停顿;

b. GC低频率;

c.低内存占⽤;

d.⾼吞吐量;

4.调优步骤:

a.分析GC⽇志及dump⽂件,判断是否需要优化,确定瓶颈问题

点;

b.确定jvm调优量化⽬标;

c.确定jvm调优参数(根据历史jvm参数来调整);

d.调优⼀台服务器,对⽐观察调优前后的差异;

e.不断的分析和调整,知道找到合适的jvm参数配置;

f.找到最合适的参数,将这些参数应⽤到所有服务器,并进⾏后续跟踪。

12.平时有没有看过什么源码,请画出来。

13.有没有写过或者看过custom classloader?

了解⼀下即可:

 


更多模拟面试

全部评论

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

推荐话题

相关热帖

近期热帖

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

近期精华帖

热门推荐