For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
上海达内教育小编为大家整理了一些Java研发工程师的基础面试题,希望可以对大家找工作有一些帮助~
1.字符串、StringBuffer和StringBuilder之间有什么区别?为什么字符串是不可变的?
String是字符串常量,StringBuffer和StringBuilder是字符串变量。StringBuffer是线程安全的,StringBuilder是非线程安全的。具体来说,字符串是一个不可变的对象。每次修改字符串对象时,实际上都会创建一个新对象,并将引用指向该新对象。效率很低。字符串缓冲区
是可变的,也就是说,每次修改都只针对它自己。在大多数情况下,它比字符串更有效。StringBuffer确保了同步,因此是线程安全的。StringBuilder不实现同步,因此它不是线程安全的。但它应该比StringBuffer更高效。使用StringBuffer时,最好指定容量,比不指定容量时快30%-40%,甚至比不指定容量时的StringBuilder快。
2.vector、ArrayList和LinkedList之间的区别是什么?
Vector是同步的,ArrayList和LinkedList不是同步的。在底层,vector和ArrayList都是基于Object[]array实现的,但考虑到vector线程的安全性,ArrayList的效率比vector更快。就元素的随机访问而言,vector和ArrayList基本相同,时间复杂度为O(1),LinkedList的随机访问元素复杂度为O(n)。然而,LinkedList在插入和删除数据方面比ArrayList快得多。LinkedList比ArrayList占用更多内存,因为LinkedList还存储对每个节点上第一个和第二个节点的引用。
3.哈希表、哈希映射、树映射差异
HashMap和hashtable都实现了map接口,但hashtable是线程安全的,HashMap是非线程安全的。HashMap中允许空键值,但hashtable中不允许空键值。HashMap适用于单线程,hashtable适用于多线程。哈希表中哈希数的默认大小为11,递增方法为old*2+1。HashMap中哈希的默认大小是16,两者都是2的指数。Treemap可以根据键值和指定的排序方法排列维护的数据。默认值为升序。
4.concurrenthashmap和hashtable之间的区别
两者都用于多线程,但当哈希表增加到一定程度时,其性能将急剧下降。因为迭代会被锁定很长时间。然而,并发HashMap通过引入分段来确保锁的数量不会很大。简而言之,hashtable将锁定真正的映射,而并发HashMap只需要锁定映射的一部分。
5.tomcat、Apache和JBoss之间的区别
Tomcat是用于解析JSP和servlet的servlet容器。它是一个重量轻、效率高的容器;缺点是EJB不受支持,只能在Java应用程序中使用。
Apache是一个HTTP服务器(web服务器),类似于IIS。它可以用来构建虚拟站点,编译和处理静态页面。支持SSL技术和多个虚拟主机。
JBoss是一个应用服务器。它是一个运行EJB的JavaEE应用服务器。它遵循JavaEE规范,可以提供更多的平台支持和更多的集成功能,如数据库连接、JCA等。它对servlet的支持是通过集成其他servlet容器来实现的。比如Tomcat。
如果大家想进一步学习Java开发,可以点击下方图片咨询客服申请上海达内Java培训试听课程~