字节测开面试题总结

  • 数据结构
  • MySQL相关
  • Linux命令
  • 多线程
  • 网络原理
  • 测试
  • 算法

数据结构

HashMap和HashTable的区别
①、HashMap 是线程不安全的,HashTable 是线程安全的;
②、由于线程安全,所以 HashTable 的效率比不上 HashMap;
③、HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null,而 HashTable 不允许;
④、HashMap 默认初始化数组的大小为 16,HashTable 为 11,前者扩容时,扩大两倍,后者扩大两倍 + 1;
⑤、HashMap 需要重新计算 hash 值,而 HashTable 直接使用对象的 hashCode

MySQL相关

场景题:在一张表中查出成绩最高的10名学生

SELECT * FROM 表名 WHERE ROWNUM < 11 ORDER BY 列名 DESC;

你知道索引吗?索引的优缺点以及索引的实现

  • 索引是对数据库表中的一列或者多列的值进行排序的一种数据结构,如果把数据库中的表比作一本书,索引就是这本书的目录,通过目录可以快速查找到书中指定内容的位置。
  • 优点:
    a)可以保证数据库表中每一行的数据的唯一性。
    b)可以大大加快数据的索引速度。
    c)加速表与表之间的连接,特别是在实现数据的参考完事性方面特别有意义。
    d)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    f)通过使用索引,可以在时间查询的过程中,使用优化隐藏器,提高系统的性能。
  • 缺点:
    a) 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
    b) 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大。
    c) 以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度。
    d) 建立索引的原则。
    e) 在经常需要搜索的列上,可以加快搜索的速度。
    f) 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
    g) 在经常用在连接的列上,这些列主要是一外键,可以加快连接的速度。
    h) 在经经常需要根据范围进行搜索的列上创建索引,国为索引已经排序,其指定的范围是连续的。
    i) 在经常需要排序的列上,国为索引已经排序,这样井底可以利用索引的排序,加快排序井底时间。
    j) 在经常使用在where子句中的列上,加快条件的判断速度。
  • 实现
    B+树
    哈希

Linux命令

在一个log文件中,统计包含"ERROR"的次数

cat  XXX.log|grep ''|grep 'ERROR'| wc -l

常用的Linux命令

多线程

谈谈你对线程安全的理解
主内存中的变量是共享的,所有线程都可以访问读写,而线程工作内存又是线程私有的,线程间不可互相访问。那在多线程场景下,图上的线程 A 和线程 B 同时来操做共享内存里的同一个变量,那么主内存内的此变量数据就会被破坏。也就是说主内存内的此变量不是线程安全的。

线程安全的实现方式

  1. Synchronized 关键字

1.保证方法或代码块操作的原子性
2.保证监视资源的可见性
3.保证线程间操作的有序性

  1. Volatile 关键字

保证被 Volatile 关键字描述变量的操作具有可见性和有序性(禁止指令重排)

  1. java.util.concurrent.atomic

java.util.concurrent.atomic 包提供了一系列的 AtomicBoolean、AtomicInteger、AtomicLong 等类。使用这些类来声明变量可以保证对其操作具有原子性来保证线程安全。
实现原理上与 Synchronized 使用 Monitor(监视锁)保证资源在多线程环境下阻塞互斥访问不同,java.util.concurrent.atomic 包下的各原子类基于 CAS(CompareAndSwap) 操作原理实现。

  1. Lock

Lock 也是 java.util.concurrent 包下的一个接口,定义了一系列的锁操作方法。Lock 接口主要有 ReentrantLock,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriteLock 实现类。与 Synchronized 不同是 Lock 提供了获取锁和释放锁等相关接口,使得使用上更加灵活,同时也可以做更加复杂的操作

写一个死锁的Demo

public class DeadLock {public static final String LOCK_1 = "lock1";public static final String LOCK_2 = "lock2";public static void main(String[] args) {Thread threadA = new Thread(()->{try {while(true){synchronized(DeadLock.LOCK_1){System.out.println(Thread.currentThread().getName());Thread.sleep(100);synchronized(DeadLock.LOCK_2){System.out.println(Thread.currentThread().getName());}}}} catch (InterruptedException e) {e.printStackTrace();}});Thread threadB = new Thread(()->{try {while(true){synchronized(DeadLock.LOCK_2){System.out.println(Thread.currentThread().getName());Thread.sleep(100);synchronized(DeadLock.LOCK_1){System.out.println(Thread.currentThread().getName());}}}} catch (InterruptedException e) {e.printStackTrace();}});threadA.start();threadB.start();}
}

