2.5年Java工作经验面试

本文详细探讨了Spring框架的核心概念,包括事务传播性、AOP注解及其应用场景,同时深入介绍了Java线程池的创建方法,以及HashMap在多线程环境下的安全性问题和解决方案。

旋瑞智佳装饰 (2019.7.23 14:00) 汉口火车站旁欧亚达家居广场4楼

1.说下spring事务传播性有哪些?

转载:https://blog.youkuaiyun.com/wangmaohong0717/article/details/83591250
在这里插入图片描述

2.Spring AOP是什么?注解有哪些?什么业务场景用到了?

转载:https://blog.youkuaiyun.com/hft6666/article/details/81232734

使用@Aspect
常用的几个增加类型注解

1.@Before 前置增强(目标方法执行之前,执行注解标注的内容)

2.@AfterReturning 后置增强(目标方法正常执行完毕后,执行)

3.@Around 环绕增强(目标方法执行前后,分别执行一些代码)

4.@AfterThrowing 抛出增强(目标方法发生异常,执行)

5.@After Final增强(不管是抛出异常还是正常退出,该增强都会得到执行。一般用于释放资源,相当于try{}finally{})。

切点函数注解常用详解

1.@annotation()表示标注了某个注解的所有方法;
2.execution()是最常用的切点函数,它的语法格式为execution(<修饰符模式><返回类型模式><方法名模式>(<参数模式>)<异常模式>)

**2.1.通过方法签名定义切点**
execution(public * *(..)):匹配所有目标类public的方法,第一个*代表返回类型,第二个*代表返回名,而..代表任意入参的方法。

**2.2.通过类定义切点**
execution(* com.suning.www.Instrument.*(..)):匹配Instrument接口的所有方法,第一个*代表返回任意类型,com.suning.www.Instrument.*代表Instrument接口中所有的方法。

**2.3.通过类包定义切点**
execution(* com.suning.www*(..)):匹配com.suning.www包下所有类的所有方法。
execution(* com.suning..*(..)):匹配com.suning包,子孙包下所有类的所有方法。

**2.4.通过方法入参定义切点**
exexution(*play(String,int)):匹配play(String,int)方法,且play()方法的第一个入参类型是String,第二个是int。

3.多线程,创建线程池的方法有哪些?

转载:https://www.cnblogs.com/lanseyitai1224/p/7895652.html

Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

4.JDK1.8的新特性有哪些?操作流的方法?与1.7相比有哪些变化?

参考:https://blog.youkuaiyun.com/qq_29411737/article/details/80835658
在这里插入图片描述

5.HashMap是线程安全的吗?怎么让它变成线程安全的?是无序的还是有序的?

不安全。

在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 
原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的hashcode 
方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 
如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表 
无限下去,那么效率极低,碰撞是避免不了的 
加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生 
在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入 
除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾 
ConcurrentHashMap (锁分段机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁分段),数组+链表中也引入了红黑树的使用

存储元素是无序的;在元素不变的情况下,输出是有序的。

6.分布式框架有事务吗?

7.你认为自己的优势是什么?

8.Nginx负载均衡是怎么实现的?与Tomcat怎么结合使用?

参考:https://blog.youkuaiyun.com/u012385190/article/details/54377545

9.如何创建索引?为什么要建索引?
参考:https://blog.youkuaiyun.com/dearKundy/article/details/80557490

珞珈德毅(2019.7.24 15:00)武大科技园创业楼3楼
在这里插入图片描述
Java部分
1.核心思想:封装,继承,多态.
OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

2.参考:https://blog.youkuaiyun.com/yangxingpa/article/details/81023138
3.
在这里插入图片描述
4.参考:https://blog.youkuaiyun.com/qq_40788303/article/details/81038026
5.暂无

JavaScript部分
1.暂无
2.参考:http://www.hangge.com/blog/cache/detail_1862.html
3.
4.

DataBase
1.
在这里插入图片描述
在这里插入图片描述
2.3.

select a.sid,a.name,a.sex,b.subject,b.score from student a
LEFT JOIN mark b
on a.sid = b.sid
order by b.subject,b.score desc;

select * from
(select a.sid,a.name,a.sex,b.subject,b.score from student a
LEFT JOIN mark b
on a.sid = b.sid
and b.subject='数学'
order by b.score desc) a
LIMIT 0,5;

select avg(m.score) from
(select * from mark
where subject='语文' and score>80) m;

在这里插入图片描述
在这里插入图片描述

select a.id,b.homename,c.guestname,a.matchtime from schedule a
LEFT JOIN
(select a.id,b.name homename,a.matchtime from `schedule` a
LEFT JOIN team b 
on a.homeid = b.id) b
on a.id = b.id
LEFT JOIN
(select a.id,b.name guestname,a.matchtime from `schedule` a
LEFT JOIN team b 
on a.guestid = b.id) c
on a.id = c.id

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值