Java面试
kobejayandy
十多年互联网产品研发经验,历经华为、腾讯、字节跳动等公司,主要从事后端技术研发及技术管理工作(andyjaykobe)
展开
-
equals和==的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个原创 2013-07-08 22:34:24 · 972 阅读 · 0 评论 -
ArrayList,LinkedList, Vector三者的区别
LinkedList内部以链表形式存储数据 ArrayList内部以数组形式存储数据。 Vector同ArrayList,不过它与ArrayList比较起来是线程安全的。 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vec原创 2013-06-24 19:58:17 · 1845 阅读 · 0 评论 -
Hashtable 和 HashMap之间的区别
Hashtable是继承了Dictionary,是线程安全的。HashMap实现了Map接口,不是线程安全的。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hash原创 2013-06-24 19:59:38 · 1195 阅读 · 0 评论 -
XML文档定义有几种形式?解析XML文档有哪几种方式?
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前原创 2013-06-24 22:19:25 · 7241 阅读 · 0 评论 -
spring 五个事务隔离级别和七个事务传播行为
Spring在TransactionDefinition接口中定义了五个不同的事务隔离级别 ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应 ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据转载 2013-06-24 23:07:44 · 2193 阅读 · 0 评论 -
一个网站有很大的访问量,有什么办法来解决?
主要从架构层面解决: 1,使用服务器集群,如tomcat集群; 2,使用缓存,如memcache, cassandra分布式缓存; 3,使用数据库集群,如mysql集群, oracle数据库集群原创 2013-06-26 21:58:03 · 2035 阅读 · 1 评论 -
Oracle数据库默认使用的是乐观锁还是悲观锁?
Oracle数据库默认使用的是乐观锁。任何一个以UPDATE...SET开始并且不是以SELECT...FOR UPDATE进行操作的命令就是一个乐观锁的例子。原创 2013-06-26 22:58:19 · 3370 阅读 · 1 评论 -
TCP三次握手/四次挥手详解
TCP连接三次握手: 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态; 第转载 2013-07-14 20:50:10 · 1595 阅读 · 0 评论 -
网站访问量和数据量需要都很大,如何解决?
访问量很大? 数据量很大? 访问量和数据量需要都很大? 核心是通过分布式系统解决前面提到的三个问题转载 2013-07-01 23:03:56 · 2232 阅读 · 0 评论 -
Servlet的线程安全问题
Servlet容器默认采用单实例多线程的方式来处理请求,这样减少产生Servlet实例的开销,提升了对请求的响应时间 Servlet 体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据 web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet原创 2013-07-03 21:47:38 · 1560 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2013-11-17 15:27:20 · 2291 阅读 · 0 评论 -
深入分析ConcurrentHashMap
术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash table 根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位转载 2013-11-17 17:36:22 · 2305 阅读 · 0 评论 -
String, StringBuffer, StringBuilder三者区别
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说,String 类型和 StringBuffer 类型的主要性能区别其实在于 String是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改原创 2013-06-24 19:54:43 · 1311 阅读 · 1 评论 -
Oracle的悲观锁和乐观锁
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。 数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假 设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新转载 2013-06-24 23:33:03 · 1247 阅读 · 0 评论 -
equals和hashCode的区别
Object的方法 equals()和hashCode() 是用来判断两个对象是否相等。基础类型判断是否相等时,使用“==”来判断,按java的说话,“==”当用来判断是基础类型是判断内容的,而引用对象是判断内存地址的。 hashCode()是用来产生哈希玛的,方法返回该对象的哈希码值,而哈希玛是用来在散列存储结构中确定对象的存储地址的,支持该方法是为哈希表提供一些优点,例如java.util.原创 2013-07-08 22:57:18 · 1112 阅读 · 0 评论 -
hashCode()的作用
在一般的应用中你不需要了解hashCode的用法,但当你用到HashMap,HashSet等集合类时要注意下hashCode。 你想通过一个object的key来拿HashMap的value,HashMap的工作方法是,通过你传入的object的hashcode在内存中找地址,当找到这个地址后再通过equals方法来比较这个地址中的内容是否和你原来放进去的一样,一样就取出value。原创 2013-07-08 23:00:52 · 1065 阅读 · 0 评论 -
重载equal和hashCode
1、 为什么要重载equal方法? 因为Object的equal方法默认是两个对象的引用的比较,意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。 2、 为什么重载hashCode方法? 一般的地方不需要重载hashCode,只有当类需要放在HashTable、HashMap、HashSet等等hash结构的集合时才会重载has原创 2013-07-08 23:16:40 · 1519 阅读 · 0 评论 -
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。原创 2013-07-10 00:05:43 · 4099 阅读 · 2 评论 -
Java中保留字和关键字的区别
Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。保留字是为java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。 Java 关键字列表 (依字母排序 共51组): abstract, assert,boolean, break, byte, case, catch, char, class, const,原创 2013-07-10 00:18:32 · 6534 阅读 · 0 评论 -
引用类型和原始类型的区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean --> Boolean byte --> Byte char --> Character short --> Short int --> Integer原创 2013-07-09 23:22:55 · 1757 阅读 · 0 评论 -
<%! 定义 %>与 <% 定义 %>区别
使用定义的变量编译成servlet后成为servlet的私有成员变量,在servlet运行环境中,对于一个JSP页只允许有一个servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在中定义的变量编译成servlet后成service()方法的一个本地变量,而service()方法中原创 2013-07-09 23:53:20 · 1372 阅读 · 0 评论 -
线程同步的方法
wait():作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。 调用wait方法需要注意几点: 第一点:wait被调用的时候必须在拥有锁(即synchronized修饰的)的代码块中。 第二点:恢复执行转载 2013-06-24 19:43:33 · 1260 阅读 · 0 评论 -
Collection 和 Collections的区别
Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。原创 2013-06-24 20:03:16 · 1128 阅读 · 0 评论 -
synchronized 和java.util.concurrent.locks.Lock 的异同
主要相同点: Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放原创 2013-06-24 22:32:38 · 1504 阅读 · 0 评论 -
数据库事务并发有关问题
多个事务同时访问数据库时候,会发生下列5类问题,包括3类数据读问题(脏读,不可重复读,幻读),2类数据更新问题(第一类丢失更新,第二类丢失更新): 1,脏读(dirty read) A事务读取B事务尚未提交的更改数据,并在这个数据基础上操作。如果B事务回滚,那么A事务读到的数据根本不是合法的,称为脏读。在oracle中,由于有version控制,不会出现脏读。 2,不可重复读(unrepea转载 2013-06-24 22:53:28 · 1380 阅读 · 0 评论 -
CocurrentHashMap和Hashtable的区别
集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看ConcurrentHashMap和Hashtable之间的区别。 这篇文章是HashMap的工作原理以及Has转载 2013-11-19 23:57:48 · 13467 阅读 · 1 评论