精选21道Java后端面试题,看完你也能唬住面试官拿30K

800道Java后端经典面试题,希望你找到自己理想的Offer呀~ Java 基础 equals与==的区别 final, finally, finalize 的区别 重载和重写的区别 两个对象的hashCode()相同,则 equals()是否也一定为 true? 抽象类和接口有什么区别 BIO、NIO、AIO 有什么区别? String,Stringbuffer,StringBuilder的区别 JAVA中的几种基本数据类型是什么,各自占用多少字节呢 Comparator与Comparable有什么区别? String类能被继承吗,为什么。 说说Java中多态的实现原理 阅读详情

本文转载自:精选21道Java后端面试题,看完你也能唬住面试官拿30K


1. 如何用数组实现队列?

用数组实现队列时要注意 溢出 现象,这时我们可以采用循环数组的方式来解决,即将数组收尾相接。使用front指针指向队列首位,tail指针指向队列末位。

2. 内部类访问局部变量的时候,为什么变量必须加上final修饰?

因为生命周期不同。局部变量在方法结束后就会被销毁,但内部类对象并不一定,这样就会导致内部类引用了一个不存在的变量。

所以编译器会在内部类中生成一个局部变量的拷贝,这个拷贝的生命周期和内部类对象相同,就不会出现上述问题。

但这样就导致了其中一个变量被修改,两个变量值可能不同的问题。为了解决这个问题,编译器就要求局部变量需要被final修饰,以保证两个变量值相同。

在JDK8之后,编译器不要求内部类访问的局部变量必须被final修饰,但局部变量值不能被修改(无论是方法中还是内部类中),否则会报编译错误。利用javap查看编译后的字节码可以发现,编译器已经加上了final。

3. long s = 499999999 * 499999999 在上面的代码中,s的值是多少?

根据代码的计算结果,s的值应该是-1371654655,这是由于Java中右侧值的计算默认是int类型。

4. NIO相关,Channels、Buffers、Selectors

NIO(Non-blocking IO)为所有的原始类型提供(Buffer)缓存支持,字符集编码解码解决方案。 Channel :一个新的原始I/O 抽象。 支持锁和内存映射文件的文件访问接口。提供多路(non-bloking) 非阻塞式的高伸缩性网络I/O 。

IONIO
面向流面向缓冲
阻塞IO非阻塞IO
无选择器

流与缓冲

Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。此外,它不能前后移动流中的数据。如果需要前后移动从流中读取的数据,需要先将它缓存到一个缓冲区。

Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是,还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。

阻塞与非阻塞IO

Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。 Java NIO的非阻塞模式,是线程向某通道发送请求读取数据,仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,当然它不会保持线程阻塞。所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。所以一个单独的线程现在可以管理多个输入和输出通道。

选择器(Selectors)

Java NIO 的 选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

5. 反射的用途

Java反射机制可以让我们在编译期(Compile Time)之外的运行期(Runtime)检查类,接口,变量以及方法的信息。反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值。同时我们也可以通过反射来获取泛型信息,以及注解。还有更高级的应用–动态代理和动态类加载(ClassLoader.loadclass())。

下面列举一些比较重要的方法:

  • getFields:获取所有 public 的变量。
  • getDeclaredFields:获取所有包括 private , protected 权限的变量。
  • setAccessible:设置为 true 可以跳过Java权限检查,从而访问private权限的变量。
  • getAnnotations:获取注解,可以用在类和方法上。

获取方法的泛型参数:

method = Myclass.class.getMethod("setStringList", List.class);

Type[] genericParameterTypes = method.getGenericParameterTypes();

for(Type genericParameterType : genericParameterTypes){
    if(genericParameterType instanceof ParameterizedType){
        ParameterizedType aType = (ParameterizedType) genericParameterType;
        Type[] parameterArgTypes = aType.getActualTypeArguments();
        for(Type parameterArgType : parameterArgTypes){
            Class parameterArgClass = (Class) parameterArgType;
            System.out.println("parameterArgClass = " + parameterArgClass);
        }
    }
}

