18年11月上,面试题积累(深圳安硕信息面试题包含其中)

平安外包-安硕信息面试题
1.编程:有一个数列,它的第一项为00,第二项为1,以后每一项都是它的前两项之和,试产生改数列的前20项,并按从小到大排序列显示,每行显示5个元素。

2.编写一个java程序实现多线程,在线程中输出线程的名字,每隔300毫秒输出一次,共输出10次。

3.SQL题;有四张表,第一张表是用户信息customer(customer_name,customer_street,customer_city)

第二张 支行信息 branch(branch_name,branch_city)

第三张 账户信息 account(account_name,branch_name,balance)

第四张 存款信息depositor(account_name,customer_name)

A.用SQL查询在上海所有支行存款最多的支行信息?

B.用SQL查询在上海所有支行都开过户的用户信息?(branch_city=“上海”)C.用SQL查询在杨浦支行开过一个账户的用户信息?(branch_name=“yangpu”)

技术面 : 数组创建方式,初始化值能修改?(数组的增长)
接口和抽象区别?
重写和重载的区别?

//抛异常都会执行finally
// String 的面试题
public class Test1 {
public static void main(String[] args) {
String a = new String(“ab”); // a 为一个引用
String b = new String(“ab”); // b为另一个引用,对象的内容一样
String aa = “ab”; // 放在常量池中
String bb = “ab”; // 从常量池中查找
if (aa == bb) // true
System.out.println(“aa == bb”);
if (a == b) // false
System.out.println(“a==b”);
if (a.equals(b)) // true
System.out.println(“aEQb”);
}
结束-----------------------------------------------------------------

另:

public static void main(String[] args) {
    
    String str = "abcdef";
    
    //function 1将字符串的每个字符存入数组toCharArray()
    StringBuffer sb = new StringBuffer();
    char[] ch = str.toCharArray();
    for(int i = ch.length-1;i>=0;i--){
        sb.append(ch[i]);
    }

    System.out.println(sb.toString());

    //function 2方法返回指定索引处的char值。索引范围是从0到length() - 1
    StringBuffer sb1 = new StringBuffer();
    for(int i=str.length()-1;i>=0;i--){
        sb1.append(str.charAt(i));
    }
    System.out.println(sb1.toString());

    //function 3StringBuffer对象的值反转
     System.out.println(new StringBuffer(str).reverse().toString());
}

//18.11.13
forward()转发与redirect()重定向的区别
//请求次数区别
前者在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法

ArrayList和Vector的区别,增长长度(10,0.5,1)
Vector由于使用了synchronized方法-线程安全
LinkedList使用的是双向链表

HashMap 和 Hashtable 的区别
1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2.hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3.hashMap允许空键值,而hashTable不允许。
4.初始size为16,扩容:newsize = oldsize2,size一定为2的n次幂
初始size为11,扩容:newsize = olesize
2+1

HashMap 和 ConcurrentHashMap 的区别
ConcurrentHashMap是线程安全的HashMap的实现。

底层采用分段的数组+链表实现,线程安全
通过把整个Map分为N个Segment,可以提供相同的线程安全,但是效率提升N倍,默认提升16倍。(读操作不加锁,由于HashEntry的value变量是 volatile的,也能保证读取到最新的值。)
Hashtable的synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,ConcurrentHashMap允许多个修改操作并发进行,其关键在于使用了锁分离技术

Java中BigDecimal的使用,即数值的精确计算(float和double的非精确计算)
public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value);//减法
public BigDecimal multiply(BigDecimal value);//乘法
public BigDecimal divide(BigDecimal value);//除法

sleep和wait的区别
sleep是Thread类 不会释放当前锁
wait是Object类 会释放当前锁
Java中notify 和 notifyAll有什么区别

sleep() 、join()、yield()有什么区别
即yield()方法只是使当前线程重新回到可执行状态
Thread的非静态方法join()让一个线程B“加入”到另一个线程A的尾部,在A执行完毕之前,B不能工作。

