Java面试不通过?这篇文章你看了吗?

文章目录

    • 一、Java 基础
        • 1.JDK 和 JRE 有什么区别/li>
        • 2. == 和 equals 的区别是什么/li>
        • 3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗/li>
        • 4.final 在 java 中有什么作用/li>
        • 5.java 中的 Math.round(-1.5) 等于多少/li>
        • 6.String 属于基础的数据类型吗/li>
        • 7.java 中操作字符串都有哪些类们之间有什么区别/li>
        • 8.String str=”i”与 String str=new String(“i”)一样吗/li>
        • 9.如何将字符串反转/li>
        • 10.String 类的常用方法都有那些/li>
        • 11.抽象类必须要有抽象方法吗/li>
        • 12.普通类和抽象类有哪些区别/li>
        • 13.抽象类能使用 final 修饰吗/li>
        • 14.接口和抽象类有什么区别/li>
        • 15.java 中 IO 流分为几种/li>
        • 16.BIO、NIO、AIO 有什么区别/li>
        • 17.Files的常用方法都有哪些/li>
    • 二、容器
        • 18.java 容器都有哪些/li>
        • 19.Collection 和 Collections 有什么区别/li>
        • 20.List、Set、Map 之间的区别是什么/li>
        • 21.HashMap 和 Hashtable 有什么区别/li>
        • 22.如何决定使用 HashMap 还是 TreeMap/li>
        • 23.说一下 HashMap 的实现原理/li>
        • 24.说一下 HashSet 的实现原理/li>
        • 25.ArrayList 和 LinkedList 的区别是什么/li>
        • 26.如何实现数组和 List 之间的转换/li>
        • 27.ArrayList 和 Vector 的区别是什么/li>
        • 28.Array 和 ArrayList 有何区别/li>
        • 29.在 Queue 中 poll()和 remove()有什么区别/li>
        • 30.哪些集合类是线程安全的/li>
        • 31.迭代器 Iterator 是什么/li>
        • 32.Iterator 怎么使用什么特点/li>
        • 33.Iterator 和 ListIterator 有什么区别/li>
        • 34.怎么确保一个集合不能被修改/li>
    • 附:阿里腾讯校招Java面试题总结及答案
        • 1.HashMap的工作原理是什么/li>
        • 2.HashMap与HashTable的区别是什么/li>
        • 3.CorrentHashMap的工作原理/li>
        • 4.遍历一个List有哪些不同的方式/li>
        • 5.fail-fast与fail-safe有什么区别/li>
        • 6.Array和ArrayList有何区别么时候更适合用Array/li>
        • 7.哪些集合类提供对元素的随机访问/li>
        • 8.HashSet的底层实现是什么/li>
        • 9.LinkedHashMap的实现原理/li>
        • 10.LinkedList和ArrayList的区别是什么/li>
    • 三、多线程
        • 35.并行和并发有什么区别/li>
        • 36.线程和进程的区别/li>
        • 37.守护线程是什么/li>
        • 38.创建线程有哪几种方式/li>
        • 39.说一下 runnable 和 callable 有什么区别/li>
        • 40.线程有哪些状态/li>
        • 41.sleep() 和 wait() 有什么区别/li>
        • 42.notify()和 notifyAll()有什么区别/li>
        • 43.线程的 run()和 start()有什么区别/li>
        • 44.创建线程池有哪几种方式/li>
        • 45.线程池都有哪些状态/li>
        • 46.线程池中 submit()和 execute()方法有什么区别/li>
        • 47.在 java 程序中怎么保证多线程的运行安全/li>
        • 48.多线程锁的升级原理是什么/li>
        • 49.什么是死锁/li>
        • 50.怎么防止死锁/li>
        • 51.ThreadLocal 是什么哪些使用场景/li>
        • 52.说一下 synchronized 底层实现原理/li>
        • 53.synchronized 和 volatile 的区别是什么/li>
        • 54.synchronized 和 Lock 有什么区别/li>
        • 55.synchronized 和 ReentrantLock 区别是什么/li>
        • 56.说一下 atomic 的原理/li>
    • 四、反射
        • 57.什么是反射/li>
        • 58.什么是 java 序列化么情况下需要序列化/li>
        • 59.动态代理是什么哪些应用/li>
        • 60.怎么实现动态代理/li>
    • 五、对象拷贝
        • 61.为什么要使用克隆/li>
        • 62.如何实现对象克隆/li>
        • 63.深拷贝和浅拷贝区别是什么/li>
    • 六、Java Web
        • 64.jsp 和 servlet 有什么区别/li>
        • 65.jsp 有哪些内置对象用分别是什么/li>
        • 66.说一下 jsp 的 4 种作用域/li>
        • 67.session 和 cookie 有什么区别/li>
        • 68.说一下 session 的工作原理/li>
        • 69.如果客户端禁止 cookie 能实现 session 还能用吗/li>
        • 70.spring mvc 和 struts 的区别是什么/li>
        • 71.如何避免 sql 注入/li>
        • 72.什么是 XSS 攻击,如何避免/li>
        • 73.什么是 CSRF 攻击,如何避免/li>
    • 七、异常
        • 74.throw 和 throws 的区别/li>
        • 75.final、finally、finalize 有什么区别/li>
        • 76.try-catch-finally 中哪个部分可以省略/li>
        • 77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗/li>
        • 78.常见的异常类有哪些/li>
    • 八、 络
        • 79.http 响应码 301 和 302 代表的是什么什么区别/li>
        • 80.forward 和 redirect 的区别/li>
        • 81.简述 tcp 和 udp的区别/li>
        • 82.tcp 为什么要三次握手,两次不行吗什么/li>
        • 83.说一下 tcp 粘包是怎么产生的/li>
        • 84.OSI 的七层模型都有哪些/li>
        • 85.get 和 post 请求有哪些区别/li>
        • 86.如何实现跨域/li>
            • 方式一:图片ping或script标签跨域
            • 方式二:JSONP跨域
            • 方式三:CORS
            • 方式四:window.name+iframe
            • 方式五:window.postMessage()
            • 方式六:修改document.domain跨子域
            • 方式七:WebSocket
            • 方式八:代理
        • 87.说一下 JSONP 实现原理/li>
    • 九、设计模式
        • 88.说一下你熟悉的设计模式/li>
        • 89.简单工厂和抽象工厂有什么区别/li>
    • 十、Spring / Spring MVC
        • 90.为什么要使用 spring/li>
        • 91.解释一下什么是 aop/li>
        • 92.解释一下什么是 ioc/li>
        • 93.spring 有哪些主要模块/li>
        • 94.spring 常用的注入方式有哪些/li>
        • 95.spring 中的 bean 是线程安全的吗/li>
        • 96.spring 支持几种 bean 的作用域/li>
        • 97.spring 自动装配 bean 有哪些方式/li>
        • 98.spring 事务实现方式有哪些/li>
        • 99.说一下 spring 的事务隔离/li>
        • 100.说一下 spring mvc 运行流程/li>
        • 101.spring mvc 有哪些组件/li>
        • 102.@RequestMapping 的作用是什么/li>
        • 103.@Autowired 的作用是什么/li>
    • 十一、Spring Boot / Spring Cloud
        • 104.什么是 spring boot/li>
        • 105.为什么要用 spring boot/li>
        • 106.spring boot 核心配置文件是什么/li>
        • 107.spring boot 配置文件有哪几种类型们有什么区别/li>
        • 108.spring boot 有哪些方式可以实现热部署/li>
        • 109.jpa 和 hibernate 有什么区别/li>
        • 110.什么是 spring cloud/li>
        • 111.spring cloud 断路器的作用是什么/li>
        • 112.spring cloud 的核心组件有哪些/li>
    • 十二、Hibernate
        • 113.为什么要使用 hibernate/li>
        • 114.什么是 ORM 框架/li>
        • 115.hibernate 中如何在控制台查看打印的 sql 语句/li>
        • 116.hibernate 有几种查询方式/li>
        • 117.hibernate 实体类可以被定义为 final 吗/li>
        • 118.在 hibernate 中使用 Integer 和 int 做映射有什么区别/li>
        • 119.hibernate 是如何工作的/li>
        • 120.get()和 load()的区别/li>
        • 121.说一下 hibernate 的缓存机制/li>
        • 122.hibernate 对象有哪些状态/li>
        • 123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么/li>
        • 124.hibernate 实体类必须要有无参构造函数吗什么/li>
    • 十三、Mybatis
        • 125.#{}和${}的区别是什么/li>
        • 126.mybatis 有几种分页方式/li>
        • 127.RowBounds 是一次性查询全部结果吗什么/li>
        • 128.mybatis 逻辑分页和物理分页的区别是什么/li>
        • 129.mybatis 是否支持延迟加载迟加载的原理是什么/li>
        • 130.说一下 mybatis 的一级缓存和二级缓存/li>
        • 131.mybatis 和 hibernate 的区别有哪些/li>
        • 132.mybatis 有哪些执行器(Executor)/li>
        • 133.Mybatis是如何进行分页的页插件的原理是什么/li>
        • 134.简述Mybatis的插件运行原理,以及如何编写一个插件。
    • 十四、RabbitMQ
        • 135.rabbitmq 的使用场景有哪些/li>
        • 136.rabbitmq 有哪些重要的角色/li>
        • 137.rabbitmq 有哪些重要的组件/li>
        • 138.rabbitmq 中 vhost 的作用是什么/li>
        • 139.rabbitmq 的消息是怎么发送的/li>
        • 140.rabbitmq 怎么保证消息的稳定性/li>
        • 141.rabbitmq 怎么避免消息丢失/li>
        • 142.要保证消息持久化成功的条件有哪些/li>
        • 143.rabbitmq 持久化有什么缺点/li>
        • 144.rabbitmq 有几种广播类型/li>
        • 145.rabbitmq 怎么实现延迟消息队列/li>
        • 146.rabbitmq 集群有什么用/li>
        • 147.rabbitmq 节点的类型有哪些/li>
        • 148.rabbitmq 集群搭建需要注意哪些问题/li>
        • 149.rabbitmq 每个节点是其他节点的完整拷贝吗什么/li>
        • 150.rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况/li>
        • 151.rabbitmq 对集群节点停止顺序有要求吗/li>
    • 十五、Kafka
        • 152.kafka 可以脱离 zookeeper 单独使用吗什么/li>
        • 153.kafka 有几种数据保留的策略/li>
        • 154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理/li>
        • 155.什么情况会导致 kafka 运行变慢/li>
        • 156.使用 kafka 集群需要注意什么/li>
    • 十六、Zookeeper
        • 157.zookeeper 是什么/li>
        • 158.zookeeper 都有哪些功能/li>
        • 159.zookeeper 有几种部署模式/li>
        • 160.zookeeper 怎么保证主从节点的状态同步/li>
        • 161.集群中为什么要有主节点/li>
        • 162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗/li>
        • 163.说一下 zookeeper 的通知机制/li>
    • 十七、MySQL
        • 164.数据库的三范式是什么/li>
        • 165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几/li>
        • 166.如何获取当前数据库版本/li>
        • 167.说一下 ACID 是什么/li>
        • 168.char 和 varchar 的区别是什么/li>
        • 169.float 和 double 的区别是什么/li>
        • 170.mysql 的内连接、左连接、右连接有什么区别/li>
        • 171.mysql 索引是怎么实现的/li>
        • 172.怎么验证 mysql 的索引是否满足需求/li>
        • 173.说一下数据库的事务隔离/li>
        • 174.说一下 mysql 常用的引擎/li>
        • 175.说一下 mysql 的行锁和表锁/li>
        • 176.说一下乐观锁和悲观锁/li>
        • 177.mysql 问题排查都有哪些手段/li>
        • 178.如何做 mysql 的性能优化/li>
    • 十八、Redis
        • 179.redis 是什么有哪些使用场景/li>
        • 180.redis 有哪些功能/li>
        • 181.redis 和 memecache 有什么区别/li>
        • 182.redis 为什么是单线程的/li>
        • 183.什么是缓存穿透么解决/li>
        • 184.redis 支持的数据类型有哪些/li>
        • 185.redis 支持的 java 客户端都有哪些/li>
        • 186.jedis 和 redisson 有哪些区别/li>
        • 187.怎么保证缓存和数据库数据的一致性/li>
        • 188.redis 持久化有几种方式/li>
        • 189.redis 怎么实现分布式锁/li>
        • 190.redis 分布式锁有什么缺陷/li>
        • 191.redis 如何做内存优化/li>
        • 192.redis 淘汰策略有哪些/li>
        • 193.redis 常见的性能问题有哪些如何解决/li>
    • 十九、JVM
        • 194.说一下 jvm 的主要组成部分其作用/li>
        • 195.说一下 jvm 运行时数据区/li>
        • 196.说一下堆栈的区别/li>
        • 197.队列和栈是什么什么区别/li>
        • 198.什么是双亲委派模型/li>
        • 199.说一下类加载的执行过程/li>
        • 200.怎么判断对象是否可以被回收/li>
        • 201.java 中都有哪些引用类型/li>
        • 202.说一下 jvm 有哪些垃圾回收算法/li>
        • 203.说一下 jvm 有哪些垃圾回收器/li>
        • 204.详细介绍一下 CMS 垃圾回收器/li>
        • 205.新生代垃圾回收器和老生代垃圾回收器都有哪些什么区别/li>
        • 206.简述分代垃圾回收器是怎么工作的/li>
        • 207.说一下 jvm 调优的工具/li>
        • 208.常用的 jvm 调优的参数都有哪些/li>

一、Java 基础

1.JDK 和 JRE 有什么区别/h4>
  • JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
  • JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。

??具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

2. == 和 equals 的区别是什么/h4>

==解读

对于基本类型和引用类型 == 的作用效果是不同的,如下所示:

  • 基本类型:比较的是值是否相同;
  • 引用类型:比较的是引用是否相同;

代码示例:

代码解读
??因为 x 和 y 指向的是同一个引用,所以 == 也是 true,而 new String()方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

equals 解读
??equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。看下面的代码就明白了。

首先来看默认情况下 equals 比较一个有相同值的对象,代码如下:

输出结果出乎我们的意料,竟然是 false是怎么回事,看了 equals 源码就知道了,源码如下:

原来 equals 本质上就是 ==。
那问题来了,两个相同值的 String 对象,为什么返回的是 true码如下:

String s1 = new String("李四");String s2 = new String("李四");System.out.println(s1.equals(s2)); 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月15日
下一篇 2022年10月15日

相关推荐