1.抽象类和接口的区别?
同:
异:
声明上:抽象类使用abstract关键字,接口使用interface关键字
实现上:子类使用extends关键字来继承抽象类;子类使用implements关键字实现接口
构造器:抽象类可以有构造器,接口不能有构造器
访问修饰符:抽象类方法可以任意访问修饰符;接口方法默认修饰符public
字段声明:抽象类的字段声明可以是任意的;接口的字段默认是static和final
多继承:一个类最多只能继承一个抽象类;一个类可以实现多个接口
2.hashmap实现
hashmap集合时map接口的一个实现类,用于存储键值的映射关系,该集合的键和值允许为空,但是键不能重复,且集合的元素时无序的。hashmap是由hash表组成的,其实就是“数组+链表的组合”,数组是主体,而链表是为了解决哈希值冲突而存在的分支结构,所以hashmap集合对增删改查的效率比较高。
9.(1)spring的简化开发IoC的理解? IoC是控制反转,spring通过IoC容器实现对象耦合关系的管理,并实现依赖反转,将对象之间的依赖关系交给IoC容器,实现解耦。IOC负责创建对象,管理对象,装配对象、配置对象,并且管理对象的生命周期。
(2)spring的AOP的理解?
答:面向切面编程,允许程序员通过自定义的横切点进行模块化,将那些影响多个类的行为封装到可重用的模块中。例如:日志输出,不使用AOP就需要日志输出语句放在所有的类中。有了AOP需要把日志输出语句封装成一个可重用模块
3.spring中都用到了哪些设计模式?
工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象实例。
单例模式:Bean默认是单例模式。
代理模式:spring的AOP用到JDK的动态代理和字节码生成。
观察者模式:定义对象键一种的1:n的依赖关系,当一种对象的状态发生改变,所有依赖它的对象的都会得到更新。
4.springboot的核心注解?
springboot是基于快速开发、整合了ssm,简化配置、内嵌服务器。启动类的注解是@springbootapplication是核心注解,其中包括:
@springbootconfiguration组合@configuration注解,实现配置文件的功能。
@enableautoconfiguration打开/关闭自动配置的功能
@componentscan:spring组件扫描
5.final、finally、finalize区别?
final修饰的关键字不能被继承;final修饰的方法不能被子类重写;final的变量是常量,只能被赋值一次。
finally一般作用于try – catch中在处理异常时,通常一定要执行的代码的方法finally中,不管是否出现异常都会执行finally
finalize一般是由垃圾回收器来调用
6.谈谈对spring MVC 的理解?
spring MVC是轻量级的web框架通过模型-视图-控制器分离,对web层进行解耦,简化开发,方便前后端人员的协调配合。spring MVC的主要组件:前端控制器dispatcherservlet、处理器的映射器handlermapping、处理器适配器handleradapter、视图解析器viewresolver
7.spring mvc的常用注解?
@requestmapping:用于请求url映射的注解,可用于类或方法上
@requestbody:实现接收http请求的json数据将json数据转换java对象
@responsebody:将controller返回对象转化为json对象响应给客户
@controller:控制器注解
8.一次http请求过程?
1 建立tcp连接(通过三次握手)。
2 web浏览器向web服务器发送请求行。
3 web浏览器发送请求头
4 web服务器应答
5 web服务器发送应答头
6 web服务器向浏览器发送数据
7 web服务关闭TCP连接
9.http的请求方式?
GET方式:用于请求访问已经被URI识别的资源,通过URL传参给服务器
POST方式:用于传输信息给服务器
GET和POST的区别:
一、get从服务器获取资源,post向服务器发送数据
二、get的传输数据量较小但是效率较高;post传输大量数据
三、get是不安全的因为get请求在URL上是可见的,post是放在请求头部的,是安全的。
10.介绍cookie和session?
cookie是web服务器保存在用户浏览器上文件(key-value)由客户端向服务器发起请求,提取浏览器的用户信息由http发送给服务器。
session是服务器会分配一块储存空间给session浏览器在向服务器请求过程传输cookie包含sessionid,服务器根据sessionid获取会话中的存储信息,确定会话身份信息。
11.介绍常见的Linux命令?
cd 切换目录
cd ../ 退回上级目录
pwd 显示当前工作的绝对路径
ls 显示当前文件夹下的所有文件名
ll 显示当前目录下的所有文件夹的文件名的详细信息
mkdir 创建目录
cat 查看文件命令
tail 查看文件末尾几行
tar 压缩解压缩命令
12.Linux系统进程通信方式?
信号量、消息队列等
13.缓冲池的理解?
利用数组buffer表示具有N个缓冲区的缓冲池,每次投入(取出)一个产品,缓冲池buffer中暂存产品的数组单元指针in(out)加1当(in + 1)%n = out表示缓冲池满;in=out表示缓冲池空。生产者-消费者问题就是利用缓冲池进行异步运行。
关注关注,主页更多的java课程学习路线,笔记,面试等架构资料
