首页 > 社招_测试开发面试题目汇总笔记
头像
码尚行动
编辑于 2021-04-19 09:45
+ 关注

社招_测试开发面试题目汇总笔记

之前有写一篇社招面经总结 测开_社招-字节、BOSS、阿里、百度面经(许愿字节) ,
有小伙伴私信我说写的很详细,但更想要一些干货;于是,重新整理了一下遇到的题目,按知识点整理了一篇“干货”。

面试相关

大厂基本是20分钟聊项目,20分钟基础知识,20分钟算法;外加反问环节

记录面试大纲及范围,明确复习的方向

精通一种语言 (go 、 java 、 python、c++【shell、sql】)

数据库

互联网

移动端

数据结构算法基础

软件测试基础(包括扩展:自动化测试技术和经验、接口测试;)

Linux

其他加分项:

中间件

多线程

高并发

设计模式

复习方向和方法

根据大纲找到薄弱点和优势点;先补薄弱,再加强优势,尽量在优势方面多说、讲透彻;

面试是一个展现自己的过程,尽可能多地在短时间内给面试官展现我们的优势和价值。

小编复习方法:

牛客面试宝典(测试工程师)--> 面经 --> 恶补劣势 -->加强优势 --> 猛刷算法 --> 做好面试复盘

加强对自身简历上个人技能的学习 、对负责项目的理解 以及 对自身职位的思考 。

面试重点(面经汇总)

Java

常考基础:

  • Java中的int和Integer
  • String、StringBuffer、StringBuilder的区别
  • Vector、ArrayList、LinkedList的区别
  • List、set的区别
  • CurrentHashMap 、hashMap 、hashtable、TreeMap的区别
  • hashmap相关 (hash算法、entry数组、红黑树与链表转化、负载因子扩容)
  • 接口和抽象类的区别与理解
  • Java异常体系,exception和error的区别
  • Java的权限修饰符(public、private、default、protect的作用域)

深入加强:

  • jvm组成、GC调优;垃圾处理器 和垃圾清除算法
  • 双亲委派机制 、类加载过程
  • 多线程、并发相关(常问,加分项,小编直接说不太会)
  • 强引用、软引用、弱引用、幻想引用的区别
  • 知道哪些设计模式,手写单例等
  • Spring 相关,ioc 、 aop的理解

Python

  • Python常用内置模块
  • List与numpy的区别
  • With机制及如何实现
  • Range的方法
  • 迭代器的了解
  • c++和python的并发编程了解多少
  • python中传递参数有什么要注意的吗?比如传递一个字符串或者一个列表,在函数中进行了一些操作,原值是否改变了?哪种情况改变,哪种不改变?如何克服呢?
  • 了解深拷贝与浅拷贝

数据库

数据库常考 索引(调优)、事务(锁、多线程)、基础(表连接、主外键、语句编写)、深入(引擎)

(数据库推荐:极客时间 - MySQL实战45讲【力推,需有一定基础】+ 牛客刷题)

基础:

  • sql 的join的几个方式;左连接和右连接的区别
  • 讲讲各种数据库连接的区别,内连接,外连接,笛卡尔连接
  • MySQL语句执行顺序
  • 子查询、聚合函数、视图、存储过程、触发器等
  • explain查询计划
    • 略微深入一些:
  • 了解哪些存储引擎
  • 主外键、数据库完整性约束
  • 不同数据库的比较,即对不同场景怎样选用数据库

事务:

  • ACID(含义与理解 + 如何保证)
  • 隔离等级与相应问题
  • 多版本并发控制(MVCC)
  • 长事务的危害与避免方法
  • MySQL有哪些锁,区别(全局锁、表锁、元数据锁、行锁、间隙锁、next-key-lock、【页锁】)
  • 如何解决死锁(死锁检测、控制并发度(客户端、中间件、服务端、数据库))

索引:

  • 创建索引注意事项(是否常用、区分度、数量、组合索引选择、主键选择、唯一与普通的选择)

  • 索引的类别(从存储方式来分:聚簇索引与非聚簇索引;从属性个数来分:单值和组合索引;

    ​ 从是否唯一来分:唯一、普通和主键;从数据结构来分:B+树、hash表、数组等)

  • 索引的数据结构及具体实现介绍(核心是MySQL为什么选B+树;以及B+树、hash表、数组的区别;)

  • 索引什么时候失效 (在where索引字段有函数操作、数据量太小、analysis不准、排序、不满足最左匹配、其他索引干扰、使用了 in、非判断(!=、is null、is not null)等)

  • 索引的特性(回表、最左前缀匹配原则、索引下推优化)

  • changeBuffer(普通索引与唯一索引的选择与优化)

SQL语句题:

(SQL题一般偏简单,但常要多种解法)

1.

ID Name City Address

1 包彦钦 北京 北京市东四北大街520号

2 王洪涛 北京 北京市西单北大街151号

