java后端开发面试常问

面试常问问题

1 spring相关

(1)@Transactional失效的场景

<1> @Transactional注解默认只会回滚运行时异常(RuntimeException),如果方法中抛出了其他异常,则事务不会回滚(数据库数据仍然插入成功了)。

@Transactional(rollbackFor = Exception.class)    

<2> 如果方法中有try catch语句,并且抛出的异常的代码被try捕获,那么方法上的@Transactional注解也会失效。
<3> 方法内调用,一个没有@Transactional注解的方法在内部调用了有@Transactional注解的方法,那么由于spring aop的代理会导致有@Transactional注解的方法的事务失效。
<4> 一个有@Transactional注解的方法中调用了@Async异步注解的方法,由于@Async是开启一个异步线程执行,和主线程不共享同一个事务,当主线程中有异常回滚后,@Async注解的方法不会回滚。
<5> 事务的方法被private和final修饰的,事务也会失效。

(2)

java相关

1 异常

java中的异常可以分为2大类:Error和Exception
Error:是程序无法处理的错误,通常和jvm或系统资源有关,如:内存溢出(OutOfMemoryError),当jvm没有足够内存时抛出。
Exception:程序本身可以处理的异常,包括运行时异常和非运行时异常(受检异常)。
运行时异常:是由程序逻辑错误引起的,java编译器不会检查它们。
非运行时异常:必须在代码中进行处理的异常。如:IOException、SQLException、FileNotFoundException

2 方法重写重载

重写:出现在父子类中,遵循2同2小1大原则(2同:方法名和参数列表相同 ; 2小:返回值和抛出的异常小于等于父类 ;1大:访问修饰符比父类的大)
重载:方法名相同,参数列表不同(包括个数、类型和参数顺序)。

网络基础相关

简述TCP协议和UDP协议的区别以及http协议

(1)TCP

传输层协议、全双工通信、有连接、可靠传输(传输数据不丢失)、面向字节流

(2)UDP

传输层协议、无连接、无状态、不可靠(不能保证传输数据的完整性),适用于实时性要求高但是数据完整性低的场景。

(3)http协议(超文本传输协议,位于传输层协议之上的应用层协议)
无连接(每次请求都是独立的),无状态,http协议依赖tcp/ip协议来实现数据的传输。

数据库相关

(1)mysql索引什么时候可能会失效

<1> 使用not in或not exists语句
<2>

(2)行转列语句

(3)数据库索引包括哪些

(4)数据库引擎介绍

linux相关

jvm相关命令

1 列出所有的java进程:

jps
jps -l

2 监控jvm的各种统计信息

jsata pid

3 查看和调整运行中的java进程的配置参数

jinfo pid

4 生成java进程的内存转储快照

jmap pid

5 打印java线程的堆栈跟踪信息

jstack

6 监控java进程的可视化监控、管理工具

jconsole
jvisualvm

你可能感兴趣的:(java面试题,java,面试,spring)