Java中级工程师面试题

java中级面试题个人总结 java面试题来来回回还是那些,光靠背没什么意义,毕竟面试造航母,工作拧螺丝。最后基本上什么问题最后都能问道为什么这么用,源码是什么,多看看源码有助于对代码的深入理解,其他的就没了。上面写的面试题,有些是本人遇到的,有些是大众问题,写这篇文章,也是为了做个笔记。 阅读详情
AI摘要

该博客围绕Java中级工程师面试题展开,涵盖集合框架、多态性、线程生命周期、泛型擦除等多方面知识。详细解答了各知识点,如JDBC连接数据库步骤、装饰器模式示例等,还介绍了JVM内存模型、Spring框架核心功能等内容,为面试者提供参考。

1. Java中的集合框架有哪些主要组件?

答案:
Java集合框架主要包括接口、实现类和迭代器。主要接口有Collection、List、Set、Queue和Map。实现类包括ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、PriorityQueue、HashMap、LinkedHashMap和TreeMap等。迭代器(Iterator)用于遍历集合元素。

2. 解释一下Java中的多态性。

答案:
多态性是面向对象编程的三大特性之一,它允许一个引用变量引用多种实际类型对象,并执行多种实际类型的方法。多态性可以通过方法重载和方法重写来实现。在运行时,JVM会根据对象的实际类型来调用相应的方法,这就是动态绑定或多态性。

3. 请解释Java中的线程生命周期和状态。

答案:
Java中的线程有五种状态:新建(NEW)、就绪(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)和超时等待(TIMED_WAITING)、终止(TERMINATED)。线程从新建状态开始,通过调用start()方法进入就绪状态,然后JVM调度线程执行使其进入运行状态。线程可能因为等待锁、调用wait()或join()等方法而进入阻塞或等待状态,直到条件满足或超时后重新进入就绪状态。当线程执行完毕后,进入终止状态。

4. 什么是Java中的泛型擦除?

答案:
泛型擦除是Java泛型实现的一种方式。在编译时,Java编译器会将泛型信息擦除,生成普通的非泛型类和方法。这样做是为了兼容旧版本的Java虚拟机(JVM)和库。因此,在运行时,泛型类型信息是不存在的,这就是所谓的泛型擦除。但是,Java通过类型检查和类型推断来保证泛型代码的类型安全。

5. 请解释Java中的异常链机制。

答案:
Java中的异常链机制允许在捕获一个异常后,将其包装成另一个异常并抛出,从而保留原始异常的信息。这可以通过在构造新的异常对象时传入原始异常对象来实现。异常链机制有助于在多层嵌套的方法调用中传递异常信息,使得上层调用者能够了解底层发生的具体异常情况。

6. 请描述Java中的JDBC连接数据库的基本步骤。

答案:
使用JDBC连接数据库的基本步骤包括:

  1. 加载数据库驱动类(使用Class.forName()方法)。
  2. 建立数据库连接(使用DriverManager.getConnection()方法)。
  3. 创建Statement或PreparedStatement对象。
  4. 执行SQL查询或更新操作。
  5. 处理结果集(对于查询操作)。
  6. 关闭结果集、Statement和数据库连接。

7. 什么是Java中的装饰器模式?请给出一个示例。

答案:
装饰器模式是一种结构型设计模式,它允许用户通过动态地给一个对象添加一些额外的职责来就增加功能,就增加功能来说,装饰器模式相比生成子类更为灵活。在Java中,可以使用接口和抽象类来实现装饰器模式。示例可以是一个简单的咖啡订购系统,其中咖啡是基础对象,而摩卡、拿铁等是装饰器对象,它们可以为咖啡添加不同的口味或配料。

8. 解释一下Java中的JVM内存模型。

答案:
Java虚拟机(JVM)内存模型主要包括堆(Heap)、栈(Stack)、方法区(Method Area)和程序计数器(Program Counter Register)。堆是存放对象实例的地方,所有线程共享堆内存。栈是线程私有的,每个方法在执行时都会创建一个栈帧用于存储局部变量和操作数栈。方法区存放已被虚拟机加载的类信息、常量、静态变量等。程序计数器用于记录当前线程执行的字节码指令地址。

