1..Spring是什么

Spring是一个轻量级的loc和aop容器框架;

2..Spring的优点

Spring属于低侵入式设计,代码污染极低;

Spring提供了AOP技术,从而提供更好的复用;

3..Spring的Ioc理解

Ioc就是控制反转,指创建对象的控制权交给Spring框架管理;

Spring的Ioc有三种注入方式:构造注入,setter注入,根据注解注入;

4..Spring的AOP的理解

AOP面向切面编程;

AOP实现的关键在于代理模式,主要分为动态代理和静态代理;

5..Spring的通知类型有哪些

前置通知,后置通知,环绕通知,返回后通知,抛出异常后通知;

6..Spring Bean的生命周期

实例化--->属性赋值-->初始化-->销毁;

7.vue的生命周期

八个:创建前后-->载入前后-->更新前后-->销毁前后;

8.ArrayList和LinkedList的区别

ArrayList底层是动态数组,查询速度很快,但是插入数据慢;

LinkedList底层是链表结构,插入数据快,但是查询速度慢;

9.如何实现一个IOC容器

配置文件配置包扫描路径;

递归包扫描获取.class文件;

反射,确定需要交给IOC管理的类;

对需要注入的类进行依赖注入;

10.Spring Cloud

底层协议:Http协议

注册中心:eureka

Java基础

1.JDK和JRE有什么区别

JDK是Java开发工具包,提供了Java的开发环境和运行环境。

JRE运行环境,为Java的运行提供了所需环境

2.==和equals的区别是什么

==比较的的是地址值

equals比较的是值是否相等

3.两个对象的hashCode()相同,则equals()也一定为true,对吗?

不对,两个对象的hashCode()相同,equals不一定为true;

4.final在Java中有什么作用

final修饰的类叫做最终类,该类不能被继承;

final修饰的方法不能被重写;

final修饰的变量叫常量,常量必须初始化,初始化之后的值就不能被修改;

5.Spring属于基础的数据类型吗

Spring不属于基础类型,基础类型有8种,byte,boolean,char,short,int,float,long,double;

6.Java中操作字符串都有哪些类:Spring,SpringBuffer,SpringBuilder

Spring生成的对象是不可变的对象,每次操作都会生成新的Spring对象,而SpringBuffer,SpringBuilder可以在原有对象的基础上进行操作;

SpringBuffer和SpringBuilder最大的区别在于,SpringBuffer是线程安全的,而SpringBuilder是非线程安全的,但SpringBuilder的性能却高于SpringBuffer的,

所以在单线程环境下推荐使用SpringBuilder,多线程的环境下推荐使用SpringBuffer;

7.Spring a = "i"与String a = new String("i")一样吗?

不一样,因为内存的分配方式不一样.String a = "i" 的方式,Java虚拟机会将其分配到常量池中;而String a = new String("i") 则会被分到堆内存中;

8.如何将字符串反转

使用StringBuilder或者StringBuffer的reverse()方法;

9.Spring类的常用方法都有哪些

indexOf():返回指定字符的索引

charAt():返回指定索引处的字符

replace():字符串替换

trim():去除字符串两端空白

split():分割字符串,返回一个分割后字符串数组

getBytes():返回字符串的byte类型数组

length():返回字符串的长度

toLowerCase():将字符串转成小写字母

toUpperCase():将字符串转成大写字符

substring():截取字符串

equals():字符串比较

10.抽象类必须要有抽象方法吗

不需要,抽象类不一定非要有抽象方法

11.普通类和抽象类有哪些区别

普通类不能包含抽象方法,抽象类可以包含抽象方法;

抽象类不能直接实例化,普通类可以直接实例化;

12.抽象类能用final修饰吗

不能,定义抽象类就是让其他类继承的,如果定义为final该类就不能被继承,这样就会产生矛盾,所以final不能修饰抽象类;

13.接口和抽象类有什么区别

实现:抽象类的子类使用extends来继承;接口必须使用implents来实现接口;

构造函数:抽象类可以有构造函数;接口不能有;

main:抽象类可以有main方法,并且我们能运行它;接口不能有main方法;

实现数量:类可以实现很多接口;但是只能继承一个抽象类;

访问修饰符:接口中的方法默认实现public修饰;抽象类的方法可以是任意访问修饰符;

14.Java中IO流分为几种

按功能来分:输入流,输出流;

按类型来分:字节流和字符流;

字节流和字符流的区别是:字节流可以传输图片,视频;而字符流只能传输文本文档;

15.files的常用方法都有哪些

Files.exists():检测文件路径是否存在;

Files.createFile():创建文件;

Files.createDirectory():创建文件夹;

Files.delete():删除一个文件或目录;

Files.copy():复制文件;

Files.move():移动文件;

