第一次参加笔试,考试时感觉良好,考完查询ai才发现错的挺多,基础不扎实,虽然不知道能否进面,但我将继续学习巩固基础。

一、单选题 (20题)

  1. 关于构造函数的描述,正确的是?

    • 选项:
      A. 返回类型为void
      B. 一个类可以定义多个构造函数
      C. 必须显式定义
      D. 和类相同名称,不能带参
    • 答案:B
    • 解析: 构造函数可以重载,允许多个;A错误,构造函数无返回类型;C错误,可不显式定义默认构造;D错误,可带参。
  2. 以下哪个不是Java线程状态?

    • 选项:
      A. Blocked
      B. Paused
      C. Running
      D. Waiting
    • 答案:B
    • 解析: Java线程状态包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,无paused状态。
  3. 以下哪种循环至少执行一次?

    • 选项:
      A. do…while
      B. while
      C. for
      D. foreach
    • 答案:A
    • 解析: do-while无论条件如何至少执行一次。
  4. 关于super和this的正确说法是?

    • 选项:
      A. 不一定在第一行
      B. 可在static环境下使用
      C. super显式调用,需在第一行
      D. 可同时出现在一个构造函数中
    • 答案:C
    • 解析: super()或this()调用必须放在构造函数第一行,且不能同时出现。
  5. 以下代码运行输出是什么?

    public class Person {
        private String name = "Person";
        int age = 0;
    }
    public class Child extends Person {
        public String grade;
        public static void main(String[] args){
            Person p = new Child();
            System.out.println(p.name);
        }
    }
    
    • 选项:
      A) 输出:Person
      B) 没有输出
      C) 运行出错
      D) 编译出错
    • 答案:D
    • 解析: 父类的private成员子类不能直接访问,需通过getter方法。
  6. 关于抽象类的说法,错误的是?

    • 选项:
      A. abstract类可以有private成员
      B. static方法可处理非static属性
      C. abstract不能与final同修饰一个类
      D. abstract方法必须在abstract类中
    • 答案:B
    • 解析: B选项表述错误。static方法中不能直接访问(处理)非static属性,需要对象实例。C选项是正确的,abstract和final不能同时修饰一个类。
  7. 以下代码,描述正确的有?

    interface IDemo {
        public static final String name;  // 1
        void print();  // 2
        public void getInfo();  // 3
    }
    abstract class Person implements IDemo {  // 4
        public void print(){
        }
    }
    
    • 选项:
      A) 第1行错误,没有给变量赋值
      B) 第2行错误,方法没有修饰符
      C) 第4行错误,没有实现接口的全部方法
      D) 第3行错误,没有方法的实现
    • 答案:A
    • 解析: 接口中定义的变量默认是public static final,必须初始化赋值。第1行没有赋值,所以错误。抽象类Person实现了接口,可以不实现全部方法。
  8. InnoDB默认的隔离级别是?

    • 选项:
      A. 读已提交
      B. 读未提交
      C. 可重复读
      D. 串行化
    • 答案:C (可重复读)
    • 解析: InnoDB存储引擎默认的隔离级别是可重复读(REPEATABLE READ)。
  9. 错误的是?

    • 选项:
      A. 抽象类不可实例化
      B. 约束作用
      C. 抽象类不是静态的,但可密封
      D. 抽象类不都是抽象方法
    • 答案:C
    • 解析: “密封”通常指finalfinalabstract不能同时修饰一个类。C说法错误。
  10. 关于try-catch-finally,不正确的说法是?

    • 选项:
      A. 可多个catch
      B. catch和finally可同时省略
      C. try不可省
      D. finally可省
    • 答案:B
    • 解析: catch和finally不能同时省略,至少有一个。
  11. 关于继承,错误的是?

    • 选项:
      A. 父类通用,子类具体
      B. 子类一继承多父类
    • 答案:B
    • 解析: Java是单继承,一个子类只能有一个直接父类。
  12. 关于Java内存回收,正确的说法是?

    • 选项:
      A. 内存回收程序负责释放无用内存
      B. 程序员可指定时间释放对象
      C. 内存回收会立即释放对象
      D. 内存回收保证程序不会内存泄漏
    • 答案:A
    • 解析: Java内存回收是自动的,但不保证立即释放,也不保证不会内存泄漏。程序员无法指定释放时间。
  13. 以下代码运行输出是?

    class A {
        A() { System.out.print("A"); }
    }
    class B extends A {
        B() { System.out.print("B"); }
        public static void main(String[] args) { B b = new B(); }
    }
    
    • 选项:
      A. AB
      B. A
      C. 不通过编译
      D. B
    • 答案:A
    • 解析: 创建子类对象时,会先调用父类的构造方法,再调用子类的构造方法。输出“AB”。
  14. ArrayList list = new ArrayList(20) 扩容几次?

    • 选项:
      A. 1次
      B. 0次
      C. 2次
      D. 3次
    • 答案:B
    • 解析: 创建ArrayList时指定了初始容量20,在添加前20个元素时不会触发扩容。
  15. 接口的修饰符可以是?

    • 选项:
      A. protected
      B. abstract
      C. private
      D. final
    • 答案:B
    • 解析: 接口的修饰符可以是public或默认(包访问权限)。protected, private, final都不能修饰接口。abstract是隐含的,但写上也可以。
  16. 与数组长度相等的表达式是?

    • 选项:
      A. m.length
      B. m.length+1
      C. m.length()
      D. m.length()+1
    • 答案:A
    • 解析: 数组通过length属性获取长度,不是方法。
  17. 表达式 Math.ceil(Math.random() * 100 + 1) 生成的随机数范围是?

    • 选项:
      A. [1, 100]
      B. [1, 101)
      C. [2, 101]
      D. (1, 100]
    • 答案:C ([2, 101])
    • 解析: Math.random() 产生[0,1)的数,*100得[0,100),+1得[1,101),Math.ceil()向上取整,最小值为2(当原数为1.xxx),最大值为101(当原数为100.xxx)。但此表达式并非生成1-100随机整数的标准写法。标准写法是(int)(Math.random() * 100) + 1
    • 如果要生成1到100随机数,正确的写法是Math.ceil(Math.random() * 100)
    • 如果想生成一个从 minmax(包含)的随机整数,通用公式为:Math.ceil(Math.random() * (max - min + 1)) + min - 1
  18. 关于封装,说法正确的是?

    • 题目不全,根据常识: 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问,而是通过该类提供的方法进行操作和访问。
  19. 哪一个可单独与finally使用?

    • 选项:
      A. try
      B. catch
    • 答案:A
    • 解析: try块可以单独与finally块使用(try-finally),不一定要有catch。
  20. System.out.println("" + ("12" == "12" && "12".equals("12"))) 的值是?

    • 选项:
      A. true
      B. false
    • 答案:A
    • 解析: "12" == "12" 比较字符串常量,是同一个对象,返回true。"12".equals("12") 比较内容,也返回true。true && true 结果为true。