网络原理

TCP和UDP的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

TCP是怎么建立连接的
通过三次握手

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
HTTP的GET和POST方法

测试

电梯的测试用例
需求测试:
查看电梯使用说明书、安全说明书等

界面测试:
查看电梯外观

功能测试:
1.测试电梯能否实现正常的上升和下降功能。
2.电梯的按钮是否都可以使用。
3.电梯门的打开,关闭是否正常。
4.报警装置是否可用。
5.与其他电梯之间是否协作良好。
6.通风状况如何。
7.突然停电时的情况。
8.上升途中的响应。
1)电梯本来在1楼,如果有人按18楼,那么电梯在上升到5楼的时候,有人按了10楼,这时候是否会在10楼先停下来;
2)电梯下降到10层时显示满员,此时若8层有人等待电梯,是否在8层停。

可靠性:
1.门关上的一刹那出现障碍物。
2.同时按关门和开门按钮。
3.点击当前楼层号码。
4.多次点击同一楼层的号码等等。
5.同时按上键和下键会怎样。

易用性:
1.电梯的按钮的设计符合一般人使用的习惯吗.

负载/压力测试:
1.看电梯的最大限度的承受重量.在负载过重时是否有提醒。
2.在一时间内不断的让电梯上升,下降。

稳定性测试:
1.最大负载下平稳运行的最长时间。

文档测试:
1.使用手册是否对电梯的用法、限制、使用条件等有详细描述
刷抖音出现闪退问题应该怎么测试

1.空指针:对象没有初始化就使用了;
2.空函数:有事件源但没有对应的事件对象;
3死循环:没有合理的循环控制流;
4.内存泄露:同一个对象不停地开辟,而且没有释放;
5.内存溢出:程序所消耗的内存大于硬件提供的内存;
6.网络:异步加载时提前调用了数据(现象是在弱网时,根源是空指针);
7.界面UI:像拍照没有附加于ControlView;
8.主线程:需要主线程执行的,放于子线程里执行了。比如:网络电话——网络电话是用C语言写的,在高级语音中要调用中,需要加线程转换。

算法

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下一夜之内能够偷窃到的最高金额。
示例1:
输入: [1,2,3,4]
输出: 4
解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金额= 3)。偷窃到的最高金额= 1 +3=4。
示例2:
输入: [2,7,9,3,1]
输出: 12
解释:偷窃1号房屋(金额=2),偷窃3号房屋(金额=9),接着偷窃5号房屋(金额
= 1)。偷窃到的最高金额=2+9+1 =12。

