测开一面面试题,大伙感受下难度怎么样?
1、接口和抽象类的区别?
这题几乎每家都问。
参考答案:接口和抽象类都需要实现类去继承和实现才可以实例化,接口的实现类可以implements多个接口类,但抽象类的实现类只能extends一个抽象类,接口只能做方法声明。
但抽象类中除了方法声明还可以有具体的方法实现,接口中只能定义静态常量,抽象类中可以定义普通属性,总得来说接口是设计的结果,抽象类是重构的结果。
2、创建线程的方式有哪些?各有什么区别?
准确的说有4种。
分别是:实现Runnable接口,实现Callable接口,继承Thread类,通过线程池的方式创建和管理。
3、Runnable 和 Callable接口实现的线程有什么不同?
这个问题来自上面问题的引申,通过Callable接口实现的线程可以和Future类结合使用,从而得到线程执行后的结果。
4、synchronized关键字是如何使用的?
synchronized关键字可以修饰方法、静态方法、代码块,其中修饰静态方法对应的是类锁,其他对应的是对象锁。
5、Spring的 Ioc 你是如何理解的?
IOC 是Inversion of Control的缩写,直译就是控制反转,没有这个之前,我们使用对象对象先new一个,有了它之后,对象的创建和管理由Ioc容器来控制,这就是主动管理变成被动管理了,所以叫控制反转。
这样做的好处:便于bean对象管理,解耦对象间的调用关系,减低复杂度。
6、JVM垃圾回收的过程?
首先介绍一下JVM中堆内存的组成:
JVM堆内存主要由三部分组成:
新生代: 伊甸园区,存活区,伸缩区;老年代:老年区,伸缩区;元空间(永久代):元空间,伸缩区
注意:JDK1.8以后,永久代被称作元空间:直接使用物理内存
再简述QC流程
7、性能问题如何定位?
这里理解的是Java的性能问题,考察的应该是性能调优相关的命令和工具,可以说说jstat、jstack、jmap等。
8、什么是事务?有什么特性?
事务是数据库操作逻辑的最小单元,数据库事务 transanction 正确执行的四个基本要素:
原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
这种属性有时称为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
9、MySQL数据库的存储引擎有哪些?有什么差异?
MySQL常见的三种存储引擎为InnoDB、baiMyISAM和MEMORY。其区别体现du在事务安全、存储限zhi制、空间使用、内存使用、插入数据dao的速度和对外键的支持。
10、请写出SQL查出所有没有挂科(所有课程的成绩都在60以上)的学生id?
有一个学生表,有学生id(sid),课程id(cid),课程成绩(score)
可以反向思考,只要有一门课的成绩小于60,即就是挂科的
select sid from students where sid not in (select distinct(sid) from students where score < 60 );
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
生命是一份空白内容的租约,自主性越强的人生,租约上的条款由自己填写的部分就越多,被动性越强的人生,就会由别人帮你填写。
不是所有的拼搏都会成功,我们不能盲目的拼搏,必须带上我们的智慧,将属于我们的机会牢牢抓住,才会多一份成功。
人生是战场,需要冲次,需要拼搏,处处布满陷井,一不小心就会中埋伏,就会遭遇失败,永无翻身之日,但我们拼搏一定要方向明确,有目标性拼搏,才会成功,幸福才会属于你。