二、多选题 (9题)

  1. Spring框架的核心特征包括?

    • 选项:
      A. IOC (控制反转)
      B. DI (依赖注入)
      C. AOP (面向切面编程)
      D. ORM (对象关系映射)
    • 答案:A, B, C, D
    • 解析: Spring核心包括IOC和AOP,同时提供对ORM和MVC的支持。
    选项 英文全称 中文释义 是否为核心特征 简要说明
    A. IOC Inversion of Control 控制反转 Spring 框架的基石,指将对象的创建和依赖关系的控制权从应用程序代码反转给 Spring 容器来管理 。
    B. DI Dependency Injection 依赖注入 IOC 理念的具体实现技术,由容器通过设值(Setter)或构造器等方式动态地将依赖对象注入到组件中 。
    C. AOP Aspect-Oriented Programming 面向切面编程 将那些遍布在多个模块中的通用功能(如日志、事务管理)抽取出来,形成可重用的“切面”,从而降低耦合度 。
    D. ORM Object-Relational Mapping 对象关系映射 Spring 提供了对多种 ORM 框架(如 Hibernate, MyBatis, JPA)的集成支持,简化了数据访问层的开发 。
  2. 以下关于系统稳定性的说法,正确的是?

    • 选项:
      A. 缓存可以减小数据库压力
      B. 熔断可以避免雪崩效应
      C. 限流会降低服务器QPS
      D. 异步削峰可以提升系统吞吐量
    • 答案:A, B, D
    • 解析: 限流是为了保护系统,通过限制并发请求来保证服务的稳定性,虽然外部可见的QPS可能被限制,但这是为了保护服务器不崩溃,并不是“降低”了服务器自身的能力。D正确,异步削峰(如用消息队列)可以缓冲请求,平滑处理压力,提升整体吞吐量。
  3. 关于InnoDB存储引擎,以下说法错误的是?

    • 选项:
      A. 事务的隔离性通过MVC实现
      B. 死锁时会回滚所有事务
      C. 支持手动创建Hash索引
      D. 通过覆盖索引可以减少回表
    • 答案:A, B, C
    • 解析: A错误,隔离性通过MVCC(多版本并发控制)和锁实现,不是MVC。B错误,死锁发生时,InnoDB会选择回滚代价最小的事务。C错误,InnoDB不支持手动创建Hash索引,但会自动为自适应哈希索引。D正确,覆盖索引可以减少回表查询。
  4. 以下哪个是合法的变量声明?

    • 选项:
      A. int i = 4L
      B. double d = 34.4
      C. long l = 4990
      D. float f = 1.1
    • 答案:B, C
    • 解析: A错误,long不能直接赋给int,需要强转。B正确,double可以接收小数。C正确,int可以隐式转为long。D错误,1.1默认是double,不能直接赋给float,需加f后缀(1.1f)。
  5. 以下哪些开源中间件的集成可以有效改善系统性能?

    • 选项:
      A. Kafka (消息队列)
      B. MongoDB (NoSQL数据库)
      C. Redis (缓存)
      D. ElasticSearch (搜索引擎)
    • 答案:A, B, C, D
    • 解析: 这些中间件都可以通过不同方式(如解耦、快速读写、全文检索)提升系统性能。
  6. 以下哪个表达式是正确的?

    • 选项:
      A. String str = String(“bb”)
      B. long i = 8888
      C. int lk = new String(“aa”)
      D. char c = 74
    • 答案:B, D
    • 解析: A错误,创建String对象应用new String(“bb”)或直接赋值“bb”。B正确,int可隐式转long。C错误,String对象不能直接赋给int。D正确,74是ASCII码对应的字符’J’
  7. 微服务架构的特征包括?

    • 选项:
      A. 符合CAP原则
      B. Sidecar模式不能提供微服务架构
      C. 跨语言跨平台
      D. 去中心化的服务交互
    • 答案:A, C, D
    • 解析: A正确,分布式系统(如微服务)需要权衡CAP。B错误,Sidecar模式(如Service Mesh)是实现微服务架构的一种模式。C、D正确,微服务通常强调技术栈多样化和去中心化治理。
  8. Redis支持哪些数据结构?

    • 选项:
      A. List (列表)
      B. Tree (树)
      C. Hash (哈希)
      D. Set (集合)
    • 答案:A, C, D
    • 解析: Redis支持String、List、Hash、Set、SortedSet等,但不直接支持Tree(二叉树等)。SortedSet是有序集合,底层是跳表,不是Tree。
  9. 哪些模式是以提升系统维护性、扩展性为主要目标?

    • 选项:
      A. CQRS (命令查询职责分离)
      B. NIO (网络I/O模型)
      C. MVC (模型视图控制器)
      D. TDD (测试驱动开发)
    • 答案:A, C
    • 解析: CQRS和MVC都通过分离关注点来提升可维护性和可扩展性。NIO是一种I/O模型,主要解决高并发问题。TDD是一种开发方法,主要提升代码质量和可测试性。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