• 测试开发面试问题汇总


     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:
      中序遍历一个树,实现递归和非递归方法
      思路:递归:dfs,非递归:用栈存储节点,先找最左边,再判断其是否是否有右节点巴拉巴拉,大家还是力扣上看思路吧,有原题。
      题7:
      模拟栈,能够实现压入,弹出,获取当前栈的最大值的操作。
      思路:维护两个链表,一个链表存储元素,一个链表存储截止至当前位置的最大元素,弹出一起弹出即可。
      如:
      链表1:1 2 1 3 1
      链表2:1 2 2 3 3
      题8:
      矩阵相乘,并优化。
      思路:优化稀疏矩阵 遇0时记录跳过
      3.2字节:
      题1:
      给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
      nums = [-1, 0, 1, 2, -1, -4,4,5]
      注意:答案中不可以包含重复的三元组。
      思路:先求一个和数组,然后通过hashmap判断是否有和的负值存在
      题2:
      判断一个字符串是否符合ipv4地址,返回true或者false
      比如输入“127.0.0.1”,返回true
      输入"256.1.2.3",返回false
      思路:比较简单,分四个部分判断就行,可以注意一下优化,能提前判断错误就直接返回不要进行太多的步骤。
      题3:
      3.将中文亿级数字转换为int,值范围[0, 10^9]
      一千零二十四  => int
      Cases
      一千零二十四
      一亿零九万三千八百
      零
      思路:我是根据字符串的‘万’和‘亿’字符的位置进行分割,将字符串分割成三个部分,然后依次判断,最后累加起来就行。
      3.3吉比特:
      题1:
      重写string类中的indexof()
      思路:标志位
      3.4腾讯:
      题1:
      找数组中第一个等于或大于x的数
      思路:二分。
      4.心得
      不打无准备之战!不打无准备之战!不打无准备之战!
      投递简历乘早,越早机会越多
      面试之前最好猜一些面试官可能会问的问题,提前写好自己的“标准答案”,心理默读几遍,
      注重简历,简历上写了的东西自己心理一定要有底,简历就像是自己交给面试官的考卷,他拿这个考你,技术岗最好体现自己的技术栈,简写一些非技术的。
      保持良好的心态,面试不用慌,也不用太在乎结果,反正过了就赚了,没过就总结就行。
      大厂不用慌,其实面大厂的人很少,怕投的人很多,放心大胆投就行,自我感觉大厂比一些小厂面试还要简单一些。
      面试过程尽量引导面试官往自己熟悉的领域问,hr面最重要的是真诚。
      5.复习路线
      数据库:《mysql必知必会》,所需时间两天
      计算机知识:把java,计算机网络,操作系统等等知识回顾一下,准备面试的过程每天都会看。
  • 相关阅读:
    关于动态规划的问题494_LEETCODE_TARGET_SUM
    Python 关于二叉树生成、先序遍历、中序遍历、后序遍历、反转
    关于python引入文件路径的解决办法
    git一些笔记
    迪克斯特拉 算法(算最短距离)
    Python多线程编程中daemon属性的作用
    types.MethodType实例绑定方法
    Python之__getitem__、__getattr__、__setitem__ 、__setitem__ 的区别
    jenkins自动打包ios、安卓
    python socket编程tcp/udp俩连接
  • 原文地址:https://www.cnblogs.com/zgq123456/p/14491666.html
Copyright © 2020-2023  润新知