字节测试开发面试题总结相关推荐

  1. 初级测试开发面试题_初级开发人员在编写单元测试时常犯的错误

    初级测试开发面试题 自从我编写第一个单元测试以来已经有10年了. 从那时起,我不记得我已经编写了成千上万的单元测试. 老实说,我在源代码和测试代码之间没有任何区别. 对我来说是同一回事. 测试代码是源 ...

  2. 吊打面试官系列之:常见测试开发面试题汇总,在面试的路上,总要先下手为强。

    测试开发面试题汇总 1.引言 2.热身题 3.理论基础 4.管理技能 5.服务端 7.移动APP 7.1 理论 7.2 实践 8.自动化测试 9.工具使用 10.算法 11.SQL 12.Linux ...

  3. 金九银十面试怒拿6个offer——测试开发面试题整理

    金九银十面试怒拿6个offer--测试开发面试题整理 1.软件测试的流程是什么? 2.测试用例主要有哪些元素? 3.软件测试有什么策略和阶段? 4.黑盒测试和白盒测试是什么?二者有什么区别? 5.软件 ...

  4. 九月刚入职字节跳动的测试开发面试题,附答案

    朋友入职已经两周了,整体工作环境还是非常满意的!所以这次特意抽空给我写出了这份面试题,而我把它分享给小伙伴们,面试&入职的经验! 大概是在7月中的时候他告诉我投递了简历,9月的时候经过了3轮面 ...

  5. 字节跳动-飞书视频-测试开发面试题

    1.自我介绍 2.jenkins相关插件 3.TCP/UDP区别和使用场景 TCP通信协议 TCP是面向连接的: 每条TCP连接只能由于两个端点,一对一通信: TCP提供可靠的交付服务,传输数据无差错 ...

  6. 测试开发面试题(1)

    1.给你一个网站,你如何测试? 首先,查找需求说明.网站设计等相关文档,分析测试需求:制定测试计划,确定测试范围和测试策略,一般包括以下及部分,功能性测试.界面测试.性能测试. 数据库测试.安全性测试 ...

  7. 月薪1.5w,经常面试的测试开发面试题

    1.你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库进行备案. 然后,要获取判断的依据和标准: 根绝需求说明书,产品说明.设计文档等,确认实 ...

  8. 【面试题】测试工程师/自动化测试/测试开发面试题整理

    [自己做个笔记,大家有需要的可以看看,有问题欢迎指出] 文章目录 基础面试题 1.设计用例的方法.依据有哪些 2.软件的生命周期 3.测试流程 4.bug生命周期 5.你在测试中发现了一个bug,但是 ...

  9. python布尔测试对象_面试题十九期-测试开发面试题之python系列-这个中~

    坚持梦想 就算所有人都不支持你.这条路会很曲折,你也会一度认为是不是自己选错了,但只要坚持,就算最后没有成功,但努力了就不会有遗憾. 测试开发python系列面试题 01 单选题 1.下列哪个语句在P ...

  10. python支持复数类型以下什么说法是错误的_python测试开发面试题1

    自动化面试试题1 试卷时间 60分钟,请不要在试卷上作答,用A4纸做答题纸作答. 一,中文单项选择题(30分,每个3分) 1.下列哪个语句在Python中是非法的? A.x = y = z = 1   ...

最新文章

  1. 【AS3代码】隐藏原有鼠标箭头,并自定义鼠标小箭头
  2. 差分法c语言源程序,差分法求数据压缩
  3. 鸿蒙系统小卡片,升级鸿蒙101版本,UI审美升级了
  4. DBA日常工作内容和职责
  5. 你不知道的无人机知识(建议收藏)
  6. 一键快速生成 Vue 的 HTML页面结构代码
  7. 改善深层神经网络:超参数调整、正则化以及优化 —— 3.2 为超范围
  8. YJX_Driver_031_再谈SSDT_HOOK驱动保护原理
  9. c语言文本格式自动对齐,c语言文件读取原始数据是1、2列是按相同的一起排列命名为Yi- 爱问知识人...
  10. LayaAir graphics 绘制文本
  11. TypeError: float() argument must be a string or a number, not 'datetime.date'
  12. linux系统可安装博途吗,安装博途V14是在什么系统下?
  13. 北京大学计算机801考试大纲,2019年中国科学院大学801高等代数考研初试大纲
  14. 对异地工作的一些看法
  15. Datakit.CrossManager.2023(2D/3D数据格式转换器)
  16. 使用CNNs网络,基于caltech 101数据集实现分类
  17. 怎么将某个页面,保存成一个长图?
  18. 3D激光SLAM点云地图pcd转导航可用的2D栅格地图
  19. ubuntu 常用命令大全(转)
  20. 网易云信直播聊天室:无上限人数系统不卡顿,是不是鱼与熊掌不能兼得?

热门文章

  1. 一张图带你复习《数字信号处理》、《数字电路》、《电磁场理论》
  2. 数字信号处理原理及实现一书的思维导图
  3. cmd命令查询电脑序列号_什么命令可以查电脑型号、序列号
  4. 使用深度学习技术进行水印去除
  5. 【统计信号处理检测理论:二维CFAR】
  6. matlab 偏最小二乘回归,偏最小二乘法回归和判别分析的Matlab开源免费库
  7. h5页面如何预览excel文件_在网页中预览word和excel
  8. 2023北京航空航天大学计算机考研信息汇总
  9. 基于KNN的离群点检测算法的Matlab版实现
  10. 如何开发自己的VUE组件库并打包复用