5、什么是存储过程?怎么编写? (分库分表的情况下,不能用存储过程)
存储过程就是数据库操作业务逻辑,不成功回滚
示例:
show procedure status //查看所有存储过程
//写一个存储过程:
//先将结束符改成 //
delimiter //
create procedure query(page int)
begin
select * from class where id > page;
end
//
//将结束符改回;
delimiter ;
<!-- 调用存储过程 -->
call query(20)
<!-- 删除存储过程 -->
drop procedure query
缺点:存储过程缺点很明显,不利于调试,移植性很差。
日志使用也不方便,而且函数库比较少,都要自己写。
6、linux的常用命令?例如怎么修改文档的值请举例说明
cd / 获取根目录
ll查看有什么文件夹
cd /homm 相当于打开windows的program file 文件夹
mkdir 创建文件夹
su 切换用户,仅root
vim 如果文件不存在,创建文件,如果存在,打开文件
rm -f +文件名 删除文件
tail -500f +文件名 监控最后500行
esc : wq 保存退出
esc : q! 不保存退出
mv 旧文件名 新文件名 移动文件/重命名文件
cp 旧文件名 新文件名 复制文件
ps -ef 查看所有进程
ps -ef|grep +字符串 筛选进程(ps -ef|grep tomcat)
ctrl + insert 复制CMD文本
shift + insert 粘贴文本
kill -9 +进程号 杀死进程
Linux 脚本格式 .sh
chmod 777 test.sh 将test脚本权限改为所有用户可读写
./ tesh.sh 执行脚本
sh test.sh 执行脚本
7、你是否了解驱动表?
驱动表是在使用多表嵌套连接时,会先全表扫描该驱动表,然后驱动表返回的结果集中一行一行去匹配被驱动表(可以利用索引),所以我们会选择小表做为驱动表,而被驱动使用索引进行连接。
对于基于规则的优化系统,驱动表在FROM后是有次序设置的,而在基于成本的优化,ORACLE会选择最合适的驱动表。
8、mybatis中你是如何写分页sql语句的
limit ?,?
limit #{pageNumber}, #{pageSize}
@SET @?
@SET @SIZE
9、如何对sql进行优化的?
11、spring 和 springboot有什么区别?
就是说springBoot有什么优点
12、你了解SpringCloud吗?
Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。
Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,微代理,控制总线,一次性token,全局一致性锁,leader选举,分布式session,集群状态管理等操作提供了一种简单的开发方式。
Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
15、sql优化中,哪些关键字会导致索引失效?
1.条件中用or
2.最左前缀索引
3.like的模糊查询以%开头,索引失效
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引
5.如果MySQL预计使用全表扫描要比使用索引快,则不使用索引6.不要在索引列上做任何计算
7.索引字段上is null is not null会导致索引失效
8.字符串列查询不带单引号,会导致索引失效
9.or会导致索引失效
10. 拒绝大sql、大事务、大批量batch
17、怎么在list里面进行对象去重复?
重写hascode & equals 放到hashSet里面
18、事物的主要配置是什么?怎么使用的?
19、SpringMVC的底层原理,跟你使用过的注解
20、连接查询有哪些?如果一张表3条数据,一张表4条数据不做任何连接查询,会查出多少条数据?
3*4=12
21、maven怎么排除不要的架包?
<!-- 排除 -->
<packagingExcludes>
WEB-INF/classes/*jdbc.properties,
WEB-INF/classes/*config.properties,
regex[WEB-INF/lib/(?!log4j-1|common-1).*.*.jar]
</packagingExcludes>
22、有什么关键字会让索引失效?
1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
2.对于多列索引,不是使用的第一部分,则不会使用索引
3.like查询是以%开头
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引
HW
2、Linux你们用的是什么版本?是怎么用的?
一般用5.6,不知道就说没注意看什么版本
3、说下JDK1.8新特性
接口可以有方法体
内部类引用外部变量,变量自动声明为final
4、输入三个参数:111,222,333(三个参数是未知),输出平均值,最大值,怎么解决异常?
5、说一下权限管理,如果你来实现,你觉得有什么功能需要加,有什么缺陷
目的应该是问对每个按钮的控制
6、代码管理除了SVN有管理系统吗
Git
8、JAVA获得当前毫秒怎么获取
System.CurrentTimeMills
9、前后台数据交互是什么格式
json
10、后台传前台是什么格式
jsonObject
map
11、写过Shell脚本吗?
就是Linux脚本 .sh
12、JAVA正则怎么判断接收的数据是不是int类型
13、线程生命周期?
新建
就绪
运行
阻塞
死亡
14、spring生命周期?
15、线程池是什么,怎么实现的?
线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。
当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源
优点:
1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。
2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。
怎么创建?
16、多线程是什么?
是指一个应用程序同时执行多个任务,一般来说一个任务就是一个线程 ,而一个应用程序有一个以上的线程我们称之为多线程。
17、springboot跟spring的区别?
19、Mybatis怎么设置三个字段为唯一属性?
pirmary key(字段,字段,...)
20、数据库有两个相同的数据怎么查询出来?
count(id)>1
21、SQL语句写好了以后怎么获取出执行时间超过一秒的SQL语句?
1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
2,long_query_time
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
3,slow_query_log_file
记录日志的文件名。
4,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。
22、Spring是什么?
Spring框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,
还能帮我管理最头疼的数据库事务,本身提供了一套简单的JDBC访问实现,提供与第三方数据访问框架集成
23、Spring容器是什么,怎么实现的?
hashMap,把bean的名字放在map的key,bean的实现放在map的value
24、Mybatis的接口怎么跟Dao层的接口绑定的,说下原理?
反射
WRM
1、高并发不用线程锁怎么保证线程安全?
final 天生是线程安全
不访问共享资源
2、tomcat上的项目,如果不部署在默认webApp文件夹,要部署在哪里?
外部部署
3、mysql怎么保存表情符号
1. mysql的数据库, 表 ,字段的字符集必须是utf8mb4,怎么设置自酌,
但可以看看自己数据库的字符集 show variables like '%set%
保证 Character set是utf8mb4 -- UTF-8 Unicode
collation是utf8mb4_unicode_ci就可以了,
utf8和utf8mb4不冲突的,所以不用考虑改变后对其他地方有影响
2.utf8mb4必须是新版的mysql才支持,网上虽说5.5+就可以了,但是没有具体到几点几,最好还是mysql官网下载最新的版本,
具体的安装卸载过程自酌
3.emoji表情不是图片,而是一种4字节的字符,属于unicode,以前的mysql utf8只能解析到3字节,不要想着怎么做图片替换的问题.
4、集群怎么配置文件怎么写?
5、介绍一下JDK8新特性lamda表达式
lambda表达式本质来讲,就是一个匿名函数,可以使用这个匿名函数对接口进行非常简洁的实现,从而简化代码
6、String a = "123"; String b = new String("123"), a == b 是 true 还是 false ?
false,b是一个对象,b指向对象的引用
7、简述一个请求在springMVC的执行流程
8、介绍一下最近做的项目
介绍项目背景 -> 介绍项目的技术栈 -> 介绍项目自己负责的模块及功能
9、介绍下常用的线程池,还有线程池都有哪些入参,起了什么作用
10、 两个对象实例怎么判断他们不相同?
重写hashcode & equals
11、IO流读取文件
File file = new File("");
FileInputStream fi = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fi));
String s = br.readLine();
while(s != null){
}
12、自我介绍一下
- 以前做了什么,学会了什么,哪方面比较强。
例如:因为什么原因,在这个项目的开发中,学会了分布式系统的配置,这一切都是自己独立学习并且动手完成的。
科学系统的开发流程,从承接到需求到需求交付,自己是怎么做的?
分析需求、设计表结构、设计表索引、自动化接口测试;来表现自己做事的严谨
- 自我介绍的时候一定要介绍自己擅长什么,时间不能太短,要让面试官对你有一个比较清晰的了解
过滤器和拦截器的区别
过滤器和拦截器主要区别如下:
过滤器 HandlerInterceptor 是spring的功能,拦截器Filter是servlet的功能
1.二者适用范围不同。Filter是Servlet规范规定的,只能用于Web程序中,而拦截器既可以用于Web程序,也可以用于Application、Swing程序中。
2.规范不同。Filter是在Servlet规范定义的,是Servlet容器支持的,而拦截器是在Spring容器内的,是Spring框架支持的。
3.使用的资源不同。同其他代码块一样,拦截器也是一个Spring的组件,归Spring管理,配置在Spring文件中,因此能使用Spring里的任何资源、对象(各种bean),而Filter不行。
4.深度不同。Filter只在Servlet前后起作用,而拦截器能够深入到方法前后、异常跑出前后等,拦截器的使用有更大的弹性。
离职原因
迫不得已的理由,不要让面试官觉得你不安分老是跳槽