Java后端面试(五)

目录

Java中,抽象类与接口之间有什么不同?

什么是“依赖注入”和“控制反转”?为什么有人使用?

构造器注入和setter依赖注入,那种方式更好?

Java 中,throw 和 throws有什么区别

什么是B/S架构?什么是C/S架构

你所知道网络协议有那些?

Java都有那些开发平台?

什么是JVM?java虚拟机包括什么?

什么是面向对象?

类和对象的关系

什么是拆装箱

一个java类中包含哪些内容

程序的结构有哪些

Java常用包有哪些

Java类的顶级父类是谁,常用方法有哪些?

Java中有没有指针

Java中是值传递还是引用传递

实例化数组后,能不能改变数组长度呢?

构造方法能不能在方法里直接显式调用

Static关键字有什么作用

面向对象的语言有哪些特征

什么是父类引用指向子类对象

Super与this表示的是什么

接口有什么特点

说几个常见的编译时异常类

异常处理机制有几种

除了实用new创建对象以外,还可以通过什么方式创建对象

java反射创建对象效率高还是通过new创建对象的效率高

Js中常用的事件有哪些

Js如何实现页面刷新

Sql 中 delete 与 truncate 的区别

Sql优化有那些方法?

Json是什么、

什么是事务 事务有哪些特点

事务的使用场景在什么地方

Jsp有哪些内容组成

GET请求与post请求有何区别

如何实现多线程

什么是游标

html中a标签的 target属性有哪些值?​​​​​​​

Servlet的生命周期

线程的生命周期

Statement与preparedStatement 区别​​​​​​​

Session与cookie的区别​​​​​​​

存储函数与函数的区别​​​​​​​​​​​​​​

会话话跟踪技术有哪些

Url是什么  有哪些部分组成

重定向与转发的区别

列举几个http的状态码

MyBatis中使用#{}和${}书写占位符有什么区别?

Spring中自动装配的方式有哪些

解释一下什么叫AOP

Spring中如何使用注解来配置Bean?有哪些相关的注解?​​​​​​​

什么是mybatis

使用Mybatis的mapper接口调用的时候有哪些要求

列举mybatis核心配置文件中都有什么东西

Mybatis常用注解

Mybatis中当实体中字段与表中的不一致怎么办​​​​​​​

什么是触发器 触发器的使用场景有哪些

