1、int 和 Integer区别
int:是基本类型,默认值为0,一般用于数值计算
Integer:int的包装类,作为对象使用,包装里一个int类型的字段,默认值为null,大多用于类型转换和需要对int作为对象使用时出现。
2、HashMap和HashTable区别
HashMap HashTable的轻量级实现,非线程安全的,在多线程情况下需要同步,并且允许null的key和value。
HashTable 线程安全,不允许null的key和value,不推荐使用。
附加:HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3、String和StringBuffer区别 stringbuilder
string:固定长度,创建后不可变。进行修改时需要附加新的对象完成
stringBuffer:可变长度 (待完成)
4、运行异常和一般异常的定义,及区别
5、short s1=1;s1=s1+1;是否正确?short s1=1;s1+=1;是否正确?
6、Math.round(11.5)是多少?Math.round(-11.5)是多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
7、线程启动是用run(),还是start(),两者区别是什么?
8、servlet生命周期
生命全过程:
加载ClassLoader
实例化new
初始化init(ServletConfig)
处理请求servicedoGetdoPost
退出服务destroy()
☆只有一个对象
☆API中的过程:
init()//只执行一次,第一次初始化的时候
publicvoidinit(ServletConfigconfig)throwsServletException
service()
publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,java.io.IOException
destroy()//webapp退出的时候
publicvoiddestroy()
9、字符进行编码转换的方式
Stringstr=rs.getString();
str=newString(str.getBytes("iso8859-1"),"gb2312");
10、接口是否可以继承接口?抽象类是否可以继承接口?抽象类是否可以继承实体类?
11、list, set, Map继承自哪里?区别是什么?
答:List,Set是,Map不是。
如图:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collection的"子接口",如:List和Set。
注意:Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当做一组key集合,一组value集合,或者一组key-value映射。
详细介绍:
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
List接口有三个实现类:LinkedList,ArrayList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢
ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低
Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
SortedSet接口有一个实现类:TreeSet(底层由平衡二叉树实现)
Query接口有一个实现类:LinkList
Map接口有三个实现类:HashMap,HashTable,LinkeHashMap
HashMap非线程安全,高效,支持null;HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap
其实最主要的是,list是用来处理序列的,而set是用来处理集的。Map是知道的,存储的是键值对
set 一般无序不重复.map kv 结构 list 有序
12、抽象方法是否可以用static , native , synchronized?
13、xml的定义形式,区别,解析方式是什么?
14、排序方式,代码实现
15、String , StringBuffer , StringBuilder 区别?
String是固定长度的字符串,如果要发生变化必须重新生成新的实例;
String字符串常量
StringBuffer字符串变量(线程安全)
StringBuilder字符串变量(非线程安全)
简要的说,String
类型和
StringBuffer
类型的主要性能区别其实在于
String
是不可变的对象
,
而如果是使用StringBuffer
类则结果就不一样了,每次结果都会对
StringBuffer
对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用
StringBuffer
,特别是字符串对象经常改变的情况下。而在某些特别情况下,
String
对象的字符串拼接其实是被
JVM
解释成了
StringBuffer
对象的拼接,所以这些时候
String
对象的速度并不会比
StringBuffer
对象慢,而特别是以下的字符串对象生成中,
String
效率是远要比
StringBuffer
快的:
StringS1=“Thisisonlya”+“simple”+“test”;
StringBufferSb=newStringBuilder(“Thisisonlya”).append(“simple”).append(“test”);
你会很惊讶的发现,生成StringS1
对象的速度简直太快了,而这个时候
StringBuffer
居然速度上根本一点都不占优势。其实这是
JVM
的一个把戏,在
JVM
眼里,这个
StringS1=“Thisisonlya”+“simple”+“test”;其实就是:
StringS1=“Thisisonlyasimpletest”;所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的
String
对象的话,速度就没那么快了,譬如:
StringS2=“Thisisonlya”;
StringS3=“simple”;
StringS4=“test”;
StringS1=S2+S3+S4;
这时候JVM
会规规矩矩的按照原来的方式去做
在大部分情况下StringBuffer>String
StringBuffer
Java.lang.StringBuffer线程安全的可变字符序列。一个类似于
String
的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
StringBuffer上的主要操作是
append
和
insert
方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。
append
方法始终将这些字符添加到缓冲区的末端;而
insert
方法则在指定的点添加字符。
例如,如果z
引用一个当前内容是
“start”
的字符串缓冲区对象,则此方法调用
z.append("le")
会使字符串缓冲区包含
“startle”
,而
z.insert(4,"le")
将更改字符串缓冲区,使之包含
“starlet”
。
java.lang.StringBuilder一个可变的字符序列是
5.0
新增的。此类提供一个与
StringBuffer
兼容的
API
,但不保证同步。该类被设计用作
StringBuffer
的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比
StringBuffer
要快。两者的方法基本相同。
16、ArrayList ,LinkList区别
List是一个接口,
ArrayList
和
LinkedList
是两个实现类,他们实现的方式不一样,其实
LinkedList
才是真正的链表(如果不清楚什么是链表,需要了解一下相关数据结构的知识,这不是一两句话能说清楚的),而
ArrayList
是用数组实现的,它不是真正的链表,在初始化的时候它先对数组设置一个初始容量,当数组空间不够的时候,它会重新构建一个容量更大的数组,然后把先前的元素拷贝进去。
ArrayList和
LinkedList
本质上的区别就是数组和列表这两种数据结构的区别。课参阅相关数据结构的知识。
我这里简单的为你归纳几点:
ArrayList:缺点:内存使用量要大一些,添加删除元素效率较低。元素随机访问的效率较高。
LinkedList:相反。
17、List , Map 实现方式是什么?
分享到:
相关推荐
java 程序员面试指南,常用面试题汇总解答
2022年最新Docker 常见面试题汇总 适用人群:即将要面试docker容器管理岗位的小伙伴,也适用于后期打算往docker容器化方向发展的小伙伴 内容概要:面试题较新,帮你轻松应对各大厂面试哦!
这份"C++面试真题汇总和解答"提供了全面的面试问题及答案,旨在帮助你更好地理解C++的关键概念,提升你的面试竞争力。以下是一些可能涵盖的重要知识点: 1. **基本语法**:包括变量声明、类型转换、运算符优先级、...
这份文件是 Java 高级程序员面试试题汇总,涵盖了各种高级 Java 面试题,包括解答、代码解释等,收集来源于各大电商公司的面试题集锦。 Java 中的 HashSet 在 Java 中,HashSet 是一种不允许重复元素的集合。它...
前端笔试面试题部分 试题链接 原题概述 标签分类 1.md CSS部分 CSS 2.md HTML部分 HTML 3.md FEX 面试题 General 4.md 前端面试常见问题 General 5.md 前端面试HTML 相关问题 HTML 6.md 前端面试CSS 相关问题...
【标题】:“北京java面试题汇总” 这是一份专门针对北京地区Java开发岗位面试的题库,涵盖了众多Java公司的常见面试问题。对于准备应聘Java工程师的求职者来说,这是一个宝贵的资源,可以帮助他们全面了解和复习...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能、丰富的类库和强大的...通过阅读《2019java面试题汇总@www.java1234.com.pdf》这份文档,你可以找到更多具体的面试题目和解答,进一步巩固你的Java技能。
面试题是衡量候选人编程技能和技术理解的重要手段。本资料汇集了来自Intel英特尔、微软亚洲技术中心、Cisco思科和华为等知名企业的C/C++面试题,以及慧通公司的面试题目,旨在为程序员提供全面的准备材料。 1. **...
华为面试,英文英语部分准备;...英语面试题(各外企JAVA等岗位英文面试题汇总-100问);最新的英语笔试题目及参考答案;最新整理华为面试英语测试常见问题。资料同时适用于外企招聘,外企互联网招聘,微软中国等。
2. 500强公司面试题分析与解答 3. 化繁为简,七大类汇总HR上百道问题 4. 面试题1 5. 面试题2 6. 人事70题 7. 人事面试题(一) 8. 人事面试题(二) 9. 人事面试题(三) 10. 人事面试题(四) 11. 人事面试题(五)...
数据分析面试题-SQL面试题汇总 本文档汇总了两道数据分析面试题,涵盖了 SQL 编程语言的多个方面,包括建表、插入数据、排序、连接、分组、聚合函数、日期操作等。通过这两道题目,我们可以了解数据分析师需要具备...
2008/01/07 10:45 38,912 NET程序员面试题汇总.doc 2008/06/17 18:48 1,038 两个月薪上万的.Net面试题.txt 2008/06/26 21:19 7,321 使用.NET的人.txt 2008/08/03 10:34 88,064 大型软件公司.net面试题!一定得看(附...
这份"2020 Java面试题汇总"压缩包文件很可能是为了帮助求职者准备Java开发岗位的面试而整理的一系列问题和解答。在Java面试中,通常会涉及到以下几个核心知识点: 1. **基础语法**:面试官会考察你对Java基本语法的...
本文档汇总了FPGA笔试面试题解答,涵盖了FPGA开发、集成电路、笔试题、面试题等多个方面的知识点。这些知识点都是FPGA开发和集成电路相关的面试题,涵盖了数字电路、状态机、时序逻辑、clock skew、阻塞赋值和非阻塞...
这份"数据库面试题(汇总所有的数据库面试题).zip"压缩包显然包含了一系列与数据库相关的面试问题,旨在帮助求职者准备应对各种数据库面试挑战。以下是根据标题、描述以及可能的文件内容总结出的一些关键知识点: ...
《C C++面试题大汇总》是一份涵盖了C和C++面试中常见问题的资源集锦,主要来源于网络,特别是CSDN这个知名的开发者社区。这份资料的目的在于为准备C++面试的求职者提供全面而丰富的知识复习材料,其中包含了大约200...
### 最新最全Java面试题汇总 #### 1. Java中的访问控制修饰符:public, private, protected 及默认(friendly) 在Java中,我们有四种主要的访问控制级别,它们分别是 `public`、`private`、`protected` 和默认...