面试常见问题汇总

一.Spring的优点:

   1.低嵌入式设计,代码污染低。

2.Spring中的DI机制将对象之间的依赖关系交给对象处理,减少了组件的耦合性。

   3.spring中的AOP功能可以将遍布于应用各处的代码进行统一管理,在不改变源代码的基础上进行增强处理。

二.Spring对AOP的理解:

   1.AOP一般称为面向切面,可以将遍布于应用各处的代码进行统一管理,在不改变源代码的基础上进行增强处理。

   2.AOP的实现关键在于代理模式,分为静态代理(拦截器)和动态代理(JDK动态代理和CGLIB动态代理)

  • Spring是什么:

Spring是一个轻量级的IOC和AOP容器框架。

常见的配置方式有三种:基于XML配置,基于注解配置,基于java。

  • Spring对IOC的理解:

IOC就是控制反转,是指创建对象控制权的转移,即应用程序在运行时依赖IOC容器来动态注入对象所需要的外部资源。

  • Spring  IOC的几种注入方式:
  1. setter注入
  2. 构造器注入
  3. 注解注入

  • Spring如何处理线程并发问题:

用Threadlocal进行处理,Threadlocal会为每一个线程提供一个独立的线程副本,从而隔离了多个线程访问数据时的冲突。

  • 什么是spring的自动装配

   spring启动IOC时,扫描注解,就会自动查找对应的bean。

  • 基于注解方式注入有哪几种,区别是什么
  1. @Autowired  按照类型注入,如果查询条件不止一个就会按照名称查找。
  2. @Resource   按照名称注入,当匹配不到与名称对应的bean,就用Autowired。

  • Spring框架用到了哪些设计模式(了解三种就可以):
  1. 工厂模式  BeanFactory 用来创建对象的实例。
  2. 单例模式  Bean默认为单例模式。
  3. 代理模式  springAop功能自带拦截器。

  • Springboot的核心配置文件?区别是什么?
  1. Application   用于Springboot项目的自动化配置。
  2. Bootstrap    一些加密解密的场景

                 使用SpringCloud  Config时,需要在bootstrap中添加配置

息。

  • Springboot的核心注解是什么?由哪几个注解组成?

   @SpringbootApplication是核心注解包含以下三个注解:

  1.  springbootConfiguration   实现配置文件的功能
  2. EnableAutoConfiguration   打开/关闭自动化配置的功能
  3. ComponentScan           spring组件扫描

  • 什么是mybatis框架:

       Mybatis是一个半ORM框架,内部封装了JDBC,开发时只需注意sql语句即可。

  • Session和cookie的区别:

      Session是储存在服务端的。

      Cookie是储存在客户端的。

  • 项目开发流程:

      需求调研

      设计阶段

      代码实现

      测试阶段

      运行阶段

      维护阶段

  • 线程的状态:

      新建

      就绪

      运行

      阻塞

      死亡

  • Spring事务:

      编程式事务:灵活,但是不好维护,用得少。

      声明式事务:耦合度低,侵入性低,推荐使用。

十七:spring中的隔离级别:

      默认     读未提交    读已提交   可重复读    串行化

十八:springCloud的核心组件:

  1. 服务注册:只有一个服务注册到服务中心,才能被其他服务发现调用。

  Eureka     Nacos

2.负载均衡:将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。

        Ribbon     Feign

        区别在于:

(1)注解不同。

(2)Ribbon需要自己构建请求,发送请求,比较繁琐。

  Feign则是采用接口的方式,将其他服务的方法定义成抽象方法。

3熔断器:通过Hystrix线程池去访问服务,不同的服务有不同的线程池,实现了隔离。

  1. 服务网关:让用户可以通过一个接口访问不同的模块。

Gateway     Zuul

区别在于:

(1)Gateway是springcloud的一个子项目。

(2)Zuul是netflix公司的子项目。

(3)Gateway仅适合springcloud。

(4)Zuul可以用非springcloud的服务。

  • Mybatis执行流程:
  1. 加载mybatis.Xml文件。
  2. 接口从sql中的id去找mappedStatment,传入参数。
  3. 生成的sql语句交给数据库执行并返回结果。
  4. 将得到的结果进行转换输出。

二十. java集合类框架的基本接口有哪些:

     Connection(list,set)是元素集合,list有序,不包含重复元素,set无序,可以包含重复元素,其中ArrayList和LinkedList实现了list,HashSet实现了Set。

     Map(HashMap,HashTable)键值对集合

其中HashTable安全,效率低。HashMap不安全,效率高。

二十一. tcp和udp的区别:

  1. tcp是面向连接的,udp是无连接的。
  2. tcp是可靠传输,udp是不可靠传输。
  3. tcp是面向字节流进行传输,udp是面向报文进行传输的。

二十二. &和&&的区别:

      &表示and的意思(两边都转换成二进制在进行运算)。

     &&表示两边结果都为真时,结果才为真,只要有一边是false,那么结果就是false。

二十三. 数组和String中有.length这个方法吗?

  1. 数组中没有.length这个方法,但是有.length属性。
  2. String有.length这个方法,用来计算字符串的长度。

二十四. MVC的体系结构:

      Model:存储数据

      View:视图层

      Controller:控制层,负责数据的交互