动态代理:

//Main.java
public static void main(String[] args) {
    HelloWorld helloWorld=new HelloWorldImpl();
    InvocationHandler handler=new HelloWorldHandler(helloWorld);

    //创建动态代理对象
    HelloWorld proxy=(HelloWorld)Proxy.newProxyInstance(
            helloWorld.getClass().getClassLoader(),
            helloWorld.getClass().getInterfaces(),
            handler);
    proxy.sayHelloWorld();
}

//HelloWorldHandler.java
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    Object result = null;
    //调用之前
    doBefore();
    //调用原始对象的方法
    result=method.invoke(obj, args);
    //调用之后
    doAfter();
    return result;
}

通过反射获取方法注解的参数:

Class aClass = TheClass.class;
Annotation[] annotations = aClass.getAnnotations();

for(Annotation annotation : annotations){
   if(annotation instanceof MyAnnotation){
       MyAnnotation myAnnotation = (MyAnnotation) annotation;
       System.out.println("name: " + myAnnotation.name());
       System.out.println("value: " + myAnnotation.value());
   }
}

非静态内部类能定义静态方法吗?

public class OuterClass{
    private static float f = 1.0f;

    class InnerClass{
        public static float func(){return f;}
    }
}

以上代码会出现编译错误,因为只有静态内部类才能定义静态方法。

6. Lock 和 Synchronized 有什么区别?

使用方法的区别

  • Synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。
  • Lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。

性能的区别

synchronized是托管给JVM执行的,而lock是java写的控制锁的代码。在Java1.5中,synchronize是性能低效的。因为这是一个重量级操作,需要调用操作接口,导致有可能加锁消耗的系统时间比加锁以外的操作还多。相比之下使用Java提供的Lock对象,性能更高一些。但是到了Java1.6,发生了变化。synchronize在语义上很清晰,可以进行很多优化,有适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在Java1.6上synchronize的性能并不比Lock差。

  • Synchronized:采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着 其他线程只能依靠阻塞来等待线程释放锁。而在CPU转换线程阻塞时会引起线程上下文切换,当有很多线程竞争锁的时候,会引起CPU频繁的上下文切换导致效率很低。
  • Lock:用的是乐观锁方式。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。乐观锁实现的机制就是CAS操作。我们可以进一步研究ReentrantLock的源代码,会发现其中比较重要的获得锁的一个方法是compareAndSetState。这里其实就是调用的CPU提供的特殊指令。

ReentrantLock:具有更好的可伸缩性:比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票。

7. float 变量如何与 0 比较?

folat类型的还有double类型的,这些小数类型在趋近于0的时候直接等于0的可能性很小,一般都是无限趋近于0,因此不能用==来判断。应该用|x-0|<err来判断,这里|x-0|表示绝对值,err表示限定误差。

//用程序表示就是

fabs(x) < 0.00001f

8. 如何新建非静态内部类?

内部类在声明的时候必须是 Outer.Inner a,就像int a 一样,至于静态内部类和非静态内部类new的时候有点区别:

  • Outer.Inner a = new Outer().new Inner()(非静态,先有Outer对象才能 new 内部类)
  • Outer.Inner a = new Outer.Inner()(静态内部类)

9. Java标识符命名规则

可以包含:字母、数字、$、_(下划线),不可用数字开头,不能是 Java 的关键字和保留字。

11. 你知道哪些JDK中用到的设计模式?

  • 装饰模式:java.io
  • 单例模式:Runtime类
  • 简单工厂模式:Integer.valueOf方法
  • 享元模式:String常量池、Integer.valueOf(int i)、Character.valueOf(char c)
  • 迭代器模式:Iterator
  • 职责链模式:ClassLoader的双亲委派模型
  • 解释器模式:正则表达式java.util.regex.Pattern

