天天看点

秋招部分面经总结2019秋招面经

2019秋招面经

2019.08.29 宁波银行(西安) 开发、测试岗

一面直凉

面试内容:

1.讲一下自己了解的PHP魔术方法

PHP将所有以__开头的类方法保留位魔术方法,定义类方法时,尽量不要以__开头;

__construct(),

__destruct(),

__call(),

__callStatic(),

__get(),

__set(),

__isset(),

__unset(),

__sleep(),

__wakeup(),

__toString(),

__invoke(),

__set_state(),

__clone(),

__debugInfo(),

2.PHP dump函数讲一下,dunp函数和print_r函数的区别(最好把echo再看一下)

3.Python语言的特点

4.Python元组和列表的区别

5.POST和GET的区别

6.Session和Cookie的区别

7.是用什么方法去进行测试问题?黑盒测试用什么方法去检测出所有的异常

2019.09.05 随手科技 测试工程师

一面:

需要技能:python 数据库 测试 大数据组件

二面:天猫双十一 有哪些高并发测试场景 Android端 不同手机

(offer)

2019.09.19 小米 测试工程师

一面

题目描述输入两个字符串,从第一字符串中删除第二个字符串中所包含的字符。

输入例如,输入“Theyarestudents.”和”aeiou”,输出删除之后的第一个字符串变成”Thyrstdnts.”

题目描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

回滚commit

(一面凉)

PHP
in_array()函数,使用时需要设置强制格式匹配,例如
in_array('0',array());//返回值为true
in_array('0',array(),true);//返回值诶false
           

在输出php文件的时候,无法在html文件中逐行输出php代码(或者类似的"<#include>、<html>"标签),原因如下

<html>
    <head>
        <title>hello</title>
    </head>
    <body>
    <?php
		echo "<?php";
    	echo "echo 'hello world'";
    	echo "?>";
	?>   
    </body>
   
</\html>
<!--
这段代码的本意是输出
    <?php
    echo "hello world";
    ?>
这个代码段但是,在实际操作中,会将代码段中的<?php 直接解析,导致输出结果不理想
-->
           

解决方法:

使用div将需要输出的代码段包裹起来,并在script标签中设置disblock

解决代码如下
<?php
$arr = ['hello' => "hello",
       	'world' => "world",
        'hi' => 'hi'];
?>
<html>
    <?php
    	foreach($arr as $value)
        {
    ?>
    <script type="text/html" style='display:block'>
    	<?php echo $value; ?>
    </script>
    <?php
        }
    ?>
</html>

           

http中header中的信息:

Accept:浏览器端可以接受的媒体类型

Accept-Encoding:浏览器端可以接受的编码规范,例如压缩编码、字符编码等

Accept-Language:浏览器端接受的语言

Connection:http连接状态,keep-alive\close两种状态

Host:请求报头域,用于指定被请求资源的internet主机和端口号

Referer:统计该链接跳转的来源

User-Agent:用户访问来源信息,客户端使用的操作系统和浏览器的名称和版本

**数据库聚集函数:**聚集函数是 AVG(返回列的平均值)、COUNT、MAX、MIN 和 SUM(返回列的总和)

count进行去重操作,加关键字distinct

多台服务器如何共享session信息来进行登陆管理

参考:点击访问

一、将本该保存在web服务器磁盘上的session数据保存到cookie中

即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。

但这样做,有三大弊端:

把session数据放到客户端的cookie中,一般都是重要数据(如用户id、昵称等),会存在安全问题,但可以将session数据加密后,再存放到cookie中,来降低安全风险。

浏览器对单个cookie的数据量大小限制为4K左右,因此会存在数据量的限制问题。

影响带宽性能,降低了页面的访问速度。在高访问量的情况下,用户每次请求时,都要将客户端cookie中的session数据发送到服务器,要占用较多的带宽,进而影响访问速度,服务器带宽成本增高。

二、将本该保存在web服务器磁盘上的session数据保存到MySQL数据库中

sessionid还是利用cookie机制存储到客户端,但session数据却存放在MySQL服务器上。(需要建立sessionid和session数据行的对应关系)

但这样做,只适合访问量比较小的网站。如果网站的访问量比较大,对MySQL服务器会造成很大压力。因为每次用户请求页面(即使是刷新页面)都要查询MySQL数据库中的session数据表,进而判断用户的登录状态和读取用户相关信息,势必会对数据库服务器造成很大压力,这样就会降低服务器的响应速度,影响用户体验。

三、将本该保存在web服务器磁盘上的session数据保存到内存数据库(memcache或redis)中

memcache或redis是基于内存存储数据的,性能很高,尤其是高并发的情况下尤为合适。主要是因为从内存中读取数据要比从磁盘读取数据快很多。

内存数据库还支持数据过期失效的机制,正好与session的过期机制对应,推荐使用redis内存数据库,因为它比memcache支持更多的

数据类型,且支持内存数据备份到磁盘。

这里简单说一下,后面两种方法的注意要点:

如果多台web服务器对应的是不同的域名,为了保证cookie的唯一(同一个cookie在各个域名有效),需要修改php.ini文件中的session.cookie_domain

由于后面两种方法,属于用户自定义的方式管理session,而非默认的文件处理方式,故需修改php.ini中的session.save_handler=user

在开启session之前(即调用session_start()之前),需要先调用session_set_save_handler,关于session_set_save_handler的具体用法,请参考php手册

http协议中 协议报的内容:

请求行:请求类型(post/get)/请求资源路径、协议的版本和类型;例如:POST/ADDUSER HTTP/1.1 请求类型:post 资源路径:/adduser 协议类型:http 版本:1.1

