logo资料库

互联网公司测试工程师测试开发工程师(已拿到头条、小米、shopee、微众银行)面经整理.docx

第1页 / 共106页
第2页 / 共106页
第3页 / 共106页
第4页 / 共106页
第5页 / 共106页
第6页 / 共106页
第7页 / 共106页
第8页 / 共106页
资料共106页,剩余部分请下载后查看
总纲
Java基础知识
1.Java都有那些开发平台?
2.Java的数据结构有那些?
3.Java中有几种数据类型
4.Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型
5.什么是拆装箱?
6.Java中的包装类都是那些?
7.一个java类中包含那些内容?
8.例如: if(a+1.0=4.0),这样做好吗?
9.那针对浮点型数据运算出现的误差的问题,你怎么解决?
10.数组实例化有几种方式?
11.Java中各种数据默认值
12.Java常用包有那些?
13.Object类常用方法有那些?
14.java中有没有指针?
15.java中是值传递引用传递?
16.实例化数组后,能不能改变数组长度呢?
17.假设数组内有5个元素,如果对数组进行反序,该如何做?
18.构造方法能不能重写?能不能重载?
19.什么是方法重载?
20.内部类与静态内部类的区别?
21.Static关键字有什么作用?
22.Final在java中的作用
23.Java中操作字符串使用哪个类?
24.StringBuffer,Stringbuilder有什么区别?
25.String str=”aaa”,与String str=new String(“aaa”)一
26.String str=”aa”,String s=”bb”,String aa=aa+s;一种
27.将下java中的math类有那些常用方法?
28.String类的常用方法有那些?
29.判断两个对象是否相同,能使用equlas比较吗?
30.==与equlas有什么区别?
31.如何将字符串反转?
32.面向对象的语言有那些特征?
33.Java中的继承是单继承还是多继承
34.什么是重写?什么是重载?
35.如果父类只有有参构造方法,那么子类必须要重写父类的构造方法吗?
36.创建一个子类对象的时候,那么父类的构造方法会执行吗?
37.什么是父类引用指向子类对象?
38.当父类引用指向子类对象的时候,子类重写了父类方法和属性,那么当访问属性的时候,访问是谁的属性?
39.Super与this表示什么?
40.抽象的关键字是什么?
41.抽象类必须要有抽象方法吗
42.如果一个类中有抽象方法,那么这个一定是抽象类?
43.抽象类可以使用final修饰吗?
44.普通类与抽象类有什么区别?
45.什么是接口?
46.JAVA为什么需要接口?
47.接口有什么特点?
48 .Java中异常分为哪两种?
49.说几个常见的编译时异常类?
50.异常的处理机制有几种?
51.如何自定义一个异常
52.在异常捕捉时,如果发生异常,那么try.catch.finally块外的return语句会执行
53.Try.catch.finally是必须要存在的吗?
54.Thow与thorws区别
55.Error与Exception区别?
56.使用Log4j对程序有影响吗?
57.Log4j日志有几个级别?
58.除了使用new创建对象之外,还可以用什么方法创建对象?
59.Java反射创建对象效率高还是通过new创建对象的效率高?
60.Java中集合框架的有几个?
61.Collection接口下有那些集合框架?
62.List接口有什么特点?
63.Set接口有什么特点
64.ArrayList与LinkedList有什么区别?
65.Array与ArrayList有什么不一样?
66.Map有什么特点
*67.JDBC操作的步骤
*68.在使用jdbc的时候,如何防止出现sql注入的问题。
69.是否了解连接池,使用连接池有什么好处?
70.你所了解的数据源技术有那些?使用数据源有什么好处?
71.Java的io流分为哪两种?
72.常用io类有那些?
73.字节流与字符流的区别
74.final、finalize()、finally
75.抽象类和接口的区别?
76.线程同步的方法
***77.线程与进程、协程的区别
*78多线程同步的五种方法:
79.&和&&的区别
80.重载与重写
81.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
82.Java中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?
83.接口和抽象类的区别是什么?
84.Sleep与wait的区别
85.Java集合框架是什么?说出一些集合框架的优点?
86.集合框架中的泛型有什么优点?
87.Java集合框架的基础接口有哪些?
88.为何Collection不从Cloneable和Serializable接口继承?
89.为何Map接口不继承Collection接口?
90.什么是迭代器(Iterator)?
91.Iterator和ListIterator的区别是什么?
92.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
93.Java中的HashMap的工作原理是什么?
94.当两个对象的hashcode相同会发生什么?
95.如果两个键的hashcode相同,你如何获取值对象?
96.hashCode()和equals()方法有何重要性?
97.HashMap和Hashtable有什么区别?
98.如何决定选用HashMap还是TreeMap?
99.ArrayList和Vector有何异同点?
100.Array和ArrayList有何区别?什么时候更适合用Array?
101.泛型,泛型好处?这带来了很多好处:
**102.JAVA反射机制
***103.GC什么时候回收(非常重要,每场面试必问)
*104.创建一个对象都在内存中做了什么事情?
105. 封 装(面向对象特征之一):
105. static关键字:
*106. 单例设计模式:
107.继承的细节:
108. 抽象类: abstract:
109.模板方法设计模式:
110.Java Scanner 类
***111.Java内存管理和分配
***112.Java内存溢出及解决办法
***113.
114.Java Class文件结构
115.Java类加载机制
*116.Java基础之—反射(非常重要)
117.Java 中的动态代理
计算机网络
***Socket
Socket是什么?
Socket如何唯一标识一个进程?
通信双方如何进行端口绑定?
Socket属于网络的哪一层?
Socket是全双工的吗?
HTTP协议是全双工的吗?
Socket与WebSocket的区别
OSI和TCP/IP协议(七层和四层协议)
TCP为什么需要3次握手,4次断开?
TCP和UDP有什么区别?
交换机与路由器有什么区别?
八大http请求方法
HTTP请求报文与响应报文格式请求报文包含三部分:
HTTP常用头部信息
Cache-Control字段
TCP长短连接,优缺点及WebSocket
HTTP1.0(1996)、HTTP1.1(1999)、2.0(2015)区别
http和https的区别与联系
浏览器渲染页面过程
访问一个网页的全过程
POST和GET的区别:
DNS是什么?
你所知道网络协议有那些?
常见状态代码和状态说明
TCP/IP的TCP socket通信过程
什么是防火墙?防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行
TCP协议-如何保证传输可靠性
TCP拥塞控制(1Q)
网络层功能
数据链路层的职责数据链路层是将数据报从一个节点传送到与该节点有直接的物理链路相连的另一个节点。另
APP链接点进后加载一段时间后仍无内容,分析可能的情况
Cookie和Session
close_wait,time_wait状态原因
HTTP缓存机制
操作系统:
六大进程间通信方式
几种进程调度算法
虚拟内存机制的作用
缓存的作用以及缓存替换算法
Java多线程实现的四种方式
虚拟文件系统
数据库
sql语句的执行顺序 
MYSQL中读写分离有什么样的好处 
分析函数和聚合函数区别(考察partition by使用)(阿里巴巴测开面试题)
性能测试
测试用例设计考察题目
Linux常用命令
安全(有时间推荐看极客时间)
安全原理及法则
常见网络攻击
***Spring架构的理解
BeanFactory和ApplicationContext有什么区别?
Spring容器中的bean可以分为5个范围:
SpringMVC:
项目经验
QMS技术栈
一、前端Angular:Google开发的JavaScript框架
二、后端
三、其他技术
质量平台
代工厂项目流程与介绍
项目的基本概念
代工厂的工作流程
接口自动化测试
Unittest框架
遇到问题
POM的优势
Code review常见错误类型
工具类
Jmeter
Loadrunner
PV & UV
待整理
正则表达式
海量数据进行分库分表及其实践
Monkey测试?
APP测试
特殊符号
什么是Nginx?
算法
手撕代码必须掌握的一些数据结构及方法
时间复杂度
冒泡排序表
二分排序
快速排序法
选择排序:
插入排序:
归并算法:
读入一个字符串str,输出字符串str中的连续最长的数字串
有n步台阶,一次只能上1步或2步,共有多少种走法(小米面试题)
统计一个文本文件中字符A的个数
求1到n的阶乘之和。
判断是否回文
java实现文件拷贝
字符串匹配
合并两个有序数组。
求菲薄拉契数列:1,1,2,3,5,8,13…….的第n项,n由键盘输入
将数组中的0全部移动到末尾
取max到min之间的随机数
找出最大和子序列(小米)
找出出现频率最高的字符
关于二叉树的深度优先遍历和广度广度遍历:
总纲 (看到一篇写得很好的面经,就直接引用了) 1、 算法+编程: 由于时间紧急,其实我只刷了一遍《剑指 offer》,根据面试经验,其实 80%的手撕代码题都 来源于其或类似;测开岗可能会涉及到额外的题:IP 地址正则表达式、统计文章中每个单词 出现的次数; Java 基础: 消息队列有哪些用处 乐观锁和悲观锁 编程题:整数列表如下[3,2,7,8,1,4,10,11,12],请设计程序使连续的整数序列取 前后两个数,并输出所有的列表。上面列表应该输出[1,4],[7,8],[10,12]。 基本的排序算法一定要掌握,比如冒泡、选择、插入、快排、归并、堆排、桶排序、基数排 序。这些排序的时间复杂度和空间复杂度以及区别、使用场景一定要了然于胸,快排、归并、 堆排要能够迅速手写出来,到了复习后期,我每天都会练习手写这三个排序,现在基本上保 证这三个排序算法每个用时在 165 秒内写出。 2、操作系统:这部分其实看看面经就行,100%涉及的就是进程和线程、死锁; 3、计算机网络:这部分我是非常薄弱的,一般在面试哪家公司前会把牛客上涉及到的计网 部分挑出来硬背(问的比较多的:三握四挥、TCP 和 UDP 的区别、一次完整的 HTTP),来不 及完全可以临时抱佛脚; rpc 协议都有哪些,与 http 的区别 4、数据库:建议快速浏览《MySQL 必知必会》,进阶部分看 bilibili 即可,这样面试 90%的问 题就 OK 了(主从复制、分表分库也是进阶部分问的较多的,以及深入了解索引); mysql 为什么要读写分离 Mysql 是什么数据库,关系型数据库?了解多少 5、jvm:分区+GC+类加载,也是一样背即可(b 站上有还不错的视频,可食用) 6、框架:SSM(了解重点即可) 7、其他:HashMap+JMM+乐观锁悲观锁+CAS+测试方法+测试用例 8、测试理论+方法+工具: 分层测试项目 服务端的测试流程 接口测试用例是如何设计的 滴滴客户打车功能测试 case 设计 针对教育 app,教师出题功能(选择年级、科目、章节)和学生端接受作业功能编写测试 case 微信发拼手气红包测试 case 手机淘宝购物车界面,问我如何测试购物车 支付宝打开付款页面,商家使用机器扫码。针对这个付款过程进行测试? Bug 分析:用户已经付款成功,但是商家没有收到付款,分析下什么原因?
针对扫码支付做自动化测试设计,说说思路? 给你一个 QQ 或者微信的文件传输功能,你讲讲你是怎么设计测试用例的? 总结一下当前业务测试的痛点和难点。 接口和压测工具都有哪些,是如何选择的; 对于测试 ci 有多少了解? 你自己做了测试 ci 的平台有哪些?具体讲一讲? 9、项目经验 问所用框架的具体原理了解多少和细节。 还问了很多项目实现的技术细节,和技术后面有没有去深入了解过,不太记得了 项目的数据流是怎样的 项目中的接口测试和自动化解决过哪些问题? 针对于目前的测试框架和方案,你认为有哪些地方需要改进,或者说有哪些比较好的设计给 我分享一下? 压测以及后端服务架构的理解,线上的部署方式? 10、性能测试 压测是怎么进行的 Java 基础知识 1.Java 都有那些开发平台? JAVA SE:主要用在客户端开发 JAVA EE:主要用在 web 应用程序开发 JAVA ME:主要用在嵌入式应用程序开发 2.Java 的数据结构有那些? 线性表(ArrayList)(链表(LinkedList)+数组) 栈(Stack) 队列(Queue) 图(Map) 树(Tree) 3.Java 中有几种数据类型 1):基本数据类型 整形:byte,short,int,long 浮点型:float,double 字符型:char
布尔型:boolean 2):引用数据类型: 数组、类、接口。 级别从低到高为:byte,char,short(这三个平 级)-->int-->float-->long-->double 自动类型转换:从低级别到高级别,系统自动转的; 强制类型转换:什么情况下使用?把一个高级别的数赋给一个比该数的级别低的 变量; 首先知道 String 是引用类型不是基本类型,引用类型声明的变量是指该变量在 内存中实际存储的是一个引用地址,实体在堆中。 而包装类就属于引用类型,自动装箱和拆箱就是基本类型和引用类型之间的转换, 至于为什么要转换,因为基本类型转换为引用类型后,就可以 new 对象,从而调 用包装类中封装好的方法进行基本类型之间的转换或者 toString(当然用类名 直接调用也可以,便于一眼看出该方法是静态的),还有就是如果集合中想存放 基本类型,泛型的限定类型只能是对应的包装类型。 4.Char 类型能不能转成int 类型?能不能转化成string 类型, 能不能转成 double 类型 Char 在 java 中也是比较特殊的类型,它的 int 值从 1 开始,一共有 2 的 16 次方个数据; Char
8.例如: if(a+1.0=4.0),这样做好吗? 不好,因为计算机在浮点型数据运算的时候,会有误差,尽量在布尔表达式中不使用浮点型数据 (if,while,switch 中判断条件不使用浮点型) 9.那针对浮点型数据运算出现的误差的问题,你怎么解决? 使用 Bigdecimal 类进行浮点型数据的运算 10.数组实例化有几种方式? 静态实例化:创建数组的时候已经指定数组中的元素, Int [] arr = {1,2,3} 动态实例化:实例化数组的时候,只指定了数组程度,数组中所有元素都是数组类型的默认值 11.Java 中各种数据默认值 Byte,short,int,long 默认是都是 0 Boolean 默认值是 false Char 类型的默认值是’’ Float 与 double 类型的默认是 0.0 对象类型的默认值是 null 12.Java 常用包有那些? Java.lang Java.io Java.sql Java.util Java.awt Java.net Java.math 13.Object 类常用方法有那些? Equals Hashcode toString wait notify
clone getClass 14.java 中有没有指针? 有指针,但是隐藏了,开发人员无法直接操作指针,由 jvm 来操作指针 15.java 中是值传递引用传递? 理论上说,java 都是引用传递,对于基本数据类型,传递是值的副本,而不是值本身。对于对 象类型,传递是对象的引用,当在一个方法操作操作参数的时候,其实操作的是引用所指向的对 象。 16.实例化数组后,能不能改变数组长度呢? 不能,数组一旦实例化,它的长度就是固定的 17.假设数组内有 5 个元素,如果对数组进行反序,该如何 做? 创建一个新数组,从后到前循环遍历每个元素,将取出的元素依次顺序放入新数组中 18.构造方法能不能重写?能不能重载? 不可以重写,可以重载 构造代码块和构造函数有什么区别? 构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块,只要对 象一建立,就会调用这个代码块。 构造函数:是给与之对应的对象进行初始化,它具有针对性。 19.什么是方法重载? 方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或者类型 不同即可。在这种情况下,该方法就叫被重载了,这个过程称为方法的重载(override) 20.内部类与静态内部类的区别? 静态内部类相对与外部类是独立存在的,在静态内部类中无法直接访问外部类中变量、方法。如 果要访问的话,必须要 new 一个外部类的对象,使用 new 出来的对象来访问。但是可以直接访 问静态的变量、调用静态的方法;
普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类 的方法。 如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该 对象访问属性或者调用方法。 如果其他的类要访问普通内部类的属性或者调用普通内部类的方法,必须要在外部类中创建一个 普通内部类的对象作为一个属性,外同类可以通过该属性调用普通内部类的方法或者访问普通内 部类的属性 如果其他的类要访问静态内部类的属性或者调用静态内部类的方法,直接创建一个静态内部类对 象即可。 21.Static 关键字有什么作用? Static 可以修饰内部类、方法、变量、代码块 Static 修饰的类是静态内部类 Static 修饰的方法是静态方法,表示该方法属于当前类的,而不属于某个对象的,静态方法也不 能被重写,可以直接使用类名来调用。在 static 方法中不能使用 this 或者 super 关键字。 Static 修饰变量是静态变量或者叫类变量,静态变量被所有实例所共享,不会依赖于对象。静态 变量在内存中只有一份拷贝,在 JVM 加载类的时候,只为静态分配一次内存。 Static 修饰的代码块叫静态代码块,通常用来做程序优化的。静态代码块中的代码在整个类加载 的时候只会执行一次。静态代码块可以有多个,如果有多个,按照先后顺序依次执行。 22.Final 在 java 中的作用 Final 可以修饰类,修饰方法,修饰变量。 修饰的类叫最终类。该类不能被继承。 修饰的方法不能被重写。 修饰的变量叫常量,常量必须初始化,一旦初始化后,常量的值不能发生改变。 23.Java 中操作字符串使用哪个类? String,StringBuffer,StringBuilder 24.StringBuffer,Stringbuilder 有什么区别? StringBuffer 与 StringBuilder 都继承了 AbstractStringBulder 类,而 AbtractStringBuilder 又实 现了 CharSequence 接口,两个类都是用来进行字符串操作的。 在做字符串拼接修改删除替换时,效率比 string 更高。 StringBuffer 是线程安全的,Stringbuilder 是非线程安全的。所以 Stringbuilder 比 stringbuffer 效率更高,StringBuffer 的方法大多都加了 synchronized 关键字
25.String str=”aaa”,与 String str=new String(“aaa”)一样 吗? 不一样的。因为内存分配的方式不一样。 第一种,创建的”aaa”是常量,jvm 都将其分配在常量池中。 第二种创建的是一个对象,jvm 将其值分配在堆内存中。 26.String str=”aa”,String s=”bb”,String aa=aa+s;一种创建 了几个对象? 一共有两个引用,三个对象。因为”aa”与”bb”都是常量,常量的值不能改变,当执行字符串拼接 时候,会创建一个新的常量是” aabbb”,有将其存到常量池中。 27.将下 java 中的 math 类有那些常用方法? Pow():幂运算 Sqrt():平方根 Round():四舍五入 Abs():求绝对值 Random():生成一个 0-1 的随机数,包括 0 不包括 1 28.String 类的常用方法有那些? charAt:返回指定索引处的字符 indexOf():返回指定字符的索引 replace():字符串替换 trim():去除字符串两端空白 split():分割字符串,返回一个分割后的字符串数组 getBytes():返回字符串的 byte 类型数组 length():返回字符串长度 toLowerCase():将字符串转成小写字母 toUpperCase():将字符串转成大写字符 substring():截取字符串 format():格式化字符串 equals():字符串比较 29.判断两个对象是否相同,能使用 equlas 比较吗?
不能。Equlas 大多用来做字符串比较,要判断基本数据类型或者对象类型,需要使用== 30.==与 equlas 有什么区别? ==可以判断基本数据类型值是否相等,也可以判断两个对象指向的内存地址是否相同,也就是 说判断两个对象是否是同一个对象,Equlas 通常用来做字符串比较。 31.如何将字符串反转? Stringbuilder 或者 stringbuffer 的 reverse 方法 32.面向对象的语言有那些特征? 封装、继承、多态 33.Java 中的继承是单继承还是多继承 Java 中既有单继承,又有多继承。对于 java 类来说只能有一个父类,对于接口来说可以同时继 承多个接口 34.什么是重写?什么是重载? 重载和重写都是 java 多态的表现。 重载叫 override,在同一个类中多态的表现。当一个类中出现了多个相同名称的方法,但参数个 数和参数类型不同,方法重载与返回值无关 重写叫 overwrite,是字符类中多态的表现。当子类出现与父类相同的方法,那么这就是方法重 写。方法重写时,子类的返回值必须与父类的一致。如果父类方法抛出一个异常,子类重写的方 法抛出的异常类型不能小于父类抛出的异常类型。 35.如果父类只有有参构造方法,那么子类必须要重写父类的 构造方法吗? 必须重写 36.创建一个子类对象的时候,那么父类的构造方法会执行 吗? 会执行。当创建一个子类对象,调用子类构造方法的时候,子类构造方法会默认调用父类的构造 方法。 37.什么是父类引用指向子类对象?
分享到:
收藏