真实面试题


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、自我介绍一下

  1. 以前做了什么,学会了什么,哪方面比较强。

 例如:因为什么原因,在这个项目的开发中,学会了分布式系统的配置,这一切都是自己独立学习并且动手完成的。

科学系统的开发流程,从承接到需求到需求交付,自己是怎么做的?

分析需求、设计表结构、设计表索引、自动化接口测试;来表现自己做事的严谨

  1. 自我介绍的时候一定要介绍自己擅长什么,时间不能太短,要让面试官对你有一个比较清晰的了解

过滤器和拦截器的区别

过滤器和拦截器主要区别如下:

过滤器 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前后起作用,而拦截器能够深入到方法前后、异常跑出前后等,拦截器的使用有更大的弹性。

 

离职原因

迫不得已的理由,不要让面试官觉得你不安分老是跳槽 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码科学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值