ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【面试】测试/测开(ING)

【面试】测试/测开(ING)

63. APP端特有的测试

参考:APP专项测试、APP应用测试
crash和anr的区别
1)网络测试
2)中断测试
3)安装、卸载测试
4)兼容测试
5)性能测试(耗电量、流量、内存、服务器端)
6)安全性测试(密码、sql注入、权限)
7)UI测试(横竖屏、手势、键盘等的自适应)
8)升级测试(考虑内存)
9)稳定性测试(使用monkey)
10)接口测试
11)其他测试(如上传文件、图片、视频)

64. 服务异常情况验证

参考:异常测试
浅谈异常测试
服务异常

65. 用什么做性能测试

66. Jmeter如何设计测试场景

67. 压测怎么做

69. UI自动化元素定位方法

参考:UI自动化元素定位
UI元素定位

70. gpu和cpu有什么区别

71. gpu性能受哪些因素的影响

72. 共享内存,线程安全吗?怎么解决?

73. 什么情况下会发生死锁?怎么解决?

74. 进程上下文切换需要做哪些事情?上下文保存在哪里?

75. 单例模式怎么实现的?怎么判断一个实例是不是已经创建了呢?线程安全吗?加锁会有什么问题?怎么优化?

76. 视频静态解码和动态解码?

77. 逆层序遍历

78. 用户上传照片如何测试

79. 线上bug如何解决?完成处理流程?

80. 前端页面无法展示,如何找bug?

81. 服务端接口有问题怎么定位bug

82. 字符串数组最长公共子串

83. 如果UI经常变更,UI自动化怎么解决

参考:UI自动化测试01、UI自动化02

① 对比较稳定的功能和模块设置自动化用例

84. 提一个bug需要写明什么

参考:提BUG的内容

测试环境、测试设备/型号、软件版本、bug错误类型、bug所属模块、重现概率、优先级、严重级别、复现步骤、预期结果、实际结果、日志、bug状态以及标题、bug解决人

85. 怎么保持redis数据的时效性

86. 接口实现与基类继承的差异

87. coding过程中什么才是符合标准的好代码

88. Java基本数据类型有哪些?自动装箱、拆箱?

89. 异常的分类?如何处理异常?

参考:异常的的分类以及处理

异常

90. Mysql的索引如何实现?B+树的结构?是逻辑结构还是线性结构?分别介绍逻辑结构、线性结构的数据结构有哪些?

91. sql:一页数据20条记录,显示第五页的记录?

已知每页显示m条数据,求第n页显示的数据
提示: 关键是求每页的开始行索引

① 查询学生表,获取第n页数据的SQL语句:
select * from students limit (n-1)*m, m

② 一页数据20条记录,显示第五页的记录
select 8 from table limit (5-1)*20, 20;

92. 购物车下单功能需要进行哪些测试

93. 了解哪些排序算法?哪些排序算法效率高一些?时间复杂度如何?

94. 两个无序二叉树合并为有序二叉树

95. 贪心算法和动态规划的区别?

96. 分治思想和动态规划的区别

97. 线程资源以来死锁问题,如何避免?

98. IO多路复用

99. InnoDB的索引类型

100. MySQL的锁机制,悲观锁和乐观锁的区别

参考:MySQL乐观锁和悲观锁、MySQL从乐观到悲观

1)共享锁S和排他锁X
2)乐观锁一般是使用版本号来实现的,一般使用select … for update来实现悲观锁

101. sql:查询第50到100条数据

① 查询前100条数据
select * from A limit 0,100;

② 查询50-100条数据
select * from A limit 49,51;

select * from A limit s, n;
// s 表示起始位置,是不包含状态,也让就是说从s+1开始输出
// n 表示多少条数据

102. 依赖注入的方式

103. IOC和AOP的概念,IOC的实现机制

104. SpringBoot配置文件的加载顺序?yam和properties?

105. 讲一下collection和map

106. List和Set有什么区别?Set里面可以有null值吗?List是不是可以有多个null值

参考 :List和Set的区别、List和Set集合

① 都继承自Collection接口
② null值
③ 重复值
④ 有序性

107. hashMap和hashTable有什么区别?Hash Map的底层原理?如何解决Hash冲突?

参考:HashMap和HashTable的区别
哈希冲突

1)区别:
① 读写的线程安全
② null值的存储:map中key和value均可以是null,但是table中不允许存储null

2)哈希冲突避免:
哈希函数设计、负载因子调节

3)哈希冲突解决:
闭散列(线性探测,保存到下一个位置)、开散列(链表存储)

108. 一张表用a,b,c三个字段作为联合索引,一条sql语句命中了a和b是否会走索引?

参考:组合索引

组合索引 有“最左前缀”原则,遇到范围查询(>、<、between、like)就会停止匹配。

109. 基于TCP的协议

110. TLS握手过程

111. session和cookie

112. 页面置换算法LRU?还有其他的页面置换算法吗?

113. 介绍线程池以及对线程池的认识?

114. 哈希表与红黑树的认识?

115. 抽象类的使用场景

116. MySql的事务

117. 分布式锁

118. StringBuffer、StringBuilder为什么是可变的?

StringBuilder、StringBuffer可变长

1)String:底层是char数组,数组是不可变长的;再者,数组是使用final修饰的,该引用不可以再指向其他对象
2)StringBuffer和StringBuilder:内部实际上是一个char[ ]数组,这个char[ ]数组没有被final修饰,StringBuffer和StringBulider的初始化容量应该为16,当存满之后会进行扩容,底层调用了数组拷贝的方法:System.arraycopy()…扩容的,所以StringBuffer/StringBuilder适用于字符串的频繁拼接操作,并且StringBuffer是线程安全的,StringBuilder是非线程安全的。(扩容机制:原数组大小*2+2)

