1.JDK 和 JRE 有什么区别?
答:JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
2.== 和 equals 的区别是什么?
答:==是比较两个对象的地址,equals是比较连个对象的内容
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
答:不对!hashCode()相同,不代表连个对象就相同。hashCode值是从hash表中得来的,hash是一个函数,该函数的实现是一种算法,通过hash算法算出hash值,hash表就是 hash值组成的,一共有8个位置。
相反,equals()相同,hashCode()一定相同。这个是正确的!
4.final 在 java 中有什么作用?
答:final的作用随着所修饰的类型而不同:
5.java 中的 Math.round(-1.5) 等于多少?
答:-1
计算方法:
总结:大于五全部加,等于五正数加, 小于五全不加
6.String 属于基础的数据类型吗?
答:不是。String是一个对象,是java等编程语言的字符串。
7.java 中操作字符串都有哪些类?它们之间有什么区别?
答:String、StringBuffer、StringBuilder
区别:String是不可变的对象,对每次对String类型的改变时都会生成一个新的对象,StringBuffer和StringBuilder是可以改变对象的。
对于操作效率:StringBuilder > StringBuffer > String
对于线程安全:StringBuffer 是线程安全,可用于多线程;StringBuilder 是非线程安全,用于单线程
不频繁的字符串操作使用 String。反之,StringBuffer 和 StringBuilder 都优于String
8.String str="i"与 String str=new String("i")一样吗?
答:不一样,因为他们不是同一个对象。
9.如何将字符串反转?
答:有多种方法。我列出3种方法。
第一种:
public class Main { public static void main(String[] args) { String s1 = "asdfghjkl"; System.out.println(new Main().swapWords(s1)); } public void swap(char[] arr, int begin, int end) { while (begin < end) { char temp = arr[begin]; arr[begin] = arr[end]; arr[end] = temp; begin++; end--; } } public String swapWords(String str) { char[] arr = str.toCharArray(); swap(arr, 0, arr.length - 1); int begin = 0; for (int i = 1; i < arr.length; i++) { if (arr[i] == ‘ ‘) { swap(arr, begin, i - 1); begin = i + 1; } } return new String(arr); } }
第二种:
public class Main { public static void main(String[] args) { String s1 = "asdfghjkl"; String[] s = s1.split(""); List<String> list = list = Arrays.asList(s); Collections.reverse(list); System.out.println(list); } }
第三种:
public class Main { public static void main(String[] args) { String s1 = "asdfghjkl"; System.out.println(new StringBuilder(s1).reverse().toString()); } }
10.String 类的常用方法都有那些?
答:下面列举了20个常用方法。格式:返回类型 方法名 作用。
1、和长度有关:
2、和数组有关:
3、和判断有关:
4、和改变内容有关:
5、和位置有关:
11.抽象类必须要有抽象方法吗?(abstrace)
答:抽象类中不一定要包含抽象(abstrace)方法。也就是了,抽象中可以没有抽象(abstract)方法。反之,类中含有抽象方法,那么类必须声明为抽象类。
12.普通类和抽象类有哪些区别?
答:
13.抽象类能使用 final 修饰吗?
答:不能,抽象类中的抽象方法是未来继承之后重写方法,而用final修饰的类,无法被继承。
14.接口和抽象类有什么区别?
答:
15.java 中 IO 流分为几种?
答:可以分4种。
16.BIO、NIO、AIO 有什么区别?
参考:https://blog.csdn.net/u010310183/article/details/81700405
17.Files的常用方法都有哪些?
参考:https://www.cnblogs.com/cocoxu1992/p/10460994.html
18.java 容器都有哪些?
答:List、Set、Map
19.Collection 和 Collections 有什么区别?
答:Collection是集合类的顶级接口,其派生了两个子接口 Set 和 List。
Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
总的来说:Collection是一个接口,而Collections是个类。
20.List、Set、Map 之间的区别是什么?
答:
21.HashMap 和 Hashtable 有什么区别?
答:
22.如何决定使用 HashMap 还是 TreeMap?
答:
23.说一下 HashMap 的实现原理?
答:
24.说一下 HashSet 的实现原理?
答:
25.ArrayList 和 LinkedList 的区别是什么?
答:
26.如何实现数组和 List 之间的转换?
答:
27.ArrayList 和 Vector 的区别是什么?
答:
28.Array 和 ArrayList 有何区别?
答:Array 与 ArrayList 都是用来存储数据的集合。ArrayList 底层是使用数组实现的,但是ArrayList对数组进行了封装和功能扩展
29.在 Queue 中 poll()和 remove()有什么区别?
答:
30.哪些集合类是线程安全的?
答:
31.迭代器 Iterator 是什么?
答:
32.Iterator 怎么使用?有什么特点?
答:
33.Iterator 和 ListIterator 有什么区别?
答:
34.怎么确保一个集合不能被修改?
答:
35.并行和并发有什么区别?
答:
36.线程和进程的区别?
答:
区别:地址空间、资源拥有
37.守护线程是什么?
答:守护线程是个服务线程,服务于其他线程
典型案例:垃圾回收线程
38.创建线程有哪几种方式?
答:
39.说一下 runnable 和 callable 有什么区别?
答:
40.线程有哪些状态?
答:创建、就绪、运行、阻塞、死亡
41.sleep() 和 wait() 有什么区别?
答:
42.notify()和 notifyAll()有什么区别?
答:
43.线程的 run()和 start()有什么区别?
答:
44.创建线程池有哪几种方式?
45.线程池都有哪些状态?
46.线程池中 submit()和 execute()方法有什么区别?
47.在 java 程序中怎么保证多线程的运行安全?
48.多线程锁的升级原理是什么?
49.什么是死锁?
50.怎么防止死锁?
51.ThreadLocal 是什么?有哪些使用场景?
答:ThreadLocal用于保存某个线程共享变量。使用场景:解决数据库连接,Session管理
52.说一下 synchronized 底层实现原理?
答:
53.synchronized 和 volatile 的区别是什么?
54.synchronized 和 Lock 有什么区别?
55.synchronized 和 ReentrantLock 区别是什么?
56.说一下 atomic 的原理?
57.什么是反射?
答:可以将一个程序(类)在运行的时候获得该程序(类)的信息的机制,也就是获得在编译期不可能获得的类的信息,因为这些信息是保存在Class对象中的,而这个Class对象是在程序运行时动态加载的
58.什么是 java 序列化?什么情况下需要序列化?
答:系列化就是把java对象转换为字节序列的方法。
59.动态代理是什么?有哪些应用?
答:
60.怎么实现动态代理?
答:
61.为什么要使用克隆?
62.如何实现对象克隆?
63.深拷贝和浅拷贝区别是什么?
64.jsp 和 servlet 有什么区别?
答:
65.jsp 有哪些内置对象?作用分别是什么?
66.说一下 jsp 的 4 种作用域?
67.session 和 cookie 有什么区别?
68.说一下 session 的工作原理?
69.如果客户端禁止 cookie 能实现 session 还能用吗?
70.spring mvc 和 struts 的区别是什么?
71.如何避免 sql 注入?
72.什么是 XSS 攻击,如何避免?
73.什么是 CSRF 攻击,如何避免?
七、异常
74.throw 和 throws 的区别?
75.final、finally、finalize 有什么区别?
76.try-catch-finally 中哪个部分可以省略?
77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
78.常见的异常类有哪些?
八、网络
79.http 响应码 301 和 302 代表的是什么?有什么区别?
80.forward 和 redirect 的区别?
81.简述 tcp 和 udp的区别?
82.tcp 为什么要三次握手,两次不行吗?为什么?
83.说一下 tcp 粘包是怎么产生的?
84.OSI 的七层模型都有哪些?
85.get 和 post 请求有哪些区别?
86.如何实现跨域?
87.说一下 JSONP 实现原理?
九、设计模式
88.说一下你熟悉的设计模式?
89.简单工厂和抽象工厂有什么区别?
90.为什么要使用 spring?
答:spring是一个开源框架,是个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
91.解释一下什么是 aop?
答:AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。
AOP分为静态AOP和动态AOP:
92.解释一下什么是 ioc?
答:即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。
93.spring 有哪些主要模块?
答:core模块、aop模块、data access模块、web模块、test模块
94.spring 常用的注入方式有哪些?
答:详细解析:https://blog.csdn.net/a909301740/article/details/78379720
95.spring 中的 bean 是线程安全的吗?
答:
96.spring 支持几种 bean 的作用域?
答:singleton、prototype、request、session、globalSession五中作用域。
97.spring 自动装配 bean 有哪些方式?
答:可分为四种:
原文:https://www.cnblogs.com/dzcici/p/10523231.html