Files.size():查看文件个数;

Files.read():读取文件;

files.write():写入文件;

16.Spring中Bean的注入方式

基于XML的配置

基于注解的配置

基于Spring config的配置;

容器

16.Java容器都有哪些

List容器,Set容器,Map容器;

17.Collection的作用

java.util.Collection是一个接口集合;它提供了对集合对象进行基本操作的通用接口方法;其直接继承接口有List与Set;

18.List,Set,Map之间的区别是什么

List是有序的,Set是无序的;List元素可以重复,Set元素是不可重复的

Map线程安全,Set线程不安全;

19.HashMap的实现原理

HashMap的基本结构就是两种,一个是数组,另外一个是模拟指针,HashMap实际上是链表的数据结构,即数组和链表的结合体;

20.HashSet的实现原理

HashSet底层由HashMap实现

HashSet的值存放与HashMap的key上

HashMap的value统一为PRESENT

21.如何实现数组和List之间的转换

List转换成数组:调用ArrayList的toArray方法

数组转换成List:调用Arrays的asList方法;

22.Array和ArrayList有何区别

Array可以容纳基本类型和对象,而ArrayList只能容纳对象

Array是指定大小的,而ArrayList大小是固定的

Array没有提供ArrayList那么多功能,比如addAll,removeAll和iterator等

23.迭代器Iterator是什么

迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,迭代器通常被称为"轻量级"对象,因为它创建代价小;

24.Iterator和ListIterator有什么区别

Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List;

Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向;

多线程

25.并行和并发有什么区别

并行是只两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生;

并行是在不同实体上的多个事件,并发是在同一实体上的多个事件;

一台处理器对应一个线程叫并行,一台处理器对应多个线程叫并发;

26.线程和进程的区别

进程是程序员运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程;

27.守护线程是什么

是个服务线程,就是服务其他线程的

28.创建线程有哪几种方式

继承Thread类创建线程类;

通过Runnable接口创建线程类;

通过Callable和Future创建线程;

29.线程有哪些状态

线程通常都有五种状态,创建,就绪,运行,阻塞和死亡;

30.线程池都有哪些状态

线程池有五种状态:Running,ShutDown,Stop,Tiding,Terminated;

31.在Java程序中怎么保证多线程的运行安全

线程安全在三个方面体现:原子性,可见性,有序性;

反射

32.什么是反射

通过反射可以获取任意类的名称,package信息,所有属性,方法,注解,类型,类加载器等;

获取任意对象的属性,并且能改变对象的属性

调用任意对象的方法;

反射的方式:

Class.forName(“类的全路径”);

类名.class

对象.getClass();

33.什么是Java序列化

序列化:将Java对象转换成字节流的过程;

反序列化:将字节流转换成Java对象的过程;

34.怎么实现动态代理

首先必须定义一个接口,还要有一个InvocationHandler处理类.

对象拷贝

35.为什么要使用克隆

想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java语言中克隆针对的是类的实例;

36.如何实现对象克隆

两种方式:1.实现Cloneable接口重写Object类中的clone()方法;

2.实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆;

37.深拷贝和浅拷贝区别是什么

浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化,这就是浅拷贝;

深拷贝是将对象及值复制过来,两个对象修改其中任意的值不会改变,这就是深拷贝;

Java Web

38.session 和 cookie 有什么区别

1.存储位置不同,Cookie在浏览器端存储,Session在服务器端存储;

2.存储容量不同,Cookie存储容量很小,Session存储容量可以很大;

3.安全性不同,Cookie安全性较低,Session安全性很高;

39.Session的工作原理

session的工作原理是客户端登录完成之后,服务器会创建对应的session,session创建完之后,会把session的id发送到客户端,客户端再存储到浏览器中;

这样客户端每次访问服务器时,都会带着sessionid,服务器拿到sessionid之后,在内存找到与之对象的session这样就可以正常工作了;

40.如何避免sql注入

PreparedStatement接口(简单又有效的方法);

使用正则表达式过滤传入的参数

字符串过滤

异常

41.throw和throws的区别

throws是用来声明一个方法可能抛出所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理;

而throw则是指抛出的一个具体的异常类型;

42.final,finally,finalize的区别

final是最终

finally是在try--catch代码块中,处理异常时使用,就是出现异常了,也会执行此代码,通常用来关闭资源;

finalize是一个方法 , 该方法一般由GC垃圾回收器来调用

43.try-cathch-finally中那个部分可以省略

catch可以省略;

44.常见的异常类有哪些

NullPointerException:当应用程序试图访问空对象时,则抛出该异常;

SQLException:提供关于数据库访问错误或其他错误信息的异常;

IndexOutBoundsException:指示某排序索引超出范围时抛出;

网络

45.get和post请求有哪些区别

