个人的备忘录,也提供给大家,仅供参考。(职场小白初入,有错误之处,敬请大家斧正)
2023-06-08 F公司招聘笔试
一、HashMap和HashTable的区别
HashMap 是
Hashtable
的轻量级实现(非线程安全的实现),他们都完成了
Map
接口,主要区别在于 HashMap
允许空(
null
)键值(
key
)
,
由于非线程安全,在只有一个线程访问的情况下, 效率要高于 Hashtable
。
HashMap 允许将
null
作为一个
entry
的
key
或者
value
,而
Hashtable
不允许。
HashMap把
Hashtable
的
contains
方法去掉了,改成
containsvalue
和
containsKey
。因为
contains方法容易让人引起误解。
Hashtable 继承自
Dictionary
类,而
HashMap
是
Java1.2
引进的
Map interface
的一个实现。最大的不同是,Hashtable
的方法是
Synchronize
的,而
HashMap
不是,在多个线程访问
Hashtable时,不需要自己为它的方法实现同步,而 HashMap
就必须为之提供外同步。
Hashtable 和
HashMap
采用的
hash/rehash
算法都大概一样,所以性能不会有很大的差异。
就
HashMap
与
HashTable
主要从三方面来说。
一
.
历史原因
:Hashtable
是基于陈旧的
Dictionary
类的,
HashMap
是
Java 1.2
引进的
Map
接口的一 个实现。
二
.
同步性
:Hashtable
是线程安全的,也就是说是同步的,而
HashMap
是线程序不安全的,不是同步的。
三
.
值:只有
HashMap
可以让你将空值作为一个表的条目的
key
或
value
二、简述Java的序列化,并说说序列化的优点
我们有时候将一个 java
对象变成字节流的形式传出去或者从一个字节流中恢复成一个 java 对象,例如,要将
java
对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们 可以自己写代码去把一个 java
对象变成某个格式的字节流再传输,但是,
jre
本身就提供了这种支持,我们可以调用 OutputStream
的
writeObject
方法来做,如果要让
java
帮我们做,要被传输的对象必须实现 serializable
接口,这样,
javac
编译时就会进行特殊处理,编译的类才可以被 writeObject
方法操作,这就是所谓的序列化。需要被序列化的类必须实现Serializable 接口,该接口是一个
mini
接口,其中没有需要实现的方法,
implements Serializable只是为了标注该对象是可被序列化的。
例如,在 web
开发中,如果对象被保存在了
Session
中,
tomcat
在重启时要把
Session
对象序列化到硬盘,这个对象就必须实现
Serializable
接口。如果对象要经过分布式系统进行
网络传输或通过
rmi
等远程调用,这就需要在网络上传输对象,被传输的对象就必须实现
Serializable
接口。
三、使用SQL语句查询第50-80行记录(设已有自增id)
1、SELECT * FROM table_name WHERE id >= 50 && id <= 80
2、这种方法可以用于没有自增行时,直接搜索第50-80行记录。
SELECT * FROM table_name LIMIT 49,31
这里需要使用LIMIT关键字,第一个数字是起始行,起始数字是起始行-1,类似数组下标。两个数字相加之和等于想查询的最后一行。
例如:查询50-80行,使用LIMIT m,n m=50-1=49 n=80-m=31
查询31-57行,使用LIMIT m,n m=31-1=30 n=57-m=27
SELECT * FROM table_name LIMIT 49,31
SELECT * FROM table_name LIMIT 30,27
2023-06-12 F公司二轮技术面试
一、get和post请求的区别
二、事务的特性
三、JVM加载机制
四、双层循环跳出问题
五、Object的常用方法