某网络科技热腾腾的测开面经

测试开发栈

共 2089字,需浏览 5分钟

 ·

2020-09-05 07:31

啦啦啦啦,热腾腾的测开面经来了,来自某网络科技的测开一面面试题,感受下难度怎么样?

接口和抽象类的区别?

这题几乎每次都问,参考答案:接口和抽象类都需要实现类去继承和实现才可以实例化,接口的实现类可以implements多个接口类,但抽象类的实现类只能extends一个抽象类,接口只能做方法声明,但抽象类中除了方法声明还可以有具体的方法实现,接口中只能定义静态常量,抽象类中可以定义普通属性,总得来说接口是设计的结果,抽象类是重构的结果。

创建线程的方式有哪些?各有什么区别?

准确的说有4种,分别是:实现Runnable接口,实现Callable接口,继承Thread类,通过线程池的方式创建和管理。

Runnable 和 Callable接口实现的线程有什么不同?

这个问题来自上面问题的引申,通过Callable接口实现的线程可以和Future类结合使用,从而得到线程执行后的结果。

synchronized关键字是如何使用的?

synchronized关键字可以修饰方法、静态方法、代码块,其中修饰静态方法对应的是类锁,其他对应的是对象锁。

Spring的 Ioc 你是如何理解的?

IOC是Inversion of Control的缩写,直译就是控制反转,没有这个之前,我们使用对象对象先new一个,有了它之后,对象的创建和管理由Ioc容器来控制,这就是主动管理变成被动管理了,所以叫控制反转。这样做的好处:便于bean对象管理,解耦对象间的调用关系,减低复杂度。

JVM垃圾回收的过程?

首先介绍一下JVM中堆内存的组成:JVM堆内存主要由三部分组成: 

(1)新生代: 伊甸园区,存活区,伸缩区 

(2)老年代: 老年区,伸缩区 

(3)元空间(永久代): 元空间,伸缩区
注意:JDK1.8以后,永久代被称作元空间:直接使用物理内存

GC流程: 

(1)新生对象在新生代的伊甸园区开辟空间,如果伊甸园区的内存空间不足,则发生MinorGC,进行垃圾回收处理,然后再判断处理之后的内存空间是否充足, 如果充足,则将新生对象存放在伊甸园区,否则将继续判断存活区的内存空间 ;

(2)如果存活区的内存空间充足,则将伊甸园区的部分活跃对象直接存放在存活区内,如果存活区也没有多余的内存空间,那么将继续判断老年区的内存空间 ;

(3)如果老年区的内存空间充足,则将伊甸园区的部分活跃对象存在老年区中,如果老年区也没有多余的内存空间,那么将会发生MajorGC(FullGC), 然后判断老年区是否有多余的内存空间,如果有多余的空间,则可以将对象保存在老年区。否则将会产生OOM(OutOfMemoryError)异常 。

年轻代:采用复制算法(将活跃对象复制到完全未使用的内存空间中,然后对需要垃圾回收的对象进行GC处理) 

老年代:采用整理-压缩算法(将需要回收的对象进行整理-压缩) 注意:GC处理只针对新生代和老年代,元空间(永久代)不在GC控制范围内

性能问题如何定位?

这里理解的是Java的性能问题,考察的应该是性能调优相关的命令和工具,可以说说jstat、jstack、jmap等。

什么是事务?有什么特性?

事务是数据库操作逻辑的最小单元,数据库事务 transanction 正确执行的四个基本要素: 

(1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 

(2)一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

(4)持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

MySQL数据库的存储引擎有哪些?有什么差异?

MySQL常见的三种存储引擎为InnoDB、baiMyISAM和MEMORY。其区别体现du在事务安全、存储限zhi制、空间使用、内存使用、插入数据dao的速度和对外键的支持。

有一个学生表,有学生id(sid),课程id(cid),课程成绩(score),请写出SQL查出所有没有挂科(所有课程的成绩都在60以上)的学生id


可以反向思考,只要有一门课的成绩小于60,即就是挂科的

  1. SQLselect sid from students where sid not in (select distinct(sid)from students where score < 60);

写一个算法模拟随机发扑克牌

一副扑克牌有13x4 + 1x2 = 54张牌,其中13个普通牌有4类花色,技能牌王炸有2类花色,思路:弄两个随机方法就行,一个随机14张牌的种类,一类随机花色即可。


测试开发栈

软件测试开发合并必将是趋势,不懂开发的测试、不懂测试的开发都将可能被逐渐替代,因此前瞻的技术储备和知识积累是我们以后在职场和行业脱颖而出的法宝,期望我们的经验和技术分享能让你每天都成长和进步,早日成为测试开发栈上的技术大牛~~


长按二维码/微信扫描关注


欢迎加入QQ群交流和提问:427020613

互联网测试开发一站式全栈分享平台


浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报