面试问题总结1、面向对象和面向过程的区别面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。
面向对象是以功能来划分问题,而不是步骤。
面向过程是一种以过程为中心的编程思想。
“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
例子:围棋面向对象:1.黑白双方,这两个的行为是一模一样的2.棋盘系统,负责绘制画面3.规则系统,负责判断输赢面向过程:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
2、mysql和oracle的区别mysql主要应用到中小型系统中,oracle一般应用在大型系统增长类型的区别:mysql有increment自增长方式,而oracle利用sequence实现增长mysql可以使用limit限制分页处理 eg:select * from table_nameORACLE处理翻页的SQL语句就比较繁琐了。
每个结果集只有一个rownum字段标明它的位置,并且只能用rownum<100,不能用rownum>80。
以下是经过分析后较好的两种ORACLE 翻页SQL语句(ID是唯一关键字的字段名):Select id from table_name where id in (select id from (select rownum as numrow,id from table_name where 条件1 order by 条件2) where numrow >80 and numrow <100) order by 条件3;数据类型的区别:比如oracle的varchar2,而mysql没有,mysql有int而oracle 没有3、Struts 2 和Servlet和JSP(1)Struts2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
它以webwork为核心采用拦截器机制对用户请求进行处理,也是一个按照MVC设计模式设计的一个web层框架,也是一个很大的Servlet。
他也可以有多个配置文件,各自的模块执行各自的功能Struts2处理过程:请求交给action之前会将请求数据封装成一个formbeaan对象,然后对formbena调用validate方法进行校验,通过校验的然后交给action的execute方法去处理返回一个响应的结果,没有通过校验的则返回一个错误页面,一般使用input指定。
(3)Servlet是一种java服务器端的应用程序具有独立于平台和协议的特性,可以生成动态的Web页面。
它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet生命周期:加载、实例化(一般是servlet容器来完成)、初始化(执行init 方法)、运行service方法(根据请求方式的不同分为doGet和doPost)处理请求、服务终止执行destroy销毁。
Servlet执行过程:当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。
在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象,传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。
Servlet与JSP有什么区别?JSP是一种java动态页面技术,由html和java代码和tag组成。
而jsp编译以后实际上也是一个servlet,JSP擅长页面表现,而Servlet擅长处理逻辑用来控制业务流程,在struts2的MVC设计模式中中servlet 充当控制层而JSP充当表现层。
‘4、Hibernate和JDBC概念比较 : Hibernate是对JDBC的轻量级封装,是将对象持久化的框架,Hibernate 可以用在任何JDBC可以使用的场合,Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系。
而JDBC是一个可以执行SQL语句的JAVA程序。
由一组java类和接口组成。
性能比较:1、内存消耗:采用JDBC的架构无疑是最省内存的,Hibernate的架构次之2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。
而一般情况下程序员是做不到这一点的。
因此Hibernate 架构表现出最快的运行效率。
3、开发效率:小项目中JDBC相率较高,Hibernate次之。
但在一般的大型项目中Hibernate的效率大的惊人。
相同点:◆两者都是JAVA的数据库操作中间件。
◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。
◆两者都可以对数据库的更新操作进行显式的事务处理。
不同点:◆JDBC使用标准SQL语言,而Hibernate使用HQL面向对象查询语言◆JDBC操作的是数据,是将SQL语句传送到DB中执行,而Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。
◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值随时保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。
JDBC仍然是最快的访问方式,不论是Create还是Read操作,都是JDBC快。
5、jQuery其实是一个轻量级的JavaScript库或者说是框架,jQuery简化了的JavaScript编程,使用更少的代码执行更多的功能。
6、Cookie和Session(1)定义:Cookie:是浏览器访问某个服务器时,服务器会创建一部分数据(以消息头set-cookie 的方式)发送给浏览器,浏览器会将这部分数据保存下来。
当浏览器再次访问该服务器时,会将这部分数据发送给服务器。
也是在客户端(浏览器)维护用户状态的一种状态管理技术。
Session:在服务器端维护用户状态的一种状态管理技术。
当浏览器访问服务器时,服务器会创建一个对象(session对象),同时,还会生成一个标识该对象的唯一的字符串(sessionId),服务器在默认情况下,使用cookie机制将sessionId发送给浏览器。
浏览器下次访问服务器时,会将sessionId携带给服务器,服务器会使用sessionId查找对应的session对象。
通过这种方式,来维护用户的状态。
(2) cookie 和session 的区别:① cookie数据存放在客户的浏览器上,session数据放在服务器上。
② cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。
③ session会在一定时间内保存在服务器上。
当访问增多,会比较占用你服务器的性能,如果考虑到减轻服务器性能方面,应当使用COOKIE。
④单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
7、Spring的理解(1)概念Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造我们所需要的M(Model)。
Spring也是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。
(2)特点:① Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),Spring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。
② Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。
Ioc又称为依赖注入DI。
③ Spring提供了对AOP技术的良好封装, AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理,这种应用称为AOP。
8、工厂模式的理解:实例化对象,用工厂方法代替new操作返回一个类对象。
工厂类是指包含了一个专门用来创建其他对象的方法的类。
工厂类在多态性编程实践中是至关重要的。
它允许动态地替换类,修改配置,并且通常会使应用程序更加灵活。
熟练掌握工厂模式对高级PHP 开发人员来说是很重要的。
工厂模式通常用来返回符合类似接口的不同的类。
工厂的一种常见用法就是创建多态的提供者,从而允许我们基于应用程序逻辑或者配置设置来决定应该实例化哪一个类。
9、C/S架构和B/S架构的区别(1)C/S 架构概念:是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序通信。
优点:1.C/S架构的界面和操作可以很丰富。
2.安全性能可以很容易保证,实现多层认证也不难。
3.由于只有一层交互,因此响应速度较快。
缺点:1.适用面窄,通常用于局域网中。
2.用户群固定。
由于程序需要安装才可使用,因此不适合面向一些不可知的用户。
3.维护成本高,发生一次升级,则所有客户端的程序都需要改变。
(2)B/S架构概念:的全称为Browser/Server,即浏览器/服务器结构。