最新精选公司招聘面试试题
1、iBatis相比JDBC优势的优势有哪些?
答:简单易上手、开发速度快、面向对象,数据库可移植。
(此处应该将优缺点一起分析,才是满意得到回答)
延伸学习:
MyBatis和iBatis的区别:
ibatis本是apache的一个开源项目,2010年这个项目由apachesoftwarefoundation迁移到了google code,并且改名为mybatis
(1)Mybatis实现了接口绑定,使用更加方便:
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,而Mybatis实现了DAO接口与xml映射文件的绑定,
(2)对象关系映射的改进,效率更高
iBatis:
优点:代码量减少、简单易上手、SQL语句和代码分离(便于修改)、数据库可移植
缺点:SQL语句需要自己写、参数只能有一个
Hibernate:
优点:对象关系数据库映射、完全面向对象、提供缓存机制、HQL编程
缺点:不能灵活使用原生SQL、无法对SQL优化、全表映射效率低下、N+1的问题
JDBC、iBatis、Hibernate明显对比:
JDBC更为灵活,更加有效率,系统运行速度快。但是代码繁琐复杂,有的时候用了存储过程就不方便数据库移植了。
hibernate,iBatis关系数据库框架,开发速度快,更加面向对象,可以移植更换数据库,但影响系统性能。
JDBC:手动
手动写sql,不能直接传入一个对象、不能直接返回一个对象。
iBatis的特点:半自动化
手动写sql,能直接传入一个对象、能直接返回一个对象。
Hibernate:全自动
不写sql,自动封装,能直接传入一个对象、能直接返回一个对象。
2、PrepareStatement相比statement,有哪些优点?
答:(1)直接使用Statement,驱动程序一般不会对sql语句作处理而直接交给数据库;
使用PreparedStament,形成预编译的过程,并且会对语句作字符集的转换(至少在sqlserver)中如此。
如此,有两个好处:对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;另外,可以比较好地解决系统的本地化问题。
(2)PreparedStatement还能有效的防止危险字符的注入,也就是sql注入的问题。(但是必须使用“对?赋值的方法”才管用)
3、TCP/IP对应于OSI七层模型的哪些层?
答:OSI七层模型分别是:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。
TCP/IP协议不是TCP和IP协议的合称,而是指因特网整个TCP/IP协议族。从协议分层模型方面来看,TCP/IP由四个层次组成:网络接口层、网络层、传输层和应用层。
4、为什么3次握手,4次挥手?
3次握手建立连接:
第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize SequenceNumbers)即握手信号。
第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
4次挥手断开连接:
对于一个已经建立的连接,TCP使用改进的4次挥手来释放连接(使用一个带有FIN附加标记的报文段)。TCP关闭连接的步骤如下:
第一步,当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
第二步,主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
第三步,主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
第四步,主机A收到这个FIN报文段后,向主机B发送一个ACK表示连接彻底释放。
5、进程和线程区别是什么?
答:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。
线程与进程的区别归纳:
地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信??需要进程同步和互斥手段的辅助,以保证数据的一致性。
调度和切换:线程上下文切换比进程上下文切换要快得多。