面试打底稿① 专业技能的第一部分

简历原文

抽查部分

模拟问答

1.你们项目是如何进行JVM调优的?

首先,我们加上-Xms和-Xmx参数,并设置两个参数为一样大小,都为服务器内存GB总数一半再减1,这是基本调优的操作;

然后对于JDK1.8,可以把并行垃圾收集器改为并发垃圾收集器。

进阶调优则是用jstat -gc、jstat -gcutil查看大数据对象都有哪些,看能否作出优化处理。

2.HashMap的底层原理是什么?

对于底层数据结构,采用的是哈希表。

哈希表在jdk1.8之前,哈希表是数组+链表;jdk1.8及之后,哈希表是数组+链表+红黑树。

存取原理:

首先根据键,计算哈希值。

根据哈希值,计算下标,存入数组。

数组中,如果该下标下链表为空,则直接存入;

如果链表不为空,则产生了哈希冲突,进一步判断哈希值是否相等。相等,则重复了,替代掉;

如果不相等,则存入链表后面。

取时,首先计算被取元素的哈希值,然后计算其在数组中的下标,在下标中的链表中找到相同哈希值的元素,即可取出。

在jdk1.8之前,解决哈希冲突时采用的是拉链法,即直接使用链表。

1.8之后,解决哈希冲突,用红黑树。如果链表长度大于8,则扩容为红黑树;如果长度小于了6,则又退化为链表。

3.(底线问题)Java的数据类型有哪些?

基本数据类型——四类八种

  1. 整数型 byte short int long

  2. 浮点型 float double

  3. 字符型 char

  4. 布尔型 boolean

引用数据类型

  1. String字符串

  2. 类(对象)

  3. 接口类型

  4. 数组类型

  5. 枚举类型

4.说一下你用过的Spring Boot核心注解

1.@ConditionalOnProperty

存在指定配置时,才加载类

2.@ComponentScan

开启扫描,扫描包下的@Component组件。

3.@SpringBootApplication

启动类的注解,包含3个注解,是自动配置的核心。

5.有没有自定义starter

有。是这样做的:

在自定义的项目中首先整理好pom文件,导入好spring的依赖以及其他依赖;

然后定义好自己的Configuration类和Properties类,以及可能的Utils类;

最后在resources目录下,新建文件META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,里面写入自动配置类,就是之前的Configuration类的全名称,包括包名路径和类名,自动配置类就做好了。

6.讲一下你们AOP的应用场景

我们用aop来做鉴权。如果登入者有相应的角色关键字,则放行;否则拦截功能的调用。

我们还用aop来做公共字段填充。数据库中有很多公共字段,比如新建人、新建时间、更新人、更新时间等。这些都可以用aop做填充,简化代码流程,使代码更优美。

具体来说,实现流程如下:

1.在annotation包下创建自定义注解,比如叫AutoFill

2.用一个枚举类显示不同的填入状态,比如代表更新和新增的两种状态,并放入自定义注解中。

3.在aspect包下自定义切面类

4.完善切面类的自动填充逻辑,判断更新、新增两种状态,进行不同处理。

5.在mapper中对应的方法上加自定义注解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值