java常见面试题及部分答案
Posted java-263
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java常见面试题及部分答案相关的知识,希望对你有一定的参考价值。
1.Redis常见的存储数据类型
list(列表类型) set(集合类型) zset(有序集合类型) string(字符串类型) hash(散装类型)
2.log4j的级别
debug:日志的最低级别,一般一些操作,代码,异常,错误等都会输出,
info:info输出的日志是可以最终给用户看到的,用户可以看懂的日志。
error:输出错误,错误的问题比异常要大,但是错误和异常并不一样。
warn:记录系统做出的警告,输出日志。
fatal:fatal输出的是一些比较严重的错误。
3.事务的传播行为和隔离级别
传播行为:一般我们在做项目的时候,都会把事务设置在service层,当我们调用service的一个方法的时候对数据库进行更新操作,事务的传播行为可以保证事务的一致性和原子性,要么都成功要么都失败。
可以在spring的配置文件中设置事务如:propagation_required。
propagation_required:如果当前存在事务就加入到当前事务中,如果不存在就创建一个事务。(最常用)
propagation_supports:如果当前存在事务,则加入该事务,如果不存在就以非事务的方式执行。
propagation_requires_new:不管当前是否存在事务,都会新建一个事务。
propagation_not_supports:以非事务的方式执行,如果当前存在事务则挂起该事务。
等等,总共有七个选项。
隔离级别:
可重复读
不可重复读
读未提交
可串行化
4.$和#的区别
#比较安全 可以防止sql注入 在预编译阶段#{}中的内容将会用一个占位符‘?‘代替,在进入DBMS(数据库管理)的时候才会解析。
$安全性低 不可以方式sql注入 在预编译阶段${}中的内容就是动态添加的内容。
5.分布式 框架的锁
6.手写单例(多线程模式下的单例)
7.count(1)和count(*)的区别
分情况讨论:
如果你的表没有主键count(1)比count(*)速度快,
如果有主键列count(1)也是比count(*)快的,
如果表只有一列那count(*)是比较快的,
count(1)是列扫描,count(*)是全局扫描。
8.spring boot和spring的区别
9.sorl在项目中哪里使用了
10.Redis的使用场景
分布式锁与单线程机制
排行榜
最新列表
位操作
队列
计数器
缓存——热数据
11.Linux的常用命令 杀死进程
以上是关于java常见面试题及部分答案的主要内容,如果未能解决你的问题,请参考以下文章