1ldk
  1. SpringBoot中的核心注解注解:@SpringBootApplication等价于默认属性使用@Configuration(实现配置文件),@EnableAutoConfiguration(自动配置文件)、@ComponentScan(实现Spring组件扫描)。

  2. SpringBoot热部署:Spring-boot-devtools

  3. SpringBoot配置加载顺序:properties、yaml、系统环境变量、命令行参数...

  4. instanceof关键字:测试一个对象是否为一个类的实例。

  5. 拆装箱:基本数据类型<——>包装器类型,装箱用valueOf方法,拆箱用intValue方法(如果是Integer类型)

  6. 消除浮点数误差:Bigdecimal,也可用于金融数据类型

  7. 面向对象的特征:封装(把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义接口,提高安全性);继承(从已有类中创建继承新类,提高软件系统的延续性),多态(允许不同子类型的对象对同一消息做出不同反应);抽象(只关注对象的属性和行为,不关注细节)

  8. 运算符+=有隐含的强制类型转换

  9. 重写:子类将父类的方法重新写一遍,方法名、参数列表、返回类型必须相同。

    重载:在一个类中,同名的方法有不同的参数列表,对返回类型不做要求。

  10. equals比较的是内容,==比较的是地址

  11. final的用法:被final修饰的类不可以被继承;被final修饰的方法不可以被重写;被final修饰的变量不可以被改变;被final修饰的方法,JVM会尝试将其内联,以提高运行效率;被final修饰的常量,会在编译阶段存入常量池中。

  12. String是字符串,是一个只读对象;StringBuffer和StringBuilder都继承了AbstractStringBuilder类,都用来进行字符串操作;StringBuffer线程安全,效率低,StringBuilder线程不安全,效率高。

  13. Java类只能单继承,但有可以有多个接口

  14. 抽象类不能实例化,普通类可以实例化;抽象类可以包含抽象方法,普通类不能包含抽象方法。

  15. 接口特点:没有构造方法,不能实例化,可以多继承。

  16. 抽象类特点:只有行为概念,使用abstract修饰,没有方法体,子类必须重写这些抽象方法;只有抽象类可以包含抽象方法;抽象类只能被继承。

  17. hashCode作用:返回的是根据对象的内存地址计算出的值,相当于对象中唯一识别的信息。哈希算法可以提高集合中查找元素的效率。

  18. Java的四种引用:强软虚弱

  19. Java四种创建对象的方式:new;反射;clone;序列化

  20. 产生hash冲突时的解决方案:拉链法、开放地址法、双哈希法

  21. static用法:静态变量、静态方法、静态块、静态内部类

  22. JDBC操作步骤:加载数据库驱动类,获取数据库连接对象,获取sql会话对象,执行sql语句,处理返回结果,关闭连接

  23. 使用jdbc防止sql注入:使用preparedStatement类,而不是Statement类

  24. &是位运算符,&&是布尔逻辑运算符

  25. 内部类:静态内部类、成员内部类

  26. 断言(assertion)是一种软件开发中常用的调试方式

  27. 排序方法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序

  28. 构造器不能被重写,可以被重载

  29. 四种标准元注解:@Target修饰对象范围,@Retention定义保留时间长短,@Documented描述javadoc,@Inherited阐述某个被标注的类是被继承的

  30. 注解Annotation是一个接口,程序可以通过反射来获取指定元素的Annotation对象,然后该Annotation对象来获取注解中的元数据信息

  31. HashMap:键值对,继承AbstractMap类,key可以为空(只有一个),value可以为空,线程不安全,效率高

  32. HashTable:键值对,继承Dictionary类,key和value不能为空,线程安全,效率低,比HashMap多elements()方法和contains()方法

  33. Collection是集合类的上级接口,子接口有Set,List,Vector,Stack等等;Collections是集合类的帮助类,提供方法

  34. List:允许重复,有序;Set:不允许重复,无序;Map:使用键值对存储,键不能重复,无序。

  35. Vector:和ArrayList功能类似,数组实现,但支持线程同步。

  36. ArrayList(数组):数组实现,支持随机访问,适合查找不适合增删。

  37. LinkList(链表):用链表数据结构存储数据,适合增删不适合查找。

  38. TreeMap:除Map的特性之外,可排序。

  39. Java异常种类:编译时异常、运行时异常

  40. Java IO流的4个抽象类基类:InputStream,OutputStream,InputReader,OutputReader

  41. Java NIO三大核心部分:Channel(通道),Buffer(缓冲区),Selector(选择区)

  42. NIO和IO的区别:NIO是面向缓冲区的,IO是面向流的

  43. Java反射获取Class对象:Class.forName("类的路径");类名.class;对象名.getClass();基本类型包装类的Type属性

  44. 反射的使用步骤:获取Class对象,调用Class类中的方法,使用反射API来操作信息

  45. 利用反射动态创建对象实例:Class对象的newInstance()方法;调用Constructor对象的newInstance()方法

  46. 序列化是一种处理对象流的机制,将对象的内容进行流化。序列化的实现就是将需要序列化的类实现Serializable接口。

  47. 序列化深clone对象:先使对象实现Serializable接口,然后把对象写到一个流里,再从流读出来重建对象。

  48. HTTP1.1相较于HTTP1.0的优点:可扩展性、缓存、带宽优化、长连接、消息传递、host头域、错误提示

  49. http常见状态码:200成功;302重定向;400客户端请求语法错误;401请求未经授权;403服务器拒绝提供服务;404请求资源不存在;500服务器发生不可预期的错误;503服务器当前不能处理客户端请求,一段时间后可恢复正常

  50. get和post区别:get请求将数据附在URL后,post把提交的数据放在http包体重;get方式提交的数据大小受浏览器限制,post无限制;post安全性更高;

  51. 重定向是客户端行为(改变浏览器地址,两次请求);转发是服务器行为(不改变浏览器地址,一次请求)

  52. Cookie只能存储字符串,由浏览器保存;Session能存储任意对象,由服务器保存

  53. jsp本质上是Servlet的实例,侧重页面显示;Servlet由Servlet容器产生,用来生成动态内容,侧重逻辑控制

  54. jsp四大域对象:PageContext,Request,Session,Application

    jsp九大内置对象:Request,Response,Session,Out,Page,PageContext,Exception,Application,Config

  55. xml是一种可扩展性标记语言。优点是配置文件格式统一,可以在互不兼容的系统间传递数据;缺点是文件格式复杂,占用资源大且不易维护。xml的两种解析器DOM(树形结构)和SAX(事件模型)

  56. Ajax的特点:异步模式,可以实现局部刷新,减少不必要的数据往返减少带宽占用,降低服务器负载。

  57. jsonp是处理跨域get请求的一种常用方案

  58. RestFul是一种软件架构设计风格,提供了一组设计原则和约束条件。可以在url相同的情况下判断请求类型来区分GetMapper或者PostMapper,还可以隐藏传递数据提高安全性。

  59. WebService是一种跨编程语言和跨操作平台的远程调用技术

  60. 实现多线程三种方式:继承Thread类;实现Runnable接口;实现Callable接口通过FutureTask包装器来创建Thread线程

  61. 实现多线程后要重写run方法用于完成想实现的功能;start方法是一个native方法,将启动一个新线程并执行run方法;yield方法用于暂停线程;join方法强制等待其它线程终止;强行停止线程用interrupt方法中断线程或者stop方法强行终止但stop方法线程不安全

  62. 四种Java线程池:newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor

  63. notify()用于唤醒线程,notifyAll()有可能因为所有线程争抢资源导致死锁

  64. sleep()设定线程休眠时间,线程不会放弃对象锁,到时间后线程继续;wait()线程直接放弃对象锁

  65. synchronized关键字用于解决线程同步问题,可以保证被它修饰的方法或代码块在任意时刻只能有一个执行;synchronized关键字可以修饰实例方法,静态方法,代码块;synchronized属于独占式的悲观锁

  66. 线程池好处:降低资源消耗,提高响应速度,提高线程的可管理性

  67. 线程的生命周期:新建new,就绪runnable,运行running,阻塞blocked,死亡dead

  68. 锁的优化:减少锁持有时间,减少锁粒度,锁分离,锁粗化,锁消除

  69. Spring功能特点:轻量级;IOC控制反转;AOP面向切面编程;容器(创建和管理Bean的生命周期和配置);MVC(对web应用提供高度可配置性);事务管理;JDBC异常

  70. SpringIOC容器:创建并管理Bean的生命周期,通过依赖注入DI来管理组成应用程序的组件,容器通过读取提供的配置元数据来接收对象实例化,配置和组装的指令

  71. 依赖注入的三种方式:构造器注入(基于index或者type),setter方法注入,接口注入(侵入性强不推荐)。在依赖注入中不必创建对象,描述如何创建它们即可,由IoC容器负责装配

  72. Spring中有两种IOC容器,分别是ApplicationContext和BeanFactory。ApplicationContext的特点是使用即时加载,自己创建和管理资源对象,支持国际化,支持依赖注解。IOC的好处是可以减少应用程序代码量,降低耦合度,使程序易于测试,支持即时实例化和延迟加载服务。

  73. Spring配置方式:基于xml配置、基于注解配置、基于Java API配置

  74. Spring的5中Bean scope:Singleton(仅单实例),Prototype(每次请求产生一个新实例),Request(每次Http请求产生一个新的实例,作用域为当前请求),Session(作用域为当前session),GlobalSession

  75. Spring Bean的生命周期:根据配置实例化Bean,依赖注入填充属性,处理Aware接口,Bean的初始化,关闭Bean,销毁Bean

  76. Bean装配是指多个Bean组合绑定在一起,Spring可以自动装配。自动装配的几种方式:byName,byType,匹配xml,构造器函数装配,autodetect装配

  77. 启动注解装配:context:annotation-config标签

  78. 几个Spring常用注解:@Component:将java类标记为bean;@Controller将类标记为MVC控制器,自动导入IoC容器中;@Service组件注解的特化,用于标识服务层;@Repository:将DAO导入IoC容器中,给DAO提供额外的好处;@Required配置bean时显式配置属性值,作用在setter方法上;@AutoWired可以更准确的控制应该在何处以及何种方式进行自动装配;@Qualifier用于配置多个相同类型Bean消除歧义;@RequestMapping用于映射URL请求以及方法

  79. 事务管理两种类型:程序化事务管理,声明化事务管理

  80. AOP:面向切面编程,基本单元是Aspect切面,Aspect由pointcut切点和Advice通知组成,AOP有静态打理和动态代理的实现方式,动态代理有JDK代理和GCLIB代理两种方式

  81. Advice通知的类型:Before,After,After Returning,After Throwing,Around。

  82. 编织Weaving是为了创建一个Advice对象而链接一个Aspect和其它应用类型或对象,编织在运行时执行

  83. Spring MVC就是模型-视图-控制器架构和随时可用的组件,用于分离应用程序的不同方面,同时在这些元素之间提供松散耦合

  84. DispatcherServlet工作流程:前端控制器DispatcherServlet捕获向服务器发送的http请求;HandlerMapper处理器映射器解析URL并获得Handler配置的相关对象;选择一个合适的HandlerAdapter处理器适配器;提取Request模型数据,填充Handler入参,开始执行Handler(Controller);Handler(Controller)完成后,向DispatcherServlet返回一个ModelAndView对象;根据返回的ModelAndView,选择一个合适的ViewReslover视图解析器返回给DispatcherServlet;ViewReslover结合Model和View渲染视图;视图将渲染结果返回客户端

  85. Spring IoC是Spring的核心,设计模式是工厂模式,控制反转就是创建工作交由Spring IoC容器进行而不是调用者,创建被调用者实例的工作也由Spring容器进行,因此依赖注入;Spring AOP是代理模式,将程序中的交叉业务逻辑(日志、安全、事务等)封装成一个切面,注入到目标对象的具体业务逻辑中。

  86. @AutoWired是Spring提供的注解,只按照byType装配对象,如果想按照byName装配需结合@Qualifier使用;@Resource是java原生注解,默认是byName注入,也可以byType注入

  87. Mybatis是一个半ORM框架,内部封装JDBC,连接数据库方便。优点是基于SQL语句编程相对灵活,数据库兼容性强,可以和Spring集成。

  88. Mybatis中,#{}是预编译处理,${}是字符串拼接。#{}可以防止SQL注入

  89. resultMap用于解决实体中的属性名和表中的字段名不同的问题

  90. 在Mapper中传递多个参数:使用@param注解,多个参数封装成Map,在Mapper.xml中使用#{index}指向接口中的参数索引

  91. Mybatis九中动态sql标签:trim、where、set、foreach、if、choose、when、otherwise、bind

  92. Mybatis的xml映射文件中通过配置不同的namespace,可以在不同的xml文件中有相同的id

  93. Mybatis一对一实现用resultMap里面的association节点;一对多实现用resultMap里面的collection节点

  94. Mybatis支持延迟加载,配置项lazyLoadingEnabled

  95. Mybatis一级缓存存储作用域为Session,默认开启;Mybatis二级缓存存储作用域为namespace,需手动开启。

  96. Mapper编写的几种方式:接口实现类继承SqlSessionDaoSupport;使用MapperFactoryBean;使用Mapper扫描器

  97. MySQL引擎:MyISAM(默认)全表锁,不支持事务,不支持外键,并发性差,执行速度快;InnoDB行级锁,支持事务支持自动增长列,支持外键约束,并发能力强,是聚集索引(通过主键查询效率高),处理效率不如MyISAM;Memory引擎;MERGE引擎

  98. MySQL四种索引:主键索引(Primary),唯一索引(Unique),普通索引(index),全文索引(FullText)。索引加快了数据库检索速度,索引降低了插入、删除、修改等维护任务速度,唯一索引可以确定每一行数据的唯一性,索引需要占用存储空间。

  99. 第一范式:列不可以再分;第二范式:行可以唯一区分(主键约束),每个表只描述一件事情;第三范式:表的非主属性不能依赖其它表的非主属性(外键约束),不存在对非主键列的传递依赖

  100. 数据库是事务,事务的特性ACID:原子性,一致性,隔离性,永久性

  101. SQL优化:查询不要用*;用关联查询代替子查询;in用exist代替;or用union代替;避免where判非或判空,这样会使引擎放弃索引。

  102. delete删除表的数据,drop不仅删除表的数据还会删除表的结构

  103. 视图是虚拟的表,具有和表相同的功能。相比于多表查询,视图获取数据更容易

  104. 并发事务的问题:脏读、丢失修改、不可重复读、幻读

  105. SQL事务的四个隔离级别:读取未提交、读取已提交、可重复读(默认)、可串行化

  106. SQL存储优化:用内置函数替代一些循环;事务越短越好;查找语句不要进循环;少使用游标

  107. 触发器是一段能自动执行的程序,当对某个表进行某种操作时触发

  108. varchar和char的区别:varchar长度可变,char长度不可变

  109. 索引底层原理:经过优化的B+树,在所有的叶子节点中增加了指向下一叶子节点的指针

  110. SQL语言包括数据定义DDL,数据操纵DML,数据控制DCL和数据查询DQL四个部分

  111. 数据的完整性约束:实体完整性、域完整性、参照完整性、用户定义的完整性

  112. 数据库并发策略:乐观锁、悲观锁、时间戳

  113. JVM内存区域:线程私有域(程序计数器、虚拟机栈、本地方法区),线程共享区域(Java堆、方法区),直接内存

  114. JVM类加载机制:加载、验证、准备、解析、初始化

  115. JVM三种类加载器:启动类加载器、扩展类加载器、应用程序类加载器。类的加载机制是双亲委派机制

  116. JVM堆分代:新生代Eden,幸存者(from,to),老年代,永久代

  117. JVM性能调优:设置堆内存大小-Xmx;设置新生代大小-XX:NewSize

分类:

技术点:

相关文章: