微信

使用微信服务,更方便

职友集>程序员面试题 > 湖南科创面试题

湖南科创面试题

2015-11-10 06:30:01 阅读( 218 )

1130人 收藏本页

标签:程序员面试题

1、静态变量与实例变量的区别
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量
静态变量和实例变量的区别在于:
类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并分配内存空间,当类被卸载时,静态变量被摧毁,并释放所占有的内存。
类的每一个实例都有相应的实例变量,每创建一个类的实例,java虚拟机为实例变量分配一次内存,实例变量位于堆区中,实例变量的生命周期取决于实例的生命周期,当创建实例时,为实例变量背创建,并分配内存,当实例被销毁时,实例 变量被销毁,并释放所占有的内存空间。
假如成员变量时引用变量,该成员变量结束生命周期时,并不意味着它所引用对象也结束生命周期。变量的生命周期和对象的生命周期是不同的概念。

2、java的23中设计模式
Factory(工厂模式)、Builder(建造模式)、Factory Method(工厂方法模式)、Prototype(原始模型模式)、Singleton(单例模式)、Façade(门面模式)、Adapter(适配器模式)、Bridge(桥梁模式)、Composite(合成模式)、Decorator(装饰模式)、Flyweight(享元模式)、Proxy(代理模式)、Command(命令模式)、Interpreter(解释器模式)、Visitor(访问者模式)、Iterator(迭代子模式)、Mediator(调停者模式)、Memento(备忘录模式)、Observer(观察者模式)、State(状态模式)、Strategy(策略模式)、Template Method(模板方法模式)、Chain of Responsibility(责任链模式)

3、软件生存周期模型
瀑布模型:也称线性顺序模型或软件生存周期模型。瀑布模型遵循软件生存周期的划分,明确规定各个阶段的任务,各个阶段的工作自上而下顺序展开,如同瀑布流水,逐级下落。特征:阶段间的顺序性和依赖性;推迟实现的观点;质量保证的观点。缺点:缺乏灵活性,无法解决软件需求不明确或不准确的问题

快速原型模型:快速原型是快速建立起来的可以在计算机上运行的程序,他能完成的功能往往是最终产品能完成功能的一个子集。快速原型的关键是在于能尽可能“快速”地构造原型,一旦确定了用户的真正需求,所构造的原型将被丢弃,快速原型模式不符合主流的发展。

增量模型:是瀑布模型的顺序特性与快速原型法的迭代特征相结合的产物。使用增量模型是,第一个增量构件往往实现软件的基本需求,提供最核心的功能。缺点:各个构件的并入会产生一定的冲突;容易出现边做边改的方式,从而使软件过程控制失去整体性

螺旋模型:是将瀑布模型和原型模型结合起来,并且加入两种模型均忽略了的风险分析,弥补了两者的不足。分为四个部分:制定计划、风险分析、实施工程、客户评估。缺点:客户不能接受这中分析方法;进行项目风险分析,会降低项目利润。

4、编码的转换
String str = new String(strInput.getBytes(“ISO8859_1”),”GBK”);

5、js中的正则表达式
匹配输入的内容不为空格:txtName.replace(/(^s*)|(s*$)/,”")==”"
验证邮箱的格式:var p2 = /^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/;
if(!p2.exec(email)) {alert(‘邮箱格式不对!’); return false;}

6、JDBC访问数据库的一个基本流程
①加载驱动 Class.forName(“oracle.jdbc.driver.OrcaleDriver”)
②使用DriverManager类,创建连接对象
Connection conn = DriverManager.getConnection(“jdbc:oracle:thin:@主机IP:端口号:服务器名”,用户,口令)
③创建query语句,通过连接对象获取PrepareStatement,执行query语句
④处理结果
⑤释放资源(关闭连接)

7、Struts是如何实现MVC,它的工作流程是怎样的
Model是由Action(应该属于c)和ActionForm等构成。Action对象封装了具体的处理逻辑,调用业务逻辑模块,可以用JavaBean和EJB等组件技术来处理数据库的访问,并且把响应提交到合适的View组件中。

View部分是通过JSP技术实现的。Struts还提供了自定义的标记库,通过使用这些自定义标记创建的JSP表单,可以实现和Model部分中的ActionForm的映射,完成对用户数据的封装

Controller功能由ActionServlet和ActionMapping对象构成,核心是ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。

对于采用Struts框架的Web应用,在Web应用时就会启动加载并初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把他们存放到各种配置对象中,例如ActionServlet接收到一个客户请求时,将执行如下流程.

1).检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息.
2).如果ActionForm实例不存在,就创建一个ActionFrom对象,把客户提交的表单数据保存到ActionForm对象中.
3).根据配置信息决定是否需要表单验证,如果需要就调用ActionForm的validate()方法.
4).如果ActionForm的对象返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功.
5).ActionServlet根据ActionMapping实例包含的映射信息决定将转发给哪个Action.如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法.
6).Action的execute()方法返回一个ActionForwd对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件.
7).ActionFoward对象指向的JSP组件生成动态网页,返回给客户.
对于以上流程的(4),如果ActionForm的validate()方法返回一个包含一个或多哥ActionMessage的ActionErrors对象,就表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件.在这种情况下,不会在创建Action对象并调用Action的execute()方法.

来自分智网

下一篇:数据结构面试题

上一篇:关于房价的一个面试题,请用代码作答

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题