基础篇
String、StringBuffer和StringBuilder的区别
String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,因此String的操作都是改变赋值地址而不是改变值操作。
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。
StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。
Array、ArrayList和LinkedList区别
ArrayList数据结构采用数组存储数据,LinkedList数据结构采用双向链表存储数据;
LinkedList与ArrayList最大的区别是LinkedList更加灵活,并且部分方法的效率比ArrayList对应方法的效率要高很多,对于数据频繁出入的情况下,并且要求操作要足够灵活,建议使用LinkedList;对于数组变动不大,主要是用来查询的情况下,可以使用ArrayList。
它们线程都是不安全的。
HashMap和Hashtable的区别
https://blog.csdn.net/yu849893679/article/details/81530298
HashMap和ConcurrentHashMap的区别
ConcurrentHashMap对整个桶数组进行bai了分段du,而HashMap则没有zhi
ConcurrentHashMap在每一个分段上都用锁进行保护,从而dao让锁的粒度更精细一些,并发性能更好,而HashMap没有锁机制,不是线程安全的
HashMap实现原理及扩容机制
常见数据结构
链表、数组、队列、栈
运行时异常和编译时异常的区别
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
面向对象的三大特征,并解释
继承、封装、多态
面向对象与面向过程的区别
面向过程就是分析出解决问题所需要的步骤,面向对象是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象就是高度实物抽象化、面向过程就是自顶向下的编程!
面向对象"可维护性"比较好,“饭” 和"菜"的耦合度比较低。
重载和重写的区别
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;
重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,子类覆写方法的访问修饰符权限一定要大于父类被覆写方法的访问修饰符权限
抽象类与接口的区别
在abstract class中,可以有自己的数据成员,也可以有非abstract的成员方法,而在interface方式实现中,只能有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是抽象的。
抽象类在Java中代表的是继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个接口。
Math.round(11.5)和Math.round(-11.5)结果分别为多少
为什么HashMap大小总是2的n次方(底层源码)
==和equals的区别
一个.java源文件中可以包含多个类吗(不是内部类)?有什么限制
String s1=new String(“xyz”)创建了几个对象?String s2=”xyz”;String s3=”xyz”;问s2==s1、 s1.equals(s2)和s2==s3结果分别是什么?
异常分为几类,有什么区别
简述冒泡排序的过程
线程有几个状态,分别有什么
多线程有哪几种实现方法,更喜欢哪一个,为什么?
如何启动一个线程,使用start()还是run()
线程与进程的区别
什么是临界资源
计算机网络分为哪几层?有什么协议属于哪一层,协议对应的端口号
简述一个http请求的过程
Web篇
- Servlet生命周期
- Servlet是单例还是多例
- 如何在jsp页面上书写java代码
- Tomcat启动加载流程
- Jdbc操作步骤分为哪几步
- 解释mvc开发模式
- 什么是spring,spring两大核心是什么,并解释;使用spring的好处有哪些
- Spring事务管理实现方式
- Springmvc工作流程
- Mybatis和hibernate的区别
- 什么是事务?数据库的事务四大特性及隔离级别
- 如何Sql优化
- 需掌握sql的分组查询、连接查询等知识,会使用聚合函数(笔试)
- Springmvc有哪些常用注解