Java后端面试题

Java后端面试

Java基础

  1. Java Primitive Types

Java Primitive Types
8 bits = 1 byte

2.equals和==的区别

a)  对象类型不同 equals是超类Object的方法,而==是操作符

b)  比较类型不同 equals用来检测两个对象是否相同,即两个对象的内容是否相等,==比较引用数据类型和基本数据类型时具有不同的功能。
==比较的是变量(栈)内存中存放的对象的内存地址,用来判断两个对象的地址是否相同,即是否指向同一对象,
比较的是真正意义上的指针操作,而equals用来比较的是两个对象的内容是否相同,适用于所有对象。

c)  注意:如果没有对该对象进行覆盖的话,调用的仍然是超类Object的方法,而Object中的equals方法返回的是==的判断。
  1. 自动拆装箱和常量池
    a) Java自动将原始数据类型值转换成对应的对象,比如将int类型的变量转换成Integer类型,自动装箱时调用valueOf将原始数据类型转换成对应的对象。
    b) 反之,将Integer对象装换成int类型值,这个过程叫拆箱,自动拆箱通过调用类似intValue、doubleValue这类的方法将对象转换成对应的原始数据类型。
    c) Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。
    i. 静态常量池:即.*class文件中的常量池,class文件中的常量池不仅仅包含字符串,还包含类、方法的信息,占用class文件绝大部分空间。
    ii. 而运行时常量池:则是jvm虚拟机在完成类装载过程后,将class文件中的常量池载入到内存中,并保存在方法区中,我们常说的常量池就是指方法区中的运行时常量池。

  2. 接口和继承

  3. Java中public、private 、protect、default的区别?

  4. 脏读、不可重复读、幻读

  5. 红黑树

  6. 排序算法

  7. Statement和preparestatement的区别?

    a) 代码的可读性和可维护性preparestatement更好。
    b) Preparestatement尽最大可能提高性能。
    c) 提高安全性,preparestatement防止sql注入。

  8. CAS机制

  9. Object类有哪些方法
    Object是所有类的父类,任何类都默认继承Object。Object类到底实现了哪些方法?

    1.clone方法
    保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

    2.getClass方法
    final方法,获得运行时类型。

    3.toString方法
    该方法用得比较多,一般子类都有覆盖。

    4.finalize方法
    该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

    5.equals方法
    该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

    6.hashCode方法
    该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

    一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

    7.wait方法
    wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

    调用该方法后当前线程进入睡眠状态,直到以下事件发生。

    (1)其他线程调用了该对象的notify方法。

    (2)其他线程调用了该对象的notifyAll方法。

    (3)其他线程调用了interrupt中断该线程。

    (4)时间间隔到了。

    此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

    8.notify方法
    该方法唤醒在该对象上等待的某个线程。

    9.notifyAll方法
    该方法唤醒在该对象上等待的所有线程。
    原文:http://blog.csdn.net/k678mh/article/details/8594769

  10. 有哪 6 种常见的线程池?什么是 Java8 的 ForkJoinPool?
    https://blog.csdn.net/Rinvay_Cui/article/details/110993243

  11. 关于线程池的五种实现方式,七大参数,四种拒绝策略
    https://blog.csdn.net/qq_45401061/article/details/107992794

  12. 线程创建的四种方式https://blog.csdn.net/m0_37840000/article/details/79756932

  13. Spring Bean的生命周期
    https://www.cnblogs.com/zrtqsk/p/3735273.html
    https://zhuanlan.zhihu.com/p/108198655

  14. 线程有哪些状态,相互之间是如何转换的?
    https://blog.csdn.net/hebeind100/article/details/84808484

  15. sleep()和wait()的区别
    https://blog.csdn.net/qq_40531768/article/details/89306532

  16. JAVA中线程同步的方法(7种)汇总
    https://www.cnblogs.com/duanxz/p/3709608.html

  17. Synchronized与ReentrantLock区别总结
    https://blog.csdn.net/zxd8080666/article/details/83214089

  18. MySQL事务隔离级别和实现原理
    https://zhuanlan.zhihu.com/p/117476959

  19. 数据库死锁问题
    https://blog.csdn.net/w174504744/article/details/8016860

  20. 数据库索引
    https://blog.csdn.net/qq_36071795/article/details/83956068

  21. 网络七层模型
    https://blog.csdn.net/a369189453/article/details/81193661
    https://www.cnblogs.com/sunsky303/p/10647255.html

  22. TCP 和 UDP 的区别
    https://blog.csdn.net/zhang6223284/article/details/81414149

  23. Linux
    https://blog.csdn.net/luansj/article/details/97272672

  24. 面向对象和面向过程的区别和联系
    http://c.biancheng.net/view/7811.html

  25. 面向对象三大特性-----封装、继承、多态
    https://www.cnblogs.com/hulizhong/p/11227509.html

  26. 代理模式(Spring AOP深入理解)
    https://blog.csdn.net/Reallycold/article/details/82144454

  27. 设计模式
    https://www.runoob.com/design-pattern/observer-pattern.html

  28. 扩展类加载器加载什么
    https://zhuanlan.zhihu.com/p/73359363

  29. 通俗易懂的双亲委派机制
    https://blog.csdn.net/codeyanbao/article/details/82875064

  30. Java如何打破双亲委派机制
    https://www.jianshu.com/p/a03668aaf5a5

  31. 联合索引的最左前缀匹配原则介绍
    https://blog.csdn.net/u013568373/article/details/93891531

  32. 什么是JMM ,volatile关键字
    https://zhuanlan.zhihu.com/p/258393139

  33. 线程池的原理及实现
    https://blog.csdn.net/hsuxu/article/details/8985931

  34. CMS垃圾回收器详解
    https://blog.csdn.net/zqz_zqz/article/details/70568819

  35. AQS详解
    https://blog.csdn.net/mulinsen77/article/details/84583716

  36. ArrayList、LinkedList、HashMap如何保证多线程安全
    https://blog.csdn.net/u011582840/article/details/107480825

  37. Spring事务失效的2种情况
    https://www.cnblogs.com/heqiyoujing/p/11221093.html

  38. Mybatis中#{}与${}的区别
    https://blog.csdn.net/qq_44543508/article/details/97106696

  39. 进程和线程的区别(超详细)
    https://blog.csdn.net/ThinkWon/article/details/102021274

  40. 进程间8种通信方式详解
    https://blog.csdn.net/violet_echo_0908/article/details/51201278

  41. 解决哈希冲突的三种方法(拉链法、开放地址法、再散列法)
    https://www.cnblogs.com/rsapaper/p/10019505.html

  42. 红黑树的时间复杂度分析
    https://blog.csdn.net/l_o_s/article/details/105703296

  43. JUC线程框架深度解析
    https://blog.csdn.net/androidsj/article/details/80167501

  44. Java中new一个对象是一个怎样的过程?JVM中发生了什么?
    https://www.cnblogs.com/gjmhome/p/11401397.html

  45. 区分-JVM内存分区和Java内存模型(Java Memory Model)
    https://blog.csdn.net/qq_41297896/article/details/89949632

  46. 数据库索引的实现原理
    https://blog.csdn.net/kennyrose/article/details/7532032

  47. B+树和B树的区别
    https://www.jianshu.com/p/ace3cd6526c4

  48. 死锁的四个必要条件?如何避免与预防死锁?
    https://www.cnblogs.com/bopo/p/9228834.html

  49. 事务ACID理解
    https://blog.csdn.net/dengjili/article/details/82468576

  50. 红黑树和AVL树(平衡二叉树)区别
    https://blog.csdn.net/u010899985/article/details/80981053

  51. Java写一个简单的Web服务器Socket实现
    https://blog.csdn.net/HaHa_Sir/article/details/80594982

  52. JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)
    https://www.cnblogs.com/aspirant/p/8662690.html

  53. jvm如何运行以及内存如何分配

  54. 如果发送一个url请求,首先url转换为文件名,此时文件名需要通过cache缓存判断处理后方可发送到服务器,那么cache缓存的数据结构应该是什么,如果使用这种数据结构时间复杂度又是多少呢,cache满的情况下应该怎么办。(涉及缓存以及数据结构相关问题)

  55. 讲一下MyBatis的底层实现。(涉及MyBatis的底层实现,在前面的博文中我有详细介绍,大家有兴趣的可以去查看了解哈)

  56. 理解事务的4种隔离级别
    https://blog.csdn.net/qq_33290787/article/details/51924963

  57. 面向对象的四大特征
    https://blog.csdn.net/qq_42429369/article/details/84929377

  58. java中接口和抽象类的区别
    https://blog.csdn.net/zhangquan2015/article/details/82808399

  59. JAVA关键字
    https://www.cnblogs.com/yan-linxi/p/7977947.html

  60. 太好了!总算有人把动态代理、CGlib、AOP都说清楚了!

  61. 【死磕Java并发】-----Java内存模型之happens-before

  62. Spring Boot面试题(2020最新版)

  63. java多线程中并发集合和同步集合有哪些?区别是什么?

  64. Java并发编程:深入剖析ThreadLocal

  65. ArrayList中elementData为什么被transient修饰?

  66. BlockingQueue(阻塞队列)详解

  67. 网络编程面试题(2020最新版)

  68. Java笔试面试-Spring 核心

  69. 事务并发的问题

  70. SpringBoot中的IOC和AOP

https://www.nowcoder.com/discuss/experience?tagId=639&order=3&companyId=0&phaseId=1
https://www.nowcoder.com/ta/job-code-high
https://www.nowcoder.com/discuss/579641

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值