一整套美团面经(给对象超用心整理的)
Posted 兔老大RabbitMQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一整套美团面经(给对象超用心整理的)相关的知识,希望对你有一定的参考价值。
做测试的,我整理的真的很用心了,能找的新鲜面经都找了。
一面
1. 自我介绍
2. 面向对象的三种特性 集成用到了哪些特性 多态的具体使用场景 设计模式中的多态体现(手撕)
封装:将属性私有化;封装的意义:保护或者防止代码(数据)被我们无意中破坏。
保护成员属性,不让类以外的程序直接访问和修改;隐藏方法细节
继承:主要实现重用代码,节省开发时间。
多态的定义:不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
多态实现“
酒 a = 剑南春
酒 b = 五粮液
酒 c = 酒鬼酒
策略模式:策略模式定义了一系列算法,并将每一个算法封装起来,而且使它们还可以相互替换。
3. java基础 堆和栈 String和StringBuffer 区别 在堆中怎么分配 有几个对象
栈:主要存放了编译器可知的各种数据类型(boolean、byte、char、short、int、float、long、double)、对象引用。
堆:存对象
String不可变StringBuffer可变
创建 1 或 2 个对象。
如果池中已存在字符串常量“abc”,则只会在堆空间创建一个字符串常量“abc”。
如果池中没有字符串常量“abc”,那么它将首先在池中创建,然后在堆空间中创建,因此将创建总共 2 个字符串对象。
4. java集合 hashmap 手撕实现put 和get方法
计算该去的位置:重点就是取个模
put大概思路要知道
Get:先计算出来位置,然后就去对应的链表找
5. java gc回收三种算法
标记-清除
从根对象出发,进行标记,也就是将这些根对象能够引用到的那些对象都作上标记。然后清除。
引用计数
有人引用就+1,释放就-1,到0就销毁。
GC 复制算法
最原始的做法就是将内存一分为二,每次只使用其他一半,当要 GC 时就将使用的一半中的活动对象复制到另外一半,然后清理这一半中的所有对象,直接使用另外一半即可,重复这个操作。
6. 网络基础 tcp三次握手
第一次:发送请求
第二次:告诉对方受到了请求并同意
第三次:告诉对方收到了你的同意,可以开始了。
7. 数据库查询 更新 删除语句 inner join left join right join区别
总结:内连接:只取两边能匹配的。
左连接:左边存在,右边不存在的也取
右连接和左连接相反
8. 索引 使用场景
加速有序表的查找速度
9. 项目中的难点
10. 为什么选择测试开发
11. 面试官介绍部门以及工作
12. 3-5年职业规划
一面
1. 自我介绍 项目
2. 算法 字符串匹配 截取 手撕 写测试用例 测试用例的设计方法
3. Java 多线程实现方式 runnable thread 区别 线程的几种状态 状态切换
优点:编写简单,如果需要访问当前线程直接使用this即可获得当前线程.
缺点:因为线程类已经继承了Thread类,不能再继承其他的父类
优点:线程类只实现了Runable接口,还可以继承其他的类.
缺点:编程稍微复杂,需要访问当前线程,必须使用Thread.currentThread()方法
4. 数据库 delete drop truncate区别
DELETE是每次删除一行,并且将该行的删除操作记录在日志中保存以便进行回滚操作。
TRUNCATE TABLE删除所有的数据,不把删除操作记录记入日志,是不能恢复的。
DELETE操作不会减少表或索引所占用的空间。
当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,
drop语句将表所占用的空间全释放掉。
如果想删除部分数据用delete;
如果想删除表用drop;
如果想保留表而将所有数据删除用truncate;
5. 索引 使用场景 数据库查询优化(有几亿条记录的表优化,分库,分表,按什么标准做划分标准)
6. 唯一索引和主键索引的区别
主键索引一定是唯一索引,唯一索引不一定是主键索引,
唯一索引可以为空,主键索引不能为空
7. HTTP和HTTPs的区别 HTTPs原理 SSL 证书 对称密钥(会话密钥) 非对称密钥
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
8. HTTP请求头部字段有哪些
9. HTTP 状态码 301和302 区别
301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址。
301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),;
302表示旧地址A的资源还在(仍然可以访问)
10. Web请求的过程
11. ping ICMP协议 ping 的过程 放弃
12. TCP和UDP的应用场景 QQ聊天软件使用的协议是什么
Tcp可靠传输:比如传文件
Udp不可靠:比如qq聊天有时候感叹号
13. Linux命令 | 管道命令
14. 学习方法
二面
自我介绍
为啥要做测开
测试方法
测试流程
代码题反转字符串
你会
之前测试遇到过什么亮点
找到的bug开发不承认咋办
学一门语言需要多久
有啥问题要问
三面
问了项目,项目是做什么的,用户是谁,你在里面扮演了什么角色
对测试开发的理解
如果测出了一个bug,去给开发说,开发说不是bug,咋地整
http请求头内容
状态码405
405表示请求的方式不对,请求的方式有get、post、head、put……常用的为post和get
put和post区别
幂等性概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。
GET,PUT,DELETE都是幂等操作,而POST不是,以下进行分析:
首先GET请求很好理解,对资源做查询多次,此实现的结果都是一样的。
PUT请求的幂等性可以这样理解,将A修改为B,它第一次请求值变为了B,再进行多次此操作,最终的结果还是B,与一次执行的结果是一样的,所以PUT是幂等操作。
同理可以理解DELETE操作,第一次将资源删除后,后面多次进行此删除请求,最终结果是一样的,将资源删除掉了。
POST不是幂等操作,因为一次请求添加一份新资源,二次请求则添加了两份新资源,多次请求会产生不同的结果,因此POST不是幂等操作。
数据库分页,limit 3 5的意思
从第三条往后取10条
tomcat配置
手撕,给一个字符串“王先生手机180住在A座302号”,把不同类型的连续字符分别存储,比如a1=王先生手机,a2=180等等,遍历这个存储结构可以得到原字符串
按格分割成一段一段的,存到不同的属性里
一面
1、自我介绍2、手撕代码:给一个整型数组,将正数放在左边,负数放在右边;
和快排类似,复习一下
3、刚才写的代码时间复杂度、空间复杂度都是多少?
4、如何优化刚才写的代码
这就是最优了优化不了了,笨蛋是开两个新数组,负的放第一个数组,正的放第二个数组。最后再放回开始的数组里,这是浪费空间的
5、站在一个测试人员的角度,如何测试刚才所写的代码
6、三次握手
7、integer和int的区别
Integer是int的包装类,int则是java的一种基本数据类型
Integer变量必须实例化后才能使用,而int变量不需要
Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
Integer的默认值是null,int的默认值是0
8、static关键字
修饰的方法和属性属于类本身,所有对象共享
9、项目难点,以及怎么解决的
10、简历上写的项目怎么做的测试;
11、你认为测试开发是做什么的?
12、问实习相关的工作
13、你有什么想问我的?
一二三四面
1.自我介绍
2.讲项目,讲项目流程
3.项目数据和代码怎么分离的,怎么驱动的(说的不好,感觉没get到点)
3.http用了哪些方法,post,put的区别,put,get的区别
4.https区别,https为什么是安全的,知道哪些加密算法(不懂了,说知道SSL层原理,讲了一下)
5.fiddler怎么抓https包的
还有好多,忘记了反正问的很详细
二面:
1.自我介绍
2.项目讲了一下,很详细的聊了一下项目,项目人员组成,你有没有觉得哪一环节可以优化的
3.jenkins怎么集成的,怎么触发的
4.为什么选ROBOT Framework框架,优缺点是什么
5.接口自动化测试接口输入参数填错时候是什么情况,怎么处理的(这块答得不好不是很懂,瞎扯了一会)
6.写代码:目录A,遍历这个文件夹,找出所有.txt文件,异常情况考虑
7.写代码:abcd反转成dcba,能写多少种方法,写了三种,姐姐让再想想,想不出来了,说可以入栈出栈的方式
8.二分查找思想说一下,代码写一下,有没有异常情况的处理
9.写代码:统计字符串abcdaa123每个字符出现的次数
10.python常用哪些类库
11.python常用数据结构讲一下,特点讲一下
12.linux 查看所有java的进程什么语句, ps -ef | grep 'java',写了不对,改了两遍才写对了,问|是什么,说了管道
查看日志怎么查看的(不会)
查看两台服务器是否连通什么语句,说了ping,还知不知道其他的,不懂了
服务器A上的文件拷贝到B,什么语句(不懂,以前用过忘记了,哭)
同一个服务器上文件夹A的拷贝到B cp
13.数据库三种删除关键字说一下 delete,truncate,drop讲了一下,此时嗓子已哑~~
14.http请求包包含哪些内容,说的不好只记得一些
15.http1.0 http1.1啥区别,讲了一下,顺便讲了长连接和短连接的区别
16.一个URL包含哪些内容,说了协议,域名或者IP,文件名路径名
17.cookies session 区别说一下 你项目里怎么存cookies的,告诉他没用过,自己做过token验证的
18.对测试框架有没有优化的,跟他说发现过问题但是没有优化开源的框架,但是优化过自己的代码,说了下函数式编程
19.实习中发现什么有意义的bug没有
20.用fiddler干嘛的,说了过滤包,抓手机包
21.浏览器兼容性测试做过哪些,哪些浏览器,有什么特点,市面上浏览器列举了一下,特点就不懂了,说了一下发现过的浏览器兼容性测试的bug,问怎么解决的,说不太懂底层原理
22.微信登录页面怎么测试,从哪些方面测试,具体说下功能测试
23.美团一个提交订单的页面,怎么测试的
三面:
1.自我介绍,项目,项目人员组成
2.python用过哪些库
3.python中is 和==什么区别
4.函数重载是什么,代码写一下(说的好像不准确,代码没写出来,换了写初始化的)
5.python 初始化一个类代码写一下
6.python写一下99乘法表
7.写完了对代码设计测试用例(好难,讲的不好)
8.还有一个代码题忘记了
9.mysql题目,找出每个科目的平均分,平均分大于90的科目,这个地方写的很差,在面试官不断指导下改正,有段时间没用了,写的不行,哭
10.sql注入什么样子,举个例子,写了一种代码,问还知道其他的不,不知道了,跟他说了一下sql注入原因
11.平时怎么学习的 跟他说书和博客,看谁的博客,说了阮一峰,廖雪峰
12.最近看哪些书,大学学最好的课程是啥,说了计算机网络,这本书讲什么的,跟他说了第一章到第十章每章讲的什么
从这本书学到什么了,说了协议
13.http状态码说一下,从100说到4XX被停了,问 你咋还记得怎么清楚,是不是背书了....
委屈,记得清楚也不行了,告诉他项目常用, 我就多了解了很多(没错其实我就是背书了)
14.平时怎么学的PYTHON,说了python基础教程,博客,传智播客的视频,选择性学习
15.你觉得怎么可以减小开发中出现的错误(答得不好,纯胡扯)
16.美团常用吗,蠢了说不太常用,常用大众点评,哭戚戚
用大众点评干嘛的,答了各种吃喝玩乐啊~
17.职业规划说一下,说了五年的,说你想的倒是很长远啊,那你觉得做leader需要什么
18.扯了会校园生活
19.有什么要问的
HR面:
1.自我介绍
2.大学经验
3.概括自己的优缺点,讲了一下
4.天赋和努力什么重要,过程和结果什么重要
5.讲了下大学经验,各种社团活动
6.你怎么平衡活动和学习
7.你有对做过等活动review吗
8.了解了基本情况
以上是关于一整套美团面经(给对象超用心整理的)的主要内容,如果未能解决你的问题,请参考以下文章