这次面试问的比较基础,但是我还是有很多答不上来的,时刻提醒自己要多复习基础知识!!如有错漏请指出,多谢!
1、为什么要用StringBuffer和StringBuilder?他们和String有什么区别?
String是字符串常量,StringBuffer和StringBuilder是均为字符串变量,即String在创建之后是不能改变的,而后两者创建后是可以更改的。而StringBuffer和StringBuilder的区别是,StringBuffer是线程安全的,StringBuilder是线程不安全的。如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中有很多方法带有synchronized关键字,因此可以保证线程安全。但在单线程的情况下,一般使用StringBuilder,因为它的速度相对来说比较快。
2、String类的常用方法
参考此篇文章吧:String类的常用方法
3、for循环的种类
两种,分别是普通for循环和for-each循环。
//普通for循环
for(int i=0;i<19;i++){
System.out.println(i);
}
//for-each循环
for(Object obj:objects){
System.out.println(obj);
}
4、List和Map的常见实现类
List常见的实现类有Vector、ArrayList和LinkedList,Map的常见实现类有Hashtable、HashMap和TreeMap
5、HashMap和TreeMap的区别
- HashMap中的元素没有顺序而TreeMap中的元素是有顺序的。
- HashMap是基于hash表实现的,为了优化HashMap的空间使用,可以调优初始容量和负载因子。TreeMap是基于红黑树实现的,TreeMap没有调优选项,因为红黑树总是处于平衡的状态。
- HashMap适用于Map插入、删除、定位元素;TreeMap适用于按自然顺序或自定义顺序遍历键(key)
6、数据库左外连接和右外连接的区别
左外连接是以左边所有数据为参照,显示左边表中所有数据,右边表只显示与左边表对应的数据,少了补null,多了删除。右外连接则以右表为主,和左外连接同理。
7、事务是什么?
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列,这些操作要么全都都做,要么都不做,是一个不可分割的工作单位。事务的4个特性,分别是原子性、一致性、隔离性和持久性。
8、JDBC连接数据库的步骤
- 加载驱动
- 获取数据库连接对象 Connection
- 定义SQL
- 获取执行SQL语句的对象Statement
- 执行SQL,接收返回结果
- 释放资源
详细可阅读此文章:十分钟教你用Java操作数据库
9、Object类常用方法
构造方法、clone()、equals(Object)、getClass()、hashcode()、notify()、toString()、wait()、notifyAll()
其中尤其要注意equals的内部实现和它与==的区别
10、多线程常用方法
Thread类中的setName(),getName()用于设置线程名字,获取线程名字;sleep()方法暂停当前正在执行的线程对象,并执行其它线程;notify()唤醒一个线程。
12、Linux如何查看进程占用内存信息?
ps -aux
13、Shell编程如何对json进行处理?
14、spring和springMVC常用注解
@Component、@Service、@Repository、@Controller、@Autowired、@RequestMapping、@ResponseBody