**一、基础
(1)面向对象三大特征、五大原则
1.封装 2.继承 3.多态
1.单一职责原则 2.开放封闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则
链接:https://blog.csdn.net/jiyiqinlovexx/article/details/46593053
(2) JDK1.8新特性
链接: https://blog.csdn.net/op134972/article/details/76408237?locationNum=1&fps=1
二、JAVA集合类
- list 有序,可重复
1.1 ArrayList 查询效率高,插入删除效率低,线程不安全,扩容为原来的1.5倍。
1.2 LinkedList 查询效率低,插入删除效率高。
1.3 Vector 线程安全,扩容为原来的2倍。 - set 无序,不可重复
2.1 HashSet 使用HashMap实现。
2.2 TreeSet 有序,(用二叉排序树)。 - map(键值对、键唯一、值不唯一)
3.1 HashMap 使用数组加链表实现,线程不安全,key只可一个为null,默认初始大小为16,扩容为原来的2倍。
3.2 HashTable 线程安全,key、value都不可为null,默认初始大小为11,扩容为原来的2倍+1。
3.3 ConcurrentHashMap线程安全,使用的分段锁的机制。每个段其实就是一个小的hashTable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。
3.4 LinkedHashMap 有序,根据插入顺序进行排序。
3.5 TreeMap 有序,根据键进行排序。
三、JAVA多线程
-
创建多线程的几种方式?
1.继承Thread类 2.实现Runable接口 3.实现callable接口 -
线程池的作用
1.减少创建和销毁线程的次数,每个工作线程可以多次使用;
2.可根据系统情况调整执行的线程数量,防止消耗过多内存。 -
线程池ThreadPoolExecutor参数设置
corePoolSize;maxPoolSize;keepAliveTime;allowCoreThreadTimeout;queueCapacity -
java锁的类型?Synchronized 与 lock的区别?
链接:https://www.cnblogs.com/qifengshi/p/6831055.html
Synchronized同步代码块或同步方法 :JVM负责获取和释放锁;非公平锁;可重入锁
lock:需要显示的获取和释放锁,可以设置为公平或非公平锁,并且提供了尝试获取锁的方式,以及中断锁的方式。 -
sleep 和 wait的区别
(1)sleep是Thead类的静态方法;wait 是Object类的方法;
(2)sleep不会释放锁,通过设置参数来唤醒;wait会释放锁,可以通过其他线程调用notify或notifyAll来唤醒;
(3)wait必须使用在Synchronized同步代码块或同步方法中,sleep不需要;四、事物的四个特性,事物的隔离级别
A:原子性 C:一致性 I:隔离性 D:持久性
1.未提交读(可能产生脏读)
2.已提交读(解决了脏读问题,可能产生不可重复读)
3.可重复读(解决了不可重复读问题,可能产生幻读)
4.串行化(解决了幻读,通常采用加锁(next-key Lock)的方式)五、mysql 知识点
- 索引的类型
主键索引,唯一索引,联合索引,聚集索引 - 索引的实现方式
B+树(优势: 优先降低树的深度,提高查询效率,以及提高范围查询的效率) - mysql中Innodb引擎下的锁
记录锁,间隙锁,next-key锁 - Innodb引擎和Myisam的区别
1.Innodb 支持事务功能,Myisam 不支持;
2.Innodb 为行级锁,Myisam 为表级锁;
3.索引类型不同:Innodb聚集索引;Myisam非聚集索引
六、JVM内存模型
- 程序计数器
线程私有,向当前线程正在执行的字节码代码的行号。 - Java虚拟机栈
线程私有,主要存放基本数据类型变量以及对象的引用。 - 堆区
线程共享,存放对象和数组。 - 元数据区
元数据区取代了1.7版本及以前的永久代。元数据区和永久代本质上都是方法区的实现。存放虚拟机加载的类信息,静态变量,常量等数据。
七、TCP三次握手和四次挥手过程
链接:https://www.cnblogs.com/Andya/p/7272462.html
TCP滑动窗口及拥塞控制
链接:https://www.cnblogs.com/woaiyy/p/3554182.html八、TCP和UDP的区别
- TCP是面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
- TCP提供可靠的传输,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
- TCP面向字节流,UDP是面向报文。
- TCP提供了拥塞控制机制,而UDP没有。
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
九、get和post的区别
- get通过url传递参数,post将参数放在request body中,post更加安全。
- get请求在url中传递的参数是有长度限制的,而post没有。
- 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
- 索引的类型
十、Spring框架
1. Spring常用注解
@Component @Controller @ Service @ Repository @Autowired @Resource
2. Spring Bean的作用域
singleton;prototype;request;Session;global-session
3. Spring中用到的设计模式
工厂模式;单例模式;代理模式等
4. spring IOC
IOC–Inversion of Control控制反转。当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例对象。但在spring中创建被调用者的工作不再由调用者来完成,、而是由spring容器来完成,然后注入调用者 直接使用。
5. spring AOP
AOP是面向切面编程,是通过动态代理的方式为程序添加统一功能,集中解决一些公共问题。
6. spring 的优点
(1) 通过spring容器来创建对象,以及管理对象间的依赖关系,降低了组件之间的耦合性;(也是IOC的优势)
(2)通过将公共的功能抽离出来,然后使用AOP为所需模块动态的添加职责,使每个模块可以更好地处理自身的核心业务,也降低了组件之间的耦合性;
(3)spring 提供了多个模块,例如事务管理,定时任务等;
(4)spring 具有高度开放性,我们可以只使用我们所需的spring部分模块;
(5)spring 对很多主流框架提供了集成支持。 如mybatis等;
7. Spring管理事务有几种方式
1、编程式事务,在代码中硬编码。(不推荐使用)
2、声明式事务,在配置文件中配置(推荐使用)
(1)基于XML的声明式事务
(2)基于注解的声明式事务
8. 创建spring 容器的方式
BeanFactory ;ApplicationConttext
9. spring中自动装配的方式有哪些?
通过xml配置autowire属性; @Autowired注解;@Resource注解
10. springMVC的流程?
(1)用户发送请求至前端控制器DispatcherServlet
(2)DispatcherServlet收到请求调用HandlerMapping处理器映射器。
(3)HandlerMapping根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
(4)DispatcherServlet通过HandlerAdapter处理器适配器调用Controller
(5)执行Controller(处理器,也叫后端控制器)。
(6)Controller执行完成返回ModelAndView
(7)HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
(8)DispatcherServlet将ModelAndView传给ViewReslover视图解析器
(9)ViewReslover解析后返回具体View
(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
(11)DispatcherServlet响应用户
11. spring MVC的优势
(1)使用了MVC的开发模式,将业务层,视图层,控制层分隔开,有利于开发和维护;
(2)可以任意使用各种视图技术,而不仅仅局限于JSP。
十一、操作系统
- 进程与线程的区别,进程间如何通信,线程间如何通信?
链接: https://blog.csdn.net/li2011014203/article/details/78367055 - 内存寻址的方式?
十二、常见算法
- 数组去重
- 合并两个有序数组或链表
- 判断链表有无环,如果有,返回环的入口
- 斐波那契数列
- 阶乘
- 单链表反转
- 快速排序,冒泡排序
十三、设计模式
- 单例模式
- 工厂模式
- 观察者模式
链接: https://www.cnblogs.com/cr330326/p/5627658.html