12. ConcurrentHashMap如何保证线程安全

JDK 1.7及以前:

ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术。它使用了多个锁来控制对hash表的不同部分进行的修改。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

JDK 1.8:

Segment虽保留,但已经简化属性,仅仅是为了兼容旧版本。

插入时使用CAS算法:unsafe.compareAndSwapInt(this, valueOffset, expect, update)。 CAS(Compare And Swap)意思是如果valueOffset位置包含的值与expect值相同,则更新valueOffset位置的值为update,并返回true,否则不更新,返回false。插入时不允许key或value为null

与Java8的HashMap有相通之处,底层依然由“数组”+链表+红黑树;

底层结构存放的是TreeBin对象,而不是TreeNode对象;

CAS作为知名无锁算法,那ConcurrentHashMap就没用锁了么?当然不是,当hash值与链表的头结点相同还是会synchronized上锁,锁链表。

##13. i++在多线程环境下是否存在问题,怎么解决?

虽然递增操作++i是一种紧凑的语法,使其看上去只是一个操作,但这个操作并非原子的,因而它并不会作为一个不可分割的操作来执行。实际上,它包含了三个独立的操作:读取count的值,将值加1,然后将计算结果写入count。这是一个“读取 - 修改 - 写入”的操作序列,并且其结果状态依赖于之前的状态。所以在多线程环境下存在问题。

要解决自增操作在多线程环境下线程不安全的问题,可以选择使用Java提供的原子类,如AtomicInteger或者使用synchronized同步方法。

14. new与newInstance()的区别

new是一个关键字,它是调用new指令创建一个对象,然后调用构造方法来初始化这个对象,可以使用带参数的构造器

newInstance()是Class的一个方法,在这个过程中,是先取了这个类的不带参数的构造器Constructor,然后调用构造器的newInstance方法来创建对象。

Class.newInstance不能带参数,如果要带参数需要取得对应的构造器,然后调用该构造器的Constructor.newInstance(Object … initargs)方法

15. 你了解哪些JDK1.8的新特性?

  • 接口的默认方法和静态方法,JDK8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可。也可以定义被static修饰的静态方法。
  • 对HashMap进行了改进,当单个桶的元素个数大于6时就会将实现改为红黑树实现,以避免构造重复的hashCode的攻击
  • 多并发进行了优化。如ConcurrentHashMap实现由分段加锁、锁分离改为CAS实现。
  • JDK8拓宽了注解的应用场景,注解几乎可以使用在任何元素上,并且允许在同一个地方多次使用同一个注解
  • Lambda表达式

16. 你用过哪些JVM参数?

  • Xms 堆最小值
  • Xmx 堆最大值
  • Xmn: 新生代容量
  • XX:SurvivorRatio 新生代中Eden与Surivor空间比例
  • Xss 栈容量
  • XX:PermSize 方法区初始容量
  • XX:MaxPermSize 方法区最大容量
  • XX:+PrintGCDetails 收集器日志参数

17. 如何打破 ClassLoader 双亲委托?

重写loadClass()方法。

##18. hashCode() && equals()

hashcode() 返回该对象的哈希码值,支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。

在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改(equals默认返回对象地址是否相等)。如果根据 equals(Object)方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。

以下情况不是必需的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。

实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧I。)

hashCode的存在主要是用于查找的快捷性,如 Hashtable,HashMap等,hashCode 是用来在散列存储结构中确定对象的存储地址的;

如果两个对象相同,就是适用于 equals(java.lang.Object) 方法,那么这两个对象的 hashCode 一定要相同;

如果对象的 equals 方法被重写,那么对象的 hashCode 也尽量重写,并且产生 hashCode 使用的对象,一定要和 equals 方法中使用的一致,否则就会违反上面提到的第2点;

两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。

19. Thread.sleep() & Thread.yield()

sleep()和yield()都会释放CPU。

sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。