9. 请解释Java中的同步和异步调用。

答案:
同步调用是指调用方必须等待被调用方执行完毕后才能继续执行的调用方式。在Java中,同步调用通常涉及到线程同步机制,如使用synchronized关键字或Lock接口来确保同一时间只有一个线程能够访问共享资源。

异步调用则是指调用方发出调用后,被调用方立即返回,不等待被调用方执行完毕,调用方可以继续执行其他任务。Java中的异步调用可以通过线程、Future、CompletableFuture或响应式编程等方式实现。

10. 什么是Java中的线程安全?如何保证线程安全?

答案:
线程安全是指多个线程同时访问某个类时,这个类始终都能表现出正确的行为,即类的状态不会出现数据不一致。

保证线程安全的方法有多种:

  • 使用synchronized关键字或Lock接口进行同步。
  • 将对象设计为不可变(Immutable)的,即一旦创建其状态就不能改变。
  • 使用线程安全的集合类,如ConcurrentHashMap、CopyOnWriteArrayList等。
  • 使用原子类(AtomicInteger、AtomicLong等)进行原子操作。
  • 使用volatile关键字确保可见性和禁止指令重排。

11. 请解释Java中的单例模式,并给出一个线程安全的实现示例。

答案:
单例模式确保一个类仅有一个实例,并提供一个全局访问点。线程安全的单例模式实现可以使用双重检查锁定(Double-Checked Locking)或静态内部类方式。

双重检查锁定示例:

public class Singleton {  
    private volatile static Singleton instance;  
  
    private Singleton() {}  
  
