文章目录
-
-
- 1.jmeter何postman的优缺点
- 2.测试方法有哪些?测试过程中主要用到了哪些测试方法?
- 3.常见的黑盒测试和白盒测试方法分别有哪些?
- 4.说一下java的集合框架?
- 5.HashMap的底层实现?
- 6.你了解jvm吗?
- 7.HashMap和HashTable的区别?
- 8.如何获取线程安全的map
- 9.synchronized锁和lock锁的区别?
- 10.线程池的参数和工作原理
- 11.B+树的特点
- 12.mysql查询语句优化思路
- 13.notify和notifyAll的区别,获取的锁是什么锁
- 14.了解哪些可重入锁,以及原理
- 15.springmvc的执行流程如何?
- 16.MySQL的innodb和myIsam引擎的区别
- 17.单例模式实现方式
- 18.mysql左连接和右链接的区别
- 19.为什么选择测试?
- 20.测试用例包括哪些
- 21.给一支笔如何测试
- 22.linux生效环境变量的命令
- [23. 查看linux日志头部、尾部](#23. 查看linux日志头部、尾部)
- 24.linux查询文件中指定的字符串
- 25.mysql中如何发现慢sql以及优化
- 26.用过python的哪些库?
- 27.
-
1.jmeter何postman的优缺点
Postman 更适合接口调试与轻量自动化;
JMeter 更适合高并发性能测试与复杂场景自动化。
2.测试方法有哪些?测试过程中主要用到了哪些测试方法?
黑盒测试白盒测试等等。项目中用到了黑盒测试,重点应用等价类和边界值设计输入测试用例;性能方法,用到了jmeter进行压力测试。单元测试,集成测试和系统测试都会用到
3.常见的黑盒测试和白盒测试方法分别有哪些?
黑盒测试包括等价类,边界值,判定表,因果图,等等,不关心代码的
白盒测试包括语句覆盖,条件覆盖,分支覆盖路径覆盖等等,关注代码的内部逻辑结果
4.说一下java的集合框架?
java的集合框架主要由Collection和Map两大体系组成。Collection体系包括List、Set、Queue等,Map体系主要存放键值对,包括HashMap,LinkedHashMap,TreeMap和支持并发的CocurrentHashMap。
5.HashMap的底层实现?
HashMap底层是通过"数据+链表+红黑树"的结构实现的,put操作通过hash扰动函数计算桶位置,如果冲突就插入链表或红黑树,链表长度大于8并且容量大于64会转为红黑树,提高查询效率。当链表长度大于阈值的话就扩容为原来的两倍。
6.你了解jvm吗?
主要干三件事:类加载,内存回收和垃圾管理。
类加载器主要负责把class文件加载到jvm内存中,遵循双亲委派模型。方法区主要存放类信息,常量池等等。还包括线程私有区域:栈和程序计数器。栈主要存放函数调用栈帧,程序计数器负责记录字节码执行的位置
7.HashMap和HashTable的区别?
HashMap是线程不安全的,性能更高;HashTable线程安全,所有的方法都带了synchronized。
HashMap允许null key和null value,HashTable完全不允许
一般来说要想线程安全,一般用的是ConcurrentHashMap而不是Hashtable
8.如何获取线程安全的map
1.cocurrenthashmp采用cas+synchronized锁实现
2.Collections.synchronzedMap包装hashmap
3.用hashtable
9.synchronized锁和lock锁的区别?
synchronized锁是java的内置锁,由JVM提供,可以修饰方法或者代码块,JVM会进行自动加锁和解锁,使用简单。Lock是java提供的显示锁,需要手动加锁和解锁但是更加灵活,支持中断等待,公平锁和多条件变量等等,适合复杂的多线程业务逻辑场景
10.线程池的参数和工作原理
java线程池是通过ThreadPoolExecutor来实现的,其核心参数包括核心线程数,最大线程数,救急线程生存时间,救急线程生存时间单位,线程工厂和拒绝策略。工作原理是:任务提交交给核心线程,满了给阻塞队列,阻塞队列满,交给救急线程,实在还多就启用拒绝策略
11.B+树的特点
1.所有的关键字都出现在叶子节点,叶子节点形成一个有序链表,便于范围查询和顺序查询。第二,非叶子节点只存储对应的索引信息,不存储实际的数据,第三是树高较低,便于快速查找。
12.mysql查询语句优化思路
第一索引优化,要查询的列尽量走索引。第二避免使用select *,结合explain分析查询计划。然后是表结构的设计要合理,最后是要学会使用缓存加快访问速度
13.notify和notifyAll的区别,获取的锁是什么锁
都是用于唤醒等待在对象监视器上的线程,notify随机唤醒一个等待线程notifyAll唤醒所有等待线程
14.了解哪些可重入锁,以及原理
可重入锁指的是一个线程多次获取同一把锁而不会阻塞,由synchronzied和reentranlock,其中synchronized由jvm提供控制其重入。reentranlock由持有锁的线程记录和计数器实现,重入次数加1计数器加1,计数器为0的时候释放锁。
同理redission实现的分布式锁也是这个实现逻辑
15.springmvc的执行流程如何?
客户端发起请求,前端控制器接收,根据url查找handlermapping对应的controller方法,调用handleradapter执行该方法,最后通过消息转换器转为json返回给客户端
16.MySQL的innodb和myIsam引擎的区别
innodb支持事务,行级锁,外键约束和崩溃回复,适合高并发读写
myisam不支持事务和外键,只支持表级锁,查询快但并发能力弱。
17.单例模式实现方式
饿汉式:类加载就创建实例,线程安全但是可能浪费
懒汉式:延迟实例化,第一次使用创建,加volite和锁保证线程安全。
枚举单例:使用枚举类实现,天然防止反射和序列化破坏单例,安全
18.mysql左连接和右链接的区别
左连接以左表为主,返回左表的所有记录。右连接以右表为主,返回右表的所有记录。
19.为什么选择测试?
实践过程中,对系统的整体质量,稳定性和问题排查更加感兴趣,已有的编程能力能更好的排查问题所在
20.测试用例包括哪些
编号,场景,输入,操作步骤,预期结果,实际结果,是否通过
21.给一支笔如何测试
写字功能是否横穿,笔帽是否正常打开,不同温度湿度是否出墨正常,握持手感,耐摔测试等等
22.linux生效环境变量的命令
linux下可以用export临时设置环境变量,用source让修改后的配置文件立即生效
永久生效需要修改一个配置文件
23. 查看linux日志头部、尾部
head -n 行数 文件名
tail -n 行数 文件名
24.linux查询文件中指定的字符串
grep 字符串 文件名
25.mysql中如何发现慢sql以及优化
可以开启慢查询日志,slow_query_long=ON, 设置超时时间。或者explain分析计划查看SQL执行计划,优化方式的话,尽量让查询的列命中索引
26.用过python的哪些库?
python的requests,pymysql进行数据库连接,numpy.pandas进行数值计算和清晰等等