GET能被缓存,POST不能缓存;

GET在浏览器回退时是无害的,而POST会再次提交请求;

GET请求只能进行url编码,而POST支持多种编码方式;

46.如何解决跨域

在京淘项目中用到了注解@Cross Origin来解决跨域

设计模式

47.说一下你熟悉的设计模式

设计模式一共有23种,我们常用的有单例模式,工厂模式;

单例模式中有懒汉式写法和饿汉式写法,懒汉写法线程不安全,饿汉线程安全;

饿汉式:获取实例前他自己就先创建了实例,不等人,自己做;

懒汉式:等到获取实例的时候才去创建,等你来我在做;

Spring/Spring MVC

48.为什么要使用spring

Spring是一个轻量级的控制反转(Ioc)和面向切面(Aop)的容器框架;

轻量:从大小与开销两方面而言Spring都是轻量的;完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布;并且Spring所需的处理开销也是微不足道的;

此外,Spring是非入侵式的;代码污染极低;提供了AOP技术,有很好的复用性;

控制反转:Spring通过一种称控制反转的技术促进了松耦合

aop面向切面编程:

封装重复的代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性;

利用AOP可以对业务逻辑的各个部分进行隔离,

从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发的效率。

IOC:

IOC容器只要是用来管理对象之间的关联,降低对象的耦合性;

借助于"第三方"实现具有依赖的对象之间的解耦;

49.Spring常用的注入方式有哪些

Spring通过DI依赖注入实现IOC控制反转,常用的注入方式主要有三种

构造方法注入 , setter注入 , 基于注解注入;

50.Spring MVC的工作流程

DispatcherServlet(前端控制器)

HandlerMapping(处理器映射器)

HandlerAdapter(处理器适配器)

controller(处理器)

ViewReslover(视图解析器)

View(视图)

1.用户发送出请求到前端控制器

2.前端控制器收到请求调用处理器映射器

3.处理器映射器找到具体的控制器,生成处理器对象,返回给前端控制器

4.前端控制器调用处理器适配器

5.处理器适配器调用具体的处理器

6.处理器执行完返回执行完的对象

7.处理器适配器将处理器执行结果对象返回给前端控制器

8.前端控制器将接受到的对象传给视图解析器

9.视图解析器解析后返回具体的视图

10.前端控制器进行渲染响应给用户

51.正向代理和反向代理

正向代理可以屏蔽或隐藏客户端的信息(了解),保护了客户端的信息;

反向代理:客户端发来请求先由反向代理服务器拦截,然后反向代理服务器把请求转发给其他服务器,这样客户端就不知道访问的那台服务器,保护了服务器的信息;通常用Nginx做反向代理;可以对客户端隐藏服务器的IP地址

Spring Boot

52.什么是Spring Boot

主要是简化了Spring的难度,省略了繁重的配置,提供了各种启动器;

SpringBoot整合了SSM三大框架;

53.Spring Boot有哪些优点

容易上手,提升开发效率,开箱即用,远离繁琐配置;避免大量的Maven导入和版本冲突;

Spring Boot的核心注解是很什么

@SpringBootApplication,加载启动类上面的;

@ComponentScan:Spring组件扫描;

Redis 数据类型

五种类型与类比java的模型

  • string --> String
  • hash --> Hashmap
  • list --> LinkList
  • set --> HashSet
  • sorted_set --> TreeSet

第二阶段面试题

1.数据库里索引的作用

主要是为了增加数据查询的速度,而且一张表里添加索引不能超过6个;

创建普通索引:create ind ex 索引名 on 表名(字段名)

查看索引:show index from 表名

2.什么是数据库的事物

事物就是为了保证原有事物完整性和一致性;

3.事物的四大特征

原子性,一致性,持久性,隔离性;

4.数据库里的字段有哪些,各有什么用

主键约束:保证了值得唯一,不能为空,且可以自动递增;

外键约束:两表之间的关联用外键约束;

非空约束:保证了该字段的内容 不能为空;

唯一约束:保证了值得唯一;

默认约束:给指定的字段设置默认值,不输入值时就是设定的默认值;

5.数据库的优化方案有哪些

查询时,能不用*就不用,尽量写全字段名称;

添加索引;每张表控制在6个索引以内;

尽量避免使用order by;

查看慢查询日志,找出执行时间长的SQL进行优化

6.什么是Spring IOC

IOC是Spring的控制反转;把一个类放到Spring容器中,有Spring容器控制对象的生命周期;

7.多表联查的方式

笛卡尔积方式,join方式,子查询;

8.条件查询

满足了条件的才查 distinct(去重) / where(过滤条件) / like(模糊查询) / limit(分页) /order by(排序) / between...and[在..之间]

9.聚合函数

概述 指把一列的值,聚合在一起,统一做分析 max() / min() / sum() / avg() / count()