请求头:见下一部分 cookie记录用户信息

【空行】:请求头和请求体之间用一个空行隔开

请求体:要发送的数据(一般post方式会使用);例:userName=123&password=123&returnUrl=/

响应数据包

状态行:协议版本、数据形式的状态代码(200、302【重定向】、404、500、、、)和状态描述、各元素之间以空格分隔

响应头:包含服务器类型、日期、长度、内容类型等

【空行】:响应头与响应正文之间以空行隔开

响应正文:程序处理返回结果

例如:

Server:Apache Tomcat/5.0.12

Date:Mon,60ct2003 13:13:33 GMT

Content-Type:text/html

Last-Moified:Mon,6 Oct 2003 13:23:42 GMT

Content-Length:112

进程与线程的区别:

进程是对运行程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发

线程是进程的子任务,是CPU调度和分配的基本单位,用于保证程序的实时性,实现进程内部的并发

一个程序至少有一个进程,一个进程至少有一个线程,线程依赖于进程而存在

进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存

进程间通信的方式:

管道、命名管道;管道可用于具有亲缘关系的父子进程间的通信,命名管道除了具有管道所具有的所有功能外,它还允许无亲缘关系进程间的通信

信号;用于通知进程某个事件已经发生

消息队列;消息的链接表,

共享内存

信号量

套接字

线程间同步:

互斥量;采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限;因为同时只有一个互斥对象,保证公共资源不会被多个线程访问

信号量;

事件(信号);

小米 吉比特 作业帮

2019.09.06 农行面试 软件测开

凉凉 十个人九个985研究生 数据库、操作系统需加强,Python基础,爬虫,Linux基础,数据结构,算法

(凉,准备过少)

进程和线程区别

进程通信方式

数据库查询成绩前十查询

数据库表连接

测试铺底数据?

图的遍历方法

什么会使索引速度下降

2019.09.17 当当网 测试

场景题

一四川用户报告无法登录当当网,说出排查方法

2019.09.19 小米一面 测试

网络 HTTP/HTTPS 报头内容 抓包

数据库 insert select 索引 b树和b+数

where having区别

IO模型

权限管理

登录

response 返回体数据类型

tcp拥塞控制

HTTPS数据包里的明文信息是什么

ARP协议

跨域

触发器、外键的区别

库、表是否可以进行引擎选择

2019.09.20 广发银行 测试

项目

md5底层

git

PHP文件函数源码、底层实现

thinkPHP5.0如何打开调试模式

2019.09.21 深信服 软件测试工程师

链表反转 堆排序 url返回错误如何测试

指针 野指针 指针函数 快排

HTTPS如何加密

linux

TCP UDP应用层的使用协议

tp3与tp5的区别

底层很重要

测试需求细化

2019.09.21 同花顺 PHP 笔试

使用PHP在不使用curl函数下发起一个post请求

2019.09.23 努比亚 测试

软件质量标准 UI/UE

软件标准

Java内存泄漏

LET协议

2019.09.25 万得 软开 笔试

数据库DDL操作

面向对象的solid

答案:https://blog.csdn.net/dxpqxb/article/details/51732555

禅道

2019.09.28 富士通(西安)

文件限制,缩略图

2019.09.30 腾讯 测试

你理解的白盒测试

PHP遵循的编码规范

什么时候选择tcp,什么时候选择udp

2019.09.30 同花顺 web开发

PHP是否支持多继承

网络编程

多线程如何实现

get post区别

PHP的错误类型

一亿个元素的数组和一百个元素的数组,求交集

2019.10.10 中信银行 信息科技

SQL语句关键字执行优先级

2019.10.10 中国银行 软件中心信息科技

no 西交 no 机会

2019.10.11 微盟 软件测试

一面:

HTTP和HTTPS的区别

谈一下软件测试

购物流程(登录、、、) 用例设计覆盖 订单的状态

什么是黑盒测试 测试用例设计方法

学习情况

二面:

Python 自己用到的类库

字符串匹配分割

根据文件在线管理系统问测试相关内容

大文件分包传输

文件内容匹配

Linux find查询文件内容 kill后的参数

登录系统的测试 多人登录情况

文件删除 逻辑删除 物理删除

服务器部署项目

反爬虫措施

2019.10.11 同花顺 web后台开发

HTTP的header里的内容

有没有搭建过nginx

TCP/IP有几层,tcp和ip分别位于那一层

一个几万行的程序,有错误,如何排查

C文件编译的过程

PHP最新版本 技术特点

2019.10.12 途家民宿 软件测试

一面:

如何理解测试

登录从开始到结束都有哪些过程

就这个过程的测试点

如何测试同一浏览器多个账户同时登陆(使用cookie)

如何测试一个电梯

二面:

登录过程是怎样实现的,如何去了解到登录状态,前端是怎样去了解到是那个登录用户的

session怎样去设置

多台服务器怎样互相了解一账号登录状态

如何种cookie

cookie的编码格式

cookie有什么安全危险,可更改吗

http的协议报内容 header内容 了解到的压缩编码

md5具体是如何操作的 hash计算过程

如何撞库/彩虹表攻击

PHP的模式

如何模仿jmeter

Linux 如何设置定时操作

如何使命令后台执行

如何去查询不超过100行的PHP文件

如何知道文件的行数

LAMP服务器配置 LAMP含义

谈一下白盒测试 如何设计测试用例 判断、循环

范式

聚集函数

2019.10.12 招联金融 软件测试

主要问项目 项目细节

Python Java