1. Switch语句中,可以是哪些类型的数据?
jdk1.7之前byte、short、int、char
jdk1.7之后加入String
java8,switch支持10种类型
基本类型:byte char short int
包装类 :Byte,Short,Character,Integer String enum
2. 线程安全的map
HashTable、SynchronizedMap、ConcurrentHashMap
Hashtable的方法都是synchrnized修饰的线程安全,ConcurrentHashMap并发容器,JDK7采用分段锁,JDK8采用CAS算法,线程安全,建议使用。Connections工具类提供了一个方法synchrnizedMap可以把Map同步,本质就是给每一个方法加上synchrnized关键字进行同步。
3. 关系型数据库和非关系型数据库?
(1)关系型数据库
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织。
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
(2)非关系型数据库
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
非关系型数据库的分类和比较:
1、文档型
2、key-value型
3、列式数据库
4、图形数据库
4. 下面的Java赋值语句哪些是有错误的 ()
float f = 45.0;
小数如果不加 f 后缀,默认是double类型。double转成float向下转换,意味着精度丢失,所以要进行强制类型转换。
Double d = 100;
整数默认是int类型,int类型不能转型为Double,最多通过自动装箱变为Integer但是Integer与Double没有继承关系,也没法进行转型。
5. CAP定律中的CAP指的是以下哪些特性?
CAP原则(CAP定理): 指的是在一个分布式系统中Consistency
(一致性)Availability
(可用性)Partition tolerance
(分区容错性)三者不可得兼。CAP原则是NOSQL数据库的基石。
理论首先把分布式系统中的三个特性进行了如下归纳:
一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A): 在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容忍性(P): 以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
6、根据下面一段程序,判断A最匹配的类型是1, B最匹配的类型是2。
TreeMap<A,B> map = new TreeMap<A,B>( );
map.put(“S1”, 100);
map.put(“S2”, 15);
int v = map.get(“S1”)
String/Integer
7、下面这段程序循环运行的次数是?
for (int i = 1; i >= 0; i = i + i) {
System.out.println(i);
}
i=1= 2^0 一次 i = 2^1
i = 2 = 2^1 两次 i= 2^2
········
········
········
i = 2^29 30次 i=2^30
I = 2^30 31次 i= 2^31 > 2^31-1 越界 i < 0 结束
8. JSON是一种非常流行的文本格式的数据编码方式,下面有一个Java类Person:
public class Person {
private String name;
private int age;
private boolean married;
public Person(String name, int age, boolean married) {
this.name = name;
this.age = age;
this.married = married;
}
public String getName( ) {
return name;
}
public void setName(String n) {
this.name = n;
}
public void setAge(int a) {
this.age = a;
}
public int getAge( ) {
return age;
}
public void setMarried(boolean flag) {
this.married = flag;
}
public isMarried( ) {
return married;
}
}
把下面这个对象ps
Person[] ps = new Person[] {new Person(“tommy”, 16, false”)}
用JSON表式出来(JSON种不用表示类型信息,只表示结构信息即可):
[{"name":"tommy","age":16,"married":false}]
9、下面一段程序
public static char charAt(String s, int n, int m) {
if (n == 1) return s.charAt(m);
char first = charAt(s, n / 2, m * 2);
char second = charAt(s, n / 2, m * 2 + 1);
System.out.print(first + "-" + second + "-");
return first;
}
参考答案
(1) o-w-o-r-o-o-o
10、写出3种以上常用的设计模式。
工厂模式、单例模式、代理模式。
适配器模式、修饰模式、外观模式、桥接模式、过滤器模式、观察者模式、策略模式。