3 张立涛 大连 大连市西岗区新开路69号

4 佘高峰 济南 山东省济南市泺文路50号

5 徐俊 上海 上海市静安区南阳路46号

6 张忠飞 上海 上海市肇嘉浜路414号

7 徐俊 上海 上海市乳山路150号

返回表中有两名以上学员的城市的所有学员信息

2.两个表,表1(id name),表2(id sroce class),

找出姓名张三的分数和班级

语文成绩最高的学生姓名;

3.s表和sc表,查询大于80分的学生姓名;

4.

表:1
id, 科目, 成绩
1 语文 80
1 数学 90
2 语文 70
表:2
id name
1 张三
2 李四
(1)语文成绩排名前10的学生ID
(2)语文成绩排名前10的学生姓名
(3)查出总成绩排名前10的学生ID
(4)统计语文成绩及格率

5.快速查询一个表的男女人数

6.写mysql语句:查重复城市信息

互联网

​ 常考:

tcp:

  • TCP/UDP的区别

    qq是udp为主,tcp为辅

    微信的文字传输是哪种方式?视频语音通话呢?

  • 三次握手、四次挥手(tcp连接,为什么不是两次和四次;tcp断开连接为什么不是三次挥手)

  • tcp报文组成

  • tcp如何保证稳定传输的

  • get与post的区别

网络模型:

  • OSI模型、TCP/IP模型
  • 网络层作用是什么
  • 各层的常用协议
  • 常用端口号(http、https、Tomcat等)

页面加载过程:

  • 你能讲一下输入网址到页面呈现的全部过程吗?(缓存+DNS+(OA)+网络模型传输+三次握手+接口、页面展示+四次挥手)
  • 你刚才提到了静态资源,你知道静态资源是如何请求到的吗?
  • 刚才提到了重定向,能仔细讲讲重定向吗?能说说为什么使用重定向吗?知道怎么实现的吗?
  • 知道cookie和seesion的区别和工作原理的差别吗?讲一下

http:

  • http报文格式

  • HTTP状态码;说一下http消息状态码吧 1-5开头的都说一下

  • http、https区别;分别属于(作用于)哪几层

  • 对称加密和非对称加密区别以及具体https中如何使用的

操作系统

(操作系统相关的题,我很少被问到,社招原因?)

  • 进程、线程的区别

中间件

Redis

  • 为什么用redis
  • Redis的雪崩、击穿
  • redis就能保证可靠吗?为什么不加报警系统?
  • 你还知道redis其他的应用场景吗?说一下
  • redis和电商结合你知道吗?redis高并发场景下比如抢购你怎么使用redis?怎么测试?

软件测试

常考知识:

  • 介绍黑盒测试和白盒测试 ;以及常用设计用例方法
  • selenium的定位方式有哪些,你喜欢用哪些
  • 测试的流程
  • 对测试开发的认识
  • 知道哪些测试模块及方法
  • 了解哪些测试前沿技术
  • 是否参加过测试大会、测试线下沙龙
  • 是否有自动化测试、接口测试、性能测试经验
  • 你在**实习执行自动化脚本,你怎么知道执行成功失败?
  • 测试人员的整体素质(软硬方面)

用例设计题:

  • 测试 秒杀场景

  • 测试一个登录界面

  • 测试微信聊天界面

  • 测试某个网站的首页

  • 一部电梯设计测试用例

  • 测试 微信红包

  • 测试抖音客户端修改用户名

  • 测试视频通话

  • 测试一个口罩

  • 测试抖音的播放功能

  • 电商方面的安全性你知道怎么测试吗?你刚才说的性能是哪些部分的性能?

场景题:

  • 我打不开一个网页,你想到有哪些原因吗?我说了好多网络原因以及DNS域名解析,丢包等。面试官问只有网络原因吗?别的原因呢?我又说了一些兼容性。

  • 用户界面显示修改成功,但是刷新后发现没有修改成功怎么办?你会怎么分析这个问题?你会使用什么工具去排查这个问题?

  • 淘宝的支付失败,排查

  • 页面加载内容异常,排查

Linux

  • Liunx查看指定进程 ps -ef|grep 进程名(或端口号)、 lsof -i 端口号、 netstat -lntp 端口号 、top
  • 知道的常用命令(三剑客 awk、grep、sed 常用查看:cat、head、tail、more、less 解压、移动、编辑、删除...)
  • 通过Linux搭建测试环境过程
  • 了解Linux调优吗(直接说不会)
  • 是否了解shell编程
  • nohup重定向
  • 定位线上日志中昨天2点出现的问题,怎么看

shell编程:

​ 1.题目:一个文件: 人名,订单号,金额
​ 找出里面的最大金额
​ 写出每个人一共消费多少金额

(牛客和力扣shell题)

项目经验

