Java开发经典面试题

本文详细探讨了Java开发中的关键面试题,包括重写与重载的区别、String的性质、equals与hashCode的关系、浮点数精度问题、final关键字的作用、集合类的特性以及Java 8的新特性。此外,还涵盖了HashMap在JDK 1.7和1.8的差异,并提及了线程、数据库、网络协议和设计模式等基础知识。这些内容对于理解Java编程和准备面试至关重要。
摘要由CSDN通过智能技术生成
  1. 重写与重载的区别重写与重载的区别_重写和重载_carrie呀carrie的博客-CSDN博客。。。。。。。。。。。https://blog.csdn.net/luoro/article/details/118307852?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875749216800211587145%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167875749216800211587145&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-118307852-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=%E9%87%8D%E8%BD%BD%E5%92%8C%E9%87%8D%E5%86%99%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187
  2. String是否是基本数据类型 String的到底是基本数据类型还是引用数据类型?_string是引用数据类型吗_T-OPEN的博客-CSDN博客关于String为值类型还是引用类型的讨论一直没有平息,最近一直在研究性能方面的问题,今天再次将此问题进行一次明确。希望能给大家带来点帮助。 如果有错误请指出。来看下面例子:复制代码复制代码//值类型int a = 1;int b = a;a = 2;Console.WriteLine(“a is {0},b is {1}”, a, b);//字符串string str1 = ...https://blog.csdn.net/weter_drop/article/details/94126057?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875883216782425153412%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167875883216782425153412&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-4-94126057-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=String%E6%98%AF%E5%90%A6%E6%98%AF%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B&spm=1018.2226.3001.4187
  3. 为什么重写 equals 还要重写 hashcode?为什么重写equals方法,还必须要重写hashcode方法_为什么重写equals还要重写hashcode_wdy00000的博客-CSDN博客原因:1.为了提高效率采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用。我们都知道java中的List集合是有序的,因此是可以重复的,而set集合是无序的,因此是不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠equals方法一样比较的话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所https://blog.csdn.net/wdy00000/article/details/124439846?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875756716800197058806%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167875756716800197058806&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-124439846-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=%E4%B8%BA%E4%BB%80%E4%B9%88%E9%87%8D%E5%86%99%20equals%20%E8%BF%98%E8%A6%81%E9%87%8D%E5%86%99%20hashcode%EF%BC%9F&spm=1018.2226.3001.4187
  4. == 和 equals 比较的区别详解“==”和equals的区别_==和equals的区别_爱喝皮蛋瘦肉粥的小饶的博客-CSDN博客详解“==”和equals的区别一、“==”二、equals()三、栗子和解释说明3.1栗子3.2基本数据类型的比较3.3引用数据类型的比较3.3.1String类3.3.2未重写equals方法的类四、练手栗子“==”和equals 最大的区别是“==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。一、“==”“==”是运算符①如果比较的对象是https://blog.csdn.net/weixin_46460843/article/details/110310604?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875820216800188555019%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167875820216800188555019&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-3-110310604-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=%3D%3D%20%E5%92%8C%20equals%20%E6%AF%94%E8%BE%83%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187
  5. 为啥有时会出现 4.0 - 3.6 = 0.40000001 这种现象?         【Java面试题】为什么会出现4.0-3.6=0.3999999999这种现象?_3.4-3.2为什么0.19999_扛麻袋的少年的博客-CSDN博客为什么会出现4.0-3.6=0.3999999999这种现象? 很多人都知道:浮点数值不适用于无法接受舍入误差的金融计算中,即:我们常说的丢失精度问题。  很多人还知道这样一句话:这种舍入误差的主要原因是浮点数值采用二进制系统表示, 而在二进制系统中无法精确地表示分数 1/10。这就好像十进制无法精确地表示分数 1/3—样。针对十进制,1除以3是除不尽的。很好理解,因为我们一直接触的就是十进制,等于0.333333… 很好理解但是:二进制系统中无法精确地表示分数 1/10。为啥呢。https://blog.csdn.net/lzb348110175/article/details/119957903?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875899016800197043782%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167875899016800197043782&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-119957903-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=%E4%B8%BA%E5%95%A5%E6%9C%89%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%204.0%20-%203.6%20%3D%200.40000001%20%E8%BF%99%E7%A7%8D%E7%8E%B0%E8%B1%A1%EF%BC%9F&spm=1018.2226.3001.4187
  6. final 关键字的作用final关键字的作用_tiantian_norain的博客-CSDN博客final关键字可以用来修饰引用、方法和类。1、使用final修饰一个引用(1)如果引用为基本数据类型,则该引用为常量,该值无法修改;(2)如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改;(3)如果引用为类的成员变量,则必须当场赋值,否则编译会报错。如下列实例所示:final class Person { String name ="zs"; ...https://blog.csdn.net/tiantian_norain/article/details/118581868?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875924516800182133964%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167875924516800182133964&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-118581868-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=final%20%E5%85%B3%E9%94%AE%E5%AD%97%E7%9A%84%E4%BD%9C%E7%94%A8&spm=1018.2226.3001.4187
  7. 介绍 Java 的集合类java各种集合类区别_小小夜雨的博客-CSDN博客最近面试经常遇到java集合类的问题,上网搜了一下,做个笔记百度的图集合类型主要有3种:set(集)、list(列表)和map(映射)。集合接口分为:Collection和Map,list、set实现了Collection接口List总结:可以重复,通过索引取出加入数据,顺序与插入顺序一致,可以含有null元素ArrayList:底层数据结构使数组结构array,...https://blog.csdn.net/qq_30711091/article/details/88847892?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875943316800192276850%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167875943316800192276850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-7-88847892-null-null.142%5Ev73%5Econtrol,201%5Ev4%5Eadd_ask,239%5Ev2%5Einsert_chatgpt&utm_term=%E4%BB%8B%E7%BB%8D%20Java%20%E7%9A%84%E9%9B%86%E5%90%88%E7%B1%BB&spm=1018.2226.3001.4187
  8. ArrayList 和 LinkedList 的区别java各种集合类区别_小小夜雨的博客-CSDN博客最近面试经常遇到java集合类的问题,上网搜了一下,做个笔记百度的图集合类型主要有3种:set(集)、list(列表)和map(映射)。集合接口分为:Collection和Map,list、set实现了Collection接口List总结:可以重复,通过索引取出加入数据,顺序与插入顺序一致,可以含有null元素ArrayList:底层数据结构使数组结构array,...https://blog.csdn.net/qq_30711091/article/details/88847892?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167875943316800192276850%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167875943316800192276850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-7-88847892-null-null.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%E4%BB%8B%E7%BB%8D%20Java%20%E7%9A%84%E9%9B%86%E5%90%88%E7%B1%BB&spm=1018.2226.3001.4187
  9. java 8 有哪些新特性?Java8(JDK1.8)新特性_jdk1.8的新特性_TraceChen的博客-CSDN博客1、速度快;2、代码少、简介(新增特性:lamdba表达式);3、强大的Stream API;4、使用并行流和串行流;5、最大化较少空指针异常Optional;其中最为核心的是Lambda表达式和Stream APILambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使java语言表达能力得到提升。...https://blog.csdn.net/weixin_40294256/article/details/126338618?ops_request_misc=&request_id=&biz_id=102&utm_term=java%208%20%E6%9C%89%E5%93%AA%E4%BA%9B%E6%96%B0%E7%89%B9%E6%80%A7%EF%BC%9F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-126338618.nonecase&spm=1018.2226.3001.4187
  10. HashMap 在 jdk 1.7 和 1.8 的区别?HashMap在JDK1.8和JDK1.7的区别(详解)_hashmap1.8与1.7区别_勤奋的派大星的博客-CSDN博客HashMap在JDK1.8和JDK1.7的区别结论先说结论,HashMap在1.7和1.8中最大的区别就是底层数据结构的变化,在1.7中HashMap采用的底层数据结构是数组+链表的形式,而在1.8中HashMap采用的是数组+链表+红黑树的数据结构(当链表长度大于8且数组长度大于等于64时链表会转成红黑树,当长度低于6时红黑树又会转成链表),红黑树是一种平衡二叉搜索树,它能通过左旋、右旋、变色保持树的平衡,关于红黑树大家想了解的可以自行百度,这里不再讲述。之所以用红黑树是因为他能够大大提高查找效率,https://blog.csdn.net/weixin_48240945/article/details/120324054?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167877312216800215090803%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167877312216800215090803&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-120324054-null-null.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=HashMap%20%E5%9C%A8%20jdk%201.7%20%E5%92%8C%201.8%20%E7%9A%84%E5%8C%BA%E5%88%AB%EF%BC%9F&spm=1018.2226.3001.4187
  11. LeetCode 精选 100 道:题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
  12. LeetCode 精选算法 200 题:题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
  13. 什么是死锁?死锁产生的条件?
  14. 线程有哪几种状态?
  15. 有哪些进程调度算法?
  16. 什么是缓冲区溢出?
  17. 计算机网络各层有哪些协议?
  18. TCP 和 UDP 协议的区别?
  19. TCP 为什么需要三次握手和四次挥手?
  20. HTTP 和 HTTPS 协议的区别?
  21. MySQL 索引的最左原则
  22. InnoDB 和 MyIsam 引擎的区别?
  23. 有哪些优化数据库性能的方法?
  24. 如何定位慢查询?
  25. MySQL 支持行锁还是表锁?分别有哪些优缺点?
  26. Spring 的 IOC 和 AOP 是什么,有哪些优点?
  27. Spring 框架用到了哪些设计模式?
  28. 介绍 Spring Bean 的生命周期
  29. MyBatis 如何实现延迟加载?
  30. 介绍 MyBatis 的多级缓存机制
  31. 如何解决提交冲突?
  32. 提交不小心出现误操作,如何撤销?
  33. 什么是 Git Flow,它有什么好处?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值