使用聚合函数一定要分组;

10.MySQL中都有哪些触发器?

  • Before Insert
  • After Insert
  • Before Update
  • After Update
  • Before Delete
  • After Delete

11.MySQL的隔离级别

读取未提交;

读取已提交;

可重复读;(默认是可重复读)

可串行化;

Java面试题自我总结相关推荐

  1. java后台面试自我介绍_java腾讯远程面试后台研发岗面试题分享

    分享一个腾讯远程面试java后台研发岗位的面试经过,简单来说,自我介绍.经历分享.问题解答以及敲代码. 1. 上来先自我介绍. 2. 讲讲自己的项目经验. 3. ArrayList和LinkedLis ...

  2. Java后端面试题自我总结

    文章目录 前言 一.Java基础篇 ==final和static的区别== ==String a = "123"; String b = "123"; a=== ...

  3. java写测试小工具,java试题自我测试小工具

    java试题自我测试小工具 北京石油化工学院 数理系 科 072 071616 刘红育 1 Java 语言综合设计实验报告 --GUI 编程设计题目: Java 试题自我测试小工具 班级: 学号: 姓 ...

  4. CentOS部署Harbor镜像仓库(1),java技术栈自我理解面试题通俗解说

    []( )环境信息 今天要部署的Harbor版本是1.9.0,本次部署用的机器信息如下: 操作系统:CentOS Linux release 7.7.1908 Docker:19.03.2 docke ...

  5. 46 道阿里巴巴 Java 面试题,你会几道?

    做技术的有一种资历,叫做通过了阿里的面试. 这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐. 希望对大家帮助,祝面试成功,有个更好的职业 ...

  6. Java面试题:kafka幂等性+事务

    一面: hashmap,怎么扩容,怎么处理数据冲突?怎么高效率的实现数据迁移? Linux的共享内存如何实现,大概说了一下. Linux 中的用户模式和内核模式是什么含意? 在 Java 中 Lock ...

  7. java builder pool_每周10道Java面试题:String, String Pool, StringBuilder

    每周10道 Java 面试题由 ImportNew 整理编译自网络. 1. 写出下面代码的运行结果. int src = 65536; Integer dst = new Integer(65536) ...

  8. 最强京东Java面试题(共现场4面)

    一面(基础面:约1个小时) 自我介绍,主要讲讲做了什么和擅长什么 springmvc和spring-boot区别 @Autowired的实现原理 Bean的默认作用范围是什么?其他的作用范围? 索引是 ...

  9. 最新蚂蚁金服Java面试题:Docker+秒杀设计+RocketMQ+亿级数据设计

    蚂蚁金服一面: 1 自我介绍 2 讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机. 3 hashmap的实现,以及hashmap扩容底层实现. 4 NIO ...

最新文章

  1. jsp 特殊字符转义
  2. express ajax分页实例,element+express+mongoose实现分页查询
  3. php join a.id b.id,mysql,sql_MySQL A left join B on B.cid=A.id 左链接查询失败,求解,mysql,sql - phpStudy...
  4. Vue框架之条件与循环的使用
  5. 【学习笔记】一:JavaScript简介
  6. 【优化求解】基于matlab粒子群算法求解干扰受限无人机辅助网络优化问题【含Matlab源码 230期】
  7. 安装与配置OCS服务器时可能会出现的问题
  8. NumPy库---介绍
  9. c语言程序设计题题库,c语言程序设计试题题库含答案
  10. 电子元器件封装知识大全(内含AD封装库下载资料)
  11. visio教程仓库流程图_完整的VISIO教程(绝对干货)
  12. linux编译webengine,am3352请问如何在linux3.8上移植带有webengine的qt5?
  13. 阿里云消息服务(MNS)简单介绍
  14. 同一个服务器装oracle,windows下同一台服务器上装有两个ORACLE数据库实例,通过命令启停数据库...
  15. FBreader问题记录及多端同步心得开篇
  16. 【ShareSDK社会化分享】新浪微博分享网络图片问题
  17. raspberry pi系统配置
  18. 李峋的爱心表白代码来了
  19. Win10问题篇:解决电脑连不上网的问题。
  20. 2022-4-28作业

热门文章

  1. 设计UI的语言——XAML
  2. 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册
  3. 计算机选择题7,计算机选择题7.doc
  4. delegation机制
  5. Java 12 来了,我们应该采用嘛?
  6. Kafka 使用SASL接入点PLAIN机制收发消息(集成Spring Boot)
  7. ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker
  8. win11 22H2 连接共享打印机失败
  9. java中什么叫引用
  10. 媒体报道 | 《数据安全治理自动化技术框架(DSAG)》白皮书诞生,探索数据安全治理技术“最优解”