大厂面试-基本功

服务可用性多少个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 {
    @MockBean
    TestController testController;


    @Test
    void saveTrain() {
        when(testController.test()).thenReturn("AAAOK");
        String test = testController.test();
        System.out.println(test);
    }
}

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

@SpringBootTest
public class TestA {
    @SpyBean
    TestController testController;

    @Test
    void 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>
@Test
    void main() {
        TransmittableThreadLocal<String> transmittableThreadLocal = new TransmittableThreadLocal<>();

        ExecutorService threadPool = Executors.newSingleThreadExecutor();
        threadPool = TtlExecutors.getTtlExecutorService(threadPool);
        transmittableThreadLocal.set("hello main");

        threadPool.submit(new Runnable() {
            @Override
            public void run() {
                String s = transmittableThreadLocal.get();
                Console.log("{} {}", Thread.currentThread().getName(), s);
            }
        });
        transmittableThreadLocal.set("hello haha");
        
        threadPool.submit(new Runnable() {
            @Override
            public void run() {
                String s = transmittableThreadLocal.get();
                Console.log("{} {}", Thread.currentThread().getName(), s);
            }
        });
    }

相关推荐

  1. 大厂面试整理

    2024-07-18 01:40:02       75 阅读
  2. 大厂HashMap源码面试

    2024-07-18 01:40:02       34 阅读
  3. 大厂面试】之招银网络

    2024-07-18 01:40:02       40 阅读
  4. 大厂 Go 工程师面试题集锦.

    2024-07-18 01:40:02       48 阅读
  5. 嵌入式大厂面试题(1)—— CVTE

    2024-07-18 01:40:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 01:40:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 01:40:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 01:40:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 01:40:02       69 阅读

热门阅读

  1. 设计模式大白话之适配器模式

    2024-07-18 01:40:02       24 阅读
  2. C语言经典例题-19

    2024-07-18 01:40:02       19 阅读
  3. nvm的安装教程

    2024-07-18 01:40:02       20 阅读
  4. 人工智能前沿讲座——融合知识的自然语言处理

    2024-07-18 01:40:02       20 阅读
  5. centos7单机安装docker和k8s

    2024-07-18 01:40:02       22 阅读
  6. 浔川AI五子棋v5.0预告——浔川总社部

    2024-07-18 01:40:02       19 阅读