文章目录
-
- 一、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进行处理,非常感谢!