一面
1. 自我介绍
2. 计算机网络
a) 输入url,到浏览器展示内容的过程,用到的协议
i. http,dns,tcp,arp
b) 三次握手
3. 操作系统
a) 线程状态转换
b) 进程状态转换
c) 进程线程区别
i. 进程:资源调度的最小单位,线程:CPU调度的最小单位
ii. 线程是进程的实体,一个进程可以有多个线程,多个线程共享同一个地址空间,
iii. 多进程比多线程更健壮
4. 项目
a) 介绍Jenkins,用法:
i. 基于Java开发的一种持续集成工具,用于监控持续重复的工作。
ii. 持续、自动地构建/测试软件项目。
iii. 监控一些定时执行的任务。
b) JMeter性能测试关注的指标,监控服务器关注的指标
i. RT+TPS+VU
ii. CPU+memory+load
5. 测试相关
a) 你是怎么判断哪些模块需要单元测试,哪些不需要的?逻辑比较复杂,有很多if else判断
b) 手机APP的功能测试你是怎么做的?没做过app测自动化测试,只做过手工测试,扯了点登录页面怎么测试,有哪些测试点。sql注入,断网联网,安全性
6. 数据库
a) sql。有一张表示英语口语练习每个学员的学时的表table1,字段有 studentid name(可重复) grade(年级) hours。找出那些学时高于他们同一年级的平均学时的学生
i. select studentid,name,grade
ii. from table1
iii. group by grade
iv. having hours>AVGE(hours)
b) 存储过程及其优点
i. 一串已经编译过的sql语句,执行起来快
ii. 屏蔽底层细节,更安全
iii. 可重复利用,减少数据库开发人员的工作量
iv. 返回错误信息
7. Java
a) 重载和重写的区别。
i. 重载:父子类/同类。名同参异返回*
ii. 重写:父子类。名同参同返回同
b) equals和==的区别
i. equals比较内容
ii. ==比较地址
8. 一根不均匀的绳子,烧完需要1个小时,如何计时半个时间?如何计时1个小时15分钟?
a) 两头同时烧
b) 先同时烧两根,一根从两头烧完,得30分钟,一根从一头烧30分钟后点燃另一头,烧完需要15分钟,一共得45分钟。再开始烧一根,从两头烧,烧完得30分钟。一共1小时15分钟。
9. 写代码
a) Java队列,出队,入队
b) 如何测试你的程序
二面
1. 自我介绍
2. MyBatis框架介绍
a) MVC
b) 接口层:数据库交互
i. 使用传统的MyBatis提供的API。传递Statement Id 和查询参数给 SqlSession 对象,使用 SqlSession对象完成和数据库的交互。这种方式固然很简单和实用,但是它不符合面向对象语言的概念和面向接口编程的编程习惯。
ii. 使用Mapper接口。MyBatis 将配置文件中的每一个mapper 节点抽象为一个 Mapper 接口,而这个接口中声明的方法和跟mapper 节点中的select|update|delete|insert节点项对应,即select|update|delete|insert节点的id值为Mapper 接口中的方法名称,parameterType 值表示Mapper 对应方法的入参类型,而resultMap 值则对应了Mapper 接口表示的返回值类型或者返回结果集的元素类型。底层还是通过SqlSession.select(“statementId”,parameterObject);传统的API来实现的,但是能保证是面向接口编程的。
c) 数据处理层
d) 基础支持层
3. 实习写的接口类型,用的协议
a) restful api
b) soap api
4. url的组成部分
a) 协议
b) 域名
c) 端口号
d) 路径
e) 参数
5. MySQL的存储引擎,区别
a) InnoDB
b) MyIASM(默认)
c) MyIASM不支持事务,而InnoDB支持事务
d) MyIASM支持表锁,而InnoDB支持行锁
e) MyIASM不支持外键,InnoDB支持外键
f) MyIASM支持全文类型索引,而InnoDB不支持全文索引
g) MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM
h) MyIASM索引是非聚簇索引,索引和数据在两个文件,InnoDB是聚簇索引,索引和数据在同一个文件。
6. 隔离机制,MySQL的默认隔离机制
a) read commit
b) read uncommit
c) repeatable read
d) serializable
e) MySQL默认的隔离机制 repeatable read
7. 常用排序算法稳定和不稳定分类,什么叫不稳定
8. 怎么做的接口测试,如何判断该接口是否正确
a) 手动:工具postman soapUI,填入参数,请求头,接口地址
b) 返回状态码,response里的数据是否正确,数据库是否有成功执行
9. 接口测试参数的格式
a) restful api:json
b) soap api:xml
10. get/post的区别
a) 传递参数的格式不同,get:写在url里面,post:数据体里面
b) 安全性不同,get不安全,post更安全
c) 参数的长度不同,get有限制,post没有限制,其实http协议对get是没有限制的,因为浏览器对url的长度有限制,所以才会限制
d) 服务器端获取参数的方式不同
11. http状态码
a) 504:Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
b) 503:Service Unavailable 超载或系统维护,服务器暂时的无法处理客户端的请求
c) 502:Bad Gateway充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
12. 如何实现多线程
a) 通过实现 Runnable 接口;
b) 通过继承 Thread 类本身;
c) 通过 Callable 和 Future 创建线程。
13. Java JS Python区别
a) JS 解释型语言,Java编译型语言
b) JS弱类型,Java强类型
c) Java面向对象,JS基于对象
d) Java和JS代码风格不一致
e) Python & JS
i. 相同点:Python和Javascript都是脚本语言,都需要解释器来运行,都是动态类型,都支持自动内存管理,都可以调用eval()来执行脚本等等脚本语言所共有的特性。
ii. 编程范式不同:Javascript的面向对象是基于原型(prototype)的。Python基于类(class)的继承,并天然的支持多态。
iii. 线程不同:JS单线程,Python支持多线程(通过Thread)
iv. 应用场景:JS客户端编程,Python Web开发
v. 数据类型不同:Javascript:object、string、boolean、number、null和undefined
vi. Python中一切均为对象,像module、function、class等等都是。五个内置的简单数据类型bool、int、long、float和complex,另外还有容器类型,代码类型,内部类型等等
14. 判断两棵二叉树相等,写代码
15. 智力题:52张牌里,A 2 3 45 6 7 8 9 10 J Q K 小王 大王,随机抽5张组成一个顺子的概率,大王和小王可以替换成任意数字,顺子对花色没有要求。(4^4*(C5 2)/2*9)/C5 52
16. 测试atm机的取款功能
三面:Leader面,遇到问题怎么解决,平时看什么书等
四面:HR面