请选择行业
请选择职位
请选择省份
请选择城市

2020大厂测试开发面试经验

时间: 2020-10-20 13:44   作者: CSU-Benjamin   点击次数: 
 
  1.背景
  先说一下自己的背景,本人中南大学就读,计算机专业,现已拿字节、腾讯测开岗位实习offer、盛大java研发岗位实习offer,阿里交叉面五面挂。自己主要的技术栈为:java,会使用Spring/SpringMVC/mybatis/Spring Sercurity开发框架,mysql数据库,了解常用的数据结构和算法,了解基本的计算机网络和操作系统知识,会使用简单的linux命令,了解c/c++。实习经历为深信服技术服务岗,中国联通销售岗。自学储备:java核心技术上下卷,ssm框架课程,mysql必知必会。
  2.面试知识覆盖
  盛大:java基础知识(重点)、数据库、操作系统
  腾讯:数据库相关(重点),测试知识相关,linux知识
  阿里:java知识(超级重点),数据库,计算机网络,操作系统等等
  字节:算法知识(每一面都有算法题,需要现场手撕,大部分与字符串相关),测试知识,java知识,操作系统知识
  当然每一家几乎都会问到实习经历和项目相关。整体难度 :阿里>字节>腾讯>盛大。阿里轮次6轮(java1轮+测开5轮),字节(4轮j技术+hr),腾讯(3轮技术+hr),盛大(2轮技术+hr)。
  阿里:java一面、测开一面、测开二面主管、测开三面老板、测开四面交叉、测开五面交叉(因为测开四面表现不理想,所以补面交叉,但还是挂了)
  字节:测开一面、测开二面(一二面是连在一起得)、测开三面、测开四面、测开五面hr(我也不知道为啥我五面,一般都是三面应该是中间转部门了)
  以下都是面试过程遇到的一些问题:
  2.1java知识
  1)基本数据类型的所占字节
  2)常量池
  3)自动装箱和拆箱
  4)反射与注解
  5)深拷贝和浅拷贝
  6)四种内部类
  7)jvm分区(重点)
  8)垃圾回收收集器
  9)full gc和minor gc
  10)类加载过程
  11)线程池(重点),线程池创建方法,参数表示的含义,提交任务的顺序
  12)ThredLocal
  13)单例模式的线程安全手写
  14)oom异常的排查
  15)理解继承与多态
  16)多线程(重点):wait()和sleep()的区别、sychornized和lock的区别、 notify()和wait()底层实现,多线程和单线程的运用场景
  17)并行与并发的区别
  18)hashmap(最好看一看源码,重点)
  19)CAS,AQS原理
  20)junit(一个单元测试的工具)的原理,怎么实现的。
  21)用户登陆状态怎么保存。
  2.2Spring
  1)spring的事务传播机制
  2)spring的启动过程
  3)spring容器的原理
  4)springaop的底层原理
  5)@autowire和@Resource的区别
  6)springaop的中代理实现方式,不用代理技术怎么实现AOP。
  2.3数据库
  1)ACID
  2)事务的隔离级别(重点)
  3)索引b+树结构
  4)sql语句优化
  5)数据库引擎比较(重点)
  6)数据库怎么保证事务的acid性质
  7)左外连接和普通连接区别
  8)Delete和trancate的区别
  9)什么时候全表查询比索引快
  10)mysql怎么使用,越多越好吗,一张表最多几个索引
  2.4linux
  1)进程间通信ips比较(重点)
  2)网络命令
  2.5操作系统
  1)进程与线程区别(重点)
  2)进程线程的几种状态及其转换
  3)进程死锁条件,死锁处理方法
  2.6计算机网络
  1)tcp和udp区别,tcp和http区别
  2)http状态码
  3)http过程
  4)流量控制,拥塞控制的方法和手段(重点)
  5)tcp三次握手,四次挥手,原因和过程(重点)
  6)网站访问过程
  2.7测试场景
  1)秒杀场景的测试与实现
  2)抖音下滑功能的测试
  3)登陆功能的测试
  3.手撕代码题
  做手撕代码的时候可以先和面试官确定思路然后再动手写,防止刚开始方向就错了。
  3.1阿里:
  题1:
  评测题目1:使用两个不同的线程将会共用一个 HelloWorld 实例。
  //其中一个线程将会调用 hello() 方法,另一个线程将会调用 word() 方法。
  //请设计修改程序,以确保 "HelloWorld" 被输出 n 次。
  //示例 1:
  //输入: n = 1
  //输出: "HelloWorld"
  //解释: 这里有两个线程被异步启动。其中一个调用 foo() 方法, 另一个调用 bar() 方法,"foobar" 将被输出一次。
  //示例 2:
  //输入: n = 2
  //输出: "HelloWorldHelloWorld"
  //解释: "HelloWorld" 将被输出两次。
  思路:信号量
  题2:
  评测题目2:含有 x + 1 个整数的数组 nums,其数字都在 1 到 x 之间(包括 1 和 x),假设只有一个重复的数字,请找出这个重复的数。
  //示例 1:
  //输入: [1,3,4,2,2]   输出: 2
  //示例 2:
  //输入: [3,1,3,4,2]   输出: 3
  //说明:
  //不能改变原来的数组(假设数组只读)。
  //只能使用额外的 O(1) 的空间。
  //时间复杂度小于 O(n2) 。
  思路:二分
  题3:
  评测题目3实现一个单例模式
  思路:为保证线程安全,用synchornized或者静态内部类,或者枚举类实现
  题4:
  1.生成一个文件,大小不大于1G或行数不大于指定数,文件每行内容 为随机long型正整数的字符串;
  2.读取该文件,并对文件中的整数进行排序,并输出一个文件;
  3. 要求代码简洁优雅,和效率优化
  思路:hash拆分,然后归并
  题5:
  判断一个树是否为平衡树
  思路:递归
  题6:
关闭  
主要城市: 北京 上海 杭州 广州 南京 武汉 长沙
全部城市: