- 浏览: 91324 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
整理记录一些面试要点以便将来用得到。
关于面试:首先认清无论你多优秀,在面试的时候都不能顾及到所有面试的内容,所以只能尽可能的去准备一些常问的面试点,也就是能拿的分要拿到。
Java基础 jsp servlet ajax json
容器hashmap原理
jvm调优
多线程高并发
框架springboot,springcloud,dubbo,zookeeeper,springmvc,spring,mybatis,hibernate,struts2
spring事务机制,
redis 缓存 session共享 分布所锁
设计模式 单例模式 代理模式 工厂模式
sql优化 左右外连接 全连接
消息队列 rabbitmq kafaka
ngnix 反向代理 负载均衡 高可用
linux命令
git命令
==================one======================
自我介绍
requestmapping注解可以作用到类上么?
(可以,首先看一下这个注解的源码
@Target中 枚举类型是 ElementType.METHOD, ElementType.TYPE 说明可以作用到方法上,和类型上,类型又有哪些呢?看源码 以下给出部分源码
可以看到 Type包括 类,接口(含注解类型),或者是枚举
所以该注解是可以作用到类上的。
)
如何设置让requestmapping注解到的方法为get请求
(答:
在最新的spring5中还有一个注解可以用来直接标识该方法为get请求,就是@GetMapping
看源码
)
springmvc的工作原理是什么?
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
详细:https://lovemojienv.iteye.com/admin/blogs/2430193
union和union all有什么不同
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
union与union all 的区别主要是对重复结果的处理。
union在进行表连接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际上大部分应用中是不会产生重复的记录,最常见的是过程表与历史表union;如:select * from gc_dfys union select * from ls_jg_dfys
这个sql在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。 而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上来说,union all 要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all 这样效率高。
MyBatis中#{ }和${ }的区别
MyBatis中#{ }和${ }都可以用来动态传递参数,补全SQL语句,但它们区别也很明显。
(1)#{"参数名"}在SQL中相当于一个参数占位符“?”,用来补全预编译语句。它补全预编译语句时,可以理解为在此参数值两端加了单引号。举例如下,当需要动态的按id查询用户信息时。
select * from my_user where id = #{id};
如果我们为id赋值为1,这条SQL执行效果相当于下面的SQL。
select * from my_user where id = '1';
由于预编译SQL使用PreparedStatement对象抽象预编译语句,之后使用也无需再次编译,而且能够防止注入式攻击,所以只要能够使用#{ }解决的地方,我们都应该使用#{ }。
(2)${"参数名"}就是单纯的字符串拼接,拼接完成后才会对SQL进行编译、执行,所以性能较低,也无法复用。但是在有些#{ }无法胜任的地方,还是会需要${ }来完成。比如当SQL中数据库表名为参数时,如果使用#{ },如下所示。
select * from #{tableName};
当我们为tableName赋值为"my_user"时,相当于执行以下SQL。
select * from 'my_user';
由于表名不能加单引号,所以语法错误。这时候就需要使用${ }来进行字符串拼接。
select * from ${tableName};
为tableName赋值为"my_user"后,相当于执行以下SQL。
select * from my_user;
linux查看日志的命令
tail -f server.log
单例模式懒汉与饿汉的区别
关于面试:首先认清无论你多优秀,在面试的时候都不能顾及到所有面试的内容,所以只能尽可能的去准备一些常问的面试点,也就是能拿的分要拿到。
Java基础 jsp servlet ajax json
容器hashmap原理
jvm调优
多线程高并发
框架springboot,springcloud,dubbo,zookeeeper,springmvc,spring,mybatis,hibernate,struts2
spring事务机制,
redis 缓存 session共享 分布所锁
设计模式 单例模式 代理模式 工厂模式
sql优化 左右外连接 全连接
消息队列 rabbitmq kafaka
ngnix 反向代理 负载均衡 高可用
linux命令
git命令
==================one======================
自我介绍
requestmapping注解可以作用到类上么?
(可以,首先看一下这个注解的源码
package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping public @interface RequestMapping { String[] value() default {}; RequestMethod[] method() default {}; String[] params() default {}; String[] headers() default {}; String[] consumes() default {}; String[] produces() default {}; }
@Target中 枚举类型是 ElementType.METHOD, ElementType.TYPE 说明可以作用到方法上,和类型上,类型又有哪些呢?看源码 以下给出部分源码
public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE,
可以看到 Type包括 类,接口(含注解类型),或者是枚举
所以该注解是可以作用到类上的。
)
如何设置让requestmapping注解到的方法为get请求
(答:
@RequestMapping(method=RequestMethod.GET) public void query(){ }
在最新的spring5中还有一个注解可以用来直接标识该方法为get请求,就是@GetMapping
看源码
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @RequestMapping( method = {RequestMethod.GET} ) public @interface GetMapping { @AliasFor( annotation = RequestMapping.class ) String name() default ""; @AliasFor( annotation = RequestMapping.class ) String[] value() default {}; @AliasFor( annotation = RequestMapping.class ) String[] path() default {}; @AliasFor( annotation = RequestMapping.class ) String[] params() default {}; @AliasFor( annotation = RequestMapping.class ) String[] headers() default {}; @AliasFor( annotation = RequestMapping.class ) String[] consumes() default {}; @AliasFor( annotation = RequestMapping.class ) String[] produces() default {}; }
)
springmvc的工作原理是什么?
1、 用户发送请求至前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet调用HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView。
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、 DispatcherServlet响应用户。
详细:https://lovemojienv.iteye.com/admin/blogs/2430193
union和union all有什么不同
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
union与union all 的区别主要是对重复结果的处理。
union在进行表连接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际上大部分应用中是不会产生重复的记录,最常见的是过程表与历史表union;如:select * from gc_dfys union select * from ls_jg_dfys
这个sql在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。 而union all只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上来说,union all 要比union快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用union all 这样效率高。
MyBatis中#{ }和${ }的区别
MyBatis中#{ }和${ }都可以用来动态传递参数,补全SQL语句,但它们区别也很明显。
(1)#{"参数名"}在SQL中相当于一个参数占位符“?”,用来补全预编译语句。它补全预编译语句时,可以理解为在此参数值两端加了单引号。举例如下,当需要动态的按id查询用户信息时。
select * from my_user where id = #{id};
如果我们为id赋值为1,这条SQL执行效果相当于下面的SQL。
select * from my_user where id = '1';
由于预编译SQL使用PreparedStatement对象抽象预编译语句,之后使用也无需再次编译,而且能够防止注入式攻击,所以只要能够使用#{ }解决的地方,我们都应该使用#{ }。
(2)${"参数名"}就是单纯的字符串拼接,拼接完成后才会对SQL进行编译、执行,所以性能较低,也无法复用。但是在有些#{ }无法胜任的地方,还是会需要${ }来完成。比如当SQL中数据库表名为参数时,如果使用#{ },如下所示。
select * from #{tableName};
当我们为tableName赋值为"my_user"时,相当于执行以下SQL。
select * from 'my_user';
由于表名不能加单引号,所以语法错误。这时候就需要使用${ }来进行字符串拼接。
select * from ${tableName};
为tableName赋值为"my_user"后,相当于执行以下SQL。
select * from my_user;
linux查看日志的命令
tail -f server.log
单例模式懒汉与饿汉的区别
发表评论
-
面试之hashmap
2020-06-16 06:41 0hashmap经常会问到的面试题 1、JDK8中的HashM ... -
自己编写一个Map
2017-10-25 15:34 555在爱酷学习网上学习Java视频,其中有一个自己实现map的功能 ... -
最近5年经常被问到的面试题
2017-10-24 15:55 0java 面试随着时间的改变而改变。在过去的日子里,当你知道 ... -
五颗星---------常问面试点软肋
2017-10-24 15:33 0总结经常被问到的面试点,又总是表达不好。 1.单例模式 2. ... -
简历宝典
2017-10-24 14:29 0从享受生活的角度上来 ... -
笔试题之--------------javaWeb
2017-10-24 14:27 0Java web部分 1、Tomcat的优化经验 ... -
笔试题之-------------j2ee
2017-10-24 14:26 313j2ee部分 1、BS与CS的联系与区别。 C/S是C ... -
笔试题----之Java代码查错
2017-10-24 14:18 290Java代码查错 abstract class Name { ... -
张孝祥Java就业面试宝典---笔试题之Java基础
2017-10-24 14:22 439Java基础部分 基础部分的顺序:基本语法, ... -
StringBuffer与StringBuilder的区别
2017-10-24 10:07 279声明:以下内容如有雷同,纯属参考。 StringBuffe ...
相关推荐
CPPC++_低成本实现Wooting键盘的Rapid trigger功能不必为几个按键购买整个键盘人人都能做Wouo
CPPC++_可能是世界上最快的协同程序库
ConsulHelper,.Net微服务基础框架,已支持.NetCore,具备服务发现、健康检查、服务分级、分布式配置、版本控制
有卫星、警车、消防车、Cesium飞机、Cesium无人机等等。具体图片如下文章:https://blog.csdn.net/weixin_44857463/article/details/143721670?sharetype=blogdetail&sharerId=143721670&sharerefer=PC&sharesource=weixin_44857463&spm=1011.2480.3001.8118
yii2.0+admin后台以及rbac权限
SpringBlade3.0架构核心工具包,SpringBlade是一个由商业级项目升级优化而来的SpringCloud分布
python各种项目代码
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
Apache Flink:Flink状态与容错机制.docx
CPPC++_更好的渲染龙
Commuter welfare and green commute share optimization
Amazon S3:S3智能分层存储教程.docx
LINDO和LINGO教程
CPPC++_实时语音识别和语音活动检测VAD使用nextgen Kaldi与ncnn无互联网连接支持iOS Andr
cppc++
10020
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
cppc++