'Dream是普通小孩耶

'Dream是普通小孩耶

63. APP端特有的测试

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

64. 服务异常情况验证

参考:异常测试
浅谈异常测试
【面试】测试/测开(ING)-LMLPHP

65. 用什么做性能测试

66. Jmeter如何设计测试场景

67. 压测怎么做

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

参考:UI自动化元素定位
【面试】测试/测开(ING)-LMLPHP

70. gpu和cpu有什么区别

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

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

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

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

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

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

77. 逆层序遍历

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

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

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

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

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

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

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

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

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

参考:提BUG的内容

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

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

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

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

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

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

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

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

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是可靠传输的,其有三次握手和四次挥手,所需要使用的序列号以及确认号需要进行存储;另外,还有滑动窗口来进行流量控制等以保证数据的安全性
【面试】测试/测开(ING)-LMLPHP

③ UDP的头部长度是不会改变的
【面试】测试/测开(ING)-LMLPHP

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问题

12-09 03:27