20. #{}和${}的区别是什么?

#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 21: …串替换。 Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性。

21. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,举例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到namespace为com.mybatis3.mappers.StudentDao下面id = findStudentById的MappedStatement。在Mybatis中,每一个、、、标签,都会被解析为一个MappedStatement对象。

Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。

Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。


本文转载自:精选21道Java后端面试题,看完你也能唬住面试官拿30K

2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机) 前言 娱乐圈有“男神收割机”“女神收割机”。同样程序员圈子也有“Offer收割机”。 想必大家都有面试的经历吧,但是你有面一个拿一个offer的经历吗。或许听起来很离谱,但是也确实有这样的事情,毕竟万事皆有可能。之前我在网上认识的一位网友,我们有一天下午聊天的时候聊到面试这块,他跟我说了他的面试经历:他面了饿了么、阿里、京东、拼多多、爱奇艺,听着好像很简单的样子,但是别人背后付出的可能是你的百倍千倍。好了废话不多说。现在我开始写面经,希望能帮助到大家! 首先,他先是去面了阿里 一面 . 阅读详情

相关推荐

后端java常见面试题大全

1 面试时,你熟悉的问题要和面试官多聊,不要为了回答问题而回答问题 2 一个问题的沟通时间最好能多聊一会儿,简单问题说3/5分钟,如果问题的规模比较大,10分钟左右也是可以的3 回答问题时不要为了凑时间而凑时间,聊的内容一定要和问的问题相关,知识点可以连续的引入4 了解的东西多聊,不了解的少说5 对于知识可以有一些自己的见解,自己的想法,清晰表述出来,虽然自己的看法有时候不会特别的恰当.6 面试时收集面试录音,面试题,可以发给我们 100元/人,多人评比,最好的400元奖金7 答题思路 总 分 总

qq_30534195的博客 2167

java后端面试题总结(内容无先后顺序,持续更新中)

本文中的内容并非完全原创,很大一部分参考了其他博主写得比较优秀的内容,会标注好出处。本篇文章旨在记录一下网上所看到的面试常考问题,欢迎大家一起学习交流。

qq_41027095的博客 1万+

TSMC40nmLP版图实战:从Design Rule解读到Cadence高效布局布线

本文详细解析了TSMC40nmLP工艺的版图设计实战,从Design Rule解读到Cadence高效布局布线技巧。重点介绍了40nm工艺中的关键设计规则,如最小线宽、间距规则和深N阱规则,并分享了Cadence Virtuoso中的高效工作流和射频模块设计技巧,帮助工程师提升版图设计效率和质量。

weixin_29250403的博客 378

JAVA后台开发常见面试题

4、本地消息表(本地消息表顾名思义就是会有一张存放本地消息的表,一般都是放在数据库中,然后在执行业务的时候 将业务的执行和将消息放入消息表中的操作放在同一个事务中,这样就能保证消息放入本地表中业务肯定是执行成功的)BASE理论是eBay的架构师Dan Pritchett提出的,它的思想是:“即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性”。任何一个没有发生故障的节点,会在合理的时间内返回一个正常的结果,也就是对于每一个请求总能够在有限时间内返回结果。

范文聪 3070

Springer期刊LaTeX模板中参考文献格式选择与编译错误的快速修复指南

本文针对Springer期刊LaTeX模板中参考文献编译后显示问号的常见问题,提供了快速修复指南。核心在于正确选择并配置与期刊匹配的参考文献格式文件(.bst),并执行标准的四步编译流程。文章详细解释了问题根源,并给出了从查找正确.bst文件到修改代码、执行编译的完整解决方案,帮助作者高效解决投稿中的技术障碍。

weixin_29266007的博客 401

STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化策略

本文深入探讨了STA静态时序分析中标准单元库的高级功耗建模与优化策略。详细解析了动态功耗和漏电功耗的精细建模技术,包括基于波形敏感的CCS模型和温度敏感的漏电模型,并介绍了多工艺角功耗建模及低功耗设计优化策略,为纳米级芯片设计提供关键能效解决方案。

