项目阶段测试题->下

89 阅读3分钟
一、MySql的隔离级别有哪些?默认是什么?
读未提交、读已提交、可重复读(默认)、串行化
二、MySql的隔离级别可以解决哪些问题?
读未提交:啥也解决不了
读已提交:解决脏读
可重复读:解决不可重复读/脏读
    - MVCC 机制:解决幻读
串行化:都可解决
三、HTTP协议的请求/响应结构是什么样的?
请求/响应:
    请求/响应行
    请求/响应头
    请求/响应体
    
四、CSRF是什么?有什么解决方案?
CSRF:跨站请求伪造攻击
1.利用请求头获取浏览器源地址,从哪里发起的请求来识别是否
可信任站点发的请求

2. 利用服务端生成 token,提交表单时对 token 进行校验。
五、SpringSecurity判断权限/角色的方式有哪些?
利用HttpStatus进行规则配置
利用注解拦截

hasAuthority
hasAnyAuthority
hasRoles
hasAnyRoles
六、Linux 常用命令有哪些?
top: 查看进程和系统负载
find: 查找文件
grep: 搜索文件内容
ps -ef:查看进程信息,可以配合管道命令 + grep 来搜索进程
cat: 查看文件内容
tail: 监听文件内容变动并实时输出
df/free: 查看磁盘/内存使用情况
七、如何利用命令在 Linux 中查看日志?
tail -f -n200 日志文件地址 | grep xxx
八、利用什么命令确认一个程序是否在运行中
ps -ef | grep 程序名
九、Spring的事务传播机制有哪些?
    REQUIRES: 默认,需要事务,如果有事务就在当前事务运行,
    如果没有事务就创建一个新的事务。
    
    SUPPORTS:支持事务,如果有事务就在当前事务运行,如果没
    有事务就以非事务的方式运行

    REQUIRES_NEW:如果没有事务,创建一个新的,如果有事务,将
    事务挂起并创建一个新的
    
    NEVER:不支持事务,如果有事务就抛出异常
    
十、说说 SpringBean 的生命周期
1. Spring Bean的生命周期是从Spring容器启动时就开始的
2. 所有 Bean 对象的创建都是从 ctx.getBean() 方法开始的
3. 最终真正创建 Bean 对象的方法是 doCreateBean 方法
4. Bean 的生命周期分别为实例化/属性赋值/初始化/注册销毁监听器
5. 实例化就是利用反射/FactoryBean.getObject来创建 Bean 对象,
在实例化的前后都有对应的拓展点,可以实现拓展点接口来做一些特殊处理
6. 属性赋值,在这里进行DI操作,将需要注入的属性@Value/@Autowired注入
同样也分别在注入前后都有对应的拓展点,同时 Spring 解决循环依赖
也是基于此处的拓展点解决的
7. 初始化阶段就是去执行我们配置或者自定义的初始化方法,例如 
init-method/实现了InitializingBean/或者实现了XxxAware的
类的初始化方法,在真正初始化前后都会有对应的拓展点
8. 最后会将 Bean 对象注册到销毁接口,当容器关闭时会进行销毁操作