牛客用友201802

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

HashTableSynchronizedMapConcurrentHashMap

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种以上常用的设计模式。

工厂模式、单例模式、代理模式。

适配器模式、修饰模式、外观模式、桥接模式、过滤器模式、观察者模式、策略模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值