资讯动态

Java 面试

发布时间:2026/11/6 9:37:28 来源:尧图企业网站定制
Java 面试宝典不定时更新Java的面试题, 有什么好的 感谢评论告知小提示可以看旁边的文章目录,自问自带看看自己会不会奉上本人Java学习笔记Java线程泛型集合SSMMybatismybatis中namespace的作用Namespace是命名空间mapper中的namespace用于绑定dao接口的即面向接口编程。namespace是映射文件唯一标识不允许重复在大型项目中可能存在大量的SQL语句这时候为每个SQL语句起一个唯一的标识ID就变得并不容易了。为了解决这个问题在MyBatis中可以为每个映射文件起一个唯一的命名空间这样定义在这个映射文件中的每个SQL语句就成了定义在这个命名空间中的一个ID。只要我们能够保证每个命名空间中这个ID是唯一的即使在不同映射文件中的语句ID相同也不会再产生冲突了。#和的区别。#{} 和 ${} 都是Mybatis sql映射文件中实现sql参数的绑定#{ }是以一种 预编译的形式进行参数注入自动拼接引号不会存在注入相对${}安全${}以一种字符替换 直接将参数拼接到sql 语句中需要自己写 ’ 单引号存在sql 注入(不安全)sql 注入因为可以 自定义单引号对于一个登录sql :select * from user where username ${xx} and password ${xx}用户最后密码输入’ OR ‘1’1那么如下无论如何用户都能登录成功了select * from user where usernamelalalala and password or 11SpringMVCMVC 设计模式MVC 工作原理MVC是 一种设计模式1前台发送请求 到控制器2控制器接受请求交给模型层处理(此模型层完成业务逻辑servicedao等)3模型层返回处理结果给控制器4控制器将结果渲染到view视图上5渲染好的视图通过控制器返回前台Spring初始Spring 详解Spring IOC 和 AOPSpring配置补充说一说 ioc微服务SpringBootSpring boot和Spring mvc的区别Spring 框架就像一个家族有众多衍生产品例如boot、cloud、security、jpa等等。但他们的基础都是Spring 的ioc 和 aopioc 提供了依赖注入的容器aop解决了面向横切面的编程然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC提供了一种轻度耦合的方式来开发web应用。它是Spring的一个模块是一个web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver开发web应用变得很容易。解决的问题: 领域是网站应用程序或者服务开发——URL路由、Session、模板引擎、静态Web资源等等。Spring Boot实现了自动配置降低了项目搭建的复杂度。它主要是为了解决使用Spring框架需要进行大量的配置太麻烦的问题所以它并不是用来替代Spring的解决方案而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等)Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box)。总结Spring 最初利用“工厂模式”DI和“代理模式”AOP解耦应用组件。大家觉得挺好用于是按照这种模式搞了一个 MVC框架一些用Spring 解耦的组件用开发 web 应用 SpringMVC 。然后发现每次开发都写很多样板代码为了简化工作流程于是开发出了一些“懒人整合包”starter这套就是 Spring Boot。所以用最简练的语言概括就是Spring 是一个“引擎”Spring MVC 是基于Spring的一个 MVC 框架Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。Springboot的核心快速创建一个独立的spring应用程序内置了tomcat, jetty 无需发布war包直接就可运行提供了可选的 starter (启动器) 依赖来 简化 项目的构建配置 pom.xml 自动配置Spring 和 第三方库 简化 配置文件 简化Spring 以及 能够和Spring进行集成的第三方 框架的配置没有冗余代码生成 并且不需要 XML 配置1.不是说没有配置文件2.也可以有XML配置ImportResource 引入原生配置ImportResource(classpath:beanConf.xml) //classpath表示就是资源目录下; 这里不多解释了.. //一般注解直接声明在主程序类上... 方便快速加载SpringCloud数据库公共怎样测试一条sql语句的执行效率。EXPLAIN要测试执行的sql输入sql语句“EXPLAIN select * from users”前面加了explain则查询语句在执行时会记录执行过程效率。通过慢查询日志去寻找哪些sql执行效率MySQL 主要分为 Server 层和引擎层Server 层主要包括连接器、查询缓存、分析器、优化器、执行器同时还有一个日志模块binlog这个日志模块所有执行引擎都可以共用Mysql组合索引怎么用的?索引组合索引是将n个列组合成一个索引其应用场景为频繁同时使用, n列来进行查询组合索引语法create index 索引名 on 数据库名(多个列名);多个列直接 , 逗号分隔通过索引列进行查询 (遵循 最佳左前缀原则就是, 假设创建一个索引 a b c 三列的索引数据库的底层就会创建出 a ab abc 三种索引类型如果此时, 一条sql 语句最左边使用了 a 和 c 列进行条件判断, 执行的时间是不一样的 a最左 会比c 快!因为底层针对 a 创建了一个索引所以建议最常用的列, 创建时候在最左边声明什么情况会导致组合索引失效?组合索引不使用左侧第一个字段;最左的不一定要在最左使用但一定要用除非查询的字段只有建立组合索引的这几个列select 索引列1索引列2 from ...like 以%开头字符串不加引号where条件有数学运算或函数order by 只能使用a才能用到索引。如果mysql估计使用全表扫描要比使用索引快,则不使用索引再次声明索引适合高数据量的场景使用组合索引如果不使用左侧第一个字段什么情况下索引会生效?如果查询的字段只有建立组合索引的这几个列 索引会生效事务用在哪里Oracle工具组件Gitgit改变分支的指令# 创建分支gitbranch 分支名字(如dev)# 创建(dev)分支# 查看分支gitbranch# git branch -a 查看所有分支# 切换分支gitcheckout 分支名字# 切换到xx分支# 合并分支gitmerge(指定合并的分支)# 删除分支gitbranch-d分支名# 还可以,使用.gitignore忽略文件进行版本控制分支合并无冲突# 假设现在我修改新分支上的文件# 然后回到主分支主分支我并没有进行修改只有新分支修改了那么进行合并# 显然是没有冲突的Git会直接对 master分支里的文件进行了更新有冲突)# 如果我修改新分支上的文件# 然后回到主分支主分支我也进行修改那么进行合并# 就会产生冲突的Git会将都修改过的相同行代码都保留以一种特殊格式保留;并且进入 合并模型 需要将格式更改为,正常的才可以继续操作,提交RedisNginxMavenmaven是怎么进行项目管理的?通过POM (工程对象模型)它是使用 Maven 工作时的基本组建是一个 xml 文件。被放在项目工程根目录下文件命名为pom.xmlPOM 包含了关于工程和各种配置细节的信息Maven 使用这些信息构建和管理项目统一字符编码格式JDK 环境版本最主要就是统一依赖Jar包了pom.xml 文件中添加所需jar包的坐标, Maven会根据坐标快速找到Jar的实际位置避免了直接引入使项目工厂庞大底层存在索引算法可以高效快速的响应传递;不用担心影响程序性能maven是怎么管理jar包的?接下通过项目根目录下的pom.xml文件来管理JarMaven项目需要Jar时候就会去pom.xml 文件中寻找对应的依赖根据依赖就可以到对应的仓库中找到准确的Jar仓库流程Maven有三个仓库 本地(本地电脑)——私服(公司内部)——远程(官方提供需要联网下载)而且如果是远程下载的第一次下载时候就会在本地 和 私服中进行了备份下次就不用在远程下载了私服获取也会在本地留取备份接上怎么体现出来的?可以是在Maven 的setting 文件中得知本地仓库的安装位置文件默认的位置在:用户目录下 .m2文件夹可以通过查看pom.xml文件来获取具体的文件夹, 找到具体的依赖不联网/联网 来测试能不能下载Jar…设计模式… … … … … … … … … … … … … … … … … … … … … … … … … … …

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