代码改变世界

java面试题整理

2017-02-28 10:02  Eric-Yuan  阅读(152)  评论(0编辑  收藏  举报

 

进程和线程的区别是什么?

进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻量级进程。


Java中的方法重写(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对,方法重写是说子类重新定义了父类的方法。方法重写必须有相同的方法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。

HashMap和Hashtable有什么区别?
HashMap允许键和值是null,而Hashtable不允许键或者值是null。
Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。
一般认为Hashtable是一个遗留的类。


log为什么使用log工具而不是用system.out.print

因为system.out.print要打印在服务器端的一个文件里,会造成输出排队的状况,一旦排队就会影响下面的代码,所以用log工具可以让log记录在不同的文件内,并且不会有排队输出的状况。

 


Spring:
IOC容器和AOP
IOC 容器即依赖注入容器,在spring框架中,提供了一个帮助我们创建对象的容器,使得我们在开发的过程中有效的避免了直接使用new来获取实例,可以降低程序的耦合度。
依赖注入有setter注入和构造器注入两种方式

AOP:
面向切面开发,在开发的过程中,可以构造出一些common的方法并且以切片的形式运行在程序当中,例如可以在一个方法执行之前以及执行之后分别执行指定的方法,例子是可以写一些common的log

Spring的好处:
轻量级、没有侵入性
控制反转、依赖注入(IOC)
面向切面开发(AOP)
SpringMVC框架
Spring管理bean的声明周期

Spring bean的生命周期
IOC容器加载bean
实例化bean
bean会实现一大堆接口
bean被程序调用
xml文件中可以指定方法destory bean

Hadoop是一个分布式文件存储基础架构
HDFS和MapReduce构成
HDFS是实现了google的File system(可以部署在低价格的服务器上,高吞吐量,比较适合大数据的存储)
MapReduce,是对大数据提供计算,


==与equals分别都是做什么的
==是对比内存地址的,如果是基本数据类型,对比的则是“值”
equals对比的是对象引用
String、Date等类型对equals进行了重写,对比的是对象的内容。

集合:set和list继承自collection , map不继承
set无序、没有重复对象
list是线性排序,集合中可以存放重复对象
list主要实现类:
arraylist:基于数组、长度可以改变、可以对数组进行随机访问,但是插入删除的速度比较慢
linkedlist:基于链表、长度无法改变、插入删除速度快,访问速度慢

HashSet和TreeSet的区别
TreeSet是有序键值对,HashSet是无序键值对
TreetSet不可以存放空值,HashSet可以存放空值
HashSet不可以存放重复值,但是可以存放同一个对象的不同实力。


Map:键值对
主要方法:put、remove、clear、putall、get

Servlet配置:
web.xml配置servlet name和class
然后配置servletmapping- 请求的action name以及需要拦截的路径
Soap协议:(规定如何写信)
soap协议是交换数据协议的一种规范,是一种轻量级的基于xml的协议

 


HTTP协议:(像邮局一样规定如何贴信封、邮票之类)
HTTP协议是超文本传输协议,是从远程服务器将超文本数据加载到本地浏览器的协议。
特点:简单快速,发送请求是只发送需传送请求方法和路径。
灵活:可以传输任意数据类型的对象。
TCP/IP协议:
互联网最基本的协议,又名网络通讯协议,是internet最基本的协议,又TCP和IP协议共同组成,

WSDL文档构成:
types - 数据类型定义容器 - <wsdl:types> 描述webservice所需要用到的数据类型
message - 方法的输入输出消息类型
portType - 描述整个webservice - 包含operation
port 定义endpoint
binding 定义endpoint的service服务
operation 定义webservice的方法名称
service 相关port元素的集合,用户组织endpoint定义。

 

Thread 面试题:
实现多线程的方式有哪几种:集成Thread类和实现Runnable接口


给线程加锁的方式:synchronized和lock
synchronized可以自动给代码块加锁,但是容易出现死锁的情况。
lock可以手动给代码块解锁以及解锁,避免了出现死锁的情况。


Sleep方法和wait方法的区别:
sleep方法继承自Thread类,主要是让线程休眠,可以规定休眠时间
wait方法来自于Object类,让线程进入等待状态,实际上是线程放弃该代码块,让代码块进度等待状态,使用notify方法可以唤醒该线程

StringBuilder和Stringbuffer的区别:
Stringbuilder是线程非安全的
StringBuffer是线程安全的


Thread Join方法:
多用于主线程和子线程之间,当子线程有大量耗时的计算,主线程会在子线程完成之前完成,如果使用join方法,实际上是使用了object的wait方法,让主线程在子线程完成之后再继续主线程里的方法