农行面试问题整理一

农行面试问题整理一

写在前面的话:
1.渣渣的个人整理,如果有什么不合适的,原作者来找我,我一定会删掉的~
2. 答案是我认为正确的,还请大神指正交流~

第一篇分享

原文链接:农行总行研发中心秋招测试开发2020
版权声明:本文为CSDN博主「神奇的洋子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

问题一:栈和数组的区别

栈先进后出,数组可以随意访问

问题二:如何建立一个大根堆

关于堆更详细解析

  1. 对数组中每个非叶结点从后到前做下沉操作。
  2. 需要下沉的结点的值和其左右孩子的最大值比较,如果下沉结点的值小于左右孩子的最大值,则交换两个结点的的值
  3. 重复步骤二,直至父节点的值大于左右孩子的最大值或需要下沉的结点变为父节点

问题三:数据库如何进行优化

不算硬件
参考资料:面试求职:数据库常见面试题(数据库优化思路)建议仔细看下原文,先看第八个标题,再看第五个标题

  1. SQL语句优化
  2. 索引优化
  3. 数据库结构优化

问题四:python的基本数据类型有哪些

参考资料:菜鸟教程
python3的六种基本类型:数字、字符串、列表、元组、集合、字典

问题五: 交换两个变量的值,用加减法和位运算,不用指针和第三方变量

参考资料:C语言交换两变量值的5大方法!
假设交换的两个值是a和b
1.加减法方法代码:

        a=a+b;
        b=a-b;
        a=a-b;

2.位运算交换值(异或/移位):
异或代码:

	 a = a ^ b;
     b = a ^ b;
     a = a ^ b;

移位代码:
注:不建议使用,如果a或b的值超出16位二进制,此方法不成立。
思路:

	//将a的低16位移到高16位
	 a <<= 16;
	 //低16位存储b的值
     a |= b;
     //b等于a的高16位
     b = a >> 16;
     //a等于自己的低16位
     a = a & 0xffff;

问题六: 如何删除双向链表的结点

  1. 新建结点h,next指针指向头结点
  2. 新建指针cur,从h开始遍历直到被删除结点的前一结点。新建指针del指向被删除结点。
  3. 判断被del结点的下一结点是否为空。如果为空,cur.next=null;如果不空,cur.next=del.next;del.pre=cur;
  4. 设置链表头结点:if(h.next!=null) h.next.pre=null;
  5. 返回头结点: return h.next;

问题七: 什么叫做序列化,java里也有序列化

参考资料:什么是 java 序列化?什么情况下需要序列化?
什么是序列化:将 Java 对象转换成字节流的过程。
Java中序列化:当 Java 对象需要在网络上传输 或者 持久化存储到文件中时,就需要对 Java 对象进行序列化处理。

第二篇分享

原文连接:2020农行研发中心面经
版权声明:本文为CSDN博主「爱吃香菇的小姑娘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

问题一:数据库的存储过程

MySQL数据库-存储过程详解
不会答这道题,可参考上方链接。我认为的重点是:

  • 使用存储过程的好处
  • in/out/inout参数

问题二:数据库锁机制以及一般用哪种形式

数据库的锁有哪几种?语句怎么实现
这题答案不太确定,应该是上面的链接。不太清楚数据库锁机制到底要问什么。

问题三:数据库的索引机制

我觉得这个问题比较宽泛,推荐查看的资料

数据库索引类型

索引 要求
唯一性索引 列中不能有重复元素,可以有null值,一个表可以有多个列唯一索引
主键索引 列中不能有重复元素,不可以有null值,一个表只有一个主键索引
普通索引 没有唯一性限制,一个表可以有多个普通索引
全文索引 搜索引擎关键技术

索引的数据结构

  • B/B-树索引
  • B+树索引
  • hash索引

创建索引的原则:

  • 查询不频繁或更新频繁的列,不适合创建索引
  • 数据重复率高、不能有效区分数据或数据类型无法比较的列,不适合建立索引。例如:性别,只有男、女、未知三种情况;text,image等数据类型不方便比较
  • 尽量修改原索引而不是新建索引。例如原表中有a索引,现加(a,b)索引,应修改原索引,而不是新建
  • 外键数据要建立索引
  • 最左前缀匹配原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。如果b没有索引,也不会继续搜索后面的索引。

参考资料:
MySQL数据库面试题(2020最新版,这篇文章可以做搜索查询
面试官问你什么B树和B+树,把这篇文章丢给他,这篇文章看添加和删除结点部分
漫画:什么是B-树?,这篇文章看除添加和删除的其他部分

问题四:MySQL的隔离性有哪些?举例子来说明

表格顺序隔离级别由低到高。

隔离级别 导致脏读 不可重复度 导致幻读
读取未提交 READ-UNCOMMITTED
读取已提交 READ-COMMITTED
可重复读 REPEATABLE-READ
可串行化 SERIALIZABLE

例子:

  • 脏读:在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。
  • 不可重复读:事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。重点是修改数据
  • 幻读:事务T1修改表中全部数据行。同时,T2插入一条新数据。那么,T1的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样.重点是新增或删除数据

问题五:手撕代码编程题

leetcode原题链接

你可能感兴趣的:(银行面试真题解析,java,面试)