二十五.  页面传参的几种方法:

  1. 表单   最基本的。
  2. 带参数的url传参    例:url?参数名=?
  3. 请求request  通过request中的getAttribute和setAttribute读写
  4. Session   通过session中的getAttribute和setAttribute读写
  5. Application   通过Application中的getAttribute和setAttribute读写

二十六. jdk和jre的区别:

     Jdk是开发工具        jre是运行环境

二十七.  ==和equals的区别:

     ==比较的是内存地址     equals比较的是值

二十八.  final在java中的作用

被final修饰的类不能被继承,不能被重写。

二十九.  列举一下String类中的常用方法:

  1. charAt  根据索引获取字符。
  2. Endwith  判断字符串是否已指定内容结尾。
  3. Indexof   查询内容在字符串中第一次出现的位置。
  4. Getbytes  将字符串转成byte数组。

三十.  列举files中的常用方法:

  1. .Exits  是否存在
  2. .delete  删除
  3. .remove  移动
  4. .copy    复制
  5. .read   读
  6. .write  写

三十一.  List转Array和Array转list?

  1. list.toArray(new String[list.size])
  2. ArrayList<String> list=new ArrayList<>(Arrays.aslist())

三十二.  理解springboot过滤器吗?

     Springboot过滤器可以拦截所有的web接口,除了白名单的自身的内部接口可以通过以外,其他的均需要进行token验证。

三十三.  文件上传用哪种类型:  post

三十四.  java创建对象的几种方式?

  1. new 语句创建。
  2. 运用反射,调用java.lang.Class
  3. 调用对象的.Clone方法

其中1和2是调用构造函数,三是在内存上对已有对象进行克隆

三十五.  什么是反射和泛型:

  1. 反射:把一个类中的各个成分映射成一个java对象。
  2. 泛型:本质是参数化类型,把操作的数据类型指定成一个参数。

三十六.  springboot加载顺序:

  1. .propertise文件
  2. Yml文件
  3. 系统环境变量
  4. 命令行参数

三十七. ArrayList和Vector的区别:

      都实现了list接口,有序的集合,允许重复。

      ArrayList  不安全,效率高,按照1.5倍扩容。

     Vector   安全,效率低  按照一倍扩容。

三十八. HashMap和HashTable的区别:

     HashMap和HashTable底层都实现了map接口。

     HashMap允许存放空值,由于线程是不安全的,在只有一个线程访问的情况下,效率要高于HashTable。

HashTable的方法是同步的,线程安全,继承于Dictionary类。

三十九.  HashMap和HashSet的底层实现?

HashSet底层通过包装HashMap来实现,HashSet在添加一个值时,其实是把这个值作为HashMap中的key来进行保存。

HahMap的底层通过初始化一个entey数组来实现key,value的保存。

四十.  能否让HasnMap线程同步?

   可以,通过  Map  Connections.SynchronizedMap(Map m)实现。

四十一.  字节流和字符流有什么区别:

计算机中都是以二进制的形式存在的(字节形式)

输出流(OutputStream  Writer)

把对应的中文字节得到对应的字节,将字节写入到输出流,在将字节转为字符进行输出。

输入流(IntputStream  Reader)

将字符串转换为字节进行写入。

解释一下什么是序列化?以及Serializable接口的作用?

(1)当我们把一个java对象变成一个字节流进行传输时,被传输的对象必须实现Serializable接口,javac进行特殊编译处理,编译的类才可以被writeObject操作。

这就是序列化。

  1. Serializable的作用:

Tomcat重启时把session对象序列化到硬盘,这个对象必须实现序列化。

如果该对象通过分布式系统进行网络传输,被传输的对象必须实现序列化。

四十二.  java中堆和栈的区别:

栈中用于保存一些局部变量和方法帧,在函数中定义的一些基本类型的变量和对象的引用变量都是在栈中进行分配。

堆用用于保存一些new出来的对象和数组。

四十三.  cookie和session的区别?

  1. cookie可以将用户的信息保存在游览器上。
  2. Session可以将用户的信息保存在服务器上。

四十四.  jsp和servlet的区别?

   Jsp侧重视图页面

   Servlet主要用于逻辑控制

四十五.  JDBC访问数据库的步骤?

  1. 加载驱动类
  2. 通过DriverManager对象获连接对象Connection对象
  3. 获取会话
  4. 通过会话进行增删改查
  5. 关闭连接

四十六.  事物的四大特性:

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

四十七. 什么是主键,什么是外键?

   主键是为了给该属性附上唯一约束。

   外键是为了建立表和表之间的联系。

四十八. Spring支持几种bean的作用域:

  1. singleton   bean在ioc中只有一个实例。
  2. Property   一个bean可以有多个实例。
  3. Request    每次http请求都会创建一个bean。
  4. Session    在一个Http Session中,一个Bean对应一个实例.
  5. Global-session  在一个全局HttpSession中,一个Bean对应一个实例。

四十九.  排序的方法有哪些:

  1. 冒泡排序
  2. 插入排序
  3. 选择排序
  4. 快速排序

五十.  JSP九大内置对象?

Request   用户端请求

Response   响应请求

Config   servlet架构部件

Out    传送回应输出

Page    jsp页面

Pagecontext   管理网页属性(上下文)

Exception   错误

Application   正在执行的内容

Session   会话

五十一.  四大作用域:

Session

Application

Request

Pagecontext

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值