201709今日头条测试开发校招面经

一面

1.手写斐波拉契数列

     public static int fibonacci(int n){  
            if(n <= 2){  
                return 1;  
            }else{  
                return fibonacci(n-1) + fibonacci(n-2);  
            }  
        } 

2.sql。打印每个学生的最高分,每个学生有多个成绩。table:courseid username score
a) select * from table group by username having score=max(score)
3.linux命令:
a) 一个文件夹下有多少个文件

ls -lR|grep "^-"| wc -l  //R代表子目录,"^d"表示目录,"^-"表示文件,wc -l表示统计输出的行数。
ls -lR HB*/|grep "^-"| wc -l   //HB开头的文件下所有文件个数
ls -l|grep "^d"| wc -l   //当前文件下所有文件夹个数

b) 清空文件夹下的所有文件内容,不是删除 >重写 >>追加
c) 查看端口号是否被占用

lsof -i:80 //显示所有打开80端口的进程,lsof(list open files)是一个列出当前系统打开文件的工具
netstat -anp|grep 80  //显示所有占用80端口的进程
netstat -a  //列出所有端口
lsof -p 30297 //显示哪些文件被pid为30297的进程打开

4.抽象类和接口的联系和区别
a) 联系
i. 抽象类的抽象方法和接口的所有方法都是有一个方法头,没有具体实现。
ii. 都不能被实例化,即通过new生成一个对象
iii. 一个类继承抽象类或者接口,都必须实现抽象类的抽象方法和接口的所有方法
b) 区别
i. 抽象类单继承,接口多继承
ii. 抽象类中可以有具体方法,接口中全是抽象方法
iii. 继承抽象类的类可以不实现抽象类的抽象方法,只需要将此类定义为abstract即可,而实现接口的非抽象类必须重写其方法。
iv. 抽象类的成员变量是普通变量,接口的成员变量是不可变常量。
v. 抽象类的抽象方法可以是public,protected,default类型,而接口的方法只能是public
c) 接口是抽象类的延伸,java了保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷,但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承。
5.怎么做的自动化测试
a) 主要包括功能测试(Web端到端测试)codeceptjs+webdriverIO和接口测试mocha+supertest
6.Git用过吗?如何切换分支?如何暂存工作台?
a) 切换分支 git checkout branch_name
b) 暂存工作区 git stash
c) 取出工作区 git stash pop
- 用过Jenkins吗?怎么配置的,如何查看报告?除了发邮件通知还有什么通知方法?
a) 报告需要项目跑完能输出报告(json/html),然后利用插件优美展示。
b) 在Jenkins上安装插件可以实现多种通知方式:钉钉,邮件
7.测试一个手机登陆界面
a) 功能测试:有网断网、输入正确、输入错误、输入空、中文特殊字符、长度限制、验证码有效时长、密码存储是否加密、是否有提示友好
b) 安全测试:sql注入、不登录能否操作、禁止输入脚本防XSS攻击、用户名密码传输时是否加密
c) 性能测试:
i. 单用户登录系统的响应时间是否符合”3-5-8”原则
ii. 用户数在临界点时并发登录是否还能符合”3-5-8”原则
iii. 压力:大量并发用户登录,系统的响应时间是多少?系统会出现宕机、内存泄露、cpu饱和、无法登录吗?
iv. 稳定性: 系统能否处理并发用户数在临界点以内连续登录N个时的场景?
d) 页面测试:不同手机控件位置、页面美观简洁
e) 其他测试:输错超3次、是否支持粘贴、(session 过期)
8.xml文件如何可视化更强
9.get/post区别
a) 发送参数的方式不同。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,这种方式不安全;POST把提交的数据则放置在是HTTP包的包体中。
b) 可传参数长度不同。GET方式提交的数据有限制,理论上POST没有限制,可传较大量的数据。其实HTTP没有对GET请求进行限制,而是浏览器对url长度有限制。
c) 服务器获取参数方式不同。对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
d) 总结:Get是向服务器发索取数据的一种请求,数据在URL中,而Post是向服务器提交数据的一种请求,数据在FORM(表单)中,Method默认为”GET”,实质上,GET和POST只是发送参数的机制不同,并不是一个取一个发!Get也能修改数据,POST也能查询数据,只是HTTP规范建议GET用于查询因为效率更高,POST用于修改因为更安全。GET(幂等),POST(非幂等),PUT,DELETE查改增删。POST可以完成所有的操作,引入PUT,DELETE是为了语义化,是指使用语义恰当的标签,使规范有良好的结构,能够让人和机器都容易理解。

二面

1.手写非递归翻转二叉树,二叉树的镜像二叉树
2.linux:打印文件a.log中所有包含error的行数,字符数(error算一个字符)

grep error a.log | wc -l
grep error a.log | wc -m

3.常见的HTTP状态码。
a) 200 请求成功
b) 301 资源被永久转移到其他URL
c) 403 服务器拒绝响应请求
d) 404 请求的资源不存在
e) 500 内部服务器错误
f) 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
g) 503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。
**4.sql。**user:uid uname,project:pid pname,u_p: uid pid打印出姓名为ming的所有pid和pname,table1特别大。
a) select pid,pname from project,u_p
b) where uid in(select uid from user where uname=’ming’) and project.pid=u_p.pid
5.selenium原理简述
e) Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,本文仅介绍Selenium2的原理,在Selenium 2.0 主推的是WebDriver,Selenium2又名Selenium Webdriver。
f) Selenium是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。
201709今日头条测试开发校招面经_第1张图片
g) Selenium2原理
webdriver是按照server–client的经典设计模式设计的:
server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出响应;
client端简单说来就是我们的测试代码:我们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;
简单介绍一下webdriver的工作原理:
- 启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。
- 客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给server端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。
- Server端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器原生调用来完成操作。
注:
The WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。
WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。WebDriver Wire协议定义了一套基于RESTful的web service。
201709今日头条测试开发校招面经_第2张图片

你可能感兴趣的:(面经)