您的位置:首页 > 文旅 > 美景 > 大厂面试-基本功

大厂面试-基本功

2024/10/5 20:42:33 来源:https://blog.csdn.net/zhouhe_/article/details/140483231  浏览:    关键词:大厂面试-基本功

大厂面试第4季

  • 服务可用性多少个9是什么意思
  • 遍历集合add或remove操作bug
  • hashcode冲突案例
  • Bigdecimal
  • List去重复
  • IDEA Debugger
  • 测试框架
  • ThreaLocal
  • 父子线程数据同步 InheritableThreadLocal
  • 完美解决线程数据同步方案 TransmittableThreadLocal

服务可用性多少个9是什么意思

在这里插入图片描述

遍历集合add或remove操作bug

并发修改异常
在这里插入图片描述

hashcode冲突案例

属于Object类方法
在这里插入图片描述

一般10万次左右,才会出现hash冲突

Bigdecimal

在这里插入图片描述
https://my.oschina.net/u/3644969/blog/4927776

List去重复

  1. HashSet
  2. LinkedHashSet(去重复同时可以保证原有顺序)
  3. 双指针去重
    在这里插入图片描述

IDEA Debugger

在这里插入图片描述
显示当前执行断点

在这里插入图片描述
Step Over 一步步过
Step Into 步入
Force Step Into 强制步入

在这里插入图片描述
运行到光标代码行

  1. 流式计算调试

在这里插入图片描述

  1. 调试方法入栈(生产 慎重)
    在这里插入图片描述
  2. return 断点调试
    在这里插入图片描述
  3. BreakPoint
    在这里插入图片描述

测试框架

在这里插入图片描述
测试:

  1. 多些全功能覆盖各种情况的Case
  2. 边界条件
  3. 极值判断
  4. 入参相同、不同
  5. 抛出异常
  6. 全部分支条件
  7. 压测
    在这里插入图片描述
    在这里插入图片描述
    BeforeEach:每个测试方法前执行
    AfterEach:每个测试方法后执行

AfterAll:修饰静态方法,前执行一次
BeforeAll:修饰静态方法,后执行一次

@MockBean 模拟数据

@SpringBootTest
public class TestA {@MockBeanTestController testController;@Testvoid saveTrain() {when(testController.test()).thenReturn("AAAOK");String test = testController.test();System.out.println(test);}
}

@SpyBean 如果有when则使用规则,无when则调用真实数据接口

@SpringBootTest
public class TestA {@SpyBeanTestController testController;@Testvoid saveTrain() {
//        when(testController.test()).thenReturn("AAAOK");String test = testController.test();System.out.println(test);}
}

ThreaLocal

线程局部变量
在这里插入图片描述
在这里插入图片描述

父子线程数据同步 InheritableThreadLocal

可以在子线程获取父线程InheritableThreadLocal 的数据
如果新键线程,可以直接获取;对于线程池中的复用线程,可能获取父线程的旧数据

完美解决线程数据同步方案 TransmittableThreadLocal

<dependency><groupId>com.alibaba</groupId><artifactId>transmittable-thread-local</artifactId><version>2.14.3</version></dependency>
@Testvoid main() {TransmittableThreadLocal<String> transmittableThreadLocal = new TransmittableThreadLocal<>();ExecutorService threadPool = Executors.newSingleThreadExecutor();threadPool = TtlExecutors.getTtlExecutorService(threadPool);transmittableThreadLocal.set("hello main");threadPool.submit(new Runnable() {@Overridepublic void run() {String s = transmittableThreadLocal.get();Console.log("{} {}", Thread.currentThread().getName(), s);}});transmittableThreadLocal.set("hello haha");threadPool.submit(new Runnable() {@Overridepublic void run() {String s = transmittableThreadLocal.get();Console.log("{} {}", Thread.currentThread().getName(), s);}});}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com