SQL的约束有哪几种


  1. Java中,抽象类与接口之间有什么不同?

    ①接口使用interface,抽象类使用extends

    ②接口可以被继承,抽象类不可以被继承

    ③抽象类中有main方法,接口中不可以有

    ④接口中的方法默认使用 public 修饰,抽象类中的方法可以是任意访问修饰符。

  2. 什么是“依赖注入”和“控制反转”?为什么有人使用?

    ​​​
    1. 依赖注入(Di)通过接口的引用和构造方法的表达,将整理好的传入到需要的地方
    2. 控制反转(IOC)是spring框架的核心思想,要什么就自己去包装
  3. 构造器注入和setter依赖注入,那种方式更好?

    1. 构造器注入保证所有的注入都被初始化,setter注入提供更好的灵活性来设置可选依赖
    2. 如果使用xml来描述,setter注入会可读写会很强
    3. 经验法则则是强制依赖使用构造器注入
  4. Java 中,throw 和 throws有什么区别

    1. throws出现在方法函数头;而throw出现在函数体,可以存在mian方法。
      throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
    2. throw是语句抛出一个异常。
      语法:throw (异常对象);
               throw e;

      throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
      语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
                  public void doA(int a) throws Exception1,Exception3{......}

  5. 什么是B/S架构?什么是C/S架构

    1. B/S(Browser/Server),浏览器/服务器程序
    2. C/S(Client/Server),客户端/服务端,桌面应用程序

  6. 你所知道网络协议有那些?

    1. HTTP:超文本传输协议

      FTP:文件传输协议

      SMPT:简单邮件协议

      TELNET:远程终端协议

      POP3:邮件读取协议

  7. Java都有那些开发平台?

    1. JAVA SE:主要用在客户端开发

      JAVA EE:主要用在web 应用程序开发

      JAVA ME:主要用在嵌入式应用程序开发

  8. 什么是JVM?java虚拟机包括什么?

    1. JVM:java虚拟机,运用硬件或软件手段实现的虚拟的计算机,Java虚拟机包括:

      寄存器,堆栈,处理器

  9. 什么是面向对象?

    1. 世间万物都可以看成一个对象。每个物体包括动态的行为和静态的属性,这些就

      构成了一个对象。

  10. 类和对象的关系

    1. 类是对象的抽象 对象是类具体 类是对象的模版 对象是类的实例

  11. 什么是拆装箱

    1. 拆箱:把包装类型转成基本数据类型

      装箱:把基本数据类型转成包装类型

  12. 一个java类中包含哪些内容

    1. 属性 方法 内容类 构造方法  代码块

  13. 程序的结构有哪些

    1. 顺序结构  选择结构  循环结构
  14. Java常用包有哪些

    1. Java.lang

      Java.io

      Java.sql

      Java.util

      Java.awt

      Java.net

      Java.math

  15. Java类的顶级父类是谁,常用方法有哪些?

    1. Oeject
    2. Equals

      Hashcode

      toString

      wait

      notify

      clone

      getClass

  16. Java中有没有指针

    1. 有指针,但是隐藏了,开发人员无法直接操作指针,由jvm来操作指针
  17. Java中是值传递还是引用传递

    1. 理论上说,java都是引用传递,对于基本数据类型,传递是值的副本,而不是值

      本身。

      对于对象类型,传递是对象的引用,当在一个方法操作操作参数的时候,

      其实操作的是引用所指向的对象。

  18. 实例化数组后,能不能改变数组长度呢?

    1. 不能,数组一旦实例化,他的长度就是固定的。
  19. 构造方法能不能在方法里直接显式调用

    1. 不能将构造方法当成普通方法调用,只有在创建对象的时候才会被系统调用或构造方法调用

  20. Static关键字有什么作用

    1. Static可以修饰内部类、方法、变量、代码块

    2. Static 修饰的类是静态内部类

      Static修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,

      静态方法也不能被重写,可以直接使用类名来调用。在 static方法中不能使用this

      或者super关键字。

      Static修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖

      于对象。

      Static修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码

      在整个类加载的时候只会执行一次。静态代码块可以有多个,如果有多个,按照

      先后顺序依次执行。

  21. 面向对象的语言有哪些特征

    1. 面向对象的三大特点是:封装、继承、多态。
    2. 封装 (encapsulation),隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。
    3. 继承(inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承”另一个类别B,就把这个A称为“B的子类”,而把B称为“A的父类”。
    4. 多态:同一种操作对于不同的对象有着不同的定义,不同的解释,不同的执行结果。即同一个对象调用一个相同的方法得到不同的结果。
  22. 什么是父类引用指向子类对象

    1. 是java多态一种特殊的表现形式。创建父类引用,让该引用指向一个子类的对象
  23. Super与this表示的是什么

    1. Super表示当前类的父类对象
    2. This表示当前类的对象

  24. 接口有什么特点

    1. 接口中声明全是 public static final 修饰的常量

      接口中所有方法都是抽象方法

      接口是没有构造方法的

      接口也不能直接实例化

      接口可以多继承

  25. 说几个常见的编译时异常类

    1. NultPointerException:空指针异常

      ArraylndexOutOfBoundsException:数组下标越界

      NumberFormatException:数字转换异常

      JllegalArgumentException:参数不匹配异常

      InstantiationException:对象初始化异常

      ArithmeticException:算术异常

  26. 异常处理机制有几种

    1. 异常捕捉:try...catch...finally,异常抛出:throws.

  27. 除了实用new创建对象以外,还可以通过什么方式创建对象

    1. 使用new关键字
    2. Class对象的newInstance()方法
    3. 构造函数对象的newInstance()方法
    4. 对象反序列化
    5. Object对象的clone()方法
    6. Java反射:反射被视为动态语言的关键。
  28. java反射创建对象效率高还是通过new创建对象的效率高

    1. 通过new创建对象的效率比较高。通过反射时,先找查找类资源,使用类加载器
    2. 创建,过程比较繁琐,所以效率较低

  29. Js中常用的事件有哪些

    1. Onsubmit:提交

      OnbJun失去焦点

      Onclick:单击

      Onload:加载页面

      Onchange:内容改变

      onMouseMove:鼠标移动

      onMouseOver:鼠标经过

      onMouseOut:鼠标移出

      onselect:下拉选项披选中

  30. Js如何实现页面刷新

    1. history.go(0)

      location.reload()

  31. Sql 中 delete 与 truncate 的区别

    1. 选择性地删除数据,当删除整张表的数据时效率较低;

    2. 只能删除整张表的数据,但是效率高于使用DELETE语句;

    3. 不能选择性地删除。当truncate执行翻除之后,自动生成的主键值重新从默认值开始。

  32. Sql优化有那些方法?

    1. 表的设计要规范/即要符合数据库设计三范或。

      适当建立索引,在频繁作为检索条件,更新较少的字段上建立索引,以提高

      查询速度。

      分表查询,有水平分割、垂直分割。

      读写分离,读(read)、写(create、update、delete).

      建立存储过程。

  33. Json是什么、

    1. Json(javascript simple object notation):轻量级的数据交换格式.
  34. 什么是事务 事务有哪些特点

    1. 事务:

      单个逻辑单元执行的一系列操作,要么全部执行,要么全部不执行,

      特点:

      原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 

      一致性(Consistency):事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

    2. 隔离性(lsolation):一个事务的执行不能其它事务干扰,一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 

      持久性(Durability):事务完成后对系统的影响是永久性的。

  35. 事务的使用场景在什么地方

    1. 当一个业务逻辑包括多个数据库操作的时候,而且需要保证每个数据表操作都执

      行的成功进行下一个操作这个时候可以使用事务、

  36. Jsp有哪些内容组成

    1. 指令:<%@%>

      脚本:<%%》

      表达式:<%=%>

      声明:<%!%>

      注释:<%--%>

      动作:<jsp:动作名称 属性=””>

      静态内容:html内容

  37. GET请求与post请求有何区别

    1. Get请求发送的文本内容大小有限制,而post请求没有限制

      Get请求的请求参数会出现在url路径中,而发送post请求时,参数不会显

      示在 url 路径中

      Get安全系数较低,但是效率较高。Post安全系数较高,但效率较低

      Get请求只能发送字符串,post请求可以提交二进制数据

  38. 如何实现多线程

    1. 继承Thread 类

      实现Runnable 接口

      推荐使用Runnable 接口

  39. 什么是游标

    1. 标是sql查询结果集的一个措针,与select语句相关联。

      游标关键字是cursor,主要包含两个部分:游标结果集和游标位置。

      游标结果集:执行select语句后的查询结果

      游标位置:

      一个指向游标结果内某条记录的指针。

      游标主要有两个状态:打开和关闭。

      只有当游标处于打开状态时,才能够操作结果集中的数据

      当游标关闭,查询结果集就不存在了

  40. html中a标签的 target属性有哪些值?​​​​​​​

    1. _blank:在新的膏口打开网页

      selft在本页面打开新网页

      _parent:在父 frameset框架打开网页

      _top:去掉所有页面框架,使用document.htnl 替代frameset 文档

  41. Servlet的生命周期

    1. ​​​​​​​

      加载:判断servlet实例是否存在,如果不存在,就加载serlvet

      实例化;

      初始化

      服务

      销毁

  42. 线程的生命周期

    1. ​​​​​​​​​​​​​​新建  就绪 运行 死亡 阻塞
  43. Statement与preparedStatement 区别​​​​​​​

    1. preparedStatement 会预编译sql语句,能够提高批量的数据操作的执行效率,

      Statement执行slq 的时候才进行编译

      Preparedstatement 在第一次执行sql的时候,比较耗费资源。如果县对数据库

      进行一次操作,使用statement 比较好。

      Statement会出现sql 注入的问题,使用preparedstatment可以解决sql注入

  44. Session与cookie的区别​​​​​​​

    1. Session保存在服务端,cookie保存在客户端

      Session保存是对象,cookie 只能保存字符串

      _Session不能设置路径,cookie可以设置保存路径。同一个网站不同网页的

      cookie可以保存到不通的路机构下,彼此是无法相互访问的。

      Session在服务器关闭后会自动消失,cookie则不会。

  45. 存储函数与函数的区别​​​​​​​​​​​​​​

    1. 存储过程的关键字是procedure,函数关健字是 function

      函数必须有返回值,存储过程没有返回值,但是有传出参数

      函数注重的是结果,存储过程注重的是过程

      函数可以在select语句中直接使用 而存储过程则不能

  46. 会话话跟踪技术有哪些

    1. ​​​​​​​​​​​​​​session  cookie  表单隐藏域 url重写
  47. Url是什么  有哪些部分组成

    1. 统一资源定位符  http://localhsot:8080/web/index.html

      协议+主机地址+端口+项目名称+资源名称

  48. 重定向与转发的区别

    1. 请求转发只能将请求转发给同一个Web应用中的其他资源,而重定向不仅可以定向到当前应用程序中的其他资源,也可以重定向到其他站点上的资源。

    2. 重定向结束后,浏览器地址栏显示URL会发生改变,由初始的URL地址变成重定向的目标LURL。而请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

    3. 请求转发的发起者和接受者之间共享相同的 HttpServletRequest 实例和HttpServletResponse实例,而重定向的发起者和接受者使用备自的HttpServletRequest 实例和HttpServletResponse实例,

    4. 转发是一次请求,重定向是二次请求。转发是在服务器进行的,重定向在客服端进行的。

  49. 列举几个http的状态码

    1. 200:请求成功

      400:不是正确的请求,大多情况下表示参数错误

      404:找不到清求资源

      500:服务器内部错误

      403:服务器拒绝

  50. MyBatis中使用#{}和${}书写占位符有什么区别?

    1. #{}将传入的数据都当成一个字符串,会对传入的数据自动加上引号;

      占位符可能会导致SQL注射攻击,能用#{}的地方就不使用${}

  51. Spring中自动装配的方式有哪些

    1. no.不进行自动装配,手动设查Bean的依赖关系。

      byName:根据 Bean的名字进行自动装配。

      byType:根据Bean 的类型进行自动装配.

      constructor:类似于byType,不过是应用于构境器的参数,如果正好有一

      个Bean与构造器的参数类型相同则可以自动装配,否则会导致错误。

       autodetect:如果有默认的构适龘,则通过 constructor的方式进行自动装

      配,否则使用byType的方式进行自动装配。

  52. 解释一下什么叫AOP

    1. AOP(Aspect-Oriented Programming)指一种程序设计范型,该范型以一种称

      为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分

      散在对象、美或方法中的横切关注点(crosscutting concern)。

  53. Spring中如何使用注解来配置Bean?有哪些相关的注解?​​​​​​​

    1. 首先需要在Spring配置文件中增加配置:

      用@Component、@Controller、@Service、@Repository注解来标注索要由

      Spring lpC容器进行对象托管的类。

      @Controller 通常用于控制器

      @Service 通常用于业务逻辑类

    2. @Repository 通常用于DAO美

      普通的类用@Component来标注。

  54. 什么是mybatis

    1. ​​​​​​​

      Mybatis是一个半ORM(对象关系映射)框果,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动。

    2. 创建连接、创建statement 等繁杂的过程;MyBatis可以使用XML或注解来配置和映射原生信息,将PO1O映射成数据库中的记录,避兔了几乎所有的JDBO代码和手动设置参数以及获取结果集;

    3. 通过xml文件或注解的方式将要执行的各种 statemtent 配置起来,并通过Jaya对象和 statement中MySQL的动态参数进行映射生成最终执行的sql语句最后由 mybatis框架执行sql并将结果映射为java对象并返回。

  55. 使用Mybatis的mapper接口调用的时候有哪些要求

    1. Mapper接口方法名和Mapper.xml中定义的每个SQL的id相同;

      Mapper接口方法的输入参数类型和mapper.xml中定义的每个sqlparameterType类型相同

      Mapper接口方法的输入输出参数类型和mapper.xml中定义的每个sql的resultType 的类型相同

      Mapper.xml文件中的 namespace,就是接口的类路径

  56. 列举mybatis核心配置文件中都有什么东西

    1. properties(展性) settings(配置)typeAliases(类型别名) typeHandlers

      (类型处理器) objectFactory(对象工厂) plugins(插件) environments

      (环境集合属性对象)environment(环境子属性对象)transactionManager

      (事务管理)dataSource(数据源) mappers(映射器)

  57. Mybatis常用注解

    1. @lnsert:插入sql,和xml insert'sql 语法完全一样

      @Select: 查询sql,和 xml select sql语法完全-样

      @Update:更新sql,和xml update sql语法完全一样

      @Delete_: 删除sql,和xml delete sql 语法完全-样

      @Param :

      @Results:结果集合

      @Result:结果

  58. Mybatis中当实体中字段与表中的不一致怎么办​​​​​​​

    1. 方式一通过SQL的别名来解决
    2.  方式二 配置setting的驼峰命名

            或者是使用自定义resultMap映射

  59. 什么是触发器 触发器的使用场景有哪些

    1. ​​​​​​​​​​​​​​「触发器」,指一段代码,当触发某个事件时,自动执行这些代码。

      使用场景:

      1.可以通过数据库中的相关表实现级联更改。

      2、实时监控某张表中的某个字段的更改而需要做出相应的处理。

      3、例如可以生成某些业务的编号。

      4、注意不要滥用,否则会造成数据库及应用程序的维护困难。

  60. SQL的约束有哪几种

    1. ​​​​​​​​​​​​​​六种

      not null非空

      Primary key 主键

      Unique  唯一

      Foreign key 外键约束

      Default 默认约束

      Check 检查约束

      Check 在mysql中不支持

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值