getAtrribute和getParamter的区别
getParamter接收的是字符串,接收web页面传递的参数
有setAtrribute
getAtrribute接收的web容器存储的值,接收传递的是一个对象

java怎么格式化时间
怎么打印出昨天的时间(Calendar的add方法)

时间格式化输出主要有两种方式,代码如下:
//使用Calendar
Calendar now = Calendar.getInstance();
System.out.println(“年:” + now.get(Calendar.YEAR));
System.out.println(“月:” + (now.get(Calendar.MONTH) + 1));
System.out.println(“日:” + now.get(Calendar.DAY_OF_MONTH));
System.out.println(“时:” + now.get(Calendar.HOUR_OF_DAY));
System.out.println(“分:” + now.get(Calendar.MINUTE));
ystem.out.println(“秒:” + now.get(Calendar.SECOND));

//使用Date
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
System.out.println(“当前时间:” + sdf.format(d));

数据类型之间的转换
调用基本数据类型对应的包装类中的方法 parseXXX(String)或 valueOf(String)即可返回相应基本类型。
字符串转其他
parseInt(String)
其他转字符串
①调用类的串转换方法:X.toString();
②自动转换:X+“”;
③使用String的方法:String.valueOf(X);

了解SSO单点登录系统

游览器响应下载
response.setHeader(“Content-Disposition”, “attachment; filename=”" + encodedfileName + “”");

Spring Aop、拦截器、过滤器的区别

ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。
第一,资源集中管理,实现资源的可配置和易管理。
第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。

事务有四个属性,称为ACID属性:
1、原子性(Atomicity):事务是一个原子单位,要么全部执行,要么全部不执行。
2、一致性(Consistent):事务的开始和结束,数据都必须保持一致状态。
3、隔离性(isolation):数据库系统提供隔离机制,保证并发事务之间是互相不干扰的。也就意味着事务处理过程中的中间状态对其他的事务是透明的。
4、持久性(Durable):事务完成之后,对数据的修改是永久性的,即使出现系统故障也能够保持

事务定义了四种隔离级别:Read uncommitted、Read committed、Repeatable read和Serializable

关于这四种隔离级别,其主要区别在于三个点:脏读、不可重复读和幻读。这三个点的主要含义如下:

脏读:脏读表示一个事务能够读取另一个事务中还未提交的数据。比如,某个事务尝试插入记录A,此时该事务还未提交,然后另一个事务尝试读取记录A,这时其是会成功读取到记录A的;

不可重复读:不可重复读表示当前事务对同一记录的两次重复读取结果不一致。比如一个事务首先读取一条记录A,读完之后另一个事务将该记录修改并且成功提交了,然后当前事务再次读取记录A,此时该事务会发现两次读取的结果不一致;

幻读:幻读指的是一个事务在进行一次查询之后发现某个记录不存在,然后会根据这个结果进行下一步操作,此时如果另一个事务成功插入了该记录,那么对于第一个事务而言,其进行下一步操作(比如插入该记录)的时候很可能会报错。从事务使用的角度来看,在检查一条记录不存在之后,其进行插入应该完全没问题的,但是这里却抛出主键冲突的异常。

关于事务的四种隔离级别,其主要区别点也就在于是否能够解决这三个问题。这四种事务的隔离级别主要区别如下:

Read uncommitted:这是隔离性最低的一种隔离级别,在这种隔离级别下,当前事务能够读取到其他事务已经更改但还未提交的记录,也就是脏读;
Read committed:顾名思义,这种隔离级别只能读取到其他事务已经提交的数据,也就解决了脏读的问题,但是其无法解决不可重复读和幻读的问题;
Repeatable read:从事务的定义上,这种隔离级别能够解决脏读和不可重复读的问题,但是其无法解决幻读的问题;
Serializable:也称为序列化读,这是隔离性最高的一种隔离级别,所有的事务执行(包括查询)都会为所处理的数据加锁,操作同一数据的事务将会串行的等待。

你可能感兴趣的:(面试题)