高级测试开发面试集锦(1)

很多需要java基础

  1. 使用过哪些集合类:

    1. Set、List、Map、Queue使用场景

    2. map和hashmap的使用场景等。

  2. JAVA中的string stringbuffer stringbuilder的区别。

    1. 各种的使用场景。

    2. 答案归纳:https://www.cnblogs.com/xudong-bupt/p/3961159.html

  3. Spring 框架的理解: Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式

  4. 使用过哪些服务端的接口测试的框架,以及对接口测试的理解。

  5. 解释内存中的栈(stack)、堆(heap)和静态存储区的用法。

    1. 通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。栈空间操作最快但是也很小,通常大量的对象都是放在堆空间,整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用。

  6. ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?

    ArrayList,是数组结构:少用与中间的增删。多用于查询,修改。每次增删元素顺序都会操作每个元素。

    LinkedList,是链表结构:多用于中间,开头增删。少用查询,修改。查询时会遍历大量元素。

  7. 内存溢出是怎么回事?

    对象有被指向的引用,但是再也用不到它就是内存溢出了。

    GC机制:复制回收,标记清除,引用计数(如果有循环引用后,会影响垃圾回收,所以JVM虚拟机没有采用此方法进行垃圾回收)。

  8. java的多线程的业务问题,多线程容易碰到的问题,已经怎么解决这些问题。线程的安全问题,是怎么去解决的。

  9. 后端使用数据库,以及使用缓存时的数据同步问题,如何保证数据库和缓存中的数据一致性。

  10. final/finally/finalize的区别?

     final是类,变量,方法的修饰。类被修饰后不能再被继承。变量和方法被修饰不能再被修改

    finally是try...catch后执行的finally,

    finalize,在Object中的方法名,在此对象被回收前会执行这个方法。(当使用文件流时,如果对象被回收,没有关闭流,在底层就会实现内存泄露)

你可能感兴趣的:(高级测试开发面试)