开始这篇博客前,先来发下牢骚!今天和两个朋友一起去西安面试,说是北京超图软件有限公司,西安有分公司,去后才发现坑爹啊,原来面试我们的项目经理不在他们西安分公司!有必要解释一下,他是北京总公司派过来,在西安接了一个西安市政府的山洪预测系统的项目,他直接就在西安市政府不远的一个XXX部门里面工作,坑爹的连他们西安分公司都没去过。更坑爹的是,那地方是正在开发中,交通极为不便,只好走路,就不提那个累了。。。坑爹中的坑爹是他只要两个人做后台,实习工资1000左右,我当时心就凉透了,面试的问题也问的差不多了。。。
面试虽然不是很顺利,但是还是有很大的帮助,让我认识到自己的准备有多么的不足,也让我明白这才是刚刚开始,要从每次失败或是不理想中总结经验、教训,这也必然是我接下来几天准备后面校园招聘面试大军的极好动力。。。Now,let's go!
1、什么事框架
框架式一组程序的集合,包含了一系列的最佳实践,作用是解决某个领域的问题。当我们使用某个框架时,其实是把一系列JAR包加载到CLASSPATH路径中,实际上是获得了JAR中所有对JDK的额外支持。也就是说:框架只是一些JAR包而已,其本质是对JDK的功能扩展,作用是为了解决某个领域的问题。
最佳实践:实际上是无数程序员在经过了无数次的尝试后,总结出来的处理特定问题的特定方法。
2、是么是三层架构
从宏观上来说,web开发模式中最重要的一条是分层开发模式,即将整个程序根据功能职责进行纵向划分,一个比较典型的划分方法是将程序划分为:表示层、业务层和持久层,即所谓的三层架构。
表示层:负责处理与界面交互相关的功能。
业务层:负责复杂的业务逻辑计算和判断。例如:一些有效性验证的工作:①不允许文本框中输入指定的字符串 ②数据格式是否正确及数据类型验证 ③用户权限的合法性判断等等。
持久层:负责将业务逻辑数据进行持久化存储。持久层是为业务逻辑层服务的,业务逻辑层操作的是对象,而数据库是关系型数据库。持久层要把表和字段屏蔽掉,把它变成对象来传递给我们的业务层。
Struts2是表示层的框架
Spring是业务层的框架
Hibernate是持久层的框架
3、什么事MVC模式
MVC是一种设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC,应用程序被分成了三个核心部件:模型、试图、控制器。他们各自处理各自的任务。
视图:是用户看到并与之交互的界面。
模型:维护数据并提供数据访问方法。就是业务流程的处理以及业务规则的指定。业务流程的处理过程对于其它层来说是黑箱操作,模型接收视图请求的数据并返回处理的结果。模型是MVC的核心。
控制器:接收用户的输入并调用模型和视图去完成用户的要求。所以,当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和任何处理。它只是接收请求并决定调用哪个模型构件去处理返回的数据。
1)MVC模式最重要的一点是多个视图能共享一个模型。无论你的用户想要Flash界面或是WAP界面,用一个模型就能够处理。由于你已经将数据和业务规则从表示层分开,所以可以最大化的重用你的代码。
2)模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
3)因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如:你想把你的数据库从MySql移植到Oracle,只需要改变模型即可。
4、什么事Servlet
SUN公司规定的一种用于扩展Web服务器功能的组件规范。
为了能让Web服务器与Web应用这两个不同的软件系统协作,首先应该由一个中介方制定Web应用与Web服务器进行协作的标准接口,Servlet就是其中最重要的接口。
SUN公司不仅制定了Web应用与Web服务器运行协作的一系列标准Java接口(统称为Java Servlet API)。还对Web服务器发布运行Web应用的一些细节作了规约。SUN公司把这一系列标准Java接口和规约统称为Servlet规范。
最常用的用途是扩展Web服务器的功能。
① 提供了可被服务器动态加载并执行的程序代码,为来自客户端的请求提供相应服务。
② Servlet完全用Java语言编写,因此需要运行Servlet的服务器必须支持Java语言。
③ Servlet完全在服务器端运行,因此它的运行不依赖于浏览器。不管浏览器是否支持Java,都能请求访问服务器端的Servlet。
5、什么是JSP
Java Servlet Page(Java服务器端页面技术),SUN公司制定的一种服务器端动态页面生成的技术规范。因为使用Servlet生产动态页面过于繁琐,不利于代码的维护。所以,生成动态页面时使用JSP会更方便。因为JSP的组成部分主要是HTML和少量的Java代码,如果是HTML就可以直接编写了,而不必使用out、println生成页面。
JSP执行过程:
① .jsp文件要被jsp引擎转换为.java文件,即一个标准Servlet。
② 再将转换好的.java文件编译成字节码文件。
③ 调用service()方法。
6、什么事Ajax
asynchronous javascript and xml(异步的javascript和xml)。
是为了解决传统的web应用(必须点击"提交"按钮, 浏览器才会向服务器发送请求。并且,浏览器在发送请求之前,会先销毁之前的页面;此时,用户只能等待服务器返回一个新的页面,不能做其它事情。当服务器返回新的页面之后,浏览器要重新解析生成相应的界面。)当中“请求-等待-请求”的弊端而创建的一种技术,该技术的实质是:利用浏览器内置的一个特殊对象XmlHttpRequest异步地向服务器发送请求(即浏览器不会销毁之前的页面,用户仍然可以继续操作),服务器返回处理结果(不是整个页面,只是部分的数据),然后使用该处理结果,更新部分页面。整个过程,页面无刷新、不打断用户的操作,用户的体验要好于传统的web应用。
图示演示:
1)Ajax引擎(即XmlHttpRequest对象),首先为该对象注册一个监听器(该监听器是一个事件处理函数,对状态改变事件(readyStatechange)进行监听)
2)当用户对GUI做了某种操作(将产生对应的事件,如焦点失去事件等)
3)一旦产生对应的事件,将触发事件处理代码
4)在执行事件处理代码时,会调用Ajax引擎(XmlHttpRequest对象)
5)发送请求:Ajax引擎被调用后,将独自向服务器发送请求(独立于浏览器之外)继续其他操作:在Ajax引擎发送请求的同时,用户在浏览器端还可以对GUI继续做其他操作,该请求时异步请求(Ajax引擎发送请求时,没有打断用户的操作)
6)服务器的web组件队请求进行处理
7)服务器可能会调用到数据库或者处理业务逻辑的java类
8)服务器处理结果响应给(只返回部分数据,可以使XML或者文本)Ajax引擎
9)监听器通过Ajax引擎获取响应数据(xml或者文本)
10)监听器对GUI中的数据进行更新(局部更新,不是整个页面刷新)
在整个过程中大部分是通过JS实现的,响应数据可能是XML(后来又出现了Json等技术),所以Ajax可以看做是多种技术的融合。
7、什么事JavaScript
JavaScript是网景公司开发的一种在浏览器端执行的脚本语言。
HTML只是描述网页长相的标记语言,没有计算、判断能力,如果所有计算、判断(比如判断文本框是否为空,判断两次输入的密码是否一致)都放在服务器端执行的话,页面会非常慢,用起来也很困难,对服务器的压力很大,因此要求能在浏览器中执行一些简单的运算、判断等操作。
JavaScript是解释型语言,无需编译就可以随时运行,这样哪怕语法有错误,没有语法错误的部分还是能正常运行。
8、什么事CSS
css即casecading stylesheet(级联样式表又称风格样式表),为网页提供表现的形式即(它是用来进行网页风格设计的)。
9、什么事JDBC
JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据提供统一访问。JDBC是SUN公司设计了访问SQL数据库的接口(或者规范、标准),JDBC驱动程序有数据库软件商和第三方的软件商提供,因此,根据编程所使用的数据库系统不同,所需要的驱动程序也有所不同。
10、什么是Hibernate
Hibernate是一款开放源代码的ORM(Object Relation Mapping,对象关系映射)框架,它对JDBC进行了轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操作 (CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的 session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
11、什么事Sping
Spring是一个开源的控制反转(Inversion of Control,IoC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。