农行软开知识点

1. 如何解决脏读?

将事务的隔离级别置为READ COMMITTED。
【引申】
脏读,意味着一个事务读取了另一个事务未提交的数据,而这个数据有可能是回滚造成的。
解决方式:事务的隔离级别置为 READ COMMITTED
不可重复读,意味着,在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。
解决方式 :事务的隔离级别置为 REPEATABLE READ
幻读,是指当事务不是独立执行时发生的一种现象。例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
解决方式:事务的隔离级别置为 SERIALIZED


2. 装箱与拆箱

为了加大对简单数字的重利用,Java定义:在自动装箱时对于值从-128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象,而如果超过了从-128到127之间的值,被装箱后的Integer对象并不会被重用,即:相当于每次装箱时都新建一个Integer对象。以上的现象是由于使用了自动装箱所引起的,如果没有使用自动装箱,而用new来进行实例化,就会每次new一个新对象。

//自动装箱
Integer i = 100; //相当于编译器自动为您作以下的语法编译:Integer i = Integer.valueOf(100);
//自动拆箱
int t = i; //拆箱,实际上执行了 int t = i.intValue();
//在进行运算时,也可以进行拆箱。
System.out.println(i++);

更详细的解释请移步到:
http://www.cnblogs.com/danne823/archive/2011/04/22/2025332.html
自动装箱拆箱的目的:
1.可是使这个类型具有很多可以调用的方法。
2.是Java面向对象语言的靠近。
3.在泛型中,基本数据类型是不可以做参数的,可以使用基本数据类型的包装类类型来解决基本类型不可以做泛型参数的问题 。


3. TRUNCATE DELETE DROP区别

truncate table [表名]:truncate删除表比较快,但删除的数据不能恢复(不能rollback),只能删除表中的所有数据。
删除内容、释放空间但不删除定义。
delete from [表名] [where条件]:而delete删除比truncate慢,删除的数据可以恢复(可以rollback),后面可以跟where条件删除某些指定记录。
删除内容不删除定义,不释放空间。
drop table [表名]:删除内容和定义,释放空间。


4. 斐波那契数列

int getFibo(int n){
    if(n == 1 || n == 2){
        return 1;    
    }
    else{
        return getFibo(n - 1) + getFibo(n - 2);
    }
}

5. insert和update语句

//SQL Server 2008支持
insert into [table_name] values(第一条数据),(第二条数据),…,(第n条数据)
//若上述方法不行
insert into [table_name]
select 字段11,字段12,…,字段1n union all
select 字段21,字段22,…,字段2n union all
略
select 字段n1,字段n2,…,字段nn


update [table_name] set [列名] = [值] …… where [条件]

6. 游标、存储过程

1.游标:从表中检索出结果集,从中每次指向一条记录进行交互的机制。
优点:游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力。
缺点:处理大数据量时,效率低下,占用内存大。
2.存储过程:存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
优点:1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量。4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权。


7. 性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
负载测试压力测试都属于性能测试,两者可以结合进行。
通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。


8. 功能测试

功能测试也叫黑盒测试数据驱动测试,只需考虑需要测试的各个功能,不需要考虑整个软件的内部结构及代码。
一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。


9. 聚簇索引和非聚簇索引的区别


10. 创建索引考虑的因素


11. 指针和引用的区别


12. 测试包括哪些测试,解释一下每种测试的含义和目的

这道题在我的面试环节问到了。


13. 系统测试包括哪些内容


14. TCP连接的原理(3次握手)


15. Web如何保存一些客户信息,有关cookie和session的问题


16. 边界值测试


17. Java和其他语言的区别


18. 数据仓库的特征


19. C语言中数组指针和指针数组的区别


20. SSH分别是什么

如果去银行开发的不是Web,问到的可能性不大。


21. 数据库优化问题

加分项,银行数据量都很大,所以去之前看一看相关资料,短期可以有很大收获。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器