2021-07-03java

3 篇文章 0 订阅

1.hashmap底层是红黑树,数组+链表+红黑树。
2.list是集合,继承colitaon接口,是存储数据的。map是一个顶层接口,
底层实现类有hashmap,hashmap由红黑树构成,map是用来存储键值对的。
3.spring 两大核心,Ioc和AOP,是指控制反转和面向切面编程。
控制反转对象创建由程序变成了容器。
4.创建对象的方式:new,静态工厂,实例化工厂,spring工厂创建创建复杂对象。
5.AOP指面向切面编程,切入点表达式有within,annotation注解.通知有before,after,afterthrowing,afterreturning,
around,pointcat,切入点表达式+通知,aspact标识是一个切面。
6.重载发生在运行期,方法名相同,参数不同。
重写发生在编译器,子类继承父类,实现类实现接口,重写接口中的方法。
7.string 是一个不可变的字符串。stringbuilder具有安全性,stringbuff.
8.数据库类型,关系型数据库,非关系型数据库。
9.数据库操作4大原则,原子性,持久性,一致性,隔离性。
10.连接池,c3p0,dbcp,BoneCP,hircp.
11.Spring bean的作用域,单例singleton,prototype,request,session.application.
12.获取反射对象的三种方式(类名.class,class.forname,new 对象)
13.oop指面向对象编程,aop是面向切面编程是oop的补充。
14.jvm的内存结构,堆,栈,方法区,栈中存放地址和变量。
堆中存对象,开辟新空间。
15.队列和栈的区别,队列是先进先出,FIFF.栈是后进先出。
16.封装-封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

  1. 良好的封装能够减少耦合。

  2. 类内部的结构可以自由修改。

  3. 可以对成员变量进行更精确的控制。

  4. 隐藏信息,实现细节。
    17.序列化是将对象转为字节,反序列化是字节转对象,重建对象。
    是对数据的重建和保存。保证对象的完整性和可传递性。
    反读,正写序列化。
    18.线程是操作系统调度的最小单位。是一个轻量级进程,一个进程中有多个线程。
    线程拥有自己的计数器,堆栈和局部变量,并且能访问共享的内存变量。
    处理器会通过快速切换这些线程,来执行程序。
    Java本身就是多线程,main线程是程序的入门。gc是守护线程。
    为什么使用多线程,更多处理器核心,相比单线程,提高性能。
    更快响应时间,更好的编程模型。
    线程的优先级:理论上优先级高的线程分配时间高于低的线程。
    线程的生命周期:new,runnable ,blocked,waiting,time-waiting,terminated.
    19.IOC,beanfactory,beanFactory是ioc容器的顶级接口。
    20.mysql的本质是存储数据的,数据结构是用来存储数据的。
    21.常用算法,冒泡排序,
    22.dialog是一个弹窗。
    23.orcal一般用在银行,金融机构。
    24.什么是restFul风格,是一种请求和响应的方式,包括get,post
    put,delete.
    25.自动填充功能,
    26.异常分为运行异常,编译异常。throwable是顶级接口
    27.transactional对方法进行事务控制.
    28.static修饰成员变量和方法
    静态方法不能用this和super关键字
    29.this代表本类对象的引用,指向本类已经创建的对象。
    30.super代表对父类对象的引用,指向父类对象。
    31.4大引用,强,弱,软,虚。
    32.事务:
    33.mybatis只关注sql,不关注jdbc,mybatis简化封装了jdbc
    mybatis可以将要执行的SQL语句使用xml文件的方式或者注解方式配置起来,
    在执行时,将Java对象中携带的参数值和SQL骨架进行映射,生成最终要执行的SQL,
    将执行的结果处理后再返回。

  5. mybatis的优势
    1)JDBC连接访问数据库有大量重复的代码,而mybatis可以极大的简化JDBC代码
    2)JDBC没有自带连接池,而mybatis自带的有连接池
    3)JDBC中是将SQL语句、连接参数写死在程序中,而mybatis是将SQL语句以及连接参数都写在配置文件中。
    4)JDBC执行查询后得到的ResultSet我们需要手动处理,而mybatis执行查询后得到的结果会处理完后,将处理后的结果返回。
    35.mybatis底层会基于反射创建类的对象实例,使用无参构造创建
    36.mybatis默认支持log4j日志框架
    37.string 底层被final修饰,不能赋值。
    38.动态SQL:指sql语句可以根据参数值不同,生成不同的sql语句
    39.junit框架可以不提供main函数,并且不创建对象的情况下,
    直接可以运行一个非静态方法。
    40.单表查询,where子句查询,模糊查询like(%通配0个或多个,—通配任意字符)
    多行查询count(*\列名,max,min,sum,avg),分组查询,排序查询group,
    排序order by,asc升序,desc降序,分页查询limit.
    41.char和varchar的区别,char是定长字符串,varchar是变长字符串
    他们中的n都是字符数,char如果存入的数据小于最大字符数n,
    则剩余空间用空格填充,所以char会造成空间浪费,存固定长度的数据
    如(学生编号,员工编号,身份证号)
    42.varchar不会造成空间浪费,存储不固定数据(用户名/密码/性名自我描述)
    char存储效率不如varchar
    43.日期类型:date-日期,time-时间,datetime-日期+时间
    44.mysql字段约束,主键约束,如果一个列添加主键约束,
    列中值不能为空,且不能重复,主键的列可以唯一的表示一行表记录。
    45.非空约束:如果一个列添加了非空约束,那么这个列就不能为空,
    但可以重复
    46.唯一约束:如果一个列添加唯一约束,那么这个列的值就是唯一,
    也就是这个列的值不能重复,但可以空。
    47.外键约束:外键:用来通知数据库,两张表数据之间具有对应的列
    维护表之间的关系。
    48.表关系,一对多(多对一),一对一,多对多
    49.JDBC自身没有连接池,框架自带连接池,需要连接时直接从连接池获取
    用完还回连接池,提高执行效率。
    50.如何使用连接池,启动程序,创建连接放入池中,用户需要时,
    从连接池获取对象,基于连接池访问数据库,可以减少连接创建和关闭的
    次数,提高程序执行效率。
    51.什么是事务,事务是将一堆sql语句绑定在一起执行。要么同时成功,
    要么同时失败。
    52.事务的4大特征,原子性,一致性,隔离性,持久性。
    原子性,事务中的sql是一个整体,不能被分割,
    一致性,在事务执行前后的业务数据之和是保持一致的。(提交和回滚)
    并发性,在事务并发时,一个事务理论上看不到另一事务的状态,
    事务之间是相互隔离的
    持久性,一旦事务提交之后,事务中对数据的更新操作会持久的保存
    到数据库中(最终更新到硬盘的数据文件),反过来说,在事务提交之前
    对数据的更新操作只是一个临时的数据,没有真正修改数据库
    53.开启事务:begin;\ start transaction
    结束事务 提交(commit),回滚(rollback)
    54.Maven是一个项目管理工具,可以简化项目配置,统一项目结构,
    使开发者的工作变得简单,jar包称为依赖
    55.本地仓库,就是本地硬盘上的一个目录,这个目录用于存放Maven
    帮我们下载的所有jar文件
    56.配置maven的远程仓库,如果不配置远程仓库,maven会从中央仓库下载
    所需要的jar包和插件,中央仓库下载慢,保存到本地仓库。
    57.web应用的核心配置文件,servlet,session,配置监听器,过滤器。
    58.根据坐标来找从远程仓库下jar包
    59.线程的状态,新建,运行,就绪,阻塞,死亡
    60.Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系
    61.spring的优势,方便解耦,简化开发-Aop的支持-声明式事务的支持-
    方便程序的测试-方便集成各种优秀框架-降低javaee API的使用难度
    62.spring模块构建在核心容器上,定义了创建和管理bean的方式。
    63.spring-core和spring-bean模块提供了spring的DI和IOC容器
    64.web 是spring web和springwebmvc模块和RESTful的web服务
    65.spring-test模块,简化了创建单元和集成测试。
    66.Ioc对象的创建,初始化。存储管理交给spring容器。
    ioc是通过描述(xml或注解)来生成或者获取对象的技术。
    67.spring中需要管理的对象称为spring Bean,而spring中管理这些
    bean的容器称为spring ioc
    68.new对象的方式造成程序之间耦合性提升,new对象提高类与类之间
    依赖关系,即代码之间的耦合性。
    69.一个元素代表一个bean,id属性指定bean的唯一名称,
    class属性指定bean的完全限定类名

  6. 获取Spring的IoC容器:

    • 将XML配置文件 bean.xml 传递给 ClassPathXmlApplicationContext
    • 的构造方法,Spring会读取其中的配置,将里面配置的Bean对象装配到IoC容器中。
      使用getbean方法获取对应的pojo并输出
      71.spring会将创建的bean存储到spring容器中,也就是beanpool,
      bean池底层是一个map.
      72.beanFactory接口常用的方法,getBean(string name)(class requiredType)
      containsBean,getType,isSingleton,isPrototype.
      73.bean对象的作用范围singleton单例(默认)如果不指定scope.默认是单例
      单例节省内存空间,减少资源浪费,缺点可能引发线程安全问题
      74.prototype,多实例的bean是每次获取时才会创建,而且创建的实例不会
      存在bean池中,不会引发线程安全问题,每次获取会创建新实例,
      会占用服务器的内存空间,造成资源浪费
      75.什么时候使用单例和多例?
      使用频次上,频率高,使用单例,这样会将bean对象存储在bean池中,
      减少对象创建,减少资源浪费。
      在没有线程安全问题的前提下,没必要每次获取创建对象,即浪费cpu
      又浪费内存
      76.如果使用频率低,没必要将对象存储到map中,建议使用多例,
      一个对象被多个线程共享,并且对象中存有共享数据,
      一旦被多个线程所操作,就可能产生线程不安全问题,用多例
      77.依赖注入:组件之间的依赖关系由容器在应用系统运行期来决定,
      也就是由容器动态地将某种依赖关系地目标对象实例注入到应用系统
      中地各个关联地组件中
      78.依赖注入其实就是,在创建对象地同时或之后,如何给对象地属性赋值
      79.无参构造创建对象,有参构造为对象地属性赋值
      80.对象由spring Ioc创建,spring提供两种方式为属性赋值,set方法,构造方法
      81.set注入就是在类中提供set方法,spring底层会调用set方法为变量赋值
      82.普通属性注入,在user类中声名name和age属性,添加setter和getter方法
      以及toString方法
      83.普通属性(基本数据类型和string 类型)直接通过value注入即可
      84.构造方法注入:使用构造函数,为成员变量赋值,为成员变量赋值
      是通过配置的方式,让spring框架在创建bean对象的同时,为成员变量赋值
      85.如果要添加有参构造函数,强烈建议同时添加无参构造函数,否则
      会在很多地方使用时会抛出异常。
      86.普通属性通过value租入即可,对象属性通过ref属性注入
      87.spring boot是基于注解的开发spring IOC
      88.扫描装配bean使用的注解是@component和componentScan
      @Component注解:标记哪个类需要被扫描装配到Spring Ioc容器中
      @ComponentScan:标记采用何种策略去扫描装配的Bean(
      默认扫描当前类所在的包及其子包)
      89.通过@Value注解为bean的属性赋值
      90.自动装配@Autowired可以将定义好的bean作为属性注入到其他bean
      的属性上,这一过程是自动完后的。
      91.bean对象的生命周期,指一个对象何时创建,何时销毁以及创建之前
      所处的状态,单例对象的生命周期和容器相同,创建,存储,销毁
      92.spring 容器只负责多例对象的创建和初始化,不负责存储和销毁
      当对象长时间不用时,由java垃圾回收机制赋值回收。
      93.springmvc是spring框架的一个模块,spring和springmvc无需中间
      整合层整合。servlet的缺点不能处理多个请求,需要配置信息xml文件
      一律使用字符串接受,类型转换麻烦。
      94.spring mvc原理:用户发送请求至前端控制器,前端控制器收到请求
      调用处理器映射器,处理映射器找到具体的controller并将controller返回给前端控制器
      前端控制器调用处理器适配器,处理适配器经过适配器调用具体的controller处理请求
      前端控制器将执行结果传给视图解析器,前端控制器根据model对view
      渲染响应给用户。
      95./表示拦截请求。
      96.框架,将公共的模块(功能)进行高级的抽取(接口/父级)
      形成通用的代码块,引入特定的jar包/class/方法 即可以使用框架的功能
      实际意义,简化代码的开发,提高软件扩展性。
      97.spring的主要作用是将其他框架进行整合,是针对bean的生命周期
      进行管理的轻量级容器。
      98.本地仓库中的jar包主要作用是被自己的项目进行依赖(松耦合)
      99.maven坐标主要作用是检索jar包文件,maven通过这样的方式管理所有
      的开源jar包(中央仓库/私服镜像)
      100.封装是将属性封装到类中或s对象中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值