Java面试,整理于2020-06-28日

本文深入解析了Java面试中常见的技术问题,包括Spring框架中@Autowired与@Resource的区别、Java资源加载路径的理解、修改部署jar包中配置文件的方法、Spring注解的运用、Linux基本操作、MyBatis动态SQL标签及参数传递技巧等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Spring项目中@Autowired 与@Resource的区别?

1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
2、@Autowired默认是byType装配(这个注解是属业spring的)
3、@Resource默认是byName装配(这个注解是属于J2EE的)

2、在java中读取项目资源时,路径加“/”与不加的区别?

加“/”表示从classpath开始查找,不加“/”表示从当前类包下开始查找。

3、如何修改已部署jar包中application.yml配置文件中的配置参数?

在jar包同级目录下,添加application.yml文件,该文件会覆盖jar包内application.yml的配置。

4、Spring注解@controller、@service、@component、@repository区别?

几个注解本质上没有什么区别
@Repository:持久层,用于标注数据访问组件,即DAO组件。 
@Service:业务层,用于标注业务逻辑层主键。 
@Controller:控制层,用于标注控制层组件。 
@Component:当你不确定是属于哪一层的时候使用

5、Linux常用操作命令有哪里?

【find】查找文件
【free】查看内存
【top】查看cpu
【ps】查看进程
【scp】远程拷贝

6、mybatis中#{}和${}的区别是什么?

#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性。

7、通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,Dao接口里的方法,参数不同时,方法能重载吗?

Mapper接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略。

在mapper中如何传递多个参数?

(1)第一种:
	Public UserselectUser(String name,String area); 
	//对应的xml,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数
(2)第二种:
 	使用 @param 注解:
	public interface usermapper {
		user selectuser(
			@param(“username”) string username,
			@param(“hashedpassword”) string hashedpassword
		);
	}
(3)第三种:多个参数封装成map或实体对象

8、Mybatis有哪些动态sql标签?

trim | where | set | foreach | if | choose | when | otherwise | bind

cron表达式?

Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
* :代表所有可能的值。因此,“*”在Month中表示每个月,在Day-of-Month中表示每天,在Hours表示每小时
- :表示指定范围。
, :表示列出枚举值。例如:在Minutes子表达式中,“5,20”表示在5分钟和20分钟触发。
/ :被用于指定增量。例如:在Minutes子表达式中,“0/15”表示从0分钟开始,每15分钟执行一次。
	"3/20"表示从第三分钟开始,每20分钟执行一次。和"3,23,43"(表示第3,23,43分钟触发)的含义一样。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值