考察面试者对自身负责项目的认知熟悉程度、测试质量和流程的把控、学习抗压能力以及综合素质能力。

  • 整体介绍下你负责的项目,如何保证质量(测试流程、思路、计划等)
  • 测试工作遇到的困难,如何解决的
  • 上线是否出现过问题,如何处理的,花费时间,如何总结、复盘,如何规避
  • 认为现在测试中存在哪些问题
  • 代码评审关注什么,如何提升效率
  • 测试中是否有接触 接口测试、自动化测试、性能测试等
  • 是否有在工作中写代码脚本、自动化用例经验
  • 使用过哪些测试工具,如果是公司二次开发的讲讲你怎么使用的
  • 做过哪些调优,怎么做的(做过数据库相关的:原因+分析+实践+优化效果+考虑范围+备份回滚)
  • 你知道怎么把一个项目部署到服务器吗?你需要做哪些工作
  • 有服务器开发经验吗,例如搭建服务器
  • 项目中如何设计数据库的表和字段的
  • 用过linux服务器吗
  • git用过吗,项目里怎样用的(分支,stash)

智力题

牛客面试宝典测试工程师中有很多智力题,一般校招问的最多,社招很少

  • 十堆苹果,其中有一堆比其他少10千克,求如何找出这一堆不同的苹果堆(万金油题目,,比如常考的还有几千杯水找毒酒、10个牌只能取1-2张最后取赢先手后手设计策略等)
  • 绳子计时问题,一堆绳子,每根烧完都需要1小时,如何判断30分钟,15分钟

数据结构算法

数据结构

  • 数组和链表
  • 栈和队列
  • hash
  • 常用工具类(如Java:string、StringBuilder、List、set、HashMap、queue、stack)
小编的Java常用工具类总结:
String: 
增:concat()
删:replace() 后为空
改:replace()
查:length()  charAt()  indexOf()   lastIndexOf() startsWith() endsWIth() isEmpty() contains()
操作:toCharArray()   split()    trim() toUpperCase() toLowerCase() subString()  valueOf()  copyValueOf()   compareTo()  compareToIgnoreCase() hashCode()

StringBuilder:
增:append() insert()
删:delete() 
改:reverse() replace() setCharAt() 
查:capacity() charAt() length() 
操作:subString() toString()


Collections:
sort  reverse  max  min

ArrayList: 
增:add addAll 
删:remove remoceAll  clear   removeRange removeIf 
改:set replaceAll
查:get  contains  containsAll  size  isEmpty 
操作:subList sort toArray toString indexOf lastIndexOf
(栈队列也可以直接用list,只操作相应位置即可)

Set:
增:add addAll
删:remove remoceAll  retainAll clear
改:
查:contains  containsAll  size  isEmpty
操作:toArray iterator equals 

Stack:
增:push
删:pop
查:peek  empty  search

Queue:
增:offer add
删:poll remove
查:peek element

PriorityQueue: 优先级队列,堆
增:add  offer
删:clear   poll remove
查:contains peek size
操作: comparator iterator

ArrayDeque:双端队列
增:add addFirst addLast offer offerFirst offerLast push
删:poll pollFirst pollLast pop remove removeFirst removeLast removeFirstOccurrence removeLastOccurrence
查:contains getFirst getLast isEmpty peek peekFirst peekLast  size

Map: 75 18 8 6
增:put putAll
删:remove clear  
改:put  [key相同,value会覆盖]
查:get containsKey containsValue size isEmpty 
操作: entrySet  keySet values


Iterator: 
删:remove
查:hashNext 
操作:next


HashMap遍历:
【1】:根据keySet遍历
Set<String> ss = map.keySet();
        for (Iterator<String> iterator = ss.iterator(); iterator.hasNext();) {
            String key = iterator.next();
            System.out.println(key + "--" + map.get(key));
        }
【2】:根据entrySet遍历
Set<Entry<String, String>> ss = map.entrySet();
        for (Iterator<Entry<String, String>> iterator = ss.iterator(); iterator.hasNext();) {
            Entry<String, String> e = iterator.next();
            System.out.println(e.getKey() + "--" + e.getValue());
        }
    }

算法:

学习与刷题:

剑指offer + 常考top200 +左神视频+ 书(左神的书 《程序员代码面试指南》、剑指offer书籍、极客时间--数据结构与算法之美、小灰算法之旅)

常考知识点总结:

(xmind还在总结中,后续会发)

排序:快排、堆排、归并、选择、冒泡、插入、桶排序、计数排序、基数排序、希尔排序

链表:删除第k个节点、反转、判断环、判断相交、合并、判断回文、随机指针版复制

树(前中后序遍历、层序遍历、序列化与反序列化)

滑动窗口、递归、动态规划、二分、位运算、字符串匹配

写在最后

个人博客和项目也是加分项,这都是能反映出面试者综合素质能力的。

祝所有人都能拿到心仪的offer和可观的薪资,加油!

全部评论

(5) 回帖
加载中...
话题 回帖

相关热帖

近期精华帖

热门推荐