weixin_29290863的博客 224

java 对变量加锁_精选21道Java后端面试题,看完你也能唬住面试官拿30K

1. 如何用数组实现队列?用数组实现队列时要注意 溢出 现象,这时我们可以采用循环数组的方式来解决,即将数组收尾相接。使用front指针指向队列首位,tail指针指向队列末位。2. 内部类访问局部变量的时候,为什么变量必须加上final修饰?因为生命周期不同。局部变量在方法结束后就会被销毁,但内部类对象并不一定,这样就会导致内部类引用了一个不存在的变量。所以编译器会在内部类中生成一个局部变量的拷贝...

weixin_39879522的博客 106

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

Java后端真实面试题大全(有详细答案)--高频/真题

本文分享Java后端真实高频面试题,有详细答案,保你稳过面试。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。 本博客包含从简单到困难、从高频到低频的题目,适合所有Java求职者,包括:刚入门的、三年以内经验、三到五年经验、五到十年经验等。

IT利刃出鞘的博客 17万+

Google Earth Engine(GEE)——将sentinel - 2影像所有波段重采样到10m分辨率 (resample 和 projection的使用)

影像重投影是将一个影像从一个坐标系投影到另一个坐标系的过程。这通常涉及到将像素从一个平面坐标系变换到另一个平面坐标系。这可以用于许多应用中,例如建立数字高程模型(DEM)和地图制图。影像重投影通常需要进行数学计算,包括转换矩阵和插值算法,以确保像素值的准确性和精度。这次我们将对哨兵2好数据中20m分辨率的波段,重采样到10m分辨率中,然后同一参与计算。

此星光明博客 3107

openbmc mctp i3c适配步骤

本文介绍了在Intel OKS平台下,BMC作为I3C从设备如何适配MCTP over I3C的实现方法。主要内容包括:1)关键术语解释,如MDB(Mandatory Data Byte)值为0xAE,DCR(Device Characteristics Register)和BCR(Bus Characteristics Register)的设置;2)适配流程说明,包括BMC作为控制器主节点分配地址后成为MCTP端点,CPU作为总线所有者的角色转换;3)测试验证步骤,展示通过mctp-client工具发送指

wit_yuan的专栏 132

面试最常被问的 Java 后端题

一、Java 基础篇 1. Object 有哪些常用方法?大致说一下每个方法的含义 java.lang.Object 下面是对应方法的含义。 clone 方法 保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出 CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,同时其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。 finalize 方法 该方法和垃圾收集器有关系,判断一个对象是否可以.

小技术君 4360

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 437

面试最常被问的 Java 后端题目及参考答案

一、Java 基础篇1. Object 有哪些常用方法?大致说一下每个方法的含义2. Java 创建对象有几种方式?3. 获取一个类对象的方式有哪些?4. ArrayList 和 LinkedList 的区别有哪些?5. 用过 ArrayList 吗?说一下它有什么特点?6. 有数组了为什么还要搞个 ArrayList 呢?7. 说说什么是 fail-fast?8. Hashtable 与 HashMap 的区别9. HashMap 中的 key 我们可以使用任何类作为 key 吗?10. HashMap

a6636656的博客 1万+

Jupyter notebook教程系列(二)Jupyter notebook的基本用法

Jupyter notebook的基本使用   一. 主页面 如图1-1 我们先介绍一下主页面上的内容: 1.Files页面是用于管理创建文件相关类目的。 2.Running页面主要展示的是当前正在运行当中的终端和“ipynb”格式的notebook。若想要关闭已经打开的终端和“ipynb”格式的notebook,仅仅关闭其页面是无法彻底退出程序的,需要在Running页面点击其对...

dlhlSC的博客 1438

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

2024最全Java后端面试题总结(阿里、京东、拼多多等)

