我的面试宝典:一线互联网大厂Java核心面试题库
以下是我个人的一些做法,希望可以给各位提供一些帮助:
整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
还有源码相关的阅读学习
select id , name , pwd as password from user where id = #{id}
方式二【推荐使用】:
select id , name , pwd from user where id = #{id}
(4).日志的使用
配置在myabtis-config.xml的核心配置文件当中,具体采用哪个日志去myabtis的官网去拿就行
(5).实现分页
在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。
方式一:limit分页
1、修改Mapper文件
select * from user limit #{startIndex},#{pageSize}
2、Mapper接口,参数为map
//选择全部用户实现分页
List selectUser(Map<String,Integer> map);
3、在测试类中传入参数测试
推断:起始位置 = (当前页面 - 1 ) * 页面大小
//分页查询 , 两个参数startIndex , pageSize
@Test
public void testSelectUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
int currentPage = 1; //第几页
int pageSize = 2; //每页显示几个
Map<String,Integer> map = new HashMap<String,Integer>();
map.put(“startIndex”,(currentPage-1)*pageSize);
map.put(“pageSize”,pageSize);
List users = mapper.selectUser(map);
for (User user: users){
System.out.println(user);
}
session.close();
}
方式二:Rowbounds分页
我们除了使用Limit在SQL层面实现分页,也可以使用RowBounds在Java代码层面实现分页,当然此种方式作为了解即可。我们来看下如何实现的!
1、mapper接口
//选择全部用户RowBounds实现分页
List getUserByRowBounds();
2、mapper文件
select * from user
3、测试类
在这里,我们需要使用RowBounds类
@Test
public void testUserByRowBounds() {
SqlSession session = MybatisUtils.getSession();
int currentPage = 2; //第几页
int pageSize = 2; //每页显示几个
RowBounds rowBounds = new RowBounds((currentPage-1)*pageSize,pageSize);
//通过session.**方法进行传递rowBounds,[此种方式现在已经不推荐使用了]
List users = session.selectList(“com.kuang.mapper.UserMapper.getUserByRowBounds”, null, rowBounds);
for (User user: users){
System.out.println(user);
}
session.close();
}
方式三:PageHelper插件分页
(6).一对多,多对一
(7).动态sql
(8).缓存cache
mybatis当前我认为重点的知识点也就是上面这一些了,后续持续补充
二.Spring框架
Spring使用的具体提流程:Spring的核心配置文件一般命名为applicationContext.xml,导入头文件后和命名空间将所有的实体类对象注册到当中即可,
Spring主要就是引入了IOC和AOP两大思想,所以我们又称Spring为非入侵式的控制反转IOC和面向切面变成AOP的轻量级框架
IOC:控制反转的思想,主要是实现控制权的反转,是由原本的程序员主动去new对象,替代控制权交给用户,只是提供一个接口,被动的接受对象
AOP:面向切面编程思想,主要是方便后期的维护,在不改动原有的代码的条件下,给原有代码增加功能等一系列操作。
常用知识点总结:
1.注册bean:
【方式一】:通过配置文件的方式去注册bean对象,并为其属性赋值
<?xml version="1.0" encoding="UTF-8"?><beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
【方式二】:通过注解的方式去注册bean对象,等价于配置文件,但是注入属性的时候可操作性低于配置文件
@Component:一般情况下,下面三个是其衍生注解,功能相同用于区分
@Repository:一般用于Dao层
@Controller:一般用于Controller层
@Service:一般用于Service层
【方式三】:javaConfig的方式去注册bean对象
JavaConfig 原来是 Spring 的一个子项目,它通过 Java 类的方式提供 Bean 的定义信息,在 Spring4 的版本, JavaConfig 已正式成为 Spring4 的核心功能 。
@configuration和@Bean2个注解的联合使用
@Configuration //代表这是一个配置类
public class MyConfig {
@Bean //通过方法注册一个bean,这里的返回值就Bean的类型,方法名就是bean的id!
public Dog dog(){
return new Dog();
}
}
最后
金三银四马上就到了,希望大家能好好学习一下这些技术点
学习视频:
大厂面试真题:
w Dog();
}
}
最后
金三银四马上就到了,希望大家能好好学习一下这些技术点
学习视频:
[外链图片转存中…(img-y5VbVENT-1715650682135)]
大厂面试真题:
[外链图片转存中…(img-ctOpPndy-1715650682135)]