    public static Singleton getInstance() {  
        if (instance == null) { // 第一次检查  
            synchronized (Singleton.class) {  
                if (instance == null) { // 第二次检查  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance;  
    }  
}

静态内部类示例:

public class Singleton {  
    private static class SingletonHolder {  
        private static final Singleton INSTANCE = new Singleton();  
    }  
  
    private Singleton() {}  
  
    public static Singleton getInstance() {  
        return SingletonHolder.INSTANCE;  
    }  
}

12. 请解释Java中的设计模式,并至少列举出三种常见的设计模式。

答案:
设计模式是在软件开发中解决常见问题的最佳实践。它们提供了一种可重用的设计,使得代码更加健壮、灵活和可维护。

常见的三种设计模式包括:

  • 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
  • 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
  • 观察者模式:定义对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

13. 解释一下Java中的AOP(面向切面编程)。

答案:
AOP(Aspect-Oriented Programming)是一种编程范式,它允许程序员将横切关注点(cross-cutting concerns)从业务逻辑中分离出来,以模块化的方式处理这些关注点。在Java中,AOP可以通过代理模式、字节码操作等技术实现。Spring框架提供了强大的AOP支持,可以方便地实现日志记录、事务管理、安全性等横切关注点。

14. 请描述Java中的Spring框架及其核心功能。

答案:
Spring是一个轻量级的Java开发框架,旨在简化企业级应用的开发。Spring的核心功能包括:

  • 依赖注入(DI):通过配置文件或注解方式,自动装配对象之间的依赖关系。
  • 面向切面编程(AOP):提供声明式事务管理、日志记录等横切关注点的模块化处理。
  • 容器管理:Spring是一个IoC(控制反转)容器,负责管理应用对象的生命周期和配置。
  • 数据访问:支持JDBC、Hibernate、MyBatis等多种数据访问技术,提供模板和事务管理。
  • Web支持:提供Spring MVC模块用于构建Web应用,支持RESTful API开发。

15. 解释一下Java中的事务及其ACID属性。

答案:
事务是数据库操作的基本单位,它保证了一组数据库操作(即事务中的语句)要么全部完成,要么全部不做,从而维护数据库的完整性。

ACID是事务的四个基本属性:

  • 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改要么全都执行,要么全都不执行。
  • 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态。即一个事务执行之前和执行之后都必须处于一致性状态。

  • 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务是不可见的。

  • 持久性(Durability):一旦事务提交,则其结果就是永久性的,即使系统发生故障也不会丢失。

在Java中,事务通常通过JDBC的事务管理或者通过Spring框架的事务管理来实现。Spring框架提供了声明式事务管理,允许开发者在方法级别上通过注解来定义事务的边界和传播行为。

16. 请解释Java中的垃圾回收机制及其主要算法。

答案:
Java的垃圾回收机制是自动内存管理的核心部分,它负责自动回收不再使用的对象所占用的内存。Java程序员无需显式地释放内存,这大大减少了内存泄漏的可能性。

垃圾回收机制的主要算法包括:

  • 标记-清除(Mark-Sweep):首先标记出所有从根对象可达的对象,然后清除未被标记的对象。
  • 复制(Copying):将可用内存划分为大小相等的两块,每次只使用其中一块,当这块内存用完时,就将还存活的对象复制到另一块上面,然后再把已使用过的内存空间一次清理掉。
  • 标记-整理(Mark-Compact):首先标记出所有从根对象可达的对象,然后让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
  • 分代收集(Generational Collection):根据对象存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。

17. 请解释Java中的反射机制及其用途。

答案:
Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。

反射的主要用途包括:

  • 动态加载类:在运行时根据类的全名加载类。
  • 获取类的信息:获取类的成员变量、方法、构造器、父类、接口、注解等信息。
  • 调用类的方法:通过反射可以调用类的任意方法,包括私有方法。
  • 创建对象实例:通过反射可以创建类的实例对象,即使构造器是私有的。

反射在框架设计、插件机制、测试工具等场景中有广泛应用。

18. 请解释Java中的泛型。

答案:
Java泛型(Generics)是JDK 5.0引入的一个新特性,它允许在定义类、接口和方法时使用类型参数(type parameters)。泛型的主要目的是提供编译时的类型安全,减少运行时的类型转换错误,并使得代码更加清晰和易于维护。

泛型的主要特点包括:

  • 类型参数化:在定义类、接口和方法时,使用尖括号<>中的类型参数来表示未知的类型。
  • 类型擦除:泛型信息在编译时会被擦除,生成普通的非泛型代码。这是为了兼容旧版本的Java虚拟机。
  • 类型推断:编译器可以根据上下文自动推断出泛型参数的具体类型。

使用泛型可以避免强制类型转换,提高代码的可读性和安全性。同时,泛型也支持泛型方法、泛型类、泛型接口和通配符等高级特性。

19. 请描述Java中的集合框架,并列举几种主要的集合类及其特点。

答案:
Java集合框架是一个用来表示和操作对象的集合的统一架构。它包含了一系列的接口、类和方法,用于存储和操作对象集合。集合框架的主要特点是其灵活性和可扩展性。

主要的集合类包括:

  • List:有序的集合(也是序列),它包含的元素都有索引。主要的实现类有ArrayList(基于动态数组)、LinkedList(基于链表)和Vector(同步的ArrayList)。
  • Set:不包含重复元素的集合。主要的实现类有HashSet(基于HashMap实现)、LinkedHashSet(保持插入顺序的HashSet)和TreeSet(基于红黑树实现,元素自然排序或自定义排序)。
  • Queue:队列,用于存储等待处理的元素。主要的实现类有LinkedList、PriorityQueue(基于优先级堆的队列)等。
  • Map:存储键值对的集合。键是唯一的,每个键最多映射到一个值。主要的实现类有HashMap(基于哈希表)、LinkedHashMap(保持插入顺序的HashMap)、TreeMap(基于红黑树实现,键自然排序或自定义排序)和Hashtable(同步的HashMap)。

每种集合类都有其特定的用途和性能特点。例如,ArrayList适用于需要频繁访问元素但不经常修改集合的情况;LinkedList适用于需要频繁在集合中插入和删除元素的情况;HashSet提供了快速的元素查找性能,但元素顺序不确定;TreeSet则提供了元素的自然排序或自定义排序功能。

20. 请解释Java中的注解(Annotation)及其用途。

答案:
Java注解(Annotation)是从JDK 5.0开始引入的一种用于为代码添加元数据的机制。注解不会直接影响代码的执行逻辑,但可以被编译器用来生成额外的代码、类或者文件,或者在运行时被用来读取并影响程序的行为。

注解的用途非常广泛,包括但不限于:

  • 编译时检查:通过自定义注解和编译时处理,可以实现代码的静态检查,确保代码符合某些规范或约束。
  • 框架配置:许多框架(如Spring、Hibernate等)使用注解来简化配置,替代繁琐的XML配置。
  • 自动生成代码:注解可以用于自动生成一些常用的代码,如getter和setter方法、toString方法等。
  • 运行时处理:通过反射机制,可以在运行时读取注解信息,并根据这些信息改变程序的行为。

Java内置了一些注解,如@Override(表示该方法重写了父类的方法)、@Deprecated(表示该方法或类已过时)等。同时,也支持开发者自定义注解。

21. 请解释Java中的异常处理机制。

答案:
Java中的异常处理机制是一种用于处理运行时错误或异常情况的机制。它允许程序员定义在特定情况下应该执行的代码,从而避免程序因为未处理的错误而崩溃。

在Java中,异常是作为一种对象来处理的。当程序中出现异常情况时,会生成一个异常对象,并抛出(throw)。这个异常对象可以被相应的异常处理代码捕获(catch)并处理。

Java的异常处理主要涉及到以下几个关键字:

  • try:用于包围可能产生异常的代码块。
  • catch:用于捕获并处理try块中产生的异常。可以定义多个catch块来处理不同类型的异常。
  • finally:无论是否发生异常,finally块中的代码都会执行。通常用于清理资源,如关闭文件或数据库连接。
  • throw:用于显式地抛出一个异常对象。
  • throws:用于在方法签名中声明该方法可能会抛出的异常,以便调用者知道需要处理哪些异常。

通过合理地使用异常处理机制,可以提高程序的健壮性和可维护性。

22. 请解释Java中的多线程及其实现方式。

答案:
Java中的多线程是指同时执行多个线程,共享相同的进程资源。多线程可以提高程序的并发性和响应速度,但也带来了线程安全和同步的问题。

Java实现多线程主要有两种方式:

  • 继承Thread类:通过创建一个新的类来继承Thread类,并重写其run()方法。然后创建该类的实例,并调用其start()方法来启动线程。
  • 实现Runnable接口:通过创建一个新的类来实现Runnable接口,并重写其run()方法。然后创建Thread类的实例,将实现了Runnable接口的类的对象作为参数传递给Thread类的构造函数,最后调用Thread对象的start()方法来启动线程。这种方式更灵活,因为Java不支持多重继承,但可以实现多个接口。

此外,Java 5之后还引入了线程池和并发工具类(如ExecutorService、Future、Callable等

23. 请解释Java中的线程状态及其转换。

答案:
在Java中,线程具有多种状态,并且这些状态之间可以相互转换。线程的主要状态包括:

  • 新建(NEW):当创建一个Thread类或其子类的实例时,线程就进入了新建状态。此时仅仅是在JVM中分配了内存,还没有真正执行。

  • 就绪(RUNNABLE):当调用线程的start()方法后,线程进入就绪状态。此时线程已经做好了运行准备,等待JVM调度执行。

  • 阻塞(BLOCKED):线程因为等待获取对象的内置锁(不是通过调用wait()方法或Thread.sleep()方法导致的等待),从而无法进入到就绪状态。一旦获得锁,线程就进入就绪状态。

  • 等待(WAITING):线程通过调用其他线程的join()方法,或者调用LockSupport.park()方法,或者等待某个特定条件成立(如Object.wait())时,会进入等待状态。

  • 超时等待(TIMED_WAITING):线程通过调用Thread.sleep(long millis)方法,或者Object.wait(long timeout)方法,或者Thread.join(long millis)方法,或者LockSupport.parkNanos(), LockSupport.parkUntil()方法时,会进入超时等待状态。线程会在指定的等待时间后自动唤醒。

  • 终止(TERMINATED):表示线程已经执行完毕。线程的run()方法执行完毕,或者因异常退出了run()方法,线程就进入了终止状态。

线程状态之间的转换是由JVM和线程自身的方法调用共同控制的。例如,调用线程的start()方法会使线程从新建状态进入就绪状态;线程获取到锁或从wait()、sleep()等方法中返回时,会进入就绪状态;线程执行完毕或抛出未捕获的异常时,会进入终止状态。

理解线程状态及其转换对于编写高效且安全的并发程序至关重要,因为不同的状态会影响线程的执行和调度。

24. 请解释Java中的线程同步机制。

答案:
Java中的线程同步机制主要用于协调多个线程对共享资源的访问,以确保数据的一致性和完整性。线程同步的主要目的是防止多个线程同时修改同一数据,导致数据不一致或其他不可预测的行为。

Java提供了几种线程同步机制:

  • synchronized关键字:synchronized是Java中最基本的同步机制。它可以用来修饰方法或代码块。当一个线程进入一个对象的synchronized方法或代码块时,其他线程对该对象的所有synchronized方法或代码块的访问都将被阻塞,直到该线程退出synchronized方法或代码块。

  • wait()和notify()方法:这两个方法是Java对象类的方法,用于在线程间进行通信。一个线程可以在共享对象上调用wait()方法,使自己进入等待状态,并释放对象的锁,允许其他线程进入。其他线程在修改完共享数据后,可以调用notify()或notifyAll()方法来唤醒等待的线程。

  • Lock接口及其实现类:Java 5之后引入了java.util.concurrent.locks包,其中定义了Lock接口以及多个实现类(如ReentrantLock)。Lock提供了比synchronized更灵活的锁定机制,支持更复杂的同步控制,如可中断的获取锁、尝试获取锁、定时获取锁等。

  • volatile关键字:volatile修饰的变量表示该变量可能会被多个线程并发修改,因此JVM会保证volatile变量的可见性,即当一个线程修改了这个变量的值,其他线程能够立即看到这个修改。但volatile并不能保证原子性,对于复合操作还需要额外的同步措施。

  • 原子变量类:java.util.concurrent.atomic包下提供了一些原子变量类,如AtomicInteger、AtomicLong等。这些类提供了原子操作,可以在多线程环境下安全地更新变量值。

正确使用这些同步机制可以有效地避免多线程并发访问共享资源时可能出现的问题,如数据竞争、死锁等。但同时也要注意,过度同步会导致性能下降,因此需要根据实际情况权衡同步的需求和性能的影响。

25. 请描述Java中的线程池及其优点。

答案:
Java中的线程池是一种用于优化线程管理的技术,它预先创建并维护一组线程,以供应用程序在需要时快速获取线程来执行任务。线程池通过复用线程,避免了频繁地创建和销毁线程所带来的性能开销。

线程池的主要优点包括:

  • 降低资源消耗:通过复用线程,减少了创建和销毁线程所需的时间,从而提高了系统效率。
  • 提高系统稳定性:线程池能够控制并发线程的数量,避免过多线程同时执行导致系统资源耗尽,从而提高了系统的稳定性。
  • 提高响应速度:线程池中的线程都是预先创建好的,因此当需要执行新任务时,可以立即获取线程来执行,提高了系统的响应速度。
  • 统一管理线程:线程池提供了统一的线程管理接口,方便对线程进行监控、调度和调优。

Java中提供了多种线程池实现,如FixedThreadPool(固定大小线程池)、CachedThreadPool(可缓存线程池)、ScheduledThreadPool(定时线程池)等,开发者可以根据实际需求选择合适的线程池实现。

26. 请解释Java中的反射机制及其用途。

答案:
Java中的反射机制是指在运行时能够获取类的内部信息(如类的属性、方法、构造器等),并可以动态地调用对象的方法或操作对象的属性。这种机制通过java.lang.reflect包中的类和接口实现。

反射的主要用途包括:

  • 动态加载类:在运行时根据类名动态地加载类,而不需要在编译时指定。
  • 调用任意对象的方法:通过反射,可以调用任意对象的方法,包括私有方法。
  • 访问和修改对象的属性:可以获取和设置对象的属性值,即使这些属性是私有的。
  • 创建和操作泛型:反射可以用于创建和操作泛型类型。
  • 实现框架:许多框架(如Spring、Hibernate等)都使用了反射机制来实现对象的自动装配、依赖注入等功能。

虽然反射机制非常强大,但也存在一些缺点,如性能开销较大、破坏了封装性等。因此,在使用反射时需要谨慎权衡其利弊。

27. 请解释Java中的泛型及其好处。

答案:
Java中的泛型(Generics)是JDK 5.0引入的一个新特性,它允许在定义类、接口和方法时使用类型参数。这样,类、接口和方法就可以操作多种数据类型,而不仅仅是特定的数据类型。

泛型的好处主要体现在以下几个方面:

  • 类型安全:泛型能够在编译时检查类型错误,从而避免了运行时类型转换异常的风险。
  • 代码复用:通过泛型,可以编写更加通用的代码,减少重复的代码量。例如,可以编写一个通用的集合类,用于存储不同类型的元素。
  • 可读性和可维护性:使用泛型可以提高代码的可读性和可维护性,因为泛型能够清晰地表达代码所处理的数据类型。
  • 消除强制类型转换:在没有泛型的情况下,使用集合类时通常需要进行强制类型转换。而泛型可以自动处理类型转换,减少了出错的可能性。

Java中的泛型主要通过类型参数、类型擦除和类型推断来实现。需要注意的是,泛型只在编译时有效,运行时泛型类型信息会被擦除(类型擦除),因此不能依赖运行时类型信息来进行泛型类型的判断。

java中级面试题及答案,java线程安全面试题 引入 Netty的源码分析中, 采用自底向上的方式进行分析, 底指的是一个个的组件, 上指的是整体的架构及一系列操作的执行流程举个简单的例子。 Netty服务端的启动流程中, 必然会调用bind方法, 一个bind方法的内部, 其实完成了许许多多的内容, 涉及了许多组件, 如果我们从入口开始讲起, 那么一遇到不认识的组件就容易陷入迷茫, 所以我们从基础组件开始讲起,。 最后再来讲Netty的启动流程, 这样, 在有了基础组件的知识的前提下, 再来看启动流程就会非常的清晰, 本篇文章讲的组件是Netty中的常 阅读详情

相关推荐

Java中级面试题及答案(120道Java中级面试题大汇总)

Java中级面试题及答案【最新版及答案,干货!!!这是一个中级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。Java中级面试永远是程序员迈向成功的第一个门槛,想要面试成功,各种面试题的洗礼是必不可少的,下面就来看看小编精心整理的一些java高级工程师面试题及答案吧。如果不背 Java面试题的答案,肯定面试会挂!进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位进程和线程的关系:**1、**一个线程只能属于一

m0_67401153的博客 3690

Java中级面试常见题目+答案

目录一.基础知识1.集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList;HashSet,TreeSet);2.HashMap的底层实现,之后会问ConcurrentHashMap的底层实现;3.如何实现HashMap顺序存储:可以参考LinkedHashMap的底层实现;4.HashTable和ConcurrentHashMap的区别;5.String,StringBuffer和StringBuilder的区别;6.Object的方法有哪些:比如有wait方

vampire_Violet的博客 1万+

JAVA中级开发工程师面试题总结

堆的话一般分为年轻代和年老代,年轻代一般是轻GC的主要场所,年老代一般是FullGC的主要场所...年轻代一般来讲分为Eden Space,幸存者from区和幸存者to区,然后默认的内存比例是8:1:1,一般我们创建对象,会将对象放入Eden Space,当我们Eden Space内存满了后会触发轻GC,未被清除的对象会放入幸存者From区,并且每次轻GC会让我们原本的from区转换成To区转换,并且我们每次GC存活的对象年龄都会+1,一般默认到15岁后就放入年老代,等待FullGC处理;

qq_44841968的博客 1499

java初中级面试题集锦

目录 基础 &与&&区别 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 静态变量和实例变量的区别? 是否可以从一个 static 方法内部发出对非 static 方法的调用? "=="和 equals 方法究竟有什么区别? int和Integer的区别 什么是for each循环,它可以循环那些数据类型 重载与重写区别? ...

软件猿扫地僧 3万+

java中级工程师面试题及答案,Java进阶

我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习已经将知识体系整理好(源码,笔记,PPT,学习视频)[外链图片转存中…(img-CNXMUv3w-1709884852473)][外链图片转存中…(img-wb5AAwC1-1709884852473)][外链图片转存中…(img-IVgIKRLF-1709884852473)]

m0_60721823的博客 1307

java中级面试题整理

java中级面试题整理,自身经验遇到的问题整理,希望对您有帮助

java中级工程师面试题_java中级工程师面试题

java中级工程师面试题目前,我国对软件人才的需求已达20万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。下面是关于java中级工程师面试题,希望大家认真阅读!一、 单选题(共12题,每题2分,共24分)1.下面关于Java的表述有错误的是________A.Java中没有sizeof操作符,所有数据类型的长度都是确定的,与平台无关。B.在Java中,局部变量不会...

weixin_35735088的博客 1045

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 103

java工程师_Java面试必看——中级java工程师面试题

对于java面试来说,在面试前做的准备中一定有面试题的搜集和学习这一项,因为在招聘公司的眼中,对java工程师岗位最注重的是专业知识和技能水平的考察,所以程序员去公司面试不管怎么样先做一套面试题。针对不同水平的程序员岗位的应聘,相应的面试题难度肯定不同,今天这篇文章总结了一些中级java工程师面试题,有想应聘中级java工程师岗位的朋友们可以看看下面这些面试题目,希望能起到学习和查漏补缺的作用。1...

weixin_39689506的博客 396

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1197

电信天翼云OS(ctyunos)内网离线安装Docker-CE保姆级避坑指南(附完整依赖包清单)

本文提供电信天翼云OS(ctyunos)内网环境下Docker-CE的离线安装全攻略,涵盖依赖分析、离线包制备、冲突解决等关键步骤。针对金融、政务等隔离网络场景,详细解析如何通过本地仓库构建和优化配置,实现高效安全的容器化部署,助力企业快速搭建内网Docker环境。

398

中级java工程师面试题

1.string类的常用方法有哪些? 答:https://zhidao.baidu.com/question/232452768.html 2.String,StringBuffer,StringBuilder的区别。 答:1)如果操作少量的数据用String(查看源码得知,String类的声明是:public final,改变它的值相当于创建一个新的字符串) 2)单线...

陈伟的梦呓 2万+

Python处理高光谱数据#3 降维

基于Python的高光谱降维操作 高光谱数据:点击此处可下载 用到的库:matplotlib、scipy、spectral 主要内容:主成分分析(PCA)与线性判别(LDA) 欢迎有兴趣的朋友交流指点。最后,废话不多说直接上代码???? import matplotlib.pyplot as plt from scipy.io import loadmat import spectral as spy

qq_273058791的博客 6938

下面哪一个关键字在java中未被用到_java中级工程师面试题

java中级工程师面试题目前,我国对软件人才的需求已达20万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。下面是关于java中级工程师面试题,希望大家认真阅读!一、 单选题(共12题,每题2分,共24分)1.下面关于Java的表述有错误的是________A.Java中没有sizeof操作符,所有数据类型的长度都是确定的,与平台无关。B.在Java中,局部变量不会...

weixin_42519489的博客 334

sid图像数据_遥感影像数据

影像数据基本概念影像数据是由卫星或飞机上的成像系统获得的影像,多为遥感影像数据。影像数据的每个像元都有一个值,表示传感器探测到像素对应地面面积上目标物的电磁辐射强度,也叫亮度值、灰度值。SuperMap支持的影像数据格式有:*.img、*.tif、*.tiff、*.bmp、*.jpg、*.png、*.gif、*.raw、*.sid等。计算机以二进制记录数据,所以其量化的等级以二进制来划分,即2n。...

weixin_39534395的博客 1627

BurpSuite实战:5分钟搞定DVWA的CSRF漏洞测试(附详细截图)

本文详细介绍了如何使用BurpSuite在DVWA靶场中进行CSRF漏洞测试,包括环境配置、攻击原理剖析、分步攻击演示及企业级防御方案。通过实战案例,帮助读者深入理解CSRF漏洞的危害与防护措施,提升Web应用安全防护能力。

weixin_30879169的博客 495

中级java工程师面试题_中级java工程师面试题

1.string类的常用方法有哪些?答:https://zhidao.baidu.com/question/232452768.html2.String,StringBuffer,StringBuilder的区别。答:1)如果操作少量的数据用String(查看源码得知,String类的声明是:public final,改变它的值相当于创建一个新的字符串)2)单线程下操作大量的数据用StringBu...

weixin_33582311的博客 328

Cesium.Ray 知识详解,示例代码

Cesium.Ray 是 CesiumJS 中用于表示三维空间中无限射线的核心类,广泛应用于地理信息系统(GIS)、三维可视化和碰撞检测等场景。射线由起点(origin)和方向向量(direction)定义,数学表达式为 ( P(t) = \text{origin} + t \times \text{direction} )。核心属性包括起点和方向向量,常用方法包括射线与平面的交点计算、根据距离获取射线上的点等。在 Cesium 中,Cesium.Ray 常用于地形碰撞检测、鼠标点选对象和雷达探测模拟等场景

大剑师兰特的GIS世界 425

Java中级开发工程师 面试题?

实现要求: * 1、根据已有的代码片段,创建二叉搜索树; * 2、用中序遍历输出排序结果,结果形如:0,1,2 ,3 ,4, 5, 6, 7, 8, 9, * 3、使用递归、非递归二种方式实现遍历; * 4、注意编写代码注释。

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1821

PyTorch实战(7)——循环神经网络

本节介绍了循环神经网络 (RNN) 及其在序列数据处理中的应用。首先对比了卷积神经网络 (CNN) 与 RNN 的差异,指出 RNN 通过循环连接建模时序依赖关系。随后详细梳理了 RNN 的发展历程,包括基础 RNN、双向 RNN、LSTM、GRU 等变体的结构特点及改进动机,其中 LSTM 通过门控机制解决长程依赖问题,GRU 则进一步简化结构。接着通过 IMDb 情感分析实战,演示了如何使用 PyTorch 实现文本预处理、RNN 模型构建及训练评估流程,最后探讨了注意力机制如何提升 RNN 性能。

盼小辉丶的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java中级工程师常见面试题

前言:本文只是记录博主遇到的或者博主认为比较常见的面试题,问题和答案仅代表博主个人观点。如果正在看这篇博文的你有你认为比较常见而我没有记录的,欢迎评论,我会挑选记录,方便大家一起面试造火箭。(不定时更新) 1.HashMap的底层原理 HashMap可以接受null的键值对,是线程不安全的,它是基于hashing的原理,jdk8后采用数组+链表+红黑树的数据结构。通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcod

呜呜老司机的博客家园 1622

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java中级工程师面试题,墙都不扶就服你

前言 面试大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识)分为MySQL+Java+Redis+算法+网络+Linux等六类,接下来分享一下我的这次阿里一面面经+一些我的学习笔记。 Spirng IOC 1.Spring框架 2.Spring IOC 容器 Bean 对象实例化模拟 3.Spring IOC 配置文件加载 4.Spring IOC 容器 Bean 对象实例化 5.Spring IOC 注入

EDGNB123的博客 837

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: Java初级八股文面试题
下一篇: 11.Python常用的内置模块
知昂可
博客等级 码龄6年 1032粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值