Web开发笔试题.docx
《Web开发笔试题.docx》由会员分享,可在线阅读,更多相关《Web开发笔试题.docx(12页珍藏版)》请在冰豆网上搜索。
![Web开发笔试题.docx](https://file1.bdocx.com/fileroot1/2023-1/9/0b963ba7-175a-47b6-a2f6-91af4ea32136/0b963ba7-175a-47b6-a2f6-91af4ea321361.gif)
Web开发笔试题
软件开发笔试题(Web开发)
C语言基础
1.(4分)用变量a给出下面的定义
a)一个整型数:
__________________
b)一个指向整型数的指针:
__________________
c)一个指向指针的的指针,它指向的指针是指向一个整型数:
__________________
d)一个有10个整型数的数组:
__________________
e)一个有10个指针的数组,该指针是指向一个整型数的:
__________________
f)一个指向有10个整型数数组的指针:
__________________
g)一个指向函数的指针,该函数有一个整型参数并返回一个整型数:
_____________________
h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
___________________________________________________________________________________
2.(2分)请写出以下语句输出的结果:
inti=43;
intj=5;
doublef=25.45181;
a)printf("i=%d,j=%d,f=%",i,j,f):
_________________________________________
b)printf("i=%X,j=%06d,i/j=%d",i,j,i/j):
_________________________________________
3.(2分)用宏定义完成:
输入两个整数,求他们相除的余数
_______________________________________________________________________________
4.(3分)以下为32位Windows下的C++程序,请计算:
charsrt[]=“Hello”;
char*p=str;
请计算:
sizeof(str)=
sizeof(p)=
strlen(p)=
voidFunc(charstr[100])
{
void*p=malloc(100);
}
请计算
sizeof(str)=
sizeof(p)=
inta[3]={1,2,3};
intb=sizeof(a)/sizeof(a[0]);
请计算:
b=
5.设有以下语句,则____不是对a数组元素的正确引用,其中0≤i<10。
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))
6.(1分)下面是C语言中两种if语句判断方式。
请问哪种写法更好?
为什么?
intn;
if(n==10)//第一种判断方式
if(10==n)//第二种判断方式
7.(2分)static关键字的用途?
(请至少说明二种)
8.(2分)typedef在C语言中频繁用以声明一个已经存在的数据类型的同义字。
也可以用预处理器做类似的事。
例如:
#definedPSstructs*
typedefstructs*tPS;
以上两种情况的意图都是要定义dPS和tPS作为一个指向结构s指针。
哪种方法更好呢?
(如果有的话)为什么?
_____________________________________________________________________________________
9.(4分)以下是一组有关内存知识的问题,请仔细看题,回答
voidGetMemory(char*p)
{
p=(char*)malloc(100);
}
voidTest(void)
{
char*str=Null;
GetMemory(str);
strcpy(str,“helloworld”);
printf(str);
}
请问运行Test函数会有什么样的结果?
char*GetMemory(void)
{
charp[]=“helloworld”
returnp;
}
voidTest(void)
{
char*str=NULL;
str=GetMemory();
printf(str);
}
请问运行Test函数会有什么样的结果?
VoidGetMemory2(char**p,intnum)
{
*p=(char*)malloc(num);
}
voidTest(void)
{
char*str=NULL;
GetMemory(&str,100);
strcpy(str,“hello”);
printf(str);
}
请问运行Test函数会有什么样的结果?
voidTest(void)
{
char*str=(char*)malloc(100);
strcpy(str,“hello”);
free(str);
if(str!
=NULL)
{
strcpy(str,“world”);
printf(str);
}
}
请问运行Test函数会有什么样的结果?
10.(3分)读下面这段代码:
structS{
inti;
int*p;
};
voidmain()
{
Ss;
int*p=&s.i;
p[0]=4;
p[1]=3;
s.p=p;
s.p[1]=1;
s.p[0]=2;
}
问:
程序会在哪一行死掉,为什么。
_______________________________________________________________________________________
11.(5分)编程:
从键盘上接收一个正求整数m,求出它的所有素数因子,并输出。
WEB开发
12、列举你所知道的WEB开发相关的技术,尽可能对它的使用做简单描述。
13、HTML表单中的标记input有哪些类型,表单中还有哪些常用的标记?
14、多个页面间传递数据的方式及其优缺点?
15、你常用的ASP.NET服务器端控件有哪些?
运行后被转成的对应的HTML标记。
16、在中,WEB页面会向服务器发送数据,服务器处理这些数据并把处理结果发送给用户,请谈谈这个交互过程的实现?
17、在HTML中表格标签用来呈现多条记录形式的数据,现在假设在页面中,有一个students对象数组。
请写一个代码片断把这个数组输出成一个表格,下面是Student类的定义
publicclassStudent
{
publicStudent(stringname,intage,intgrade)
{
this.name_=name;
this.age_=age;
this.grade_=grade;
}
privatestringname_;
privateintage_;
privateintgrade_;
publicstringName
{
get{returnthis.name_;}
}
publicintAge
{
get{returnthis.age_;}
}
publicintGrade
{
get{returnthis.grade_;}
}
}
18、代码Response.Write("姓名:
");执行的结果是什么?
19、在我们的MsSqlServer数据库中有一个简单的学生数据库,其中有四张数据表
学生信息表(students)
学号sno
姓名name
年龄age
年级grade
课程数据表(courses)
课程号cno
课程名name
授课老师编号tno
教师表(teachers)
编号tno
姓名name
电话telephone
学生选课关系表students_courses_map
学生学号sno
课程号cno
成绩score
19、请回答以下的问题.
1)如果想统计学号是ST1000的学生选了几门课.请写出对应的SQL语句.
2)如果想大致看一看学号是ST1000的学生选了哪几个老师的课,请用SQL语句选出这些老师的信息.
3)假如一个学生所选的课程,他没有去上的话,老师可以不用给他成绩,相应的成绩字段就不会有值。
如果一个学生选了课但没有去上,这种情况,学校可能会找他谈话,请用一条SQL语句选出这样的学生。
4)学校为了让学生数据库保持最小,通常不保留多余的数据。
学号为ST2000的学生转学了,请用SQL语句把这位学生的数据删去。
5)如果一个学生他所选的每一门课程的成绩都在90分以上(包括90分),学校会为他发奖学金。
请你用SQL选出可以拿到奖学金的同学。
6)一位编号为T1000的老师生病了,请了一学期的假期,学校决定让编号为T2000的老师来代上他的课,请用SQL语句实现这样的变动。
7)上面数据库中的表可以分两类,请你把它们分开,并说明为什么这样分?
8)你对WEB标准的了解。
9)、你对ASP.NET2.0中的theme,skin与CSS之间关系的认识。
10)你对MasterPage用途的了解。
Web框架技术期末复习提纲
简答题。
1.简述什么是MVC设计模式。
MVC设计模式是一个存在于服务器表达层的模型,它将应用分开,改变应用之间的高度耦合,其中MVC是Model-View-Control的简称,即模型-视图-控制器。
2.简述Struts2的工作原理。
1、客户端发送请求(客户端初始化一个指向Servlet容器(如Tomcat)的请求)
2、请求经过一系列过滤器(如ActionContextCleanUp、SiteMesh等),ActionContextCleanUp-->FilterDispatcher
3、FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action
4、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,
5、ActionProxy通过ConfigurationManager询问Struts配置文件(Struts.xml),找到需要调用的Action类。
6、ActionProxy创建一个ActionInvocation的实例
7、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用(interceptor)
8、Action执行完毕,ActionInvocation创建Result并返回,返回结果前要做些动作也是可以的。
3.简述struts.Xml配置文件的作用。
1)struts.xml为Struts2的核心配置文件。
struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。
2)struts.xml中主要配置Struts项目的一些全局的属性,用户请求和响应Action之间的对应关系,以及配置Action中可能用到的参数,以及处理结果的返回页面。
还包括各种拦截器的配置等。
4.简述Struts2核心控制器FilterDispatcher的作用。
(1)读取静态数据信息
(2)决定需要转发或者导航的Action配置
(3)创建Action的Context
(4)创建Action代理
(5)内存清理和性能优化
5.简述Struts2业务控制器Action的作用。
用来调用某个java类的某个方法进行数据预处理和一些相关的业务逻辑处理,然后把最终处理结果和要返回的对象放在request或者session里面,最后更具结果确定返回那个result,这个可以是一个页面,也可带或者不带参数访问别的服务或者链接.或者什么都不做.
6.什么是国际化,为什么使用国际化?
国际化是指一个应用程序在运行时能够根据客户端请求所有来自国家或地区语言的不同而显示不同的用户界面。
目的在于提供自适应的、更友好的用户界面,而不必改变程序的其他功能或业务逻辑。
7.简述Struts2中实现国际化的过程。
(1)不同地区使用的操作系统环境不同,如中文操作系统、英文操作系统等。
获得客户端地区的语言环境后,在struts.xml文件中会找到相应的国际化资源文件,如果操作系统环境是中文语言环境,就加载中文国际化资源文件。
所以国际化需要编写支持多个语言的国际化资源文件,并且在struts.xml文件中配置。
(2)根据选择的语言加载相应的国际化资源文件,视图通过Struts2标签读取国际化资源文件并把数据输出到页面上,完成页面显示。
8.什么是拦截器,拦截器的作用是什么?
(1)拦截器是动态拦截Action调用的对象。
它提供了一种机制,使开发者可以定义一段代码,在Action执行之前或之后被调用执行,也可以在一个Action执行前阻止其执行,同时也可以提取Action中可重用部分的方式。
通俗一点说,拦截器是一个实现了一定功能的类,它以一种可插拔的方式被定义在某个Action执行的之前或之后,用来完成特定的功能。
(2)拦截器实现了面向切面编程(AOP)的设计思想,拦截器是AOP的一种实现策略。
9.简述Struts2中输入校验的作用。
在互联网上,web站点是对外提供服务的,由于站点的开放性,web站点保存的数据主要是从客户端接收到的。
输入数据的用户来自不同的行业,他们有着不同的生活习惯、教育背景,从而不能绝对保证输入内容的正确性。
例如,用户操作计算机不熟练、输入出错、网络问题或者恶意输入等,这些都可能导致数据的异常。
如果对数据不加校验,有可能导致系统阻塞甚至崩溃。
10.简述Hibernate的特点。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
优点:
a.Hibernate使用Java反射机制而不是字节码增强程序来实现透明性。
b.Hibernate的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。
c.它支持各种关系数据库,从一对一到多对多的各种复杂关系。
缺点:
它限制您所使用的对象模型。
其独有的界面和可怜的市场份额也让人不安,尽管如此,Hibernate还是以其强大的发展动力减轻了这些风险。
其他的开源持久性框架也有一些,不过都没有Hibernate这样有市场冲击力。
11.简述Hibernate的工作原理。
1.配置好hibernate的配置文件和与类对应的配置文件后,启动服务器
2.服务器通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系
3.通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象
4.得到session之后,便可以对数据库进行增删改查操作了,除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现
5.此外,还可以通过事物管理,表的关联来实现较为复杂的数据库设计
12.简述Hibernate配置文件的作用。
Hibernate框架的配置文件主要用来为程序配置连接数据库的参数,例如,数据库的驱动程序名、URL、用户名、和密码等。
Hibernate的基本配置文件有两种形式:
hibernate.cfg.xml和hibernate.properties。
hibernate.cfg.xml包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初级阶段,这些信息被先后加载到Configuration和SessionFactory实例中;该文件还包含了Hibernate的基本映射信息,即系统中的每一个类和与其对应的数据库表之间的关联信息,在Hibernate工作的初级阶段,这些信息通过hibernate.cfg.xml的mapping元素被加载到Configuration和SessionFactory实例中。
这两种文件包含了Hibernate运行期间用到的所有参数。
两者的配置内容基本相同,但前者的使用稍微方便一些,例如,在hibernate.cfg.xml中可以定义要用到的xxx.hbm.xml映射文件,而使用hibernate.properties则需要在程序中以编码方式指明映射文件。
hibernate.cfg.xml是默认的配置文件。
13.简述Hibernate中Configuration类的作用。
主要作用是解析Hibernate的配置文件和映射文件中的信息,即负责管理Hibernate的配置信息。
Hibernate运行时需要获取一些底层实现的基本信息,如数据库驱动程序类、数据库的URL、数据库登录名、数据库登录密码等,这些信息定义在Hibernate的配置文件中。
通过Configuration对象的buildSessionFactory()方法可创建SessionFactory对象,因此Configuration对象一般只有在获取SessionFactory对象时使用。
当获取了SessionFactory对象之后,由于配置信息已经由Hibernate维护并绑定在返回的SessionFactory中,该Configuration将不再有价值。
(1)实现对Hibernate进行配置。
(2)它是启动Hibernate的对象。
(3)使用方法链编程风格。
14.简述Hibernate中Session的作用。
Session对象是Hibernate技术的核心,持久化对象的生命周期、事务的管理及持久化对象的增加、修改和删除都是通过Session对象来完成的。
Hibernate在操作数据库之前必须先取得Session对象,相当于JDBC在操作数据库之前必须先取得Connection对象一样。
Session对象不是线程安全的,一个Session对象最好只由一个单线程来使用。
同时该对象的生命周期要比SessionFactory短,其生命通常在完成数据库的一个短暂的系列操作之后结束。
一个应用系统中可以自始至终只使用一个SessionFactory对象。
Session对象通过SessionFactory对象的getCurrentSession()或者openSession()方法获取。
15.简述一对一关联关系两种方式的区别。
主键关联的重点是:
关联的两个表共享一个主键值。
外键关联的的要点是:
两个表各自有不同的主键,但其中一个表有一个外键引用另一个表的主键。
16.简述事务的特性。
原子性、一致性、隔离性和持久性4个属性,简称ACID。
(1)原子性:
将事务中所做的操作捆绑成一个原子单元,即对于事务进行的数据修改等操作,要么全部执行,要么全部不执行。
(2)一致性:
事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。
事务结束时,所有的内部数据结构都应该是正确的。
(3)隔离性:
由并发事务所做的修改必须与任何其他事务所做的修改想隔离。
事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。
这种隔离方式也称为可串行性。
(4)持久性:
事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。
17.简述Spring3框架各个组件的功能。
●核心容器:
提供Spring3框架的基本功能。
●Spring上下文:
是一个配置文件,向Spring3框架提供上下文信息。
●SpringAOP:
通过配置管理特性,SpringAOP模块直接将切面的编程功能集成到了Spring3框架中。
●SpringDAO:
JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。
●SpringORM:
Spring3框架插入了若干个ORM框架,从而提供了ORM的工具,其中包括JDO、Hibernate和iBatisSQLMap。
●SpringWeb:
web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供了上下文。
●SpringMVCWeb框架:
MVC框架是一个全功能的构建web应用程序的MVC实现。
18.简述Spring3框架的特点。
1、ioc,实现javabean的低耦合性,便于javacode的重用;
2、aop使用简便;
3、实现restful的mvc,便于web开发;
4、大量的注解pojo,简化了xml配置;
5、database的dao模板类,兼容多种数据库,而且底层只需要更换jdbcdriver,datasource声明好驱动,jdbctemplate就可以访问数据库了;
6、spring官网有很多解决方案可以使用(安全,数据访问,页面流,android)
19.简述Spring3的AOP框架主要术语。
a)横切关注点
b)切面:
将横切关注点设计为独立可重用的对象。
c)连接点:
切面在应用程序执行时加入目标对象的业务流程中的特定点。
d)通知:
切面在某个具体连接点采取的行为或动作。
e)切入点:
指定某个通知在哪些连接点被织入到应用程序之中。
f)织入:
将通知加入应用程序的过程。
g)目标:
通知被应用的对象。
h)引人:
通过引用,我们可以在一个对象中加入新的方法和属性,而不用修改他的程序。
i)代理:
是由AOP框架生成的一个对象,用来执行切面的内容。