119. 为什么TCP比UDP长一点?

① TCP 有可变长的「选项」字段,而 UDP 头部长度则是不会变化的。
② TCP是可靠传输的,其有三次握手和四次挥手,所需要使用的序列号以及确认号需要进行存储;另外,还有滑动窗口来进行流量控制等以保证数据的安全性
TCP

③ UDP的头部长度是不会改变的
UDP

120. Java怎么实现单例继承?手写线程安全的单例继承

六种单例模式
高并发下线程安全的单例模式

1)定义:确保一个类只有一个实例,并提供该实例的全局访问点
2)设计要素:一个私有构造函数 (确保只能单例类自己创建实例)、一个私有静态变量 (确保只有一个实例)、一个公有静态函数 (给使用者提供调用方法)
3)类型:
① 懒汉:先不创建实例,当第一次被调用时,再创建实例,所以被称为懒汉式。

// 线程安全的懒汉模式
public class Singleton {private static Singleton uniqueInstance;private static singleton() {}public static synchronized Singleton getUinqueInstance() {if (uniqueInstance == null) {uniqueInstance = new Singleton();}return uniqueInstance;}}

② 饿汉: 先不管需不需要使用这个实例,直接先实例化好实例 (饿死鬼一样,所以称为饿汉式),然后当需要使用的时候,直接调方法就可以使用了。

public class Singleton {private static Singleton uniqueInstance = new Singleton();private Singleton() {}public static Singleton getUniqueInstance() {return uniqueInstance;}}

③ 静态内部类

public class Singleton {private Singleton() {}private static class SingletonHolder {private static final Singleton INSTANCE = new Singleton();}public static Singleton getUniqueInstance() {return SingletonHolder.INSTANCE;}}

④双检查机制

public class MySingleton {//使用volatile关键字保其可见性volatile private static MySingleton instance = null;private MySingleton(){}public static MySingleton getInstance() {try {  if(instance != null){//懒汉式 }else{//创建实例之前可能会有一些准备性的耗时工作 Thread.sleep(300);synchronized (MySingleton.class) {if(instance == null){//二次检查instance = new MySingleton();}}} } catch (InterruptedException e) { e.printStackTrace();}return instance;}
}

4)使用场景
① 频繁实例化然后又销毁的对象,使用单例模式可以提高性能。
② 经常使用的对象,但实例化时耗费时间或者资源多,如数据库连接池,使用单例模式,可以提高性能,降低资源损坏。
③ 使用线程池之类的控制资源时,使用单例模式,可以方便资源之间的通信。

121. SpringBoot的关键注解? @SpringBootApplication是一个组合注解,是由哪些构成的?

参考:SpringBootAppication注解、SpringBootApplication注解02
SpringBoot注解
1)注解类型:
① 核心注解:@SpringBootApplication:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
② 常用注解:@Component、@Bean、@Import、@Autowired、@Configuration、@VAlue(注入 application.properties 或 application.yml 配置的属性的值)

2)@SpringBootApplication注解:

/*** @SpringBootApplication组合注解包含以下注解:* * @Target(ElementType.TYPE) :用于描述注解的使用范围* @Retention(RetentionPolicy.RUNTIME) :保留,指定保留时间,三个枚举,分别为source,class,runtime* @Documented:可被javadoc等工具记录,注解类型信息会保存到生成的文档中* @Inherited:个人认为是一个成员变量,父类被子类覆盖之后无法继承,子类中可以继承父类中未被覆盖的父类注解的值* @SpringBootConfiguration:包含@Target(ElementType.TYPE)*                                                     @Retention(RetentionPolicy.RUNTIME) :同上述*                                                     @Documented:同上述*                                                     @Configuration:用于配置,包含以下注解*                                                                                     @Target(ElementType.TYPE) :同上述*                                                                                     @Retention(RetentionPolicy.RUNTIME) :同上述*                                                                                     @Documented :同上述*                                                                                     @Component:spring内置组件注解,用途是让spring容器扫描* @EnableAutoConfiguration:开启自动配置,包含以下注解*                                                     @Target(ElementType.TYPE):同上述*                                                     @Retention(RetentionPolicy.RUNTIME):同上述*                                                     @Documented:同上述*                                                     @Inherited:同上述*                                                     @AutoConfigurationPackage:自动配置包含注解的类*                                                     @Import(AutoConfigurationImportSelector.class)* @ComponentScan:开启包扫描,默认扫描同级及当前包下内容,包含以下注解*                                         @Retention(RetentionPolicy.RUNTIME)*                                         @Target(ElementType.TYPE):同上述*                                         @Documented:同上述*                                         @Repeatable(ComponentScans.class):允许在同一申明类型(类,属性,或方法)的多次使用同一个注解*/
@SpringBootApplication

122. 编程:给你两个线程,交替修改同一个变量10次?

参考:多线程交替打印
思路:其实这类问题本质上都是线程通信问题,思路基本上都是一个线程执行完毕,阻塞该线程,唤醒其他线程,按顺序执行下一个线程。

1)synchronized + wait/notifyAll
2)join()
3)Lock

123. ThreadLocal和synchronized的区别?

124. JVM内存模型?JVM方法区主要存储哪些类型数据?

124. Spring Bean 和new 类的区别

125. 线程池由哪几种类型

126. JVM哪部分会出现OOM问题

返回列表