JAVA中级工程师面试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(一)一条sql执行过长的时间,你如何优化,从哪些方面?

答:1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余

或者合并成临时表(业务和算法的优化)

2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合

3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度

4、针对数量大的表进行历史表分离(如交易流水表)

5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,MySQL有自带的binlog实现主从同步

(二)HTTP协议,GET和POST 的区别

答:1、GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL 和传输数据,多个参数用&连接。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据。因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变。

2、传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。

(三)说说你知道的几个Java集合类

答:list、set、queue、map等

(四)锁机制有什么用?简述悲观锁和乐观锁机制。

答:有些业务逻辑在执行过程中要求对数据进行排他性的访问,于是需要通过一些机制保证在此过程中数据被锁住不会被外界修改,这就是所谓的锁机制。

悲观锁,顾名思义悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。悲观锁必须依赖数据库本身的锁机制才能真正保证数据访问的排他性。乐观锁,顾名思义,对并发事务持乐观态度(认为对数据的并发操作不会经常性的发生),通过更加宽松的锁机制来解决由于悲观锁排他性的数据访问对系统性能造成的严重影响。最常见的乐观锁是通过数据版本标识来实现的,读取数据时获得数据的版本号,更新数据时将此版本号加1,然后和数据库表对应记录的当前版本号进行比较,如果提交的数据版本号大于数据库中此记录的当前版本号则更新数据,否则认为是过期数据无法更新。

提示:使用乐观锁会增加了一个版本字段,很明显这需要额外的空间来存储这个版本字段,浪费了空间,但是乐观锁会让系统具有更好的并发性,这是对时间的节省。因此乐观锁也是典型的空间换时间的策略。

(五)数据库的事务处理是什么?有哪些特性?

答:事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

事务性质:原子性、隔离性、一致性、持久性。

l 原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。

l 一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态

l 隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,

l 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

(六)说一下你对存储过程的理解?

答:存储过程:存储过程就是编译好了的一些sql语句。

1.存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。

2. 可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。

3.可以降低网络的通信量。存储过程主要是在服务器上运行,减少对客户机的压力。

4:存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因

5:存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。

(七)内联接,外联接区别?

答:内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。

在外连接中,某些不满足条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。分左连接、右连接、全连接三种。

(八)什么是OOP?什么是类?请对比类和对象实例之间的关系。

答:OOP是Object_oriented Programming(面向对象编程)的缩写。这主要是为了区别于以前的面向过程的程序设计!指的是用对象的观点来组织与构建系统,它综合了功能抽象和数据抽象,这样可以减少数据之间的耦合性和代码的出错几率。使用面向对象编程技术可以使得软件开发者按照现实世界里人们思考问题的模式编写代码,可以让软件开发者更好地利用代码直接表达现实中存在的对象,将问题空间直接映射到解空间!

类:即class 在面向对象的程序设计中,专门用“类”来表示用户定义的抽象数据类型(user_defined abstract type)。它将具有相同状态、操作和访问机制的多个对象进行了抽象。类具有继承、数据隐藏和多态三种主要特性。利用类的这三种特性可以更好地表示现实世界中事物。类是同一类对象实例的共性的抽象,对象是类的实例化。对象通常作为计算机模拟思维,表示真实世界的抽象,一个对象就像一个软件模块,可以为用户提供一系列的服务—可以改变对象的状态、测试、传递消息等。类定

义了对象的实现细节或数据结构。类是静态的,对象是动态的,对象可以看作是运行中的类。类负责产生对象,可以将类当成生产对象的工厂(Object factory).

(九)谈一下你对数据库视图的理解?

答:视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。视图本质上讲,就是保存在数据库中的select查询。视图并不是数据库中存储的数据值的集合。。对最终用户的好处–结果更容易理解–获得数据更容易。对开发人员的好处–限制数据检索更容易–维护应用程序更方便

(十)谈一下你对MVC的理解?

答:

MVC设计模式(应用观察者模式的框架模式)

M: Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。

V: View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执

行结果。

C: Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,

接受视图层发出的事件,并重绘视图

相关文档
最新文档