0%

蚂蚁20250424笔试

基础单选7个21分,基础多选4个12分,Java单选2个6分,Java多选2个6分
编程题3个55分

基础单选

  1. DFS序列
  2. 一个软件支持各种支付方法,支付方式可以添加或删除,使用哪个设计模式
    策略模式
  3. 如何减少数据传输量(压缩、缓存、去除冗余)
  4. Linux文件权限
    u=rw g = r o= xxx.txt 含义是
    所有者(u):读写权限(rw)。
    所属组(g):只读权限(r)。
    其他用户(o):无权限(o=未指定权限,默认为无权限)。
  5. h=9,255个叶子节点的完全二叉树,节点总数可能有多少个(510)
  6. 存储管理系统(数据库系统、文件系统)
  7. 动态分区存储100MB,使用最坏适配(Worst Fit)策略,最大空闲分区大小为
    分配过程:分配15 25 释放 25 分配 10 8 22
    最坏适配策略始终选择当前最大的空闲分区进行分配
    最大空闲分区大小为20MB

基础多选

  1. 出栈顺序
  2. 数据库隔离级别
  3. 哪个设计模式不是行为模式
    行为型模式主要关注对象间的交互和职责分配(如策略模式、观察者模式等),而创建型模式结构型模式不属于行为模式
    • 创建型模式(如单例模式、工厂模式):解决对象创建问题,与行为无关
    • 结构型模式(如适配器模式、代理模式):处理类或对象的组合结构,而非行为交互
  4. HTTP2.0特征
    二进制分帧、多路复用、Header压缩、服务端主动推送到客户端

Java单选

  1. 代码运行结果
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args) {  
    Map<String, String> map = new HashMap<>();
    map.put("one", "1");
    map.put("two", "2");
    map.put("three", "3");
    // two 222
    map.merge("two", "22", (oldvalue, newvalue) -> oldvalue + newvalue);
    System.out.println(map);
    }
  2. 代码运行结果
    1
    2
    3
    4
    5
    int[] arr1 = new int[]{1,2,3};  
    int[] arr2 = new int[]{1,2,3};
    System.out.println(arr1 == arr2); // false
    System.out.println(Arrays.equals(arr1, arr2)); // true
    System.out.println(Arrays.hashCode(arr1) == Arrays.hashCode(arr2)); // true

Java多选

  1. 共享锁和独占锁
    ReadWriteLock 分离了读锁和写锁,并非完全使用独占锁实现
    ReentrantLock 是独占锁,一个资源只能被一个线程使用,其他线程必须等待
  2. 异常处理
    异常分为编译异常和运行异常
    try-catch用于捕获异常
    throw抛出一个异常对象
    编译异常必须显示捕获,不然无法通过编译

编程题

  1. 模拟(10分)100%
  2. n长的数组,q次查询,每次查询输入2,求数组和;输入1 v,将数组的每个数和v比较,大于v的数变成v。0 <= n, q <= 200000(20分)40%
    线段树
  3. 输入数字,数字每一位重排之后,满足每位数之和为质数的个数(25分)33%
    使用next_permutation超时了,用阶乘