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 实现方式是什么?
分享到:
相关推荐
2022年最新Docker 常见面试题汇总 适用人群:即将要面试docker容器管理岗位的小伙伴,也适用于后期打算往docker容器化方向发展的小伙伴 内容概要:面试题较新,帮你轻松应对各大厂面试哦!
Java 面试题汇总及解答
java_高级程序员面试试题汇总,文档中汇集了各种高级java面试题,包括解答,代码解释等,收集来源与各大电商公司的面试题集锦
java面试常见的一些面试题和解答方式 包括基本功, 集合, 线程, 锁机制, 数据存储, 缓存, 消息队列 框架 微服务 分布式 安全 性能 工程化
C语言面试题大汇总 常见的C语言面试题总汇 题目和详细解答 面试必备
前端笔试面试题部分 试题链接 原题概述 标签分类 1.md CSS部分 CSS 2.md HTML部分 HTML 3.md FEX 面试题 General 4.md 前端面试常见问题 General 5.md 前端面试HTML 相关问题 HTML 6.md 前端面试CSS 相关问题...
2021年,12月整理的经典k8s面试常问题目文档 ,适合高级运维和 运维开发面试使用
对多间公司面试题的汇总,以及针对试题的解答和相关知识点。
几乎包含了面试中经常出现的C++问题, 并且有详尽的解答, 是学习C++, 和准备C++面试的非常好的材料。。
C语言面试题大汇总 题目和解答 C语言面试题大汇总 题目和解答
整理的最全面的面试题,包括问题和最优解答,希望可以帮助更多的程序猿,能轻松面对越来越严苛的面试,争取找到心仪工作
华为面试,英文英语部分准备;...英语面试题(各外企JAVA等岗位英文面试题汇总-100问);最新的英语笔试题目及参考答案;最新整理华为面试英语测试常见问题。资料同时适用于外企招聘,外企互联网招聘,微软中国等。
2. 500强公司面试题分析与解答 3. 化繁为简,七大类汇总HR上百道问题 4. 面试题1 5. 面试题2 6. 人事70题 7. 人事面试题(一) 8. 人事面试题(二) 9. 人事面试题(三) 10. 人事面试题(四) 11. 人事面试题(五)...
Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客上的面经及王道考研相关视频,并改进了其中说法矛盾或含糊之处。 包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多...
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面试题!一定得看(附...
本文档汇总了FPGA笔试面试题解答,涵盖了FPGA开发、集成电路、笔试题、面试题等多个方面的知识点。这些知识点都是FPGA开发和集成电路相关的面试题,涵盖了数字电路、状态机、时序逻辑、clock skew、阻塞赋值和非阻塞...
自己总结得java(BAT)面试题汇总pdf版,总共834页,116道面试题的详细解答过程,有助于面试求职,积分不多,是自己辛辛苦苦整理的,麻烦广大求职友好评
针对高并发、JVM、GC大厂面试+详细解答总结汇总(对多线程、锁机制、内存分配、垃圾回收算法等,有这详细易懂的讲解!)