前言
这段时间一直在学习Netty相关知识,因为涉及知识点比较多,也走了不少弯路。目前网上关于Netty学习资料琳琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找到很好的方法之前不如按部就班先从基础开始,一般从总分总的渐进方式,既观森林,又见草木。
Netty是一款提供异步的、事件驱动的网络应用程序框架和工具,是基于NIO客户端、服务器端的编程框架。所以这里我们先以NIO和依赖相关的基础铺垫来进行剖析讲解,从而作为Netty学习之旅的一个开端。
面试题模块介绍:
一、Java 基础
- JDK 和 JRE 有什么区别?
- == 和 equals 的区别是什么?
- 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
- final 在 java 中有什么作用?
- java 中的 Math.round(-1.5) 等于多少?
- String 属于基础的数据类型吗?
- java 中操作字符串都有哪些类?它们之间有什么区别?
- String str="i"与 String str=new String(“i”)一样吗?
- 如何将字符串反转?
- String 类的常用方法都有那些?
- 抽象类必须要有抽象方法吗?
- 普通类和抽象类有哪些区别?
- 抽象类能使用 final 修饰吗?
- 接口和抽象类有什么区别?
- java 中 IO 流分为几种?
- BIO、NIO、AIO 有什么区别?
- Files的常用方法都有哪些?
二、容器
- java 容器都有哪些?
- Collection 和 Collections 有什么区别?
- List、Set、Map 之间的区别是什么?
- HashMap 和 Hashtable 有什么区别?
- 如何决定使用 HashMap 还是 TreeMap?
- 说一下 HashMap 的实现原理?
- 说一下 HashSet 的实现原理?
- ArrayList 和 LinkedList 的区别是什么?
- 如何实现数组和 List 之间的转换?
- ArrayList 和 Vector 的区别是什么?
- Array 和 ArrayList 有何区别?
- 在 Queue 中 poll()和 remove()有什么区别?
- 哪些集合类是线程安全的?
- 迭代器 Iterator 是什么?
- Iterator 怎么使用?有什么特点?
- Iterator 和 ListIterator 有什么区别?
- 怎么确保一个集合不能被修改?
三、多线程
- 并行和并发有什么区别?
- 线程和进程的区别?
- 守护线程是什么?
- 创建线程有哪几种方式?
- 说一下 runnable 和 callable 有什么区别?
- 线程有哪些状态?
- sleep() 和 wait() 有什么区别?
- notify()和 notifyAll()有什么区别?
- 线程的 run()和 start()有什么区别?
- 创建线程池有哪几种方式?
- 线程池都有哪些状态?
- 线程池中 submit()和 execute()方法有什么区别?
- 在 java 程序中怎么保证多线程的运行安全?
- 多线程锁的升级原理是什么?
- 什么是死锁?
- 怎么防止死锁?
- ThreadLocal 是什么?有哪些使用场景?
- 说一下 synchronized 底层实现原理?
- synchronized 和 volatile 的区别是什么?
- synchronized 和 Lock 有什么区别?
- synchronized 和 Reentr