(讲了读取配置、拼装url、创建Invoker、服务导出、服务注册以及消费者通过动态代理、filter、获取Invoker列表、负载均衡等过程(哗啦啦讲了10多分钟),我可以喝口水么)16.InnoDB的B+树索引叶子节点的Data域存储的是什么?MylSAM的B+树索引叶子节点的Data域存储的是主键还是物理地址?3.给我一张纸,画了一个九方格,都填了数字,给一个MN矩阵,从1开始逆时针打印这MN个数,要求时间复杂度尽可能低。11.什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?

2401_86401177的博客 3144

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

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

Java后台常见面试题

SpringBoot与Spring区别 Spring 框架就是由框架来帮你管理这些对象,包括它的创建,销毁等。 Spring框架还是体现高内举,低耦合的。Spring Framework 本身并未提供太多具体的功能,它主要专注于让你的项目代码组织更加优雅,使其具有极好的灵活性和扩展性,同时又能通过Spring集成业界优秀的解决方案 SpringMVC主要用于开发WEB应用和网络接口,它是Spri...

kaikai_sk的博客 1636

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java后端互联网500道中高级面试题(含答案)

什么是Spring IOC 容器?控制反转(IoC)有什么作用IOC的优点是什么?Spring IoC 的实现机制Spring 的 IoC支持哪些功能BeanFactory 和 ApplicationContext有什么区别?Spring 如何设计容器的,BeanFactory和ApplicationContext的关系详解ApplicationContext通常的实现是什么?什么是Spring的依赖注入?依赖注入的基本原则依赖注入有什么优势有哪些不同类型的依赖注入实现方式?

2401_84048445的博客 1425

Java后端常见面试题

Java后端常见面试题线程池SpringMQMySQLRedis 线程池 线程池参数如何设置? 线程编排框架解决了什么问题? Spring Bean的生命周期? SpringBoot默认MySQL连接池? MQ RabbitMQ和Kafka的区别? Kafka如何实现零拷贝? MySQL MySQL有哪几种日志文件?(binlog、redolog、undolog) MySQL Explain执行结果中,type结果的枚举。 Redis Redis分布式锁实现方式 持久化的方式

Tianweilan123的博客 886

Java后端高频面试题整理

答案:GC Roots是JVM垃圾回收中可达性分析算法的根节点对象,用于判断对象是否“存活”——如果一个对象到GC Roots没有任何引用链相连,说明该对象是无用对象,可被GC回收。可作为GC Roots的对象虚拟机栈(方法栈)中局部变量表的引用对象;本地方法栈中Native方法的引用对象;方法区中类的静态变量、常量引用的对象;JVM内部的引用(如Class对象、系统类加载器)。脏读:事务A读取到了事务B未提交的数据,后续事务B回滚,事务A读取的是“脏数据”;不可重复读。

weixin_48491166的博客 1526

Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了

所有的面试题目都不是一成不变的,上面的面试题只是给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。上面分享的2022最新1000+Java面试题的答案都整理成了PDF文档。最新2022整理收集的一些Java学习资料(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,人生短暂,别稀里糊涂的活一辈子,不要将就。

m0_74823471的博客 4978

2024年春招,Java后端最全面试攻略,吃透25个技术栈

由于篇幅原因,就不多做展示了《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?13、使用MyBatis的mapper接口调用时有哪些要求?14、在 mapper 中如何传递多个参数?15、Mapper编写有哪几种方式?16、简述Mybatis的插件运行原理,以及如何编写一个插件。

2301_82242204的博客 1911

java后端开发面试常问

java面试相关问题

m0_67814200的博客 841
上一篇: 年终面试总结,我收集了21道经典Spring面试题,附加答案值得收藏
下一篇: 数据库精讲SQL优化——优化必备的 EXPLAIN 命令+索引优化
Java_supermanNO1
博客等级 码龄